{"version":3,"file":"js/planner.2a6b8863.js","mappings":"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AAEH;AACA;AACA,eAAe,GAAG,gDAAqC;AACvD;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,8GAA8G;;AAE9G;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,6BAAS;AACtB;AACA;;AAEA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA,4BAA4B,YAAY,MAAM,aAAa;AAC3D,0BAA0B,UAAU,MAAM,WAAW;AACrD;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,gEAAgE;AAChE,KAAK;;AAEL;AACA,aAAa,+BAAW;AACxB,sBAAsB,gDAAqC;AAC3D;AACA;AACA;AACA,uCAAuC,kBAAkB,GAAG,UAAU;AACtE;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA,0EAA0E,+BAAW;AACrF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wGAAwG,MAAM;AAC9G,OAAO;AACP,KAAK;;AAEL;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA,6BAA6B,gCAAgB;AAC7C;AACA;AACA,QAAQ;AACR,+BAA+B,gCAAgB;AAC/C;AACA,QAAQ;AACR;AACA;AACA;AACA,MAAM,wCAAoB;AAC1B;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;A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wC;AACxC,kCAAkC;AAClC;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;;AAEA,4BAA4B,2BAA2B,2EAA2E,oCAAoC,wBAAwB,OAAO,oCAAoC,mIAAmI;AAC5W;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,eAAe,wBAAwB,0BAA0B;AACjE;AACA;;AAEA,4BAA4B,2BAA2B,2EAA2E,oCAAoC,wBAAwB,OAAO,oCAAoC,mIAAmI;;AAE5W;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,sDAAsD;AACtD;AACA,SAAS,GAAG,+DAA+D,yBAAyB;;AAEpG;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B,SAAS;AACnC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,gCAAgC,UAAU;AAC1C;AACA;AACA,wBAAwB;AACxB;;AAEA,oCAAoC,UAAU;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS;AACrC;AACA;AACA,wFAAwF;AACxF;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD,8BAA8B,8BAA8B;AAC5D,8BAA8B,YAAY;AAC1C,8BAA8B,qBAAqB;AACnD,8BAA8B,cAAc;AAC5C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA,gCAAgC,UAAU;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,0BAA0B,SAAS;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,SAAS;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS;AACrC;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA,kCAAkC,UAAU;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS;AACrC;;AAEA;AACA;AACA;;AAEA,gCAAgC,UAAU;AAC1C;AACA;AACA,wBAAwB;AACxB;;AAEA,oCAAoC,UAAU;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gEAAgE;AAChE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,kBAAkB,eAAe;;;AAGjC;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb,YAAY;AACZ;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,kBAAkB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4BAA4B,2BAA2B,2EAA2E,oCAAoC,wBAAwB,OAAO,oCAAoC,mIAAmI;;AAE5W;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gGAAgG;;AAEhG;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB,yBAAyB;AAC7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM,eAAe;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,cAAc;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA,wBAAwB,QAAQ;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,cAAc;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;;AAER;AACA;;AAEA;AACA,sBAAsB,uBAAuB;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,wBAAwB,sBAAsB;AAC9C;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,oEAAoE;AACnF;AACA;;AAEA,yBAAyB;;AAEzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,mBAAmB;AACvC;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,aAAa;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,mBAAmB;AACzC;AACA;AACA;;AAEA,wBAAwB,SAAS;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC,uCAAuC;;AAEvC,iCAAiC;;AAEjC;AACA,iEAAiE;;AAEjE,iEAAiE;;AAEjE,iCAAiC;;AAEjC;AACA,iEAAiE;;AAEjE,iEAAiE;;AAEjE,iCAAiC;;AAEjC;AACA,iEAAiE;;AAEjE,iEAAiE;;AAEjE;;AAEA,kBAAkB,SAAS;AAC3B,4IAA4I;;AAE5I,gJAAgJ;;AAEhJ,gJAAgJ;;AAEhJ,gJAAgJ;AAChJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oBAAoB,UAAU;AAC9B;AACA,UAAU;;AAEV,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,wBAAwB,UAAU;AAClC;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA,wBAAwB,UAAU;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,YAAY;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,eAAe;AACf;AACA,gBAAgB;;AAEhB;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,UAAU;AAC5B,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iEAAiE;AACjE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,YAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,YAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,+BAA+B;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,6MAA6M;AAC7M;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,4BAA4B,2BAA2B,2EAA2E,oCAAoC,wBAAwB,OAAO,oCAAoC,mIAAmI;AAC5W;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB,iBAAiB;AACrC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E;;AAE9E;AACA;;AAEA,8DAA8D;;AAE9D;AACA,WAAW,MAA8B,GAAG,CAAW,uCAAuC,QAAa,uBAAuB,KAA4B,IAAI,wBAAU;AAC5K,MAAM,EAED;AACL,IAAI,aAAa;AACjB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B,oCAAoC;;AAEpC;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA,wBAAwB,UAAU;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB,QAAQ;AAChC;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe;AACf;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA,kBAAkB,UAAU;AAC5B;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,YAAY;AACZ;AACA,kFAAkF;;AAElF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA,kFAAkF;;AAElF;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,gBAAgB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,gBAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA,8EAA8E;;AAE9E;AACA,QAAQ;AACR;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO,kBAAkB;;AAEzB;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;;AAEhB;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,WAAW;AACX;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,8BAA8B;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;;AAEA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;;AAEA;AACA,UAAU;AACV;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kDAAkD;;AAElD;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA,mCAAmC;;AAEnC;AACA,wCAAwC;;AAExC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;;AAEA,oBAAoB,cAAc;AAClC;AACA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,WAAW;AAC/B;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;;AAE7B,mCAAmC;;AAEnC,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,WAAW;AAC3B;AACA;AACA;;AAEA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;;AAEA,uDAAuD;;AAEvD;AACA;;AAEA,gBAAgB,0BAA0B;AAC1C;AACA;AACA;;AAEA,kBAAkB,yBAAyB;AAC3C;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C;;AAE1C;AACA;AACA,oCAAoC;;AAEpC,yCAAyC;;AAEzC;AACA;AACA,yCAAyC;;AAEzC,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,yCAAyC,oBAAoB,sCAAsC;AAC1I;AACA;AACA,UAAU;AACV;;AAEA,sBAAsB,2BAA2B;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA,sBAAsB,2BAA2B;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,+FAA+F;AAC/F;;AAEA;AACA;;AAEA;AACA,mDAAmD;AACnD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;;AAGA;AACA;AACA,MAAM;AACN;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B,2BAA2B;;AAE3B,kCAAkC;;AAElC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA,yEAAyE;;AAEzE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,wCAAwC;;AAExC;AACA;AACA,QAAQ;;;AAGR;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC,mCAAmC;;AAEnC;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;;AAGR,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B,8DAA8D;;AAE9D;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA,MAAM;;;AAGN;AACA;AACA,MAAM;;;AAGN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA,wBAAwB,QAAQ;AAChC,uFAAuF;AACvF;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kCAAkC,SAAS;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B,UAAU;AACvC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,YAAY;AAC5B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,UAAU;AAC5B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAsB,UAAU;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,sBAAsB;;AAEtB,mCAAmC;;AAEnC,0BAA0B;;AAE1B,8BAA8B;;AAE9B,yBAAyB;;AAEzB,iCAAiC;;AAEjC;AACA,8CAA8C;AAC9C;;AAEA,4BAA4B;AAC5B;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,QAAQ;AAC1B;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA,6EAA6E;;AAE7E;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,QAAQ;AACR;AACA;AACA,UAAU;AACV,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA,qEAAqE;;AAErE;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA;AACA,iEAAiE;;AAEjE;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA,8EAA8E;AAC9E;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,UAAU;AACV,yEAAyE;AACzE,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV,sBAAsB,UAAU;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;;;AAGN,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,UAAU;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,+CAA+C;;AAE/C;AACA;;AAEA,oBAAoB,UAAU;AAC9B;;AAEA;AACA;AACA,kGAAkG;;AAElG;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,gBAAgB;AAChB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,UAAU;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA,oBAAoB,UAAU;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA,oBAAoB,UAAU;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,OAAO;AACjC;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAU;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;;AAErC;AACA;;AAEA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E;AAC9E;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,UAAU;;AAEV;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gGAAgG;AAChG;;AAEA,6DAA6D;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN,sBAAsB,QAAQ;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0BAA0B,QAAQ;AAClC;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uBAAuB;AAC9D;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD,kCAAkC,IAAI,kCAAkC;;AAE7H;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC,kCAAkC,IAAI,kCAAkC;;AAEjH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAU;AAC9B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,8CAA8C;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,qCAAqC;;AAErC,8DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,sCAAsC;AACtC;AACA;;AAEA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA,gEAAgE;;AAEhE;AACA,gCAAgC;;AAEhC,2DAA2D;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;;AAEA;AACA,oDAAoD;AACpD;;AAEA;AACA;AACA,gEAAgE;;AAEhE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,QAAQ;AAC1B;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uFAAuF;;AAEvF,kDAAkD;;AAElD,gDAAgD;;AAEhD,iDAAiD;;AAEjD,wDAAwD;AACxD,UAAU;AACV,qFAAqF;AACrF;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB,UAAU;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ,gCAAgC;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,UAAU;AAC5B;;AAEA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,UAAU;AAC5B;AACA;AACA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAiD;;AAEjD,mDAAmD;;AAEnD,+CAA+C;;AAE/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,YAAY;AACZ;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA,wBAAwB,UAAU;AAClC;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA,YAAY;AACZ;AACA,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA,YAAY;AACZ;AACA,yDAAyD;AACzD;;AAEA;AACA;AACA;;AAEA,sBAAsB,UAAU;AAChC;AACA;AACA;;AAEA,wBAAwB,UAAU;AAClC;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD;;AAEzD,4EAA4E;AAC5E;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA,gCAAgC;;AAEhC;AACA,kCAAkC;;AAElC;AACA,gCAAgC;;AAEhC;AACA,8BAA8B;;AAE9B;AACA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2BAA2B,eAAe;AAC1C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,QAAQ;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,QAAQ;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;;AAE7C,qCAAqC;;AAErC,kDAAkD;;AAElD;AACA,0CAA0C;;AAE1C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,wCAAwC;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sBAAsB;;AAEtB,mCAAmC;;AAEnC,0BAA0B;;AAE1B,8BAA8B;;AAE9B,yBAAyB;;AAEzB,iCAAiC;;AAEjC;AACA;AACA,8CAA8C;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA,cAAc;;AAEd,cAAc;;AAEd,cAAc;;AAEd,+BAA+B;AAC/B,QAAQ;AACR;;AAEA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,oCAAoC;AAC1D;;AAEA;AACA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wHAAwH;;AAExH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;;;AAGR;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;;;AAGR;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU;;;AAGV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA,mHAAmH;;AAEnH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,sBAAsB,QAAQ;AAC9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,yCAAyC;;;AAGzC;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,WAAW;AAChC;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,4BAA4B,2BAA2B,2EAA2E,oCAAoC,wBAAwB,OAAO,oCAAoC,mIAAmI;;AAE5W;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,iBAAiB;;AAEzB,6HAA6H;;AAE7H,gCAAgC;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA,+BAA+B;;AAE/B,sBAAsB;;AAEtB,yBAAyB;AACzB;;AAEA;AACA;AACA,kBAAkB;;AAElB,kBAAkB;;AAElB,oBAAoB;AACpB;;AAEA,4BAA4B;AAC5B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAA6B;;AAE7B,sCAAsC;;AAEtC;AACA;AACA;AACA;AACA;AACA,YAAY;;;AAGZ;AACA,gCAAgC;AAChC;AACA,UAAU;AACV;;;AAGA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;;AAEA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA,QAAQ;;;AAGR;AACA;AACA;;AAEA,kBAAkB,WAAW;AAC7B;AACA;AACA,QAAQ;;;AAGR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;;AAGA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;;AAGA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,2BAA2B,2EAA2E,oCAAoC,wBAAwB,OAAO,oCAAoC,mIAAmI;;AAE5W;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAU;AAC9B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;;AAEf,eAAe;AACf,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;;AAEf,eAAe;;AAEf,eAAe;AACf,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0EAA0E;;AAElG,uEAAuE,YAAY,oBAAoB,QAAQ;;AAE/G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,eAAe;AACrC,8DAA8D;AAC9D;;AAEA;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA,sBAAsB,eAAe;AACrC,4FAA4F;AAC5F;AACA;;AAEA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,yBAAyB,eAAe;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,eAAe;AACtC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA,wFAAwF,UAAU;;AAElG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6CAA6C;;AAE7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,SAAS;AACjC;AACA;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;AAEP;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU,iCAAiC;AAC3C,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,GAAG;;AAEV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;;AAEA,wEAAwE;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;;AAEH,0BAA0B,2BAA2B,2EAA2E,kCAAkC,wBAAwB,OAAO,kCAAkC,mIAAmI;;AAEtW;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oBAAoB,eAAe;AACnC;AACA;;AAEA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4JAA4J;AAC5J;AACA,QAAQ;AACR;AACA;AACA,iJAAiJ;;AAEjJ;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B,mJAAmJ;AACnJ;;AAEA;AACA;;AAEA;AACA;;AAEA,wIAAwI;AACxI;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,4IAA4I;AAC5I;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;;AAEA;AACA;;AAEA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,SAAS;AAC/B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,0JAA0J;AAC1J;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,sBAAsB,oBAAoB;AAC1C;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;;;AAGR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA,qBAAqB;AACrB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,qEAAqE;AACrE;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,SAAS;AAC7B;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,SAAS;AACzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,WAAW;AACnC;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+DAA+D;;AAE/D;AACA;AACA,MAAM;;;AAGN;AACA;AACA,MAAM;;;AAGN;AACA;AACA,MAAM;;;AAGN;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;;AAEA;AACA,gDAAgD;;AAEhD,gDAAgD;;AAEhD,+EAA+E;AAC/E;AACA;AACA;;AAEA,2FAA2F;;AAE3F;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,wCAAwC;;AAExC;AACA;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;;;;;AC3rnBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,sBAAsB;AACxC;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc,uBAAuB;AACrC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,gBAAgB,6BAA6B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kDAAkD,gBAAgB;;AAElE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,eAAe;AAC3B,YAAY,sCAAsC;AAClD;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA,iEAAiE;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,YAAY,2BAA2B;AACvC;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,sBAAsB;AAClC;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,sBAAsB;AAClC;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY;AACZ;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,mBAAmB;AAC/B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,aAAa;AACzB;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,uCAAuC,qDAAqD;;;AAG5F;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;;;AAGA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;;AAErE;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2CAA2C;;AAE3C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF;AACnF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B;;;AAGA;AACA;AACA,iEAAiE;AACjE;;AAEA,gBAAgB;;AAEhB,sCAAsC,YAAY;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;;AAEA,0BAA0B;;;AAG1B;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B,kFAAkF;;AAElF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;;;AAGhC;AACA;AACA;;AAEA;AACA,cAAc;AACd,MAAM;;;AAGN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT;AACA,gBAAgB;AAChB;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;;AAEP;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA,UAAU;AACV;;;AAGA;;AAEA;AACA;AACA,UAAU;;;AAGV,6CAA6C;;;AAG7C;AACA;AACA;AACA;AACA,SAAS,GAAG;;;AAGZ;AACA,SAAS;;;AAGT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,GAAG;;AAEV;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA,MAAM;AACN,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iMAAiM;;AAEjM;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,+DAA+D;;AAE/D;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,MAAM;;;AAGN;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA,QAAQ;;;AAGR;AACA,iEAAiE;;;AAGjE;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA,YAAY;;;AAGZ;AACA;AACA;;AAEA,wCAAwC;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA,KAAK;AACL,4CAA4C;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,wCAAwC;;;AAGxC;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C;AAC1C;;AAEA;AACA;AACA;;AAEA,8DAA8D;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG;;;AAGhB;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG;;;AAGhB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;;;AAGd;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,cAAc;AAC7B,eAAe;AACf;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,0BAA0B;AACtC;;;AAGA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,4BAA4B;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,oCAAoC;AAChD;;;AAGA;AACA,yEAAyE,aAAa;AACtF;AACA;;AAEA;AACA;AACA;AACA,qFAAqF;AACrF;;AAEA,uDAAuD;AACvD;AACA,GAAG;AACH;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,aAAa;AACxB;;;AAGA;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;;AAEA;AACA,uDAAuD;;AAEvD;;AAEA;AACA,2EAA2E;;AAE3E;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,gBAAgB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAsD;;AAEtD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA,IAAI;;AAEJ,kCAAkC;AAClC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,sBAAsB,8BAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO,GAAG;;AAEV;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,UAAU;;;AAGV;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA,WAAW;AACX;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iDAAiD;;;AAGjD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe;AACf;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;;;AAGR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD;;AAEpD;AACA;AACA;AACA,mBAAmB;AACnB;AACA,eAAe;AACf,cAAc;AACd;;;AAGA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA,aAAa,GAAG;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA,YAAY;;;AAGZ;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,QAAQ;;;AAGR;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qEAAqE;;AAErE,uDAAuD;;AAEvD,+FAA+F;;AAE/F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG;;AAEZ;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,iEAAe,QAAQ,EAAC;AAC8C;;;;;;;;AClnHtE;AACA,IAAI,IAAyD;AAC7D,2BAA2B,mBAAO,CAAC,IAAY;AAC/C,MAAM,EAK6C;AACnD,CAAC;AACD,qCAAqC;AACrC;AACA;AACA;AACA;AACA,mBAAmB,8BAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,8BAAmB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,UAAU,8BAAmB;AAC7B,eAAe,8BAAmB;AAClC,mDAAmD,+BAA+B;AAClF;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA,iEAAiE,iBAAiB;AAClF;AACA,0DAA0D,aAAa;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B,gCAAgC,8BAAmB;AACnD;AACA;AACA;AACA,WAAW,8BAAmB;AAC9B,kDAAkD,gCAAgC;AAClF,0EAA0E,8BAAmB,4BAA4B,oBAAoB;AAC7I;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA,oCAAoC,4BAA4B;AAChE,0CAA0C;AAC1C,WAAW,8BAAmB;AAC9B;AACA;AACA;AACA;AACA,UAAU,8BAAmB,kCAAkC;AAC/D;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA;AACA,iBAAiB,8BAAmB,CAAC,8BAAmB;AACxD,UAAU;AACV;AACA;;AAEA;AACA,iCAAiC,+BAAmB;;AAEpD;;AAEA,cAAc,+BAAmB;AACjC,cAAc,+BAAmB;AACjC,eAAe,+BAAmB;AAClC,WAAW,+BAAmB;AAC9B,gBAAgB,+BAAmB;AACnC,kBAAkB,+BAAmB;AACrC,qBAAqB,+BAAmB;AACxC,qBAAqB,+BAAmB;AACxC,eAAe,+BAAmB;AAClC,+CAA+C;AAC/C;AACA;AACA;;AAEA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,8CAA8C;AAC9C,MAAM,4BAA4B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,+BAAmB;;AAEpD,gBAAgB,+BAAmB;AACnC,cAAc,+BAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,+BAAmB;;AAEpD;;AAEA,SAAS,+BAAmB;;AAE5B;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,+BAAmB;;AAEpD;;AAEA;AACA,eAAe,+BAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,+BAAmB;;AAEpD;AACA,YAAY,+BAAmB;AAC/B,kBAAkB,+BAAmB;;AAErC;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,+BAAmB;;AAEpD,SAAS,+BAAmB;AAC5B,eAAe,+BAAmB;AAClC,cAAc,+BAAmB;;AAEjC,iBAAiB,+BAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,+BAAmB;;AAEpD;;AAEA,+BAAmB;AACnB,eAAe,+BAAmB;AAClC,WAAW,+BAAmB;AAC9B,YAAY,+BAAmB;AAC/B,cAAc,+BAAmB;AACjC,UAAU,+BAAmB;AAC7B,iBAAiB,+BAAmB;;AAEpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,mBAAmB;AACnB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,gCAAmB;;AAEpD,eAAe,gCAAmB;AAClC,eAAe,gCAAmB;AAClC;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP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;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,gCAAmB;;AAEpD;AACA,gBAAgB,gCAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,gCAAmB;;AAEpD;AACA,kBAAkB,gCAAmB;AACrC;AACA,0CAA0C,gCAAmB,oCAAoC;AACjG;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,gCAAmB;;AAEpD;AACA,gBAAgB,gCAAmB;AACnC;AACA;AACA,4DAA4D;AAC5D;;;AAGA,OAAO;;AAEP;AACA,iCAAiC,gCAAmB;;AAEpD;AACA,kBAAkB,gCAAmB;AACrC,iCAAiC,SAAS,mBAAmB,aAAa;AAC1E,CAAC;;;AAGD,OAAO;;AAEP;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA,iCAAiC,gCAAmB;;AAEpD;;;AAGA,eAAe,gCAAmB;AAClC,eAAe,gCAAmB;AAClC,eAAe,gCAAmB;AAClC,gBAAgB,gCAAmB;AACnC,yBAAyB,gCAAmB;AAC5C,iBAAiB,gCAAmB;AACpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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;AACA;AACA;AACA;AACA;;AAEA,yCAAyC,SAAS;AAClD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA,yBAAyB,gCAAmB;;AAE5C;AACA,0BAA0B,gCAAmB;;AAE7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA,8BAA8B;AAC9B,sFAAsF,gCAAmB;AACzG,0GAA0G,gCAAmB;;AAE7H;AACA,aAAa,gCAAmB;;AAEhC;;;;;;;;;;;;;AAaA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG,IAAI;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK,IAAI;AACT,kCAAkC;AAClC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,oCAAoC;AACpC;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;;;;AAIA,OAAO;;AAEP,UAAU;AACV,CAAC;AACD;;;;;;;;;;;;;;;AC35EA;;;;;;;;;;;;;;;;;;;ACAA;AACoD,CAAC;;AAEtB,CAAC;;AAEL;AACE,CAAC;;AAEmB;AACF;AACU,CAAC;;AAEnB;AACO;AAC9C;;AAEA,6CAAe,yBAAM,CAAC,qBAAM,EAAE,yBAAU,EAAE,6BAAc;AACxD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,YAAY;AAC3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,iCAAiC,mBAAI;AACrC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO,uBAAuB,oBAAK;AACnC;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA,iCAAiC,oBAAK;AACtC;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA,wBAAwB,GAAG,iFAAoC;AAC/D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,YAAY;AAC/C;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,aAAa,kFAAsC;AACnD;;AAEA,GAAG;;AAEH;AACA;AACA;AACA,MAAM,4BAAQ;AACd;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC,CAAC,EAAC;AACH;;;;;;;;;;;;;;;;ACnOA;AACkE,CAAC;;AAEgB;AACjC,CAAC;;AAEN;AAC4C;AACzF,2BAA2B,GAAG,uEAAgB;AAC9C;AACA;AACA;AACA;AACA;;AAEA,iEAAe,+EAAc;AAC7B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,YAAY,2HAAoC;AAChD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe,GAAG,6HAAqC;AACvD;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,sBAAsB,4EAAmB;AACzC;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA,oBAAoB,qIAAyC;AAC7D,sDAAsD,yBAAyB;AAC/E,eAAe;AACf;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA,mBAAmB,+HAAsC;AACzD,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,uCAAuC,uEAAa;AACpD;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ,sCAAsC,yEAAc;AAC5D;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ,qBAAqB,iFAAkB,gBAAgB,iFAAe;AAC9E;AACA;AACA,KAAK;;AAEL;AACA;AACA,oDAAoD;;AAEpD;AACA,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,MAAM,+IAA8C;AACpD,KAAK;;AAEL;AACA,oBAAoB,mIAAwC;AAC5D,mBAAmB,qEAAS;AAC5B;AACA,mCAAmC,6EAAoB;AACvD,wBAAwB,6EAAoB;AAC5C,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA,mBAAmB,qIAAyC;AAC5D;AACA;AACA,KAAK;;AAEL;AACA,6CAA6C,uIAA0C;AACvF,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA,yBAAyB,uEAAa,EAAE,qEAAY;AACpD,QAAQ,+HAAsC;AAC9C,QAAQ;AACR;AACA;AACA;;;AAGA;AACA,KAAK;;AAEL,qBAAqB;;AAErB;AACA,MAAM,+HAAsC;AAC5C;AACA,KAAK;;AAEL;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,MAAM,iIAAuC;AAC7C;AACA,KAAK;;AAEL;AACA,MAAM,6IAA6C,QAAQ;AAC3D;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,CAAC,EAAC;AACH;;;;;;;;;;;;;;;;AC5YA;AACiD;AACA,CAAC;;AAEC,CAAC;;AAEb;AACM;AAC7C,iEAAe,iEAAM,CAAC,mEAAU,EAAE,mEAAU;AAC5C;AACA;AACA,aAAa;AACb,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,eAAe;AACf;AACA;;AAEA,GAAG;AACH;AACA;AACA,wCAAwC,gEAAO;AAC/C;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA,CAAC,CAAC,EAAC;AACH;;;;;;;;;;;;;;;AC1EA;;;;;;;;;;;;;ACAA;AACwD,CAAC;;AAE1B,CAAC;;AAEyC;AAC1B,CAAC;;AAET;AACO;AAC9C,mBAAmB,yBAAM,CAAC,qBAAM,EAAE,8BAAkB,aAAa,wBAAS;AAC1E;;AAEA,+CAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iFAAoC;AAC/C;AACA,KAAK;;AAEL;AACA,eAAe,GAAG,+EAAmC;AACrD;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA,MAAM,4BAAQ;AACd;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA,0CAA0C,aAAa;AACvD;AACA;;AAEA,4CAA4C,aAAa;AACzD;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC,CAAC,EAAC;AACH;;;;;;;;;;;;;;;AC3HA;AACuE,CAAC;;AAED,CAAC;;AAErB,CAAC;;AAEb;AACvC,mBAAmB,iEAAM,CAAC,oEAAiB;AAC3C;;AAEA,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,uBAAuB,yEAAqB,GAAG,kEAAc;AAC7D,KAAK;;AAEL;AACA;AACA;AACA,gBAAgB,sEAAa;AAC7B;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;;AAEA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,4BAA4B;;AAE5B;AACA;AACA,OAAO;AACP,uBAAuB;;AAEvB;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC,CAAC,EAAC;AACH;;;;;;;;;;;;;;;;;AClIA;AAC6B,CAAC;;AAEiB;AACwB,CAAC;;AAE3B,CAAC;;AAEP;AACO;AAC9C,mBAAmB,iEAAM,CAAC,kEAAS,EAAE,oEAAiB;AACtD;;AAEA,iEAAe;AACf;AACA;AACA,UAAU;AACV,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,iCAAiC,uDAAK;AACtC,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,wBAAwB,yEAAc;AACtC;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,CAAC,CAAC,EAAC;AACH;;;;;;;;;;;;;;;;AC1J4D;AAC1B;AACQ;AACM;AAChD,uBAAuB,+EAAsB;AAC7C,sBAAsB,+EAAsB;AACsC;AAClF,sEAAe;AACf;AACA,YAAY;AACZ,mBAAmB;AACnB,gBAAgB;AAChB;AACA;AACA;AACA,CAAC,EAAC;AACF","sources":["webpack://rw.flex/./src/app/consts/RwRegex.ts","webpack://rw.flex/./src/app/dem/RwLogEntry.ts","webpack://rw.flex/./src/app/dem/RwUserEntry.ts","webpack://rw.flex/./src/app/dal/RwTaskReporting.ts","webpack://rw.flex/./src/app/utils/RwViewUtils.ts","webpack://rw.flex/./src/app/views/tasks/RwTaskSpace.ts","webpack://rw.flex/./src/app/views/account/RwCCExpirePopup.vue?9680","webpack://rw.flex/./src/app/views/account/RwCCExpirePopup.vue?dd44","webpack://rw.flex/./src/app/views/account/RwCCExpirePopup.vue?5ea5","webpack://rw.flex/./src/app/views/account/RwCCExpirePopup.vue","webpack://rw.flex/./node_modules/vuetify/lib/components/VCombobox/VCombobox.js","webpack://rw.flex/./src/app/views/account/RwOnboardSettings.vue?8376","webpack://rw.flex/./src/app/views/account/RwOnboardSettings.vue?aca9","webpack://rw.flex/./src/app/views/account/RwOnboardSettings.vue?4865","webpack://rw.flex/./src/app/views/account/RwOnboardSettings.vue?5fd9","webpack://rw.flex/./src/app/views/account/RwOnboardSettings.vue?e077","webpack://rw.flex/./src/app/views/account/RwOnboardSettings.vue","webpack://rw.flex/./src/app/views/drivers/RwDeleteDriver.vue?3e08","webpack://rw.flex/./src/app/views/drivers/RwDeleteDriver.vue?10c4","webpack://rw.flex/./src/app/views/drivers/RwDeleteDriver.vue?b8ce","webpack://rw.flex/./src/app/views/drivers/RwDeleteDriver.vue","webpack://rw.flex/./src/app/views/drivers/RwDriverPassEdit.vue?f088","webpack://rw.flex/./src/app/views/drivers/RwDriverPassEdit.vue?2c2c","webpack://rw.flex/./src/app/views/drivers/RwDriverPassEdit.vue?6749","webpack://rw.flex/./src/app/views/drivers/RwDriverPassEdit.vue","webpack://rw.flex/./src/app/views/drivers/RwDriverUnameEdit.vue?5147","webpack://rw.flex/./src/app/views/drivers/RwDriverUnameEdit.vue?8ed9","webpack://rw.flex/./src/app/views/drivers/RwDriverUnameEdit.vue?81d4","webpack://rw.flex/./src/app/views/drivers/RwDriverUnameEdit.vue","webpack://rw.flex/./src/app/views/drivers/RwDriverView.vue?ec36","webpack://rw.flex/./src/app/views/drivers/RwDriverView.vue?0e86","webpack://rw.flex/./src/app/views/drivers/RwDriverView.vue?ab8a","webpack://rw.flex/./src/app/views/drivers/RwDriverView.vue?e566","webpack://rw.flex/./src/app/views/drivers/RwDriverView.vue?9d69","webpack://rw.flex/./src/app/views/drivers/RwDriverView.vue","webpack://rw.flex/./src/app/views/drivers/RwPingTest.vue?e1ce","webpack://rw.flex/./src/app/views/drivers/RwPingTest.vue?4ef9","webpack://rw.flex/./src/app/views/drivers/RwPingTest.vue?3df0","webpack://rw.flex/./src/app/views/drivers/RwPingTest.vue","webpack://rw.flex/./src/app/views/drivers/RwReplaceDriver.vue?6bd1","webpack://rw.flex/./src/app/views/drivers/RwReplaceDriver.vue?cd4e","webpack://rw.flex/./src/app/views/drivers/RwReplaceDriver.vue?1a2f","webpack://rw.flex/./src/app/views/drivers/RwReplaceDriver.vue","webpack://rw.flex/./src/app/views/planner/RwLimitPopup.vue?bb2c","webpack://rw.flex/./src/app/views/planner/RwLimitPopup.vue?3dee","webpack://rw.flex/./src/app/views/planner/RwLimitPopup.vue?edef","webpack://rw.flex/./src/app/views/planner/RwLimitPopup.vue","webpack://rw.flex/./src/app/views/planner/RwPlanner.vue?a720","webpack://rw.flex/./src/app/views/planner/RwPlannerMap.vue?46ea","webpack://rw.flex/./src/app/views/planner/RwPlannerMap.vue?338c","webpack://rw.flex/./src/app/views/planner/RwPlannerMap.vue?12bf","webpack://rw.flex/./src/app/views/planner/RwPlannerMap.vue?cb58","webpack://rw.flex/./src/app/views/planner/RwPlannerMap.vue?d06e","webpack://rw.flex/./src/app/views/planner/RwPlannerMap.vue","webpack://rw.flex/./node_modules/vuetify/src/components/VTimeline/VTimeline.sass","webpack://rw.flex/./node_modules/vuetify/lib/components/VTimeline/VTimeline.js","webpack://rw.flex/./node_modules/vuetify/lib/components/VTimeline/VTimelineItem.js","webpack://rw.flex/./src/app/views/planner/RwPlannerList.vue?5b8a","webpack://rw.flex/./src/app/dem/RwStep.ts","webpack://rw.flex/./src/app/views/planner/RwPlannerActions.vue?156d","webpack://rw.flex/./src/app/views/animations/RwAddStopsArrow.vue?49f6","webpack://rw.flex/./node_modules/vue-lottie/src/lottie.vue?82c5","webpack://rw.flex/node_modules/vue-lottie/src/lottie.vue","webpack://rw.flex/./node_modules/vue-lottie/src/lottie.vue?1aef","webpack://rw.flex/./node_modules/vue-lottie/src/lottie.vue","webpack://rw.flex/./src/app/views/animations/RwAddStopsArrow.vue?c219","webpack://rw.flex/./src/app/views/animations/RwAddStopsArrow.vue?8394","webpack://rw.flex/./src/app/views/animations/RwAddStopsArrow.vue","webpack://rw.flex/./src/app/views/planner/RwPlannerActions.vue?b798","webpack://rw.flex/./src/app/views/planner/RwPlannerActions.vue?ce30","webpack://rw.flex/./src/app/views/planner/RwPlannerActions.vue?2107","webpack://rw.flex/./src/app/views/planner/RwPlannerActions.vue?f0d8","webpack://rw.flex/./src/app/views/planner/RwPlannerActions.vue","webpack://rw.flex/./src/app/views/planner/RwPlannerList.vue?e2e2","webpack://rw.flex/./src/app/views/planner/RwPlannerList.vue?260b","webpack://rw.flex/./src/app/views/planner/RwPlannerList.vue?1adc","webpack://rw.flex/./src/app/views/planner/RwPlannerList.vue?5730","webpack://rw.flex/./src/app/views/planner/RwPlannerList.vue?c625","webpack://rw.flex/./src/app/views/planner/RwPlannerList.vue?669a","webpack://rw.flex/./src/app/views/planner/RwPlannerList.vue","webpack://rw.flex/./src/app/views/planner/RwPlannerStatus.vue?fc2a","webpack://rw.flex/./src/app/views/planner/RwPlannerStatus.vue?f2f6","webpack://rw.flex/./src/app/views/planner/RwPlannerStatus.vue?3125","webpack://rw.flex/./src/app/views/planner/RwPlannerStatus.vue?433f","webpack://rw.flex/./src/app/views/planner/RwPlannerStatus.vue?5eb8","webpack://rw.flex/./src/app/views/planner/RwPlannerStatus.vue","webpack://rw.flex/./src/app/views/planner/RwPinPanel.vue?40ab","webpack://rw.flex/./src/app/views/planner/RwPinPanel.vue?f680","webpack://rw.flex/./src/app/views/planner/RwPinPanel.vue?3803","webpack://rw.flex/./src/app/views/planner/RwPinPanel.vue","webpack://rw.flex/./src/app/views/planner/RwPinPopup.vue?89e9","webpack://rw.flex/./src/app/views/history/RwHistoryView.vue?108b","webpack://rw.flex/./src/app/views/history/RwHistoryView.vue?0b17","webpack://rw.flex/./src/app/views/history/RwHistoryView.vue?c46f","webpack://rw.flex/./src/app/views/history/RwHistoryView.vue?b2a1","webpack://rw.flex/./src/app/views/history/RwHistoryView.vue?7922","webpack://rw.flex/./src/app/views/history/RwHistoryView.vue","webpack://rw.flex/./src/app/views/planner/RwPinPopup.vue?6259","webpack://rw.flex/./src/app/views/planner/RwPinPopup.vue?8ac6","webpack://rw.flex/./src/app/views/planner/RwPinPopup.vue?4d70","webpack://rw.flex/./src/app/views/planner/RwPinPopup.vue?cf6b","webpack://rw.flex/./src/app/views/planner/RwPinPopup.vue","webpack://rw.flex/./node_modules/vuetify/src/components/VRangeSlider/VRangeSlider.sass","webpack://rw.flex/./node_modules/vuetify/lib/components/VSlider/index.js","webpack://rw.flex/./node_modules/vuetify/lib/components/VRangeSlider/VRangeSlider.js","webpack://rw.flex/./src/app/views/planner/RwPlannerLayers.vue?1f9a","webpack://rw.flex/./src/app/views/planner/RwPlannerLayers.vue?28a3","webpack://rw.flex/./src/app/views/planner/RwPlannerLayers.vue?b41d","webpack://rw.flex/./src/app/views/planner/RwPlannerLayers.vue?cfe7","webpack://rw.flex/./src/app/views/planner/RwPlannerLayers.vue?d3b5","webpack://rw.flex/./src/app/views/planner/RwPlannerLayers.vue","webpack://rw.flex/./src/app/views/pickers/RwClusterPicker.vue?f2e8","webpack://rw.flex/./src/app/views/pickers/RwClusterPicker.vue?250a","webpack://rw.flex/./src/app/views/pickers/RwClusterPicker.vue?1b88","webpack://rw.flex/./src/app/views/pickers/RwClusterPicker.vue?c1fe","webpack://rw.flex/./src/app/views/pickers/RwClusterPicker.vue?9b2a","webpack://rw.flex/./src/app/views/pickers/RwClusterPicker.vue","webpack://rw.flex/./src/app/views/planner/RwPlannerMapOptions.vue?e704","webpack://rw.flex/./src/app/views/planner/RwPlannerMapOptions.vue?5ac8","webpack://rw.flex/./src/app/views/planner/RwPlannerMapOptions.vue?b7d7","webpack://rw.flex/./src/app/views/planner/RwPlannerMapOptions.vue?6be1","webpack://rw.flex/./src/app/views/planner/RwPlannerMapOptions.vue?b528","webpack://rw.flex/./src/app/views/planner/RwPlannerMapOptions.vue","webpack://rw.flex/./src/app/views/pickers/RwRoutePicker.vue?07ca","webpack://rw.flex/./src/app/views/pickers/RwRoutePicker.vue?9f72","webpack://rw.flex/./src/app/views/pickers/RwRoutePicker.vue?1042","webpack://rw.flex/./src/app/views/pickers/RwRoutePicker.vue","webpack://rw.flex/./src/app/views/planner/RwSearchOptions.vue?2d9a","webpack://rw.flex/./src/app/views/planner/RwSearchOptions.vue?d616","webpack://rw.flex/./src/app/views/planner/RwSearchOptions.vue?4e14","webpack://rw.flex/./src/app/views/planner/RwSearchOptions.vue","webpack://rw.flex/./src/app/views/planner/RwRouteOrder.vue?ef8e","webpack://rw.flex/./src/app/views/planner/RwRouteOrder.vue?90ad","webpack://rw.flex/./src/app/views/planner/RwRouteOrder.vue?e51f","webpack://rw.flex/./src/app/views/planner/RwRouteOrder.vue?db74","webpack://rw.flex/./src/app/views/planner/RwRouteOrder.vue?13a5","webpack://rw.flex/./src/app/views/planner/RwRouteOrder.vue","webpack://rw.flex/./src/app/views/planner/RwRouteSummary.vue?3724","webpack://rw.flex/./src/app/views/planner/RwRouteSummary.vue?5784","webpack://rw.flex/./src/app/views/planner/RwRouteSummary.vue?36f3","webpack://rw.flex/./src/app/views/planner/RwRouteSummary.vue?dad7","webpack://rw.flex/./src/app/views/planner/RwRouteSummary.vue?56ae","webpack://rw.flex/./src/app/views/planner/RwRouteSummary.vue","webpack://rw.flex/./src/app/views/planner/RwPlannerDropSelect.vue?6e69","webpack://rw.flex/./src/app/views/planner/RwPlannerDropSelect.vue?ecc7","webpack://rw.flex/./src/app/views/planner/RwPlannerDropSelect.vue?6e41","webpack://rw.flex/./src/app/views/planner/RwPlannerDropSelect.vue","webpack://rw.flex/./src/app/views/planner/RwPlannerDropRemove.vue?bb95","webpack://rw.flex/./src/app/views/planner/RwPlannerDropRemove.vue?ce9d","webpack://rw.flex/./src/app/views/planner/RwPlannerDropRemove.vue?6b3a","webpack://rw.flex/./src/app/views/planner/RwPlannerDropRemove.vue","webpack://rw.flex/./src/app/views/account/RwProBetaPrimer.vue?d525","webpack://rw.flex/./src/app/views/account/RwProBetaPrimer.vue?4cc0","webpack://rw.flex/./src/app/views/account/RwProBetaPrimer.vue?1617","webpack://rw.flex/./src/app/views/account/RwProBetaPrimer.vue","webpack://rw.flex/./src/app/views/planner/RwAddReportDialog.vue?9c34","webpack://rw.flex/./src/app/views/planner/RwAddReportDialog.vue?9f2b","webpack://rw.flex/./src/app/views/planner/RwAddReportDialog.vue?de75","webpack://rw.flex/./src/app/views/planner/RwAddReportDialog.vue","webpack://rw.flex/./src/app/views/planner/RwAddMissingReportDialog.vue?f96e","webpack://rw.flex/./src/utils/countries.ts","webpack://rw.flex/./src/app/views/planner/RwAddMissingReportDialog.vue?2946","webpack://rw.flex/./src/app/views/planner/RwAddMissingReportDialog.vue?aa9c","webpack://rw.flex/./src/app/views/planner/RwAddMissingReportDialog.vue","webpack://rw.flex/./src/app/views/planner/RwAddMissingFinalizeDialog.vue?9b5d","webpack://rw.flex/./src/app/views/planner/RwAddMissingFinalizeDialog.vue?400f","webpack://rw.flex/./src/app/views/planner/RwAddMissingFinalizeDialog.vue?4f15","webpack://rw.flex/./src/app/views/planner/RwAddMissingFinalizeDialog.vue","webpack://rw.flex/./src/app/views/planner/RwPlanner.vue?1e21","webpack://rw.flex/./src/app/views/planner/RwPlanner.vue?28a3","webpack://rw.flex/./src/app/views/planner/RwPlanner.vue?f6dc","webpack://rw.flex/./src/app/views/planner/RwPlanner.vue?588f","webpack://rw.flex/./src/app/views/planner/RwPlanner.vue?6b89","webpack://rw.flex/./src/app/views/planner/RwPlanner.vue?6a19","webpack://rw.flex/./src/app/views/planner/RwPlanner.vue","webpack://rw.flex/./src/app/views/planner/RwStopView.vue?24c5","webpack://rw.flex/./src/app/views/planner/RwStopView.vue?b704","webpack://rw.flex/./src/app/views/planner/RwStopView.vue?7438","webpack://rw.flex/./src/app/views/planner/RwStopView.vue?e790","webpack://rw.flex/./src/app/views/planner/RwStopView.vue?22b6","webpack://rw.flex/./src/app/views/planner/RwStopView.vue","webpack://rw.flex/./src/app/views/routes/RwRouteArchive.vue","webpack://rw.flex/./src/app/views/routes/RwRouteAssign.vue","webpack://rw.flex/./src/app/views/routes/RwRouteChangeStatus.vue","webpack://rw.flex/./src/app/views/routes/RwRouteCopy.vue","webpack://rw.flex/./src/app/views/routes/RwRouteDelete.vue","webpack://rw.flex/./src/app/views/routes/RwRouteView.vue?1adb","webpack://rw.flex/./src/app/views/routes/RwRouteView.vue?052c","webpack://rw.flex/./src/app/views/routes/RwRouteView.vue?7ec2","webpack://rw.flex/./src/app/views/routes/RwRouteView.vue?0c5e","webpack://rw.flex/./src/app/views/routes/RwRouteView.vue?e338","webpack://rw.flex/./src/app/views/routes/RwRouteView.vue","webpack://rw.flex/./src/app/views/sites/RwSiteView.vue?5c29","webpack://rw.flex/./src/app/views/sites/RwSiteView.vue?767c","webpack://rw.flex/./src/app/views/sites/RwSiteView.vue?c1c2","webpack://rw.flex/./src/app/views/sites/RwSiteView.vue?1346","webpack://rw.flex/./src/app/views/sites/RwSiteView.vue?6d0e","webpack://rw.flex/./src/app/views/sites/RwSiteView.vue","webpack://rw.flex/./src/app/views/tasks/RwTaskPop.vue?932e","webpack://rw.flex/./src/app/views/tasks/RwTaskPop.vue?0056","webpack://rw.flex/./src/app/views/tasks/RwTaskPop.vue?9649","webpack://rw.flex/./src/app/views/tasks/RwTaskPop.vue?99c7","webpack://rw.flex/./src/app/views/tasks/RwTaskPop.vue?8210","webpack://rw.flex/./src/app/views/tasks/RwTaskPop.vue","webpack://rw.flex/./node_modules/vuetify/src/components/VAutocomplete/VAutocomplete.sass","webpack://rw.flex/./node_modules/lottie-web/build/player/lottie.js","webpack://rw.flex/./node_modules/sortablejs/modular/sortable.esm.js","webpack://rw.flex/./node_modules/vuedraggable/dist/vuedraggable.umd.js","webpack://rw.flex/./node_modules/vuetify/src/components/VAlert/VAlert.sass","webpack://rw.flex/./node_modules/vuetify/lib/components/VAlert/VAlert.js","webpack://rw.flex/./node_modules/vuetify/lib/components/VAutocomplete/VAutocomplete.js","webpack://rw.flex/./node_modules/vuetify/lib/components/VLazy/VLazy.js","webpack://rw.flex/./node_modules/vuetify/src/components/VStepper/VStepper.sass","webpack://rw.flex/./node_modules/vuetify/lib/components/VStepper/VStepper.js","webpack://rw.flex/./node_modules/vuetify/lib/components/VStepper/VStepperContent.js","webpack://rw.flex/./node_modules/vuetify/lib/components/VStepper/VStepperStep.js","webpack://rw.flex/./node_modules/vuetify/lib/components/VStepper/index.js"],"sourcesContent":["export default class RwRegex {\n static readonly EmailRules = [\n v => !!v || \"E-mail is required\",\n v => /(.+)@(.+){2,}\\.(.+){2,}/.test(v) || \"Please enter a valid email\"\n ];\n\n static readonly OptionalEmailRules = [\n v => /(^$|(.+)@(.+){2,}\\.(.+){2,})/.test(v) || \"Please enter a valid email\"\n ];\n\n static readonly RequiredRules = [v => !!v || \"This field is required\"];\n\n static readonly PasswordRules = [\n v => !!v || \"Password is required\",\n v => v.length >= 8 || \"Password must be at least 8 characters\"\n ];\n\n static readonly DomainRules = [\n v => !!v || \"Domain is required\",\n v =>\n (typeof v !== \"undefined\" && v.length >= 3 && v.length <= 13) ||\n \"Domain must be between 3 and 13 characters\",\n v => /^([a-zA-Z0-9_+]+)$/i.test(v) || 'Domain can contain only letters, numbers, and underscore.'\n ];\n}\n","export class RwLogSearchArgs {\n startEpoc: number;\n finishEpoc: number;\n isCaptured: boolean;\n source?: string;\n userId?: string;\n logLevel: number\n}\n\n\nexport class RwLogEntry {\n\n static fromJsonArray(jsonArray: Object[]) {\n let entries: RwLogEntry[] = [];\n if (jsonArray != null && jsonArray.length > 0) {\n jsonArray.forEach(function (jval) {\n let logEntry = RwLogEntry.fromJson(jval);\n entries.push(logEntry);\n });\n }\n return entries;\n }\n\n static fromJson(json: Object): RwLogEntry {\n let entry: RwLogEntry;\n if (json != null) {\n entry = new RwLogEntry();\n entry.fromJson(json)\n }\n return entry;\n }\n\n\n logId: number;\n date: Date;\n severity: number\n source?: string;\n message?: string;\n\n seshId?: string;\n userId?: string;\n userName?: string;\n sdk?: string;\n version?: string;\n deviceId?: string;\n isSelectedItem = false;\n\n get sevSort() {\n return (this.source == \"RwCrashHandler\") ? -1 : this.severity;\n }\n\n fromJson(json: Object) {\n for (let key in json) {\n //@formatter:off\n switch (key) {\n case \"lid\":\n this.logId = json[key];\n break;\n case \"dte\":\n this.date = new Date(json[key]);\n break;\n case \"sev\":\n this.severity = json[key];\n break;\n case \"src\":\n this.source = json[key];\n break;\n case \"msg\":\n this.message = json[key];\n break;\n case \"did\":\n this.deviceId = json[key];\n break;\n case \"sdk\":\n this.sdk = json[key];\n break;\n case \"ver\":\n this.version = json[key];\n break;\n case \"uid\":\n this.userId = json[key];\n break;\n case \"unm\":\n this.userName = json[key];\n break;\n case \"sid\":\n this.seshId = json[key];\n break;\n }\n //@formatter:on\n }\n }\n\n\n get deviceInfo(): string {\n\n let devInfo = \"\";\n let gotSDK = this.sdk && this.sdk !== \"?\";\n let gotVer = this.version;\n if (gotSDK && gotVer) {\n devInfo = `SDK: ${this.sdk}, VER: ${this.version}`;\n } else if (gotSDK) {\n devInfo = `SDK: ${this.sdk}`;\n } else if (gotVer) {\n devInfo = `VER: ${this.version}`;\n }\n\n\n return devInfo;\n }\n\n // get timeText(): string {\n // let timeText = \"\";\n // switch (this.type) {\n // case RwPinTypes.Stop:\n // if (this.stop) {\n // timeText = this.stop.timeText;\n // }\n // break;\n //\n // case RwPinTypes.Route:\n //\n // if (this.route) {\n // timeText = `Start Time: ${this.route.startTimeString}`;\n // //MONITOR: if there is need for an abstract finish location pin\n // }\n //\n // break;\n //\n // }\n // return timeText;\n // }\n\n\n // get timeFinishText(): string {\n // const finishTime = moment(this.route.startTime).add(this.route.totalTime, \"seconds\");\n // const timeText = `Finish Time: ${finishTime.format(\"L LT\")}`;\n // return timeText;\n // }\n\n\n}\n\n\n","export class RwUserInstalls {\n\n static fromJsonArray(jsonArray: Object[]) {\n let installs: RwUserInstalls[] = [];\n if (jsonArray != null && jsonArray.length > 0) {\n jsonArray.forEach(function (jval) {\n let userInstall = RwUserInstalls.fromJson(jval);\n installs.push(userInstall);\n });\n }\n return installs;\n }\n\n static fromJson(json: Object): RwUserInstalls {\n let install: RwUserInstalls;\n if (json != null) {\n install = new RwUserInstalls();\n install.fromJson(json)\n }\n return install;\n }\n\n installId: string;\n userId: string;\n deviceId: string;\n created: Date;\n activated: Date;\n verOS: string;\n verSDK: string;\n locale: string;\n lat: number;\n lng: number;\n LU: Date;\n model: string;\n installType: number;\n installTypeEnum: number;\n isActivated: boolean;\n standardOS: string;\n\n fromJson(json: Object) {\n for (let key in json) {\n //@formatter:off\n switch (key) {\n case \"InstallId\":\n this.installId = json[key];\n break;\n case \"UserId\":\n this.userId = json[key];\n break;\n case \"DeviceId\":\n this.deviceId = json[key];\n break;\n case \"Created\":\n this.created = new Date(json[key]);\n break;\n case \"Activated\":\n this.activated = new Date(json[key]);\n break;\n case \"VerOS\":\n this.verOS = json[key];\n break;\n case \"VerSDK\":\n this.verSDK = json[key];\n break;\n case \"Locale\":\n this.locale = json[key];\n break;\n case \"Lat\":\n this.lat = json[key];\n break;\n case \"Lng\":\n this.lng = json[key];\n break;\n case \"LU\":\n this.LU = new Date(json[key]);\n break;\n case \"InstallType\":\n this.installType = json[key];\n break;\n case \"InstallTypeEnum\":\n this.installTypeEnum = json[key];\n break;\n case \"IsActivated\":\n this.isActivated = json[key];\n break;\n case \"StandardOS\":\n this.standardOS = json[key];\n break;\n\n }\n //@formatter:on\n }\n }\n\n}\n\n\nexport class RwUserSessions {\n\n static fromJsonArray(jsonArray: Object[]) {\n let sessions: RwUserSessions[] = [];\n if (jsonArray != null && jsonArray.length > 0) {\n jsonArray.forEach(function (jval) {\n let userSession = RwUserSessions.fromJson(jval);\n sessions.push(userSession);\n });\n }\n return sessions;\n }\n\n static fromJson(json: Object): RwUserSessions {\n let session: RwUserSessions;\n if (json != null) {\n session = new RwUserSessions();\n session.fromJson(json)\n }\n return session;\n }\n\n sessionId: string;\n created: Date;\n installId: string;\n locale: string;\n appVersion: string;\n SDK: string;\n deviceId: string;\n platform: string;\n LU: Date;\n expires: Date;\n platformType: number;\n isWeb: boolean;\n isActive: boolean;\n\n fromJson(json: Object) {\n for (let key in json) {\n //@formatter:off\n switch (key) {\n case \"SessionId\":\n this.sessionId = json[key];\n break;\n case \"Created\":\n this.created = new Date(json[key]);\n break;\n case \"InstallId\":\n this.installId = json[key];\n break;\n case \"Locale\":\n this.locale = json[key];\n break;\n case \"AppVersion\":\n this.appVersion = json[key];\n break;\n case \"SDK\":\n this.SDK = json[key];\n break;\n case \"DeviceId\":\n this.deviceId = json[key];\n break;\n case \"Platform\":\n this.platform = json[key];\n break;\n case \"LU\":\n this.LU = new Date(json[key]);\n break;\n case \"Expires\":\n this.expires = new Date(json[key]);\n break;\n case \"PlatformType\":\n this.platformType = json[key];\n break;\n case \"IsWeb\":\n this.isWeb = json[key];\n break;\n case \"IsActive\":\n this.isActive = json[key];\n break;\n }\n //@formatter:on\n }\n }\n\n\n}\n\n","import moment from \"moment\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport store from \"@/app/RwGlobals\"\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwDistUnits, RwLoginIssues} from \"@/app/RwEnums\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwLoginError} from \"@/app/RwErrors\";\nimport {RwLogEntry} from \"@/app/dem/RwLogEntry\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport {RwUserInstalls, RwUserSessions} from \"@/app/dem/RwUserEntry\";\n\nexport class RwTaskReporting {\n\n static getReview(reportId: number): Promise {\n return new Promise(function (resolve, reject) {\n //RwLog.consoleLog(\"getLogs\", startEpoc, endEpoc)\n\n let url = `${RwConstants.CoreUri}/admin/getAddReport?reportId=${reportId}`;\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n //console.warn(\"getLog\", json)\n let user = RwAddReport.fromJson(json);\n resolve(user);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n // static getReview(address:string): Promise {\n // return new Promise(function(resolve, reject) {\n // //RwLog.consoleLog(\"getLogs\", startEpoc, endEpoc)\n //\n // let url = `${RwConstants.CoreUri}/admin/getAddReport?address=${address}`;\n //\n // dal.callWithToken\n // .get(url, { timeout: RwConstants.NetTimeout })\n // .then(res => {\n // const json = res.data;\n // //console.warn(\"getLog\", json)\n // let user = RwAddReport.fromJson(json);\n // resolve(user);\n // })\n // .catch((error) => {\n // reject(error);\n // });\n //\n // });\n // }\n\n\n static getUser(userId: string): Promise {\n return new Promise(function (resolve, reject) {\n //RwLog.consoleLog(\"getLogs\", startEpoc, endEpoc)\n\n let url = `${RwConstants.CoreUri}/admin/getUser?userId=${userId}`;\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n //console.warn(\"getLog\", json)\n let user = RwUser.fromJson(json);\n resolve(user);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static getAddReports(startEpoc: number, endEpoc: number, status: number): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/admin/getAddReports?startEpoc=${startEpoc}&finishEpoc=${endEpoc}&status=${status}`;\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let reports = RwAddReport.fromJsonArray(json);\n resolve(reports);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n // static getAddReport(address:string): Promise {\n // return new Promise(function(resolve, reject) {\n //\n // let url = `${RwConstants.CoreUri}/admin/getAddReport?address=${address}`;\n //\n // dal.callWithToken\n // .get(url, { timeout: RwConstants.NetTimeout })\n // .then(res => {\n // const json = res.data;\n // let report = RwAddReport.fromJson(json);\n // resolve(report);\n // })\n // .catch((error) => {\n // reject(error);\n // });\n //\n // });\n // }\n\n\n static postAddReport(report: RwAddReport): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/reports/address`;\n let payload = report.toJSON();\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static updateAddReport(report: RwAddReport): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/admin/address`;\n let payload = report.toJSON();\n\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n console.log(\"updateAddReport success\")\n resolve(true);\n })\n .catch((error) => {\n console.warn(\"updateAddReport fail\", error)\n reject(error);\n });\n\n });\n }\n\n\n static getLogs(startEpoc: number, endEpoc: number, logLevel: number, source: string, userId: string): Promise {\n return new Promise(function (resolve, reject) {\n //RwLog.consoleLog(\"getLogs\", startEpoc, endEpoc)\n\n let srcArg = (!!source) ? `&src=${source}` : \"\";\n let uidArg = (!!source) ? `&uid=${userId}` : \"\";\n let url = `${RwConstants.CoreUri}/admin/getLogs?startEpoc=${startEpoc}&finishEpoc=${endEpoc}&logLevel=${logLevel}${srcArg}${uidArg}`;\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let logs = RwLogEntry.fromJsonArray(json);\n resolve(logs);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n static getLog(logId: number): Promise {\n return new Promise(function (resolve, reject) {\n //RwLog.consoleLog(\"getLogs\", startEpoc, endEpoc)\n\n let url = `${RwConstants.CoreUri}/admin/getLog?logId=${logId}`;\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n //console.warn(\"getLog\", json)\n let log = RwLogEntry.fromJson(json);\n resolve(log);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n static getDiagnosticLogs(): Promise {\n return new Promise(function (resolve, reject) {\n //RwLog.consoleLog(\"getLogs\", startEpoc, endEpoc)\n let url = `${RwConstants.CoreUri}/admin/getDiagLogs`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let logs = RwLogEntry.fromJsonArray(json);\n resolve(logs);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static getAgentLogs(): Promise {\n return new Promise(function (resolve, reject) {\n let url = `${RwConstants.CoreUri}/admin/getAgentLogs`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let logs = RwLogEntry.fromJsonArray(json);\n resolve(logs);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static captureLogs(logIds: number[], isCaptured): Promise {\n //const SOURCE = \"RwTaskStops.captureLogs\"\n\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(logIds);\n let url = `${RwConstants.CoreUri}/admin/captureLogs?isCaptured=${isCaptured}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(() => resolve(true))\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static getUserInstalls(userId: string, max: number): Promise {\n return new Promise(function (resolve, reject) {\n let url = `${RwConstants.CoreUri}/admin/getUserSessions?userId=${userId}&max=${max}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let installs = RwUserInstalls.fromJsonArray(json);\n resolve(installs);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static getUserSessions(userId: string, max: number): Promise {\n return new Promise(function (resolve, reject) {\n let url = `${RwConstants.CoreUri}/admin/getUserSessions?userId=${userId}&max=${max}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let sessions = RwUserSessions.fromJsonArray(json);\n resolve(sessions);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n\n static getDrivers(startDate: Date, endDate: Date, tzoMins: number): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/reporting/getDrivers?startDate=${startDate.toJSON()}&endDate=${endDate.toJSON()}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n var routes = RwUser.fromJsonArray(json);\n resolve(routes);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n\n static getRoutes(startEpoc: number, endEpoc: number, tzoMins: number): Promise {\n return new Promise(function (resolve, reject) {\n\n let getArchived = RwPrefUtils.reportShowDeleted;\n let getDeleted = RwPrefUtils.reportShowDeleted;\n let useMiles = RwPrefUtils.distUnits === RwDistUnits.Miles;\n\n let url = `${RwConstants.CoreUri}/reporting/getRoutes?startEpoc=${startEpoc}&endEpoc=${endEpoc}&getArchived=${getArchived}&getDeleted=${getDeleted}&useMiles=${useMiles}&tzoMins=${tzoMins}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let routes = RwRoute.fromJsonArray(json);\n resolve(routes);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static getSites(startEpoc: number, endEpoc: number, tzoMins: number): Promise {\n const SOURCE = \"RwTaskReporting.getSites\";\n\n return new Promise(function (resolve, reject) {\n\n let getArchived = RwPrefUtils.reportShowDeleted;\n let getDeleted = RwPrefUtils.reportShowDeleted;\n let useMiles = RwPrefUtils.distUnits === RwDistUnits.Miles;\n\n if (dal.gotToken()) {\n\n let url = `${RwConstants.CoreUri}/reporting/getSites?startEpoc=${startEpoc}&endEpoc=${endEpoc}&getArchived=${getArchived}&getDeleted=${getDeleted}&useMiles=${useMiles}&tzoMins=${tzoMins}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let sites = RwSite.fromJsonArray(json);\n resolve(sites);\n })\n .catch((error) => {\n reject(error);\n });\n\n } else {\n RwLog.warn(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n\n static getHistory(startEpoc: number, endEpoc: number, tzoMins: number): Promise {\n return new Promise(function (resolve, reject) {\n\n let getArchived = RwPrefUtils.reportShowDeleted;\n let getDeleted = RwPrefUtils.reportShowDeleted;\n let useMiles = RwPrefUtils.distUnits === RwDistUnits.Miles;\n\n let url = `${RwConstants.CoreUri}/reporting/getHistory?startEpoc=${startEpoc}&endEpoc=${endEpoc}&getArchived=${getArchived}&getDeleted=${getDeleted}&useMiles=${useMiles}&tzoMins=${tzoMins}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let history = RwHistory.fromJsonArray(json);\n resolve(history);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static getStops(routeId: string): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/routes/routes?uid=${store.orgId}&rid=${routeId}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let newRoute = new RwRoute(json);\n resolve(newRoute);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static unDeleteRoute(routeId: string): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/reporting/unDeleteRoute?routeId=${routeId}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n const json = res.data;\n resolve(json.restored);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n static unArchiveRoute(routeId: string): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/reporting/unArchiveRoute?routeId=${routeId}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n const json = res.data;\n resolve(json.restored);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n static unDeleteSite(siteId: string): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/reporting/unDeleteSite?siteId=${siteId}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n const json = res.data;\n resolve(json.restored);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n // static getDashboardData(): Promise {\n // return new Promise(function(resolve, reject) {\n //\n // let url = `${RwConstants.CoreUri}/reporting/getDashboardData`;\n // dal.axios\n // .get(url, { timeout: RwConstants.NetTimeout })\n // .then(res => {\n // const json = res.data;\n // var dashData = RwDashboardData.fromJson(json);\n // resolve(dashData);\n // })\n // .catch((error) => {\n // reject(error);\n // });\n //\n // });\n // }\n\n\n static getSpreadSheet(startEpoc: number, endEpoc: number, tzoMins: number): Promise {\n const SOURCE = \"RwTaskReporting.getSpreadSheet\"\n return new Promise(function (resolve, reject) {\n\n let getArchived = RwPrefUtils.reportShowDeleted;\n let getDeleted = RwPrefUtils.reportShowDeleted;\n let useMiles = RwPrefUtils.distUnits === RwDistUnits.Miles;\n\n let url = `${RwConstants.CoreUri}/reporting/getSheets?startEpoc=${startEpoc}&endEpoc=${endEpoc}&getArchived=${getArchived}&getDeleted=${getDeleted}&useMiles=${useMiles}&tzoMins=${tzoMins}`;\n // console.log(\"getSpreadSheet url\", url);\n\n dal.callWithToken\n .get(url, {responseType: 'blob'})\n .then((response) => {\n const url = window.URL.createObjectURL(new Blob([response.data]));\n const link = document.createElement('a');\n link.href = url;\n\n const contentDisposition = response.headers['content-disposition'];\n let fromText = moment(startEpoc * 1000).format(\"YYYY.MM.DD\");\n let toText = moment(endEpoc * 1000).format(\"YYYY.MM.DD\");\n let fileName = `RoadWarrior.${fromText}__${toText}.xlsx`;\n link.setAttribute('download', fileName); //or any other extension\n document.body.appendChild(link);\n link.click();\n link.remove();\n window.URL.revokeObjectURL(url);\n\n resolve(true);\n })\n .catch(err => {\n let status = err.code ? err.code : err.status;\n if (status) {\n if (status === 504) {\n RwLog.warn(SOURCE, `Network error uploading spreadsheet: ${JSON.stringify(err)}`);\n } else {\n RwLog.error(SOURCE, `startEpoc:${startEpoc}, endEpoc:${endEpoc}, tzoMins:${tzoMins} \\n\\n${err}`)\n // RwLog.error(SOURCE, `Unhandled error uploading spreadsheet: ${JSON.stringify(err)}`);\n }\n } else {\n RwLog.warn(SOURCE, `Undefined status: ${JSON.stringify(err)}`);\n }\n reject(err);\n })\n\n });\n }\n\n static downloadRoute(routeId: string, routeName: string, tzoMins: number): Promise {\n const SOURCE = \"RwTaskReporting.downloadRoute\"\n\n return new Promise(function (resolve, reject) {\n\n let useMiles = RwPrefUtils.distUnits === RwDistUnits.Miles;\n\n let url = `${RwConstants.CoreUri}/reporting/GetRouteSheet?routeId=${routeId}&useMiles=${useMiles}&tzoMins=${tzoMins}`;\n // console.log(\"getSpreadSheet url\", url);\n\n dal.callWithToken\n .get(url, {responseType: 'blob'})\n .then((res) => {\n if (res && res.data) {\n const url = window.URL.createObjectURL(new Blob([res.data]));\n const link = document.createElement('a');\n link.href = url;\n\n const contentDisposition = res.headers['content-disposition'];\n let fileName = `RoadWarrior.${routeName}.${routeId}.xlsx`;\n link.setAttribute('download', fileName); //or any other extension\n document.body.appendChild(link);\n link.click();\n link.remove();\n window.URL.revokeObjectURL(url);\n\n resolve(true);\n } else {\n RwLog.error(SOURCE, `RES Empty: routeId:${routeId}, tzoMins:${tzoMins}`)\n resolve(false);\n }\n })\n .catch(err => {\n let errText = JSON.stringify(err);\n let msg = `GET ${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nError:\\n${errText}`;\n if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\")) ||\n err.error === \"Network Error\") {\n RwLog.warn(SOURCE, `Network Error: ${msg}`);\n } else {\n RwLog.error(SOURCE, `Unhandled: ${msg}`);\n }\n //RwLog.error(SOURCE, `routeId:${routeId}, tzoMins:${tzoMins} \\n\\n${err}`)\n reject(err);\n })\n\n });\n }\n}","export class RwViewUtils {\n\n static mapGetViewBounds(map: H.Map): H.geo.Rect {\n return map.getViewModel().getLookAtData().bounds.getBoundingBox();\n }\n\n static mapSetViewBounds(map: H.Map, bounds: H.geo.Rect, opt_animate?: boolean) {\n //console.log(\"mapSetViewBounds\", bounds, opt_animate);\n\n //bug: HERE: This does not seem to animate wo/position parameter\n //let data: H.map.ViewModel.ILookAtData = {bounds: bounds};\n let data: H.map.ViewModel.ILookAtData = {bounds: bounds, position: bounds.getCenter()};\n map.getViewModel().setLookAtData(data, opt_animate);\n }\n\n static mapSetViewCenter(map: H.Map, centroid: H.geo.Point, opt_animate?: boolean) {\n //console.log(\"mapSetViewCenter\", centroid, opt_animate);\n let data: H.map.ViewModel.ILookAtData = {position: centroid};\n map.getViewModel().setLookAtData(data, opt_animate);\n }\n\n\n static mapSetViewPoint(map: H.Map, position: H.geo.IPoint, zoom: number, opt_animate?: boolean) {\n //console.log(\"mapSetViewPoint\", position, opt_animate);\n let data: H.map.ViewModel.ILookAtData = {position: position, zoom: zoom};\n map.getViewModel().setLookAtData(data, opt_animate);\n }\n\n}\n\n\n// static mapGetViewBounds(map: H.Map):H.geo.Rect{\n// // let mapAny = map as any;\n// // return mapAny.getViewModel().getLookAtData().bounds.getBoundingBox();\n// //return mapAny.getViewModel().getLookAtData().getBoundingBox();\n// return map.getViewModel().getLookAtData().bounds.getBoundingBox();\n// }\n//\n// static mapSetViewBounds(map: H.Map, bounds: H.geo.Rect, opt_animate?: boolean){\n// let data: H.map.ViewModel.ILookAtData = {bounds: bounds};\n// map.getViewModel().setLookAtData(data, opt_animate);\n// // let mapAny = map as any;\n// // let viewBounds = mapAny\n// // .getViewModel()\n// // .setLookAtData({bounds: bounds }, opt_animate);\n// }\n//\n// static mapSetViewCenter(map: H.Map, centroid: H.geo.Point, opt_animate?: boolean){\n// let data: H.map.ViewModel.ILookAtData = {position: centroid};\n// //bounds:new H.geo.Rect(1,1, 2, 3)}\n// map.getViewModel().setLookAtData(data , opt_animate);\n// }\n\n","import theStore from \"@/store\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwRoutePick} from \"@/app/dem/RwRoute\";\n\n\nexport class RwTaskSpace {\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n selectedTasks: RwStop[] = [];\n\n get selectedTask(): RwStop {\n return theStore.getters.selectedTask;\n }\n\n set selectedTask(val: RwStop) {\n theStore.dispatch(\"selectedTask\", val);\n }\n\n get showTaskRoutePicker(): boolean {\n return theStore.getters.showTaskRoutePicker;\n }\n\n set showTaskRoutePicker(val: boolean) {\n theStore.dispatch(\"showTaskRoutePicker\", val);\n }\n\n pendingRoutePick;\n\n showRoutePicker(srcId: string): Promise {\n this.showTaskRoutePicker = true;\n //console.log(\"showRoutePicker srcId m_routePickerSrcId\", srcId, self.m_routePickerSrcId);\n return new Promise((resolve) => {\n this.pendingRoutePick = resolve;\n });\n }\n\n // get selectedStop(): RwStop { return theStore.getters.selectedStop; }\n // set selectedStop(val: RwStop) { theStore.dispatch(\"selectedStop\", val); }\n\n\n // get showTaskEdit(): boolean{return store.getters.showEditSked;}\n // set showTaskEdit(val: boolean){store.dispatch(\"showTaskEdit\", val);}\n\n // get selectedTaskPin(): RwPin { return store.getters.selectedTaskPin; }\n // set selectedTaskPin(val: RwPin) { store.dispatch(\"selectedTaskPin\", val); }\n\n\n // deleteTask(task: RwStop) {\n // const self = this;\n // //this.space.selectedTask = task;\n //\n // ///xTEST: ACTIONS: RwTaskList onDeleteClick\n // this.globals.deleteTask(task)\n // .then((isDeleted) => {\n // if (isDeleted) {\n // self.globals.showSnack(\"Task Deleted\", \"success\");\n // }\n // else {\n // self.globals.showSnack(\"Task Delete Failed\", \"error\");\n // }\n // })\n // .catch(err => {\n // self.globals.showSnack(`Task Delete Errored: ${err}`, \"error\");\n // });\n //\n // }\n\n\n}\n\nexport default new RwTaskSpace();\n","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"scrollable\":\"\",\"persistent\":\"\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.enterPress.apply(null, arguments)}]},model:{value:(_vm.globals.showCCExpire),callback:function ($$v) {_vm.$set(_vm.globals, \"showCCExpire\", $$v)},expression:\"globals.showCCExpire\"}},[_c(VCard,[_c(VToolbar,{attrs:{\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[_c(VIcon,{staticClass:\"mr-3\",attrs:{\"color\":\"orange\"}},[_vm._v(\"mdi-alert\")]),_c(VToolbarTitle,[_vm._v(\"Card Expiration Notice\")])],1),_c(VCardText,[(_vm.globals.valCCPopup==1)?_c(VRow,{staticClass:\"mx-4 mt-6\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"The card on file for this account (\"+_vm._s(_vm.maskedCardInfo)+\") will expire at the end of this month (\"+_vm._s(_vm.cardExpiry)+\").\")])])],1):_vm._e(),(_vm.globals.valCCPopup!=1&&_vm.globals.valCCPopup!=3)?_c(VRow,{staticClass:\"mx-4 mt-6\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"The card on file for this account (\"+_vm._s(_vm.maskedCardInfo)+\") will expire after \"+_vm._s(_vm.cardExpiry)+\".\")])])],1):_vm._e(),(_vm.globals.valCCPopup==3)?_c(VRow,{staticClass:\"mx-4 mt-6\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"The card on file for this account (\"+_vm._s(_vm.maskedCardInfo)+\") expired at the end of \"+_vm._s(_vm.cardExpiry)+\".\")])])],1):_vm._e(),_c(VRow,{staticClass:\"mx-4\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"To prevent an interruption in service, please update your payment method below.\")])])],1),_c(VRow,{staticClass:\"mx-4\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"You can also update later through your Account page under Quota & Billing.\")])])],1),_c(VCheckbox,{staticClass:\"mx-4\",attrs:{\"label\":\"Do not warn again for this card\"},model:{value:(_vm.notShowCheck),callback:function ($$v) {_vm.notShowCheck=$$v},expression:\"notShowCheck\"}})],1),_c(VCardActions,[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.escPress}},[_vm._v(\"Close\")]),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.portalPress}},[_vm._v(\"Billing Portal\")]),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.enterPress}},[_vm._v(\"Update Payment Method\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\n\n@Component\nexport default class RwCCExpirePopup extends Vue {\n\n updatePaymentUrl: string = '';\n billingPortalUrl: string = '';\n\n cardExpiry: string = '';\n maskedCardInfo: string = '';\n\n notShowCheck = false;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n mounted() {\n this.updatePaymentUrl = this.plannerSpace.updatePaymentUrl;\n this.billingPortalUrl = this.plannerSpace.billingPortalUrl;\n this.cardExpiry = this.plannerSpace.cardExpiry;\n this.maskedCardInfo = this.plannerSpace.maskedCardInfo;\n }\n\n get plannerSpace(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n portalPress() {\n if (this.notShowCheck) {\n this.globals.hideCCPopup = true;\n }\n window.open(this.billingPortalUrl, \"_blank\");\n this.globals.showCCExpire = false;\n this.globals.valCCPopup = 0;\n }\n\n enterPress() {\n if (this.notShowCheck) {\n this.globals.hideCCPopup = true;\n }\n window.open(this.updatePaymentUrl, \"_blank\");\n this.globals.showCCExpire = false;\n this.globals.valCCPopup = 0;\n }\n\n escPress() {\n if (this.notShowCheck) {\n this.globals.hideCCPopup = true;\n }\n this.globals.showCCExpire = false;\n this.globals.valCCPopup = 0;\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwCCExpirePopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwCCExpirePopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwCCExpirePopup.vue?vue&type=template&id=43cf966e&scoped=true&\"\nimport script from \"./RwCCExpirePopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwCCExpirePopup.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"43cf966e\",\n null\n \n)\n\nexport default component.exports","// Styles\nimport \"../../../src/components/VAutocomplete/VAutocomplete.sass\"; // Extensions\n\nimport VSelect from '../VSelect/VSelect';\nimport VAutocomplete from '../VAutocomplete/VAutocomplete'; // Utils\n\nimport { keyCodes } from '../../util/helpers';\n/* @vue/component */\n\nexport default VAutocomplete.extend({\n name: 'v-combobox',\n props: {\n delimiters: {\n type: Array,\n default: () => []\n },\n returnObject: {\n type: Boolean,\n default: true\n }\n },\n data: () => ({\n editingIndex: -1\n }),\n computed: {\n computedCounterValue() {\n return this.multiple ? this.selectedItems.length : (this.internalSearch || '').toString().length;\n },\n\n hasSlot() {\n return VSelect.options.computed.hasSlot.call(this) || this.multiple;\n },\n\n isAnyValueAllowed() {\n return true;\n },\n\n menuCanShow() {\n if (!this.isFocused) return false;\n return this.hasDisplayedItems || !!this.$slots['no-data'] && !this.hideNoData;\n },\n\n searchIsDirty() {\n return this.internalSearch != null;\n }\n\n },\n methods: {\n onInternalSearchChanged(val) {\n if (val && this.multiple && this.delimiters.length) {\n const delimiter = this.delimiters.find(d => val.endsWith(d));\n\n if (delimiter != null) {\n this.internalSearch = val.slice(0, val.length - delimiter.length);\n this.updateTags();\n }\n }\n\n this.updateMenuDimensions();\n },\n\n genInput() {\n const input = VAutocomplete.options.methods.genInput.call(this);\n delete input.data.attrs.name;\n input.data.on.paste = this.onPaste;\n return input;\n },\n\n genChipSelection(item, index) {\n const chip = VSelect.options.methods.genChipSelection.call(this, item, index); // Allow user to update an existing value\n\n if (this.multiple) {\n chip.componentOptions.listeners = { ...chip.componentOptions.listeners,\n dblclick: () => {\n this.editingIndex = index;\n this.internalSearch = this.getText(item);\n this.selectedIndex = -1;\n }\n };\n }\n\n return chip;\n },\n\n onChipInput(item) {\n VSelect.options.methods.onChipInput.call(this, item);\n this.editingIndex = -1;\n },\n\n // Requires a manual definition\n // to overwrite removal in v-autocomplete\n onEnterDown(e) {\n e.preventDefault(); // If has menu index, let v-select-list handle\n\n if (this.getMenuIndex() > -1) return;\n this.$nextTick(this.updateSelf);\n },\n\n onKeyDown(e) {\n const keyCode = e.keyCode;\n\n if (e.ctrlKey || ![keyCodes.home, keyCodes.end].includes(keyCode)) {\n VSelect.options.methods.onKeyDown.call(this, e);\n } // If user is at selection index of 0\n // create a new tag\n\n\n if (this.multiple && keyCode === keyCodes.left && this.$refs.input.selectionStart === 0) {\n this.updateSelf();\n } else if (keyCode === keyCodes.enter) {\n this.onEnterDown(e);\n } // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n\n\n this.changeSelectedIndex(keyCode);\n },\n\n onTabDown(e) {\n // When adding tags, if searching and\n // there is not a filtered options,\n // add the value to the tags list\n if (this.multiple && this.internalSearch && this.getMenuIndex() === -1) {\n e.preventDefault();\n e.stopPropagation();\n return this.updateTags();\n }\n\n VAutocomplete.options.methods.onTabDown.call(this, e);\n },\n\n selectItem(item) {\n // Currently only supports items:\n if (this.editingIndex > -1) {\n this.updateEditing();\n } else {\n VAutocomplete.options.methods.selectItem.call(this, item); // if selected item contains search value,\n // remove the search string\n\n if (this.internalSearch && this.multiple && this.getText(item).toLocaleLowerCase().includes(this.internalSearch.toLocaleLowerCase())) {\n this.internalSearch = null;\n }\n }\n },\n\n setSelectedItems() {\n if (this.internalValue == null || this.internalValue === '') {\n this.selectedItems = [];\n } else {\n this.selectedItems = this.multiple ? this.internalValue : [this.internalValue];\n }\n },\n\n setValue(value) {\n VSelect.options.methods.setValue.call(this, value === undefined ? this.internalSearch : value);\n },\n\n updateEditing() {\n const value = this.internalValue.slice();\n const index = this.selectedItems.findIndex(item => this.getText(item) === this.internalSearch); // If user enters a duplicate text on chip edit,\n // don't add it, move it to the end of the list\n\n if (index > -1) {\n const item = typeof value[index] === 'object' ? Object.assign({}, value[index]) : value[index];\n value.splice(index, 1);\n value.push(item);\n } else {\n value[this.editingIndex] = this.internalSearch;\n }\n\n this.setValue(value);\n this.editingIndex = -1;\n this.internalSearch = null;\n },\n\n updateCombobox() {\n // If search is not dirty, do nothing\n if (!this.searchIsDirty) return; // The internal search is not matching\n // the internal value, update the input\n\n if (this.internalSearch !== this.getText(this.internalValue)) this.setValue(); // Reset search if using slot to avoid a double input\n\n const isUsingSlot = Boolean(this.$scopedSlots.selection) || this.hasChips;\n if (isUsingSlot) this.internalSearch = null;\n },\n\n updateSelf() {\n this.multiple ? this.updateTags() : this.updateCombobox();\n },\n\n updateTags() {\n const menuIndex = this.getMenuIndex(); // If the user is not searching\n // and no menu item is selected\n // or if the search is empty\n // do nothing\n\n if (menuIndex < 0 && !this.searchIsDirty || !this.internalSearch) return;\n\n if (this.editingIndex > -1) {\n return this.updateEditing();\n }\n\n const index = this.selectedItems.findIndex(item => this.internalSearch === this.getText(item)); // If the duplicate item is an object,\n // copy it, so that it can be added again later\n\n const itemToSelect = index > -1 && typeof this.selectedItems[index] === 'object' ? Object.assign({}, this.selectedItems[index]) : this.internalSearch; // If it already exists, do nothing\n // this might need to change to bring\n // the duplicated item to the last entered\n\n if (index > -1) {\n const internalValue = this.internalValue.slice();\n internalValue.splice(index, 1);\n this.setValue(internalValue);\n } // If menu index is greater than 1\n // the selection is handled elsewhere\n // TODO: find out where\n\n\n if (menuIndex > -1) return this.internalSearch = null;\n this.selectItem(itemToSelect);\n this.internalSearch = null;\n },\n\n onPaste(event) {\n var _a;\n\n this.$emit('paste', event);\n if (!this.multiple || this.searchIsDirty) return;\n const pastedItemText = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text/vnd.vuetify.autocomplete.item+plain');\n\n if (pastedItemText && this.findExistingIndex(pastedItemText) === -1) {\n event.preventDefault();\n VSelect.options.methods.selectItem.call(this, pastedItemText);\n }\n },\n\n clearableCallback() {\n this.editingIndex = -1;\n VAutocomplete.options.methods.clearableCallback.call(this);\n }\n\n }\n});\n//# sourceMappingURL=VCombobox.js.map","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VStepper } from 'vuetify/lib/components/VStepper';\nimport { VStepperContent } from 'vuetify/lib/components/VStepper';\nimport { VStepperHeader } from 'vuetify/lib/components/VStepper';\nimport { VStepperItems } from 'vuetify/lib/components/VStepper';\nimport { VStepperStep } from 'vuetify/lib/components/VStepper';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{staticStyle:{\"overflow-y\":\"hidden\"},attrs:{\"max-width\":\"700px\",\"overlay-color\":\"#000\",\"overlay-opacity\":\".7\",\"persistent\":\"\",\"content-class\":\"dialog-with-scroll\",\"scrollable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.enterPress.apply(null, arguments)}},model:{value:(_vm.globals.showOnboardSettings),callback:function ($$v) {_vm.$set(_vm.globals, \"showOnboardSettings\", $$v)},expression:\"globals.showOnboardSettings\"}},[_c(VCard,{staticClass:\"dialog-card\",class:_vm.globals.theme,attrs:{\"flat\":\"\"}},[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\",\"max-height\":\"48px\",\"flat\":\"\"}},[_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))])],1),_c(VCardText,{staticClass:\"mb-2\",class:_vm.globals.theme,staticStyle:{}},[_c(VTabsItems,{staticStyle:{\"height\":\"100%\"},attrs:{\"solo-inverted\":\"\",\"dense\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticClass:\"fill-height\",staticStyle:{\"height\":\"100%\"}},[_c(VCard,{staticClass:\"fill-height d-flex flex-column\",attrs:{\"flat\":\"\",\"color\":_vm.cardColor}},[_c(VCardText,{staticClass:\"flex-grow-1\"},[_c(VRow,{staticClass:\"ma-4\"},[_c(VCol,{attrs:{\"align\":\"left\"}},[_c('h3',{staticClass:\"mb-2\"},[_vm._v(\"Welcome to RoadWarrior!\")]),_c('p',[_vm._v(\" Please take a moment to customize some settings, so we can efficiently plan your Routes. \")]),_c('p',[_c('b',[_vm._v(\"In a rush?\")]),_vm._v(\" Once you set your Location Settings, you can use our presets for the remaining steps. You can always update any defaults in the Settings menu later. \")])])],1)],1)],1)],1),_c(VTabItem,{key:\"1\",staticStyle:{\"height\":\"100%\"}},[_c(VCard,{attrs:{\"flat\":\"\",\"color\":_vm.cardColor}},[_c(VCardText,[_c('span',{attrs:{\"align\":\"left\",\"my\":\"4\"}},[_c('p',[_vm._v(\" To provide the most accurate route times and distances, we use your location as the start point of your routes. \")]),_c('p',[_vm._v(\" In order to do this, we'll prompt you to provide web geolocation permissions. If you would like manually set your start instead, you can also specify that below. \")])]),_c('span',{staticClass:\"font-weight-bold\",attrs:{\"align\":\"left\"}},[_c('p',{staticClass:\"mb-0\"},[_vm._v(\"Default Starting Location\")])]),_c(VRow,[_c(VRadioGroup,{staticClass:\"pl-2\",attrs:{\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.defaultLocChoice),callback:function ($$v) {_vm.defaultLocChoice=$$v},expression:\"defaultLocChoice\"}},[_c(VRadio,{attrs:{\"value\":0,\"label\":\"Use Geolocation\"}}),_c(VRadio,{attrs:{\"value\":1,\"label\":\"Manually select location\"}})],1)],1)],1)],1)],1),_c(VTabItem,{key:\"2\",staticStyle:{\"height\":\"100%\"}},[_c('div',[_c('p',{staticClass:\"font-weight-bold my-4\"},[_vm._v(\" Your current default location \")])]),_c(VRow,[_c(VCol,{staticClass:\"align-center\"},[(!_vm.gpsUpdating)?_c(VImg,{staticClass:\"ma-auto\",style:(_vm.picHeightStyle),attrs:{\"max-width\":\"100%\",\"src\":_vm.locImageUrl},scopedSlots:_vm._u([{key:\"placeholder\",fn:function(){return [_c(VRow,{staticClass:\"fill-height ma-0\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VProgressCircular,{attrs:{\"indeterminate\":\"\",\"color\":\"grey lighten-5\"}})],1)]},proxy:true}],null,false,4034393411)}):_vm._e(),(_vm.gpsUpdating)?_c(VProgressCircular,{attrs:{\"indeterminate\":\"\"}}):_vm._e()],1)],1),_c(VBtn,{staticClass:\"mt-4\",attrs:{\"outlined\":\"\"},on:{\"click\":_vm.chooseNewLocation}},[_vm._v(\" Manually select a different location \")])],1),_c(VTabItem,{key:\"3\",staticStyle:{\"height\":\"100%\"}},[_c(VStepper,{staticClass:\"mb-2 elevation-0\",class:_vm.globals.theme,staticStyle:{\"background-color\":\"transparent\",\"height\":\"100%\",\"overflow-y\":\"auto\"},attrs:{\"flat\":\"\"},model:{value:(_vm.idxStep),callback:function ($$v) {_vm.idxStep=$$v},expression:\"idxStep\"}},[_c(VStepperHeader,{staticStyle:{\"height\":\"72px\"},attrs:{\"flat\":\"\"}},[_c(VStepperStep,{attrs:{\"editable\":_vm.idxStep > 1,\"complete\":_vm.idxStep > 1,\"step\":\"1\"}},[_vm._v(\" \"+_vm._s(_vm.idxStep == 1 ? 'Color' : '')+\" \")]),_c(VStepperStep,{attrs:{\"editable\":_vm.idxStep > 2,\"complete\":_vm.idxStep > 2,\"step\":\"2\"}},[_vm._v(\" \"+_vm._s(_vm.idxStep == 2 ? 'Routes' : '')+\" \")]),_c(VStepperStep,{attrs:{\"editable\":_vm.idxStep > 3,\"complete\":_vm.idxStep > 3,\"step\":\"3\"}},[_vm._v(_vm._s(_vm.idxStep == 3 ? 'Time' : '')+\" \")]),_c(VStepperStep,{attrs:{\"editable\":_vm.idxStep > 4,\"complete\":_vm.idxStep > 4,\"step\":\"4\"}},[_vm._v(\" \"+_vm._s(_vm.idxStep == 4 ? 'Notifications' : '')+\" \")]),_c(VStepperStep,{attrs:{\"complete\":_vm.idxStep > 5,\"step\":\"5\"}},[_vm._v(_vm._s(_vm.idxStep == 5 ? 'Confirm' : ''))])],1),_c(VStepperItems,{staticStyle:{\"height\":\"calc(100% - 72px)\"},attrs:{\"flat\":\"\"}},[_c(VStepperContent,{attrs:{\"step\":\"1\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\"},attrs:{\"flat\":\"\",\"color\":_vm.cardColor}},[_c(VCardText,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,[_c(VCol,{attrs:{\"align\":\"left\"}},[_c('p',[_vm._v(\" RoadWarrior has a few types of location pins. Here you'll set the default colors. \")]),_c('p',[_vm._v(\" Click on any icon to get started with customizing, or click next if you're happy with the pre-set defaults. \")])])],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onStopClick}},[_c(VCol,{attrs:{\"cols\":\"10\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Stops\")])]),_c('p',{staticClass:\"mt-0\"},[_vm._v(\" The locations that make up every RoadWarrior Route. \")])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[_c(VBtn,{attrs:{\"outlined\":\"\",\"fab\":\"\",\"x-small\":\"\",\"color\":_vm.stopColor}},[_c(VIcon,{on:{\"click\":_vm.onStopClick}},[_vm._v(\"mdi-map-marker\")])],1),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onTaskClick}},[_c(VCol,{attrs:{\"cols\":\"10\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Tasks\")])]),_c('p',{staticClass:\"mt-0\"},[_vm._v(\" The 'to-dos' that don't have a Route to call home yet. \")])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[_c(VBtn,{attrs:{\"outlined\":\"\",\"fab\":\"\",\"x-small\":\"\",\"color\":_vm.taskColor}},[_c(VIcon,{on:{\"click\":_vm.onStopClick}},[_vm._v(\"mdi-clipboard-check\")])],1),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onSiteClick}},[_c(VCol,{attrs:{\"cols\":\"10\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Favorites\")])]),_c('p',{staticClass:\"mt-0\"},[_vm._v(\" The locations that you will frequently re-use. \")])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[_c(VBtn,{attrs:{\"outlined\":\"\",\"fab\":\"\",\"x-small\":\"\",\"color\":_vm.siteColor}},[_c(VIcon,{on:{\"click\":_vm.onSiteClick}},[_vm._v(\"mdi-star-circle\")])],1),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)],1)],1)],1),_c(VStepperContent,{attrs:{\"step\":\"2\"}},[_c(VCard,{attrs:{\"color\":_vm.cardColor}},[_c(VCardText,[_c(VRow,[_c(VCol,{attrs:{\"align\":\"left\"}},[_c('p',[_vm._v(\" RoadWarrior's optimization algorithm is designed to mold to your individual needs to create the perfect Routes for you. Help us get to know your preferences so that each Route is pre-set for success. \")])])],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onUnitsClick}},[_c(VCol,{attrs:{\"cols\":\"4\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Distance Units\")])]),_c('p',{staticClass:\"mt-0\"})]),_c(VCol,{attrs:{\"align\":\"right\",\"align-self\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.distUnitsText))])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[_c(VIcon,[_vm._v(\"mdi-road-variant\")]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onOptModeClick}},[_c(VCol,{attrs:{\"cols\":\"6\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Optimization Mode\")])]),_c('p',{staticClass:\"my-0\"},[_vm._v(\" Prioritizes saving time or saving miles. \")])]),_c(VCol,{attrs:{\"align\":\"right\",\"align-self\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.optModeText))])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[(_vm.optMode == 1)?_c(VIcon,[_vm._v(\"mdi-ruler\")]):_vm._e(),(_vm.optMode == 2)?_c(VIcon,[_vm._v(\"mdi-timer\")]):_vm._e(),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onTravelModeClick}},[_c(VCol,{attrs:{\"cols\":\"6\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Travel Mode\")])]),_c('p',{staticClass:\"my-0\"},[_vm._v(\"Optimizes based on path types.\")])]),_c(VCol,{attrs:{\"align\":\"right\",\"align-self\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.travelModeText))])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[(_vm.travelMode == 'driving')?_c(VIcon,[_vm._v(\"mdi-car\")]):_vm._e(),(_vm.travelMode == 'bicycling')?_c(VIcon,[_vm._v(\"mdi-bike\")]):_vm._e(),(_vm.travelMode == 'walking')?_c(VIcon,[_vm._v(\"mdi-walk\")]):_vm._e(),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onRoundTripClick}},[_c(VCol,{attrs:{\"cols\":\"6\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Route Type\")])]),_c('p',{staticClass:\"my-0\"},[_vm._v(\" Sets your Route's relative end point. \")])]),_c(VCol,{attrs:{\"align\":\"right\",\"align-self\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.roundTripText))])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[(_vm.roundTripSelected == true)?_c(VIcon,[_vm._v(\"mdi-refresh\")]):_vm._e(),(_vm.roundTripSelected == false)?_c(VIcon,[_vm._v(\"mdi-arrow-right\")]):_vm._e(),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onAvoidsClick}},[_c(VCol,{attrs:{\"cols\":\"6\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Avoids\")])]),_c('p',{staticClass:\"my-0\"},[_vm._v(\" Omits certain road features on your Route. \")])]),_c(VCol,{attrs:{\"align\":\"right\",\"align-self\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.avoidsText))])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[(_vm.avoids.length == 0)?_c(VIcon,[_vm._v(\"mdi-minus-circle-outline\")]):_vm._e(),(_vm.avoids.length !== 0)?_c(VIcon,[_vm._v(\"mdi-minus-circle\")]):_vm._e(),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)],1)],1)],1),_c(VStepperContent,{attrs:{\"step\":\"3\"}},[_c(VCard,{attrs:{\"flat\":\"\",\"color\":_vm.cardColor}},[_c(VCardText,[_c(VRow,[_c(VCol,{attrs:{\"align\":\"left\"}},[_c('p',[_vm._v(\" For your routing experience to be most accurate, please provide us with estimates of the times listed below. \")])])],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onVisitTimeClick}},[_c(VCol,{attrs:{\"cols\":\"6\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Visit Time\")])]),_c('p',{staticClass:\"mt-0\"},[_vm._v(\" Minutes spent at each location, on average. \")])]),_c(VCol,{attrs:{\"align\":\"right\",\"align-self\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.visitTime)+\" minutes\")])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[_c(VIcon,[_vm._v(\"mdi-clock\")]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticClass:\"pointer\",class:_vm.hoverTheme,on:{\"click\":_vm.onRouteTimeClick}},[_c(VCol,{attrs:{\"cols\":\"6\",\"align\":\"left\",\"align-self\":\"center\"}},[_c('p',{staticClass:\"mb-0\"},[_c('b',[_vm._v(\"Route Time\")])]),_c('p',{staticClass:\"mt-0\"},[_vm._v(\" Hours your Routes take to complete, on average. \")])]),_c(VCol,{attrs:{\"align\":\"right\",\"align-self\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.routeTime / 60)+\" hours\")])]),_c(VCol,{attrs:{\"cols\":\"2\",\"align\":\"right\",\"align-self\":\"center\"}},[_c(VIcon,[_vm._v(\"mdi-routes-clock\")]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)],1)],1)],1),_c(VStepperContent,{attrs:{\"step\":\"4\"}},[_c(VCard,{attrs:{\"flat\":\"\",\"color\":_vm.cardColor}},[_c(VCardText,[(\n _vm.globals.checkNotificationOnboard() === 'default'\n )?_c(VRow,[_c(VCol,{attrs:{\"align\":\"left\",\"align-self\":\"center\"}},[_c('span',[_vm._v(\"RoadWarrior can notify you with \"),_c('b',[_vm._v(\"push notifications\")]),_vm._v(\" as your day progresses.\")]),_c('br'),_c('span',[_vm._v(\"When you click next, you'll see a permissions request appear in your browser. Once you decline or accept, you won't be asked again. Any future changes must be made from your browser settings.\")])])],1):_vm._e(),(\n _vm.globals.checkNotificationOnboard() === 'granted'\n )?_c(VRow,[_c(VCol,{attrs:{\"align\":\"left\",\"align-self\":\"center\"}},[_c('span',[_vm._v(\"Push notifications successfully enabled on this device. Hit \"),_c('b',[_vm._v(\"Next\")]),_vm._v(\" to review all settings and complete setup.\")])])],1):_vm._e(),(_vm.globals.checkNotificationOnboard() === 'denied')?_c(VRow,[_c(VCol,{attrs:{\"align\":\"left\",\"align-self\":\"center\"}},[_c('span',[_vm._v(\"You won't receive push notifications from RoadWarrior. Hit \"),_c('b',[_vm._v(\"Next\")]),_vm._v(\" to review all settings and complete setup.\")])])],1):_vm._e()],1)],1)],1),_c(VStepperContent,{attrs:{\"step\":\"5\"}},[_c(VCard,{attrs:{\"flat\":\"\",\"color\":_vm.cardColor}},[_c(VCardText,[_c(VRow,[_c(VCol,{attrs:{\"align\":\"left\"}},[_c('span',{attrs:{\"align\":\"left\"}},[_vm._v(\" You're all set! Please take a moment to review your defaults below. Make any changes by clicking on the icon you wish to change. \")])])],1),_c(VRow,[_c(VCol,{attrs:{\"cols\":\"6\"}},[_c('span',[_vm._v(\"Colors:\")]),_c(VRow,{staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\"},attrs:{\"align\":\"center\"}},[_c(VCol,{attrs:{\"cols\":\"3\"}}),_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":_vm.stopColor},on:{\"click\":function($event){_vm.idxStep = 1}}},on),[_vm._v(\"mdi-map-marker\")])]}}])},[_c('span',[_vm._v(\"Stop Color\")])])],1),_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":_vm.taskColor},on:{\"click\":function($event){_vm.idxStep = 1}}},on),[_vm._v(\"mdi-clipboard-check\")])]}}])},[_c('span',[_vm._v(\"Task Color\")])])],1),_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":_vm.siteColor},on:{\"click\":function($event){_vm.idxStep = 1}}},on),[_vm._v(\"mdi-star-circle\")])]}}])},[_c('span',[_vm._v(\"Favorite Color\")])])],1)],1)],1),_c(VCol,[_c('span',[_vm._v(\"Routes:\")]),_c(VRow,[_c(VCol,{attrs:{\"cols\":\"1\"}}),_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-road-variant\")])]}}])},[_c('span',[_vm._v(\"Units: \"+_vm._s(_vm.distUnitsText))])])],1),(_vm.optMode == 2)?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-timer\")])]}}],null,false,237166472)},[_c('span',[_vm._v(\"Optimization Mode: Fastest Time\")])])],1):_vm._e(),(_vm.optMode == 1)?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-ruler\")])]}}],null,false,435381651)},[_c('span',[_vm._v(\"Optimization Mode: Shortest Distance\")])])],1):_vm._e(),(_vm.travelMode == 'driving')?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-car\")])]}}],null,false,3254677311)},[_c('span',[_vm._v(\"Travel Mode: Driving\")])])],1):_vm._e(),(_vm.travelMode == 'bicycling')?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-bike\")])]}}],null,false,3791710794)},[_c('span',[_vm._v(\"Travel Mode: Biking\")])])],1):_vm._e(),(_vm.travelMode == 'walking')?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-walk\")])]}}],null,false,3258342366)},[_c('span',[_vm._v(\"Travel Mode: Walking\")])])],1):_vm._e(),(_vm.isRoundTrip == true)?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-refresh\")])]}}],null,false,3137237906)},[_c('span',[_vm._v(\"Route Type: Round Trip\")])])],1):_vm._e(),(_vm.isRoundTrip == false)?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-arrow-right\")])]}}],null,false,3267858427)},[_c('span',[_vm._v(\"Route Type: One Way\")])])],1):_vm._e(),(_vm.avoids.length == 0)?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-minus-circle-outline\")])]}}],null,false,2155316081)},[_c('span',[_vm._v(\"No Default Avoids\")])])],1):_vm._e(),(_vm.avoids.length !== 0)?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 2}}},on),[_vm._v(\"mdi-minus-circle\")])]}}],null,false,1736458588)},[_c('span',[_vm._v(\"Avoid: \"+_vm._s(_vm.avoidsText))])])],1):_vm._e()],1)],1)],1),_c(VRow,[_c(VCol,{attrs:{\"cols\":\"6\"}},[_c('span',[_vm._v(\"Location:\")]),_c(VRow,[_c(VCol,{attrs:{\"cols\":\"4\"}}),(_vm.isDynStart == true)?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxTab = 1}}},on),[_vm._v(\"mdi-crosshairs-gps\")])]}}],null,false,2815469055)},[_c('span',[_vm._v(\"Auto-set Start\")])])],1):_vm._e(),(_vm.isDynStart == false)?_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxTab = 1}}},on),[_vm._v(\"mdi-crosshairs-off\")])]}}],null,false,3857785140)},[_c('span',[_vm._v(\"Manually Set Start\")])])],1):_vm._e(),_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxTab = 2}}},on),[_vm._v(\"mdi-home\")])]}}])},[_c('span',[_vm._v(\"(\"+_vm._s(_vm.lat.toFixed(4))+\", \"+_vm._s(_vm.lng.toFixed(4))+\")\")])])],1)],1)],1),_c(VCol,[_c('span',[_vm._v(\"Time:\")]),_c(VRow,[_c(VCol,{attrs:{\"cols\":\"4\"}}),_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 3}}},on),[_vm._v(\"mdi-clock\")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.visitTime)+\" mins per Stop\")])])],1),_c(VCol,{attrs:{\"cols\":\"2\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({on:{\"click\":function($event){_vm.idxStep = 3}}},on),[_vm._v(\"mdi-routes-clock\")])]}}])},[_c('span',[_vm._v(_vm._s(_vm.routeTime / 60)+\" hours per Route\")])])],1)],1)],1)],1)],1)],1)],1)],1)],1),(_vm.globals.m_showReloPicker)?_c('RwReloPicker',{attrs:{\"init-title\":_vm.globals.m_reloPickerInitTitle,\"init-lat\":_vm.lat,\"init-lng\":_vm.lng},on:{\"onReloPick\":_vm.onReloPick}}):_vm._e()],1),_c(VTabItem,{key:\"4\"},[_c(VRow,{staticClass:\"ma-4\"},[_c(VCol,{attrs:{\"align\":\"left\"}},[_c('p',[_vm._v(\" Stops are the locations that make up each Route. You'll be working with Stops more than any other location type, so pick a color you like! \")])])],1),[_c(VRow,{attrs:{\"justify\":\"space-around\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"flat\":\"\",\"hide-sliders\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},nativeOn:{\"click\":function($event){return _vm.homeAndSave(_vm.idxTab)}},model:{value:(_vm.stopColor),callback:function ($$v) {_vm.stopColor=$$v},expression:\"stopColor\"}})],1)]],2),_c(VTabItem,{key:\"5\"},[_c(VRow,{staticClass:\"ma-4\"},[_c(VCol,{attrs:{\"align\":\"left\"}},[_c('p',[_vm._v(\" Tasks are 'to-do' locations that don't have a Route to call home yet. \")])])],1),[_c(VRow,{attrs:{\"justify\":\"space-around\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"flat\":\"\",\"hide-sliders\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},nativeOn:{\"click\":function($event){return _vm.homeAndSave(_vm.idxTab)}},model:{value:(_vm.taskColor),callback:function ($$v) {_vm.taskColor=$$v},expression:\"taskColor\"}})],1)]],2),_c(VTabItem,{key:\"6\"},[_c(VRow,{staticClass:\"ma-4\"},[_c(VCol,{attrs:{\"align\":\"left\"}},[_c('p',[_vm._v(\" Favorites are your most common locations that you plan on re-using. They are not a part of any Route, but can be turned into Stops. \")])])],1),[_c(VRow,{attrs:{\"justify\":\"space-around\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"flat\":\"\",\"hide-sliders\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},nativeOn:{\"click\":function($event){return _vm.homeAndSave(_vm.idxTab)}},model:{value:(_vm.siteColor),callback:function ($$v) {_vm.siteColor=$$v},expression:\"siteColor\"}})],1)]],2),_c(VTabItem,{key:\"7\"},[[_c(VRow,[_c(VCol,{attrs:{\"cols\":\"4\"}}),_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.homeAndSave(_vm.idxTab)}},model:{value:(_vm.unitsSelected),callback:function ($$v) {_vm.unitsSelected=$$v},expression:\"unitsSelected\"}},[_c(VRadio,{key:1,attrs:{\"label\":\"Miles\",\"value\":1},nativeOn:{\"click\":function($event){return _vm.onUnitRadio(1)}}}),_c(VRadio,{key:2,attrs:{\"label\":\"Kilometers\",\"value\":2},nativeOn:{\"click\":function($event){return _vm.onUnitRadio(2)}}})],1),_c(VCol,{attrs:{\"cols\":\"4\"}})],1)]],2),_c(VTabItem,{key:\"8\"},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VAvatar,{attrs:{\"color\":\"#E2004F\",\"size\":\"60\"}},[(_vm.optMode == 2)?_c(VIcon,[_vm._v(\"mdi-timer\")]):_vm._e(),(_vm.optMode == 1)?_c(VIcon,[_vm._v(\"mdi-ruler\")]):_vm._e()],1)],1)],1),_c(VRow,[_c(VCol,{staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\"},attrs:{\"cols\":\"10\"}},[(_vm.optMode == 2)?_c('span',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Fastest Time is best for users looking to minimize total hours spent on the roads.\")]):_vm._e(),(_vm.optMode == 1)?_c('span',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Shortest Distance is best for users looking to minimize miles driven or fuel usage.\")]):_vm._e(),_c('br')])],1),_c(VRow,[_c(VCol,{attrs:{\"cols\":\"4\"}}),_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.homeAndSave(_vm.idxTab)}},model:{value:(_vm.optModeSelected),callback:function ($$v) {_vm.optModeSelected=$$v},expression:\"optModeSelected\"}},[_c(VRadio,{key:0,attrs:{\"label\":\"Fastest Time\",\"value\":0},nativeOn:{\"click\":function($event){return _vm.onOptModeRadio(0)}}}),_c(VRadio,{key:1,attrs:{\"label\":\"Shortest Distance\",\"value\":1},nativeOn:{\"click\":function($event){return _vm.onOptModeRadio(1)}}})],1),_c(VCol,{attrs:{\"cols\":\"4\"}})],1)],1),_c(VTabItem,{key:\"9\"},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VAvatar,{attrs:{\"color\":\"#E2004F\",\"size\":\"60\"}},[(_vm.travelMode == 'driving')?_c(VIcon,[_vm._v(\"mdi-car\")]):_vm._e(),(_vm.travelMode == 'bicycling')?_c(VIcon,[_vm._v(\"mdi-bike\")]):_vm._e(),(_vm.travelMode == 'walking')?_c(VIcon,[_vm._v(\"mdi-walk\")]):_vm._e()],1)],1)],1),_c(VRow,[_c(VCol,{attrs:{\"cols\":\"5\"}}),_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.homeAndSave(_vm.idxTab)}},model:{value:(_vm.travelMode),callback:function ($$v) {_vm.travelMode=$$v},expression:\"travelMode\"}},[_c(VRadio,{attrs:{\"label\":\"Driving\",\"value\":\"driving\"}}),_c(VRadio,{attrs:{\"label\":\"Bicycling\",\"value\":\"bicycling\"}}),_c(VRadio,{attrs:{\"label\":\"Walking\",\"value\":\"walking\"}})],1),_c(VCol,{attrs:{\"cols\":\"4\"}})],1)],1),_c(VTabItem,{key:\"10\"},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VAvatar,{attrs:{\"color\":\"#E2004F\",\"size\":\"60\"}},[(_vm.isRoundTrip == true)?_c(VIcon,[_vm._v(\"mdi-refresh\")]):_vm._e(),(_vm.isRoundTrip == false)?_c(VIcon,[_vm._v(\"mdi-arrow-right\")]):_vm._e()],1)],1)],1),_c(VRow,[_c(VCol,{attrs:{\"cols\":\"5\"}}),_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.homeAndSave(_vm.idxTab)}},model:{value:(_vm.roundTripSelected),callback:function ($$v) {_vm.roundTripSelected=$$v},expression:\"roundTripSelected\"}},[_c(VRadio,{key:1,attrs:{\"label\":\"Round Trip\",\"value\":1},nativeOn:{\"click\":function($event){return _vm.onRoundTripRadio(1)}}}),_c(VRadio,{key:0,attrs:{\"label\":\"One Way\",\"value\":0},nativeOn:{\"click\":function($event){return _vm.onRoundTripRadio(0)}}})],1),_c(VCol,{attrs:{\"cols\":\"4\"}})],1)],1),_c(VTabItem,{key:\"11\"},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VAvatar,{attrs:{\"color\":\"#E2004F\",\"size\":\"60\"}},[_c(VIcon,[_vm._v(\"mdi-minus-circle-outline\")])],1)],1)],1),_c(VRow,[_c(VCol,{staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\"}},[_c('span',[_vm._v(\"Is it important to avoid any of the following on your Route?\")])])],1),_c(VRow,[_c(VCol,{staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\"},attrs:{\"cols\":\"6\"}},[_c(VSelect,{attrs:{\"dense\":\"\",\"items\":_vm.avoidsList,\"multiple\":\"\",\"label\":\"Avoids\"},model:{value:(_vm.avoidsSelected),callback:function ($$v) {_vm.avoidsSelected=$$v},expression:\"avoidsSelected\"}})],1)],1)],1),_c(VTabItem,{key:\"12\"},[_c(VRow,[_c(VCol,{staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\"},attrs:{\"cols\":\"10\"}},[_c('span',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Visit Time is the average time in minutes you spend at each Stop. We use this to plan effectively for things like traffic. This can be customized on any Stop.\")]),_c('br')])],1),_c(VRow,{attrs:{\"align\":\"start\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"mt-4 mx-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Visit Time (minutes):\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" The expected amount of time spent at this stop. \")])]),_c(VForm,{ref:\"form\",attrs:{\"lazy-validation\":\"\",\"dense\":\"\"}},[_c(VTextField,{staticClass:\"text-right\",staticStyle:{\"max-width\":\"128px\"},attrs:{\"reverse\":\"\",\"rules\":_vm.visitRules,\"dense\":\"\",\"filled\":\"\",\"single-line\":\"\",\"type\":\"number\",\"hint\":\"Between 0 to 999\",\"persistent-hint\":true},model:{value:(_vm.visitTimeInput),callback:function ($$v) {_vm.visitTimeInput=$$v},expression:\"visitTimeInput\"}})],1)],1)],1)],1),_c(VTabItem,{key:\"13\"},[_c(VRow,[_c(VCol,{staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\"},attrs:{\"cols\":\"10\"}},[_c('span',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Route Duration is the average time in hours you expect each Route to last. We use this to allow Routes to run overnight or over multiple days, as needed.\")]),_c('br')])],1),_c(VRow,[_c(VCol,{staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\"},attrs:{\"cols\":\"6\"}},[_c(VForm,{ref:\"form\",attrs:{\"lazy-validation\":\"\",\"dense\":\"\"}},[_c(VCombobox,{attrs:{\"items\":_vm.globals.routeTimes,\"clearable\":\"\",\"rules\":_vm.rteRules,\"hint\":\"168 hours (7 days) max.\",\"label\":\"Default Route Duration\",\"open-on-clear\":\"\",\"persistent-hint\":\"\",\"suffix\":\"hours\"},model:{value:(_vm.routeTimeHoursCalc),callback:function ($$v) {_vm.routeTimeHoursCalc=$$v},expression:\"routeTimeHoursCalc\"}})],1)],1)],1)],1),_c(VTabItem,{key:\"14\"},[_c(VRow,[_c(VCol,{staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\"},attrs:{\"cols\":\"10\"}},[_c('br'),_c('span',{staticStyle:{\"font-size\":\"medium\"}},[_vm._v(\"Allowing location permissions will enable the RoadWarrior app to automatically center the map on your position. \"),_c('br'),_vm._v(\" If you accept, you will see a confirmation pop-up from your browser. Click 'Allow' in the pop-up to proceed with enabling permissions.\")]),_c('br')])],1)],1)],1)],1),_c(VCardActions,{staticClass:\"pb-6\",staticStyle:{\"height\":\"24px\"}},[(_vm.idxTab > 1)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.navBack}},[_vm._v(\"Back\")]):_vm._e(),_c(VSpacer),(_vm.idxTab === 0)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.checkOrConfirmLoc}},[_vm._v(\"Start Customizing\")]):_vm._e(),(_vm.idxTab === 1)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.promptOrChooseLoc}},[_vm._v(_vm._s(_vm.nextLocBtnTitle))]):_vm._e(),(_vm.idxTab === 14)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.promptLocation}},[_vm._v(\"Allow Location Access\")]):_vm._e(),(_vm.idxTab >= 11 && _vm.idxTab < 14)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.homeAndSave(_vm.idxTab)}}},[_vm._v(\"Apply\")]):_vm._e(),(_vm.idxTab === 3 && _vm.idxStep !== 5 && _vm.idxStep !== 4)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.idxStep = 4}}},[_vm._v(\"Skip Remaining Presets\")]):_vm._e(),(_vm.idxTab === 2)?_c('div',[(!_vm.globals.showStartingLocOnlyOnboard)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.goToStepper}},[_vm._v(\"Next\")]):_vm._e(),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\",\"disabled\":_vm.gpsUpdating},on:{\"click\":_vm.save}},[_vm._v(\"Finish\")])],1):_vm._e(),(\n _vm.idxTab === 3 &&\n _vm.idxStep !== 5 &&\n (_vm.globals.checkNotificationOnboard() !== 'default' ||\n _vm.idxStep !== 4)\n )?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.idxStep++}}},[_vm._v(\"Next \")]):_vm._e(),(\n _vm.idxTab === 3 &&\n _vm.idxStep === 4 &&\n _vm.globals.checkNotificationOnboard() === 'default'\n )?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.checkNotes}},[_vm._v(\"Next \")]):_vm._e(),(_vm.idxTab === 3 && _vm.idxStep === 5)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.save}},[_vm._v(\"Save & Finish\")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport theSettingSpace, {RwSettingSpace} from \"@/app/views/account/RwSettingSpace\";\nimport RwReloPicker from \"@/app/views/pickers/RwReloPicker.vue\";\nimport {RwGeoPoint} from \"@/app/utils/RwGeoUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {OnboardingSteps, OnboardingTab} from \"@/app/RwEnums\";\nimport {RwTaskSearch} from \"@/app/dal/RwTaskSearch\";\nimport {RwConstants} from \"@/app/RwConstants\";\n\n@Component({components: {RwReloPicker}})\nexport default class RwOnboardSettings extends Vue {\n\n //#region Props\n\n idxTab: OnboardingTab = OnboardingTab.Welcome;\n idxStep: OnboardingSteps = OnboardingSteps.Colors;\n idxStepTab: 0;\n\n isLocationSet: boolean = false;\n\n m_stopColor: string = \"\";\n m_taskColor: string = \"\";\n m_siteColor: string = \"\";\n\n m_optMode: number = 2;\n m_travelMode: string = \"\";\n\n m_isRoundTrip: boolean = false;\n m_avoids: string[] = null;\n m_units: number = 0;\n\n m_visitTime: number = 0;\n m_visitTimeInput: number = RwPrefUtils.visitTime;\n m_routeTime: number = 0;\n\n m_lat: number = 0;\n m_lng: number = 0;\n m_isDynStart: boolean = false;\n\n visitTrigger = 0;\n isVisitRangeValid = false;\n\n avoidsList = ['Highways', 'Tolls', 'Ferries'];\n startText = ['Use Geolocation', 'Use Default'];\n\n defaultLocChoice: number = 0;\n gpsUpdating = false;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get settingSpace(): RwSettingSpace {\n return theSettingSpace;\n }\n\n get stopColor(): string {\n if (!this.m_stopColor && this.settingSpace.stopColor) {\n this.m_stopColor = this.settingSpace.stopColor;\n }\n return this.m_stopColor;\n }\n\n set stopColor(val: string) {\n this.m_stopColor = val;\n }\n\n get taskColor(): string {\n if (!this.m_taskColor && this.settingSpace.taskColor) {\n this.m_taskColor = this.settingSpace.taskColor;\n }\n return this.m_taskColor;\n }\n\n set taskColor(val: string) {\n this.m_taskColor = val;\n }\n\n get siteColor(): string {\n if (!this.m_siteColor && this.settingSpace.siteColor) {\n this.m_siteColor = this.settingSpace.siteColor;\n }\n return this.m_siteColor;\n }\n\n set siteColor(val: string) {\n this.m_siteColor = val;\n }\n\n get optMode(): number {\n if (!this.m_optMode && this.settingSpace.optMode) {\n this.m_optMode = this.settingSpace.optMode;\n }\n return this.m_optMode;\n }\n\n set optMode(val: number) {\n this.m_optMode = val;\n }\n\n get travelMode(): string {\n if (!this.m_travelMode && this.settingSpace.travelMode) {\n this.m_travelMode = this.settingSpace.travelMode;\n }\n return this.m_travelMode;\n }\n\n set travelMode(val: string) {\n this.m_travelMode = val;\n }\n\n get isRoundTrip(): boolean {\n if (!this.m_isRoundTrip == null) {\n this.m_isRoundTrip = this.settingSpace.isRoundTrip;\n }\n return this.m_isRoundTrip;\n }\n\n set isRoundTrip(val: boolean) {\n this.m_isRoundTrip = val;\n }\n\n get avoids(): string[] {\n if (!this.m_avoids) {\n this.m_avoids = this.settingSpace.avoids;\n }\n return this.m_avoids;\n }\n\n set avoids(val: string[]) {\n this.m_avoids = val;\n }\n\n get units(): number {\n if (this.m_units == 0) {\n this.m_units = this.settingSpace.distUnits;\n }\n return this.m_units;\n }\n\n set units(val: number) {\n this.m_units = val;\n }\n\n get visitTime(): number {\n if (!this.m_visitTime && this.settingSpace.visitTime) {\n this.m_visitTime = this.settingSpace.visitTime;\n }\n return this.m_visitTime;\n }\n\n set visitTime(val: number) {\n this.m_visitTime = val;\n }\n\n get visitTimeInput(): number {\n return this.m_visitTimeInput;\n }\n\n set visitTimeInput(val: number) {\n this.m_visitTimeInput = val;\n }\n\n get routeTime(): number {\n if (!this.m_routeTime && this.settingSpace.routeTime) {\n this.m_routeTime = this.settingSpace.routeTime;\n }\n return this.m_routeTime;\n }\n\n set routeTime(val: number) {\n this.m_routeTime = val;\n }\n\n get lat(): number {\n if (!this.m_lat && this.settingSpace.startLat) {\n this.m_lat = this.settingSpace.startLat;\n }\n return this.m_lat;\n }\n\n set lat(val: number) {\n this.m_lat = val;\n }\n\n get lng(): number {\n if (!this.m_lng && this.settingSpace.startLng) {\n this.m_lng = this.settingSpace.startLng;\n }\n return this.m_lng;\n }\n\n set lng(val: number) {\n this.m_lng = val;\n }\n\n get isDynStart(): boolean {\n if (!this.m_isDynStart && this.settingSpace.isDynPoint) {\n this.m_isDynStart = this.settingSpace.isDynPoint;\n }\n return this.m_isDynStart;\n }\n\n set isDynStart(val: boolean) {\n this.m_isDynStart = val;\n }\n\n get title(): string {\n let title: string;\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n title = \"RoadWarrior Defaults Setup\";\n break;\n case 1:\n title = \"Default Location\";\n break;\n case 2:\n title = \"Confirm Location\";\n break;\n case 3:\n title = \"Map & Route Defaults\";\n break;\n case 4:\n title = \"Stop Color\";\n break;\n case 5:\n title = \"Task Color\";\n break;\n case 6:\n title = \"Favorite Color\";\n break;\n case 7:\n title = \"Distance Units\";\n break;\n case 8:\n title = \"Optimize Mode\";\n break;\n case 9:\n title = \"Travel Mode\";\n break;\n case 10:\n title = \"Route Type\";\n break;\n case 11:\n title = \"Avoids\";\n break;\n case 12:\n title = \"Visit Time\";\n break;\n case 13:\n title = \"Route Time\";\n break;\n case 14:\n title = \"Grant Location Permission\";\n break;\n }\n return title;\n }\n\n get visitRules(): any[] {\n return [\n v => v <= 999 || 'Max 999 mins',\n v => !!v || 'Value is required',\n v => /^[0-9]+$/.test(v) || 'Whole minutes only'\n ];\n }\n\n get rteRules(): any[] {\n return [\n v => v <= 168 || 'Max 168 hours (one week)',\n v => v > 0 || 'Must be greater than 0',\n v => !!v || 'Value is required',\n v => /^[0-9]+$/.test(v) || 'Whole numbers only'\n ];\n }\n\n get rules() {\n const self = this;\n return {\n required: value => {\n if (!!value || value === 0) {\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return true;\n } else {\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return false;\n }\n },\n visitRange: value => {\n if (value >= 0 && value <= 999) {\n self.isVisitRangeValid = true;\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return true;\n } else {\n self.isVisitRangeValid = false;\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return 'Between 0 to 999'\n }\n },\n }\n }\n\n get locImageUrl(): string {\n const apiKey = RwConstants.hereApiKey;\n return `https://image.maps.hereapi.com/mia/v3/base/mc/overlay:zoom=14/650x500/jpeg?apiKey=` +\n `${apiKey}&overlay=point:${this.lat},${this.lng};label=$num;color=%23000;text-color=%23000;text-outline-color=%23000;size=large©right=false`;\n }\n\n get nextLocBtnTitle(): string {\n if (this.defaultLocChoice === 0) {\n return \"Confirm Geolocation Permissions\"\n } else {\n return \"Pick Default Location\"\n }\n }\n\n get distUnitsText(): string {\n if (this.units == 1) {\n return 'Miles'\n } else {\n return 'Kilometers'\n }\n }\n\n get unitsSelected(): number {\n if (this.units == 1) {\n return 1;\n } else {\n return 2;\n }\n }\n\n set unitsSelected(val: number) {\n if (val == 1) {\n this.units = 1;\n } else {\n this.units = 2;\n }\n }\n\n get optModeText(): string {\n if (this.optMode == 1) {\n return 'Shortest Distance'\n } else {\n return 'Fastest Time'\n }\n }\n\n get optModeSelected(): number {\n if (this.optMode == 1) {\n return 1;\n } else {\n return 0;\n }\n }\n\n set optModeSelected(val: number) {\n if (val == 1) {\n this.optMode = 1;\n } else {\n this.optMode = 2;\n }\n }\n\n get travelModeText(): string {\n if (this.travelMode == 'walking') {\n return 'Walking';\n } else if (this.travelMode == 'driving') {\n return 'Driving';\n } else {\n return 'Bicycling'\n }\n }\n\n get roundTripText(): string {\n if (this.isRoundTrip == true) {\n return 'Round Trip';\n } else {\n return 'One Way'\n }\n }\n\n get roundTripSelected(): number {\n if (this.isRoundTrip == true) {\n return 1;\n } else {\n return 0;\n }\n }\n\n set roundTripSelected(val: number) {\n if (val == 0) {\n this.isRoundTrip = false;\n } else {\n this.isRoundTrip = true;\n }\n }\n\n get avoidsText(): string {\n if (this.avoids) {\n // console.warn(\"this.avoids: \", this.avoids);\n if (this.avoids.length == 0) {\n return 'No Avoids Selected';\n } else if (this.avoids.length == 1) {\n return this.avoids[0];\n } else if (this.avoids.length == 2) {\n return this.avoids[0] + \" and \" + this.avoids[1];\n } else if (this.avoids.length == 3) {\n return this.avoids[0] + \", \" + this.avoids[1] + \", and \" + this.avoids[2];\n }\n } else {\n return 'No Avoids Selected';\n }\n }\n\n get avoidsSelected(): string[] {\n let avoidsArr: string[] = [];\n if (this.avoids.length != 0) {\n if (this.avoids.includes('highways')) {\n avoidsArr.push('Highways');\n }\n if (this.avoids.includes('tolls')) {\n avoidsArr.push('Tolls');\n }\n if (this.avoids.includes('ferries')) {\n avoidsArr.push('Ferries');\n }\n }\n return avoidsArr;\n }\n\n set avoidsSelected(val: string[]) {\n if (val) {\n if (val.includes('Highways') && val.includes('Tolls') && val.includes('Ferries')) {\n this.m_avoids = ['highways', 'tolls', 'ferries'];\n } else if (val.includes('Highways') && val.includes('Tolls') && !val.includes('Ferries')) {\n this.m_avoids = ['highways', 'tolls'];\n } else if (val.includes('Highways') && !val.includes('Tolls') && val.includes('Ferries')) {\n this.m_avoids = ['highways', 'ferries'];\n } else if (!val.includes('Highways') && val.includes('Tolls') && val.includes('Ferries')) {\n this.m_avoids = ['tolls', 'ferries'];\n } else if (val.includes('Highways') && !val.includes('Tolls') && !val.includes('Ferries')) {\n this.m_avoids = ['highways'];\n } else if (!val.includes('Highways') && val.includes('Tolls') && !val.includes('Ferries')) {\n this.m_avoids = ['tolls'];\n } else if (!val.includes('Highways') && !val.includes('Tolls') && val.includes('Ferries')) {\n this.m_avoids = ['ferries'];\n } else {\n this.m_avoids = [];\n }\n }\n }\n\n get startTypeSelected(): string {\n this.m_isDynStart = (this.isDynStart === true) ? true : false;\n return (this.isDynStart === true) ? 'Geolocation-Based' : 'Manually Set';\n }\n\n set startTypeSelected(val: string) {\n this.m_isDynStart = (val == 'Geolocation-Based') ? true : false;\n }\n\n get visitTimeSelected(): number {\n return this.m_visitTime;\n }\n\n set visitTimeSelected(val: number) {\n if (val < 0) {\n this.m_visitTime = 0;\n } else if (val > 999) {\n this.m_visitTime = 999;\n } else {\n this.m_visitTime = val;\n }\n }\n\n get visitTimeCalc(): number {\n let trigger1 = this.visitTrigger;\n //console.log(\"GET visitTimeCalc m_visitTime, defaultVisitTime\", this.m_visitTime, RwPrefUtils.visitTime)\n return this.m_visitTime;\n }\n\n set visitTimeCalc(val: number) {\n if (val >= 0 && val <= 999) {\n this.m_visitTime = Math.round(val);\n } else {\n if (val < 0) this.m_visitTime = 0;\n if (val > 999) this.m_visitTime = 999;\n }\n this.visitTrigger++;\n }\n\n get routeTimeHours(): number {\n let val = this.m_routeTime / 60;\n //console.warn(\"get routeTimeHours: \", val);\n return val;\n }\n\n set routeTimeHours(val: number) {\n this.m_routeTime = (val * 60);\n //console.warn(\"set routeTimeHours: \", this.m_routeTime);\n }\n\n get routeTimeHoursCalc(): number {\n let val = this.m_routeTime / 60;\n //console.warn(\"get routeTimeHours: \", val);\n return val;\n }\n\n set routeTimeHoursCalc(val: number) {\n let temp = val;\n if (temp >= 1 && temp <= 168) {\n val = Math.round(temp);\n } else {\n if (temp < 1) val = 1;\n if (temp > 168) val = 168;\n }\n this.m_routeTime = (val * 60);\n //console.warn(\"set routeTimeHours: \", this.m_routeTime);\n }\n\n //Styles\n\n windowHeight = \"\";\n\n onWindowHeight() {\n this.windowHeight = document.documentElement.clientHeight + \"px\";\n }\n\n get heightStyle() {\n return `height:calc(${this.windowHeight} - 230px)`;\n }\n\n get dialogStyle() {\n return `height:calc(${this.windowHeight} - 130px)`;\n }\n\n get picHeightStyle() {\n return `height:calc(${this.windowHeight} - 400px)`;\n }\n\n get hoverTheme() {\n return this.globals.isDarkMode ? 'hover-dark' : 'hover-light';\n }\n\n get cardColor() {\n return this.globals.isDarkMode ? \"#1e1e1e\" : \"#ffffff\";\n }\n\n get stepperStyle() {\n return this.globals.isDisp ? \"width:35%;background-color: transparent;height:60px\" : \"width:30%;background-color: transparent;height:60px\";\n }\n\n //#endregion\n\n //#region Lifecycle\n\n mounted() {\n this.globals.checkGeoLocationPerms();\n this.onWindowHeight();\n this.routeTimeHours = this.routeTime / 60;\n if (this.globals.showStartingLocOnlyOnboard)\n {\n this.idxTab = 1;\n }\n }\n\n created() {\n window.addEventListener(\"resize\", this.onWindowHeight, {passive: true});\n }\n\n destroyed() {\n window.removeEventListener(\"resize\", this.onWindowHeight);\n }\n\n //#endregion\n\n //#region User Actions\n\n enterPress() {\n if (this.idxTab == 3 && this.idxStep < 5 && (this.globals.checkNotificationOnboard() != 'default' || this.idxStep != 4)) {\n this.idxStep++;\n } else if (this.idxStep == 4 && this.globals.checkNotificationOnboard() == 'default') {\n this.checkNotes();\n } else if (this.idxTab < 3) {\n this.idxTab++;\n } else if (this.idxTab >= 11 && this.idxTab < 14) {\n this.homeAndSave(this.idxTab);\n } else if (this.idxTab == 3 && this.idxStep == 5) {\n this.save();\n }\n }\n\n isValidForm() {\n let vueForm = this.$refs.form as any;\n let isValid = vueForm.validate();\n return isValid;\n }\n\n navBack() {\n if (this.idxTab === OnboardingTab.ConfirmStartLoc ||\n (this.idxTab === OnboardingTab.StepperDefaults && this.idxStep === OnboardingSteps.Colors)) {\n this.idxTab--;\n } else if (this.idxTab === OnboardingTab.StepperDefaults && this.idxStep !== OnboardingSteps.Colors) {\n this.idxStep--;\n } else if (this.idxTab > OnboardingTab.StepperDefaults && this.idxTab != 14) {\n this.idxTab = OnboardingTab.StepperDefaults;\n } else if (this.idxTab == 14) {\n this.idxTab = 1;\n }\n }\n\n checkOrConfirmLoc() {\n switch (this.globals.checkGeoOnboard()) {\n default:\n case \"prompt\":\n this.idxTab = OnboardingTab.PrimeGPSAccess;\n break;\n\n case \"granted\":\n this.updateGPSConfirmationLoc();\n this.idxTab = 2;\n break;\n\n case \"denied\":\n if (this.settingSpace.startLat === 0 && this.settingSpace.startLng === 0) {\n this.idxTab = OnboardingTab.PrimeGPSAccess;\n } else {\n this.idxTab = OnboardingTab.ConfirmStartLoc;\n }\n break;\n }\n }\n\n promptOrChooseLoc() {\n if (this.defaultLocChoice === 0) {\n this.promptForGPSPermissions();\n } else {\n this.manualPickLocation();\n }\n }\n\n chooseNewLocation() {\n this.manualPickLocation(false);\n }\n\n manualPickLocation(navAfterChoice: boolean = true) {\n let self = this;\n let SOURCE = \"RwRouteEdit.showRelo\";\n this.globals.defaultStartRelo(this.lat, this.lng, true)\n .then((coord) => {\n this.lat = coord[0];\n this.lng = coord[1];\n this.isLocationSet = true;\n if (navAfterChoice) {\n this.idxTab = OnboardingTab.ConfirmStartLoc;\n }\n })\n .catch(err => {\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n })\n }\n\n onReloPick(coord: RwGeoPoint) {\n this.globals.onReloPick(coord);\n }\n\n promptForGPSPermissions() {\n //console.log(\"onSearchLocationClick self.isGpsEnabled\", self.isGpsButtonDisabled);\n this.globals.checkGeoLocationPerms()\n .then((status) => {\n //console.log(\"onSearchLocationClick self.isGpsEnabled\", self.isGpsButtonDisabled);\n if (status && status.state) {\n switch (status.state) {\n case \"granted\":\n this.updateGPSConfirmationLoc();\n this.idxTab = OnboardingTab.ConfirmStartLoc;\n break;\n case \"denied\":\n this.globals.showSnack(\"Geolocation Permission was previously denied. To enable automatic map centering on your location, \" +\n \"you can update your preference in Browser >> Settings >> Permissions >> Location \", \"warning\")\n break;\n case \"prompt\":\n //Permission Priming Goes Here\n this.idxTab = 14;\n }\n }\n });\n\n }\n\n promptLocation() {\n this.globals.promptForLocationPermission().then(success => {\n if (success) {\n this.updateGPSConfirmationLoc();\n this.idxTab = OnboardingTab.ConfirmStartLoc;\n } else {\n this.idxTab = 1;\n this.defaultLocChoice = 1;\n this.globals.showSnack(\"Please manually set location.\", 'warning');\n }\n })\n }\n\n goToStepper() {\n if (this.lat !== 0 && this.lng !== 0) {\n const search = new RwTaskSearch();\n search.getCountryCode(this.lat, this.lng)\n .then(result => {\n if (result === \"USA\") {\n this.units = 1;\n } else {\n this.units = 2;\n }\n });\n }\n this.globals.hasOnboarded = true;\n this.idxTab = OnboardingTab.StepperDefaults;\n }\n\n\n save() {\n this.globals.hasOnboarded = true;\n this.settingSpace.stopColor = this.m_stopColor;\n this.settingSpace.taskColor = this.m_taskColor;\n this.settingSpace.siteColor = this.m_siteColor;\n this.settingSpace.optMode = this.m_optMode;\n this.settingSpace.travelMode = this.m_travelMode;\n this.settingSpace.isRoundTrip = this.m_isRoundTrip;\n this.settingSpace.avoids = this.m_avoids;\n this.settingSpace.distUnits = this.m_units;\n this.settingSpace.visitTime = this.m_visitTime;\n this.settingSpace.routeTime = this.m_routeTime;\n this.settingSpace.startLat = this.m_lat;\n this.settingSpace.startLng = this.m_lng;\n this.settingSpace.isDynPoint = this.m_isDynStart;\n RwPrefUtils.stopColor = this.stopColor;\n RwPrefUtils.siteColor = this.siteColor;\n RwPrefUtils.taskColor = this.taskColor;\n RwPrefUtils.optimizeType = this.optMode;\n RwPrefUtils.travelMode = this.travelMode;\n RwPrefUtils.isRoundTrip = this.isRoundTrip;\n RwPrefUtils.avoids = this.avoids;\n RwPrefUtils.distUnits = this.units;\n RwPrefUtils.visitTime = this.visitTime;\n RwPrefUtils.routeSpan = this.routeTime;\n RwPrefUtils.startLat = this.lat;\n RwPrefUtils.startLng = this.lng;\n RwPrefUtils.isDynPoint = this.isDynStart;\n this.globals.saveWebPrefs();\n this.globals.showOnboardSettings = false;\n this.globals.m_showRouteNew = false;\n this.globals.createNewRoute();\n if (this.globals.showPODTutorialOnOnboard) {\n this.globals.showPODTutorial = true;\n } else {\n this.globals.setShowOnboardTipsTimer();\n }\n }\n\n homeAndSave(tab: number) {\n switch (tab) {\n case 4:\n this.settingSpace.stopColor = this.m_stopColor;\n RwPrefUtils.stopColor = this.stopColor;\n break;\n case 5:\n this.settingSpace.taskColor = this.m_taskColor;\n RwPrefUtils.taskColor = this.taskColor;\n break;\n case 6:\n this.settingSpace.siteColor = this.m_siteColor;\n RwPrefUtils.siteColor = this.siteColor;\n break;\n case 7:\n this.settingSpace.distUnits = this.m_units;\n RwPrefUtils.distUnits = this.units;\n break;\n case 8:\n this.settingSpace.optMode = this.m_optMode;\n RwPrefUtils.optimizeType = this.optMode;\n break;\n case 9:\n this.settingSpace.travelMode = this.m_travelMode;\n RwPrefUtils.travelMode = this.travelMode;\n break;\n case 10:\n this.settingSpace.isRoundTrip = this.m_isRoundTrip;\n RwPrefUtils.isRoundTrip = this.isRoundTrip;\n break;\n case 11:\n this.settingSpace.avoids = this.m_avoids;\n RwPrefUtils.avoids = this.avoids;\n break;\n case 12:\n this.visitTimeAutoReturn(this.visitTimeInput);\n break;\n case 13:\n this.routeTimeAutoReturn(this.routeTimeHours * 60);\n break;\n }\n if (tab <= 11) {\n this.globals.saveWebPrefs();\n setTimeout(this.home, 500);\n }\n }\n\n visitTimeAutoReturn(val: number) {\n if (this.isValidForm()) {\n if (val > 0 && val <= 999) {\n this.visitTime = Math.round(val);\n } else if (val <= 0) {\n this.visitTime = 0;\n } else {\n this.visitTime = 999;\n }\n this.visitTimeInput = this.visitTime;\n RwPrefUtils.visitTime = this.visitTime;\n this.settingSpace.visitTime = this.m_visitTime;\n this.globals.saveWebPrefs();\n setTimeout(this.home, 500);\n } else {\n this.globals.showSnack(\"Please check your inputs and try again\", \"error\");\n }\n\n }\n\n routeTimeAutoReturn(val: number) {\n if (this.isValidForm()) {\n RwPrefUtils.routeSpan = val;\n this.settingSpace.routeTime = val;\n this.globals.saveWebPrefs();\n setTimeout(this.home, 500);\n } else {\n this.globals.showSnack(\"Please check your inputs and try again\", \"error\");\n }\n }\n\n home() {\n this.idxTab = 3;\n }\n\n onStopClick() {\n this.idxTab = 4;\n }\n\n onTaskClick() {\n this.idxTab = 5;\n }\n\n onSiteClick() {\n this.idxTab = 6;\n }\n\n onUnitsClick() {\n this.idxTab = 7;\n }\n\n onOptModeClick() {\n this.idxTab = 8;\n }\n\n onTravelModeClick() {\n this.idxTab = 9;\n }\n\n onRoundTripClick() {\n this.idxTab = 10;\n }\n\n onAvoidsClick() {\n this.idxTab = 11;\n }\n\n onVisitTimeClick() {\n this.idxTab = 12;\n }\n\n onRouteTimeClick() {\n this.idxTab = 13;\n }\n\n onUnitRadio(val) {\n if (val == 1) {\n this.m_units = 1;\n this.units = 1;\n } else {\n this.m_units = 2;\n this.units = 2;\n }\n }\n\n onOptModeRadio(val) {\n if (val == 0) {\n this.m_optMode = 2;\n this.optMode = 2;\n } else {\n this.m_optMode = 1;\n this.optMode = 1;\n }\n }\n\n onRoundTripRadio(val) {\n if (val == 0) {\n this.m_isRoundTrip = false;\n this.isRoundTrip = false;\n } else {\n this.m_isRoundTrip = true;\n this.isRoundTrip = true;\n }\n }\n\n //#endregion\n\n //#region Helper APIs\n\n checkNotes() {\n const self = this;\n const SOURCE = \"RwOnboardSettings.checkNotes\";\n this.idxStep++;\n if (Notification.permission == 'default') {\n self.globals.browserNotesRequest();\n } else {\n RwLog.warn(SOURCE, `Notification.permission: ${Notification.permission}`)\n }\n }\n\n updateGPSConfirmationLoc() {\n this.gpsUpdating = true;\n RwGlobals\n .getGeolocation()\n .then((pos) => {\n //console.log(\"pos\",(pos));\n this.lat = pos.coords.latitude;\n this.lng = pos.coords.longitude;\n })\n .finally(() => this.gpsUpdating = false);\n }\n\n //#endregion\n\n // get travelModeSelected(): string {\n // if (this.travelMode === 'walking') {\n // this.m_travelMode = 'walking';\n // return 'Walk';\n // }\n // else if (this.travelMode === 'driving') {\n // this.m_travelMode = 'driving';\n // return 'Drive';\n // }\n // else {\n // this.m_travelMode = 'bicycling';\n // return 'Bike'\n // }\n // }\n //\n // set travelModeSelected(val: string) {\n // if (val == 'Walk') {\n // this.m_travelMode = 'walking';\n // }\n // else if (val === 'Drive') {\n // this.m_travelMode = 'driving';\n // }\n // else {\n // this.m_travelMode = 'bicycling';\n // }\n // }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwOnboardSettings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwOnboardSettings.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwOnboardSettings.vue?vue&type=style&index=0&id=c8271a42&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwOnboardSettings.vue?vue&type=template&id=c8271a42&scoped=true&\"\nimport script from \"./RwOnboardSettings.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwOnboardSettings.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwOnboardSettings.vue?vue&type=style&index=0&id=c8271a42&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c8271a42\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"scrollable\":\"\",\"persistent\":\"\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"max-width\":\"600px\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.enterPress.apply(null, arguments)}]},model:{value:(_vm.globals.showDeleteDriver),callback:function ($$v) {_vm.$set(_vm.globals, \"showDeleteDriver\", $$v)},expression:\"globals.showDeleteDriver\"}},[_c(VCard,{attrs:{\"max-height\":\"350px\"}},[_c(VToolbar,{attrs:{\"max-height\":\"48px\",\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VImg,{attrs:{\"height\":\"32px\",\"width\":\"32px\",\"contain\":\"\",\"max-width\":\"56px\",\"src\":_vm.selectedDriver.imageUrl}}),_c(VToolbarTitle,[_vm._v(\"Delete User - \"+_vm._s(_vm.selectedDriver.formatDisplayName))])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTabs,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[_c('span',{staticClass:\"popupText\"},[_vm._v(\" Are you sure you want to delete \"+_vm._s(_vm.selectedDriver.userName)+\"? \"),_c('b',[_vm._v(\"This action cannot be undone,\"),_c('br'),_vm._v(\" and any new Users you create this month will be billed as a new User.\")]),_c('br'),_c('br'),_vm._v(\" If you'd instead like to swap this User's credentials and keep the User,\"),_c('b',[_vm._v(\" please Replace your User instead.\")])])]),_c(VTabItem,{key:\"1\"},[_c('span',{staticClass:\"popupText\"},[_vm._v(\" This will permanently delete \"+_vm._s(_vm.selectedDriver.userName)+\"'s account, and cannot be undone. \")])])],1)],1),_c(VCardActions,[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.showDeleteDriver = false}}},[_vm._v(\"Cancel\")]),_c(VSpacer),(_vm.isFirstTab)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.onClickDeleteDriver}},[_vm._v(\"Delete User\")]):_vm._e(),(_vm.isFirstTab)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.globals.showReplaceDriver=true, _vm.globals.showDeleteDriver=false}}},[_vm._v(\"Replace User \")]):_vm._e(),(!_vm.isFirstTab)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onClickDeleteDriver}},[_vm._v(\"Delete User\")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theDriverSpace, {RwDriverSpace} from \"@/app/views/drivers/RwDriverSpace\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwTaskLicense} from \"@/app/dal/RwTaskLicense\";\nimport theStore from \"@/store\"\nimport {RwConstants} from \"@/app/RwConstants\";\n\n@Component\nexport default class RwDeleteDriver extends Vue {\n\n _idxTab = 0;\n\n get idxTab(): number {\n let tab = (this.globals.showDeletePrompt) ? 0 : 1;\n this.$data._idxTab = tab;\n return this.$data._idxTab;\n }\n\n set idxTab(val: number) {\n this._idxTab = val;\n }\n\n get driverSpace(): RwDriverSpace {\n return theDriverSpace;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n\n get selectedDriver(): RwUser {\n //console.warn(\"RwDriverEdit get selectedDriver\", this.driverSpace.selectedDriver.name);\n return theStore.getters.selectedDriver;\n }\n\n set selectedDriver(val: RwUser) {\n theStore.dispatch(\"selectedDriver\", val);\n }\n\n escPress(event: Event) {\n event.stopPropagation();\n this.globals.showDeleteDriver = false;\n //!//this.driverSpace.showDeleteDriver = false;\n // this.saveDriverChanges();\n }\n\n enterPress(event: Event) {\n event.stopPropagation();\n\n //!//this.driverSpace.showDeleteDriver = false;\n if (this.isFirstTab) {\n this.globals.showReplaceDriver = true;\n this.globals.showDeleteDriver = false;\n //!//this.driverSpace.showReplaceDriver=true;\n //!//this.driverSpace.showDeleteDriver=false;\n } else {\n this.onClickDeleteDriver();\n }\n // this.saveDriverChanges();\n }\n\n\n get isFirstTab(): boolean {\n return this.idxTab === 0;\n }\n\n onClickDeleteDriver() {\n let self = this;\n this.driverSpace.showDeleteDriver = false;\n if (!this.selectedDriver || this.selectedDriver.userId === RwConstants.EmptyGuid) {\n this.globals.showSnack(\"Driver is Not Selected\", \"error\");\n return;\n }\n RwTaskLicense.deleteDriver(this.selectedDriver.userId)\n .then(success => {\n let isRemoved = self.globals.removeDriver(this.selectedDriver.userId);\n if (isRemoved) {\n this.$gtm.trackEvent({\n event: 'flex-user-remove'\n });\n this.selectedDriver = null;\n this.globals.showDeleteDriver = false;\n this.globals.showSnack(\"User Deleted\", \"success\");\n //!//this.driverSpace.selectedDriver = null;\n }\n })\n .catch(err => {\n this.globals.showSnack(\"Failed to Delete User\", \"error\");\n });\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDeleteDriver.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDeleteDriver.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwDeleteDriver.vue?vue&type=template&id=b8cfbe2c&scoped=true&\"\nimport script from \"./RwDeleteDriver.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwDeleteDriver.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b8cfbe2c\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"scrollable\":\"\",\"persistent\":\"\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;_vm.password.length > 3 ? _vm.onPassChange(_vm.password) : _vm.editPasswordDialog = false}]},model:{value:(_vm.globals.showEditDriverPass),callback:function ($$v) {_vm.$set(_vm.globals, \"showEditDriverPass\", $$v)},expression:\"globals.showEditDriverPass\"}},[_c(VCard,{attrs:{\"max-height\":\"325px\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[_c(VImg,{attrs:{\"height\":\"32px\",\"width\":\"32px\",\"contain\":\"\",\"max-width\":\"56px\",\"src\":_vm.selectedDriver.imageUrl}}),_c(VToolbarTitle,[_vm._v(\"Change Password\")])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('div',{staticClass:\"popupText\"},[_c('p',{staticClass:\"text-wrap\"},[_vm._v(\" Changing your User's password may immediately log them out on any active devices. Ensure your Users don't have a Route in-progress before proceeding. \")])])])]),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[(_vm.globals.showEditDriverPass)?_c(VTextField,{ref:\"pwFocus\",attrs:{\"autofocus\":\"\",\"id\":\"pwFocus\",\"required\":\"\",\"rules\":_vm.passwordRules,\"label\":\"New Password\",\"type\":\"password\",\"dense\":\"\",\"autocomplete\":\"one-time-code\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}):_vm._e()],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.showEditDriverPass=false}}},[_vm._v(\"Cancel\")]),_c(VBtn,{attrs:{\"text\":\"\",\"disabled\":_vm.password.length<4,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.onPassChange(_vm.password)}}},[_vm._v(\"Save\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwTaskDriver} from \"@/app/dal/RwTaskDriver\";\nimport theStore from \"@/store\"\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n@Component\nexport default class RwDriverPassEdit extends Vue {\n\n password: string = \"\";\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get passwordRules(): any[] {\n if (this.password) {\n return [v => v.length >= 4 || 'Minimum 4 characters.'];\n }\n }\n\n // get driverSpace(): RwDriverSpace {\n // return theDriverSpace;\n // }\n\n get selectedDriver(): RwUser {\n return theStore.getters.selectedDriver;\n }\n\n set selectedDriver(val: RwUser) {\n theStore.dispatch(\"selectedDriver\", val);\n }\n\n escPress(event: Event) {\n event.stopPropagation();\n this.globals.showEditDriverPass = false;\n\n }\n\n onPassChange(newPass: string) {\n const SOURCE = \"RwDriverPassEdit.onPassChange\";\n let uid = this.selectedDriver.userId;\n this.globals.showEditDriverPass = false;\n RwTaskDriver.changeDriverPassword(uid, newPass)\n .then(() => {\n this.globals.userPass = newPass;\n this.globals.showSnack(\"Password Updated\", \"success\")\n })\n .catch((err) => {\n if (theGlobals.checkNotHandled(err)) {\n let status = err.status;\n if (status !== 403 && status !== 401) {\n RwLog.error(SOURCE, `Unhandled: driverUserId:${uid}, driverNewPassword:${newPass} \\n\\nerror:${JSON.stringify(err)} `);\n }\n }\n this.globals.showSnack(\"Failed to Update Password\", \"error\")\n });\n }\n\n mounted() {\n const self = this;\n //console.log(\"activated\");\n\n setTimeout(function () {\n self.$nextTick(function () {\n (self.$refs.pwFocus as HTMLInputElement).focus();\n });\n }, 100);\n\n }\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverPassEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverPassEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwDriverPassEdit.vue?vue&type=template&id=1f69be6a&scoped=true&\"\nimport script from \"./RwDriverPassEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwDriverPassEdit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f69be6a\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"scrollable\":\"\",\"persistent\":\"\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;_vm.userNameSuffix.length > 3 ? _vm.onUNameChange() : _vm.globals.showEditDriverUname = false}]},model:{value:(_vm.globals.showEditDriverUname),callback:function ($$v) {_vm.$set(_vm.globals, \"showEditDriverUname\", $$v)},expression:\"globals.showEditDriverUname\"}},[_c(VCard,{attrs:{\"max-height\":\"400px\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[_c(VImg,{attrs:{\"height\":\"32px\",\"width\":\"32px\",\"contain\":\"\",\"max-width\":\"56px\",\"src\":_vm.selectedDriver.imageUrl}}),_c(VToolbarTitle,[_vm._v(\"Change \"+_vm._s(_vm.selectedDriver.name)+\"'s Username\")])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VRow,[_c(VCol,[_c('div',{staticClass:\"pa-3 pb-0\"},[_vm._v(\"Changing your User's username will log them out on next sync. Ensure your User isn't on a Route before proceeding. \")])])],1),_c(VForm,{ref:\"form\",staticClass:\"pa-3 pb-0\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();}},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VTextField,{ref:\"field\",attrs:{\"filled\":\"\",\"prefix\":_vm.teamDomainDot,\"autofocus\":\"\",\"hint\":\"User will use this to log in. Team domain will affix to front of each username.\",\"label\":\"Username\",\"rules\":_vm.userNameRules,\"dense\":\"\",\"clearable\":\"\"},model:{value:(_vm.userNameSuffix),callback:function ($$v) {_vm.userNameSuffix=$$v},expression:\"userNameSuffix\"}})],1)],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.showEditDriverUname=false}}},[_vm._v(\"Cancel\")]),_c(VBtn,{attrs:{\"text\":\"\",\"disabled\":!_vm.valid,\"color\":\"primary\"},on:{\"click\":function($event){return _vm.onUNameChange()}}},[_vm._v(\"Save\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theDriverSpace, {RwDriverSpace} from \"@/app/views/drivers/RwDriverSpace\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport theStore from \"@/store\"\nimport {RwTaskLicense} from \"@/app/dal/RwTaskLicense\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n@Component\nexport default class RwDriverUnameEdit extends Vue {\n\n\n valid: boolean = false;\n\n m_teamDomainDot: string;\n m_userNameSuffix: string;\n\n initialUserName: string = this.selectedDriver.userName;\n //\n // get initialUserName(): string {\n // return this.selectedDriver.userName;\n // }\n\n get userNameRules(): any[] {\n if (this.userNameSuffix) {\n return [\n v => v.length >= 4 && v != this.initialUserNameSuffix || 'Minimum 4 characters; new username must not match current username.',\n v => v.length <= 16 || 'Username must not exceed 16 characters.',\n v => this.globals.isAlpha(v) || 'Username must be alphanumeric.',\n v => (this.driversUsernames.indexOf(v.toLowerCase()) == -1) || 'Username already in use.'\n ];\n }\n }\n\n //#region globals/space setup\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get driverSpace(): RwDriverSpace {\n return theDriverSpace;\n }\n\n get selectedDriver(): RwUser {\n return theStore.getters.selectedDriver;\n }\n\n set selectedDriver(val: RwUser) {\n theStore.dispatch(\"selectedDriver\", val);\n }\n\n get driversUsernames(): string[] {\n const unames = [];\n for (let driver of this.globals.drivers) {\n if (driver.userId != this.selectedDriver.userId) unames.push(driver.userName.toLowerCase().replace(this.teamDomainDot.toLowerCase(), ''));\n }\n return unames;\n }\n\n get userNameSuffix(): string {\n if (!this.m_userNameSuffix) {\n //console.warn(\"get userNameSuffix userName\", this.selectedDriver.userName);\n if (this.selectedDriver.userName.includes(\"@\")) {\n this.m_userNameSuffix = this.selectedDriver.userName.substring(0, this.selectedDriver.userName.lastIndexOf(\"@\") - 1);\n } else {\n this.m_userNameSuffix = this.selectedDriver.userName.substring(this.selectedDriver.userName.lastIndexOf(\".\") + 1);\n }\n }\n // console.warn('get this.userNameSuffix: ', this.m_userNameSuffix);\n // console.warn ('this.initialUserNameSuffix: ', this.initialUserNameSuffix);\n return this.m_userNameSuffix;\n }\n\n set userNameSuffix(val: string) {\n // console.warn('usernameSuffix being set: ', this.m_userNameSuffix);\n // console.warn('initialUserNameSuffix should still be:', this.initialUserNameSuffix);\n this.m_userNameSuffix = val;\n }\n\n get teamDomainDot(): string {\n if (!this.m_teamDomainDot) {\n if (this.globals.isSubTeam) {\n this.m_teamDomainDot = this.globals.teamDomain + \".\" + this.globals.subDomain + \".\";\n //console.warn(\"this.globals.isSubTeam==TRUE: \", this.m_teamDomainDot);\n } else {\n this.m_teamDomainDot = this.globals.teamDomain + \".\";\n //console.warn(\"this.globals.isSubTeam==FALSE: \", this.m_teamDomainDot);\n }\n }\n //console.warn(\"this.teamDomainDot gotten:\", this.m_teamDomainDot);\n return this.m_teamDomainDot;\n }\n\n get initialUserNameSuffix(): string {\n return this.selectedDriver.userName.substring(this.selectedDriver.userName.lastIndexOf(\".\") + 1);\n }\n\n\n onUNameChange() {\n let self = this;\n let SOURCE = \"RwDriverEdit.onUnameChange\";\n let unString: string = null;\n let isValidForm = this.isValidForm();\n if (isValidForm) {\n // if ((this.$refs.form as Vue & { validate: () => boolean }).validate()) {\n const fullyQualUN = this.m_teamDomainDot + this.m_userNameSuffix;\n const existingDriverUN = this.globals.drivers.find(d => d.userName.toLowerCase() === fullyQualUN.toLowerCase());\n if (!existingDriverUN) {\n this.globals.showEditDriverUname = false;\n this.selectedDriver.userName = this.m_teamDomainDot + this.m_userNameSuffix;\n unString = this.m_userNameSuffix;\n if (this.initialUserName != this.selectedDriver.userName) {\n // console.warn ('passed if statement: initial username != new username');\n //update username\n RwTaskLicense.changeDriverUsername(this.selectedDriver.userId, unString)\n .then(() => {\n self.selectedDriver.lastUpdated = new Date();\n self.globals.commitDrivers();\n self.globals.showSnack(\"Driver Updated\", \"success\");\n })\n .catch(err => {\n this.selectedDriver.userName = this.initialUserNameSuffix;\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n self.globals.showSnack(\"Failed to Update Driver\", \"error\");\n });\n }\n } else {\n this.globals.showSnack(\"You already have a driver with this username, please choose another.\", \"error\");\n }\n }\n }\n\n isValidForm() {\n let vueForm = this.$refs.form as any;\n let isValid = vueForm.validate();\n //TODO: Remove doublecheck validation after monitoring if vue form validation is not the issue\n if (isValid) {\n const alphaRegex = /^[a-zA-Z0-9_]+$/;\n if (!this.userNameSuffix.match(alphaRegex)) {\n isValid = false;\n RwLog.error(\"RwDriverUnameEdit.isValidForm\", `form validation not catching invalid username, ${this.userNameSuffix}`);\n }\n }\n\n return isValid;\n }\n\n escPress(event: Event) {\n event.stopPropagation();\n this.globals.showEditDriverUname = false;\n }\n\n mounted() {\n const self = this;\n //console.log(\"activated\");\n\n\n setTimeout(function () {\n self.$nextTick(function () {\n (self.$refs.field as HTMLInputElement).focus();\n });\n }, 100);\n\n }\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverUnameEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverUnameEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwDriverUnameEdit.vue?vue&type=template&id=50335d2d&scoped=true&\"\nimport script from \"./RwDriverUnameEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwDriverUnameEdit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"50335d2d\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\",\"max-height\":\"48px\"}},[(_vm.selectedDriver)?_c(VImg,{attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"max-width\":\"56px\",\"src\":_vm.selectedDriver.imageUrl}}):_vm._e(),_c(VToolbarTitle,{staticClass:\"ml-2\"},[_vm._v(\" \"+_vm._s(_vm.selectedDriver ? _vm.selectedDriver.formatDisplayName : \"Select User\")+\" \")]),_c(VSpacer),(_vm.selectedDriver)?_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.launchEditDriver.apply(null, arguments)}}},on),[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1)]}}],null,false,104467817)},[_c('span',[_vm._v(\"Edit User\")])]):_vm._e(),(_vm.selectedDriver)?_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},on),[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,false,2097855828)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VListItem,{on:{\"click\":_vm.launchEditUname}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-textbox\")])],1),_c(VListItemTitle,[_vm._v(\"Change Username\")])],1),_c(VListItem,{on:{\"click\":_vm.launchEditPassword}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-textbox-password\")])],1),_c(VListItemTitle,[_vm._v(\"Change Password\")])],1),_c(VListItem,{on:{\"click\":_vm.onPickClick}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-access-point\")])],1),_c(VListItemTitle,[_vm._v(\"Push Test\")])],1),_c(VListItem,{on:{\"click\":_vm.launchReplaceDriver}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-account-convert\")])],1),_c(VListItemTitle,[_vm._v(\"Replace User\")])],1),_c(VListItem,{on:{\"click\":_vm.launchDeleteDriver}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete User\")])],1),_c(VDivider),(!_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onDock()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-dock-right\")])],1),_c(VListItemTitle,[_vm._v(\"Dock Window\")])],1):_vm._e(),(_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onPop()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-open-in-new\")])],1),_c(VListItemTitle,[_vm._v(\"Float Panel\")])],1):_vm._e(),(_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onCloseDock()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close-box\")])],1),_c(VListItemTitle,[_vm._v(\"Close Panel\")])],1):_vm._e(),(!_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onClosePop()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close-box\")])],1),_c(VListItemTitle,[_vm._v(\"Close Window\")])],1):_vm._e()],1)],1):_vm._e()],1),(_vm.driver)?_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 48px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\"Name:\")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.selectedDriver.name)+\" \")])]),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Username: \"),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({staticClass:\"mb-2\",attrs:{\"color\":\"#555\",\"icon\":\"\",\"text\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-information-outline\")])]}}],null,false,1738710592)},[_c('span',{staticClass:\"labelText\"},[_vm._v(\"Users will use this to log-in.\")])])],1),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.selectedDriver.userName)+\" \")])]),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Access Type: \"),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({staticClass:\"mb-2\",attrs:{\"color\":\"#555\",\"icon\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-information-outline\")])]}}],null,false,1221178571)},[_c('span',{staticClass:\"labelText\"},[_c('b',[_vm._v(\"Normal and restricted users\")]),_vm._v(\" cannot delete Routes,\"),_c('br'),_vm._v(\" \"),_c('b',[_vm._v(\"Elevated Users and Dispatchers\")]),_vm._v(\" can.\")])])],1),(_vm.selectedDriver)?_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.selectedDriver.formatAccessType == 'Unknown' ? 'Restricted Driver' : _vm.selectedDriver.formatAccessType)+\" \")]):_vm._e()]),(_vm.driver.email)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\"Email: \"),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({staticClass:\"mb-2\",attrs:{\"color\":\"#555\",\"icon\":\"\",\"text\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-information-outline\")])]}}],null,false,1738710592)},[_c('span',{staticClass:\"labelText\"},[_vm._v(\"Not for logging in. \"),_c('br'),_vm._v(\" Users should use their username to log-in.\")])])],1),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.selectedDriver.email)+_vm._s(_vm.selectedDriver.email ? \" \" : \"no email registered\")+\" \")])]):_vm._e()],1):_vm._e(),(_vm.globals.showDeleteDriver)?_c('RwDeleteDriver'):_vm._e(),(_vm.globals.showReplaceDriver)?_c('RwReplaceDriver'):_vm._e(),(_vm.globals.showEditDriverPass)?_c('RwDriverPassEdit'):_vm._e(),(_vm.globals.showEditDriverUname)?_c('RwDriverUnameEdit'):_vm._e(),(_vm.globals.showPingTest)?_c('RwPingTest'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport theStore from \"@/store\"\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theDriverSpace, {RwDriverSpace} from \"@/app/views/drivers/RwDriverSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport RwDriverPassEdit from \"@/app/views/drivers/RwDriverPassEdit.vue\";\nimport RwDriverUnameEdit from \"@/app/views/drivers/RwDriverUnameEdit.vue\";\nimport RwDeleteDriver from \"@/app/views/drivers/RwDeleteDriver.vue\";\nimport RwReplaceDriver from \"@/app/views/drivers/RwReplaceDriver.vue\";\nimport RwPingTest from \"@/app/views/drivers/RwPingTest.vue\";\n\n\n@Component({\n components: {\n RwPingTest,\n RwDriverPassEdit,\n RwReplaceDriver,\n RwDeleteDriver,\n RwDriverUnameEdit,\n }\n})\nexport default class RwDriverView extends Vue {\n @Prop(Boolean) readonly isPopup: boolean;\n @Prop(RwUser) readonly driver: RwUser;\n\n overlay = true;\n absolute = true;\n opacity = 0.75;\n\n _name: string = \"\";\n _email: string = \"\";\n _accessType: number = 0;\n profileImage: string = \"profileImage\";\n password: string = \"\";\n deleteDriverDialog: boolean = false;\n teamDomain: string = \"\";\n teamDomainDot: string = \"\";\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get driverSpace(): RwDriverSpace {\n return theDriverSpace;\n }\n\n get isDocked(): boolean {\n return !this.isPopup;\n }\n\n get selectedDriver(): RwUser {\n return this.driver;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n\n @Watch(\"selectedDriver\")\n watchShowEdit(val: RwUser) {\n //RwLog.consoleWarn(`RwUserInfoEdit.watchShowEdit`, val);\n if (this.driver) {\n this.accessType = val.accessType - 1;\n this.selectedDriver.userName = val.userName;\n this.selectedDriver.name = val.name;\n this.selectedDriver.email = val.email;\n }\n\n }\n\n\n launchEditDriver() {\n this.teamDomain = this.globals.teamDomain;\n this.teamDomainDot = this.globals.teamDomain + \".\";\n this.globals.showDriverEdit(this.driver)\n this.onClosePop();\n }\n\n\n get name(): string {\n if (!this._name) {\n this._name = this.selectedDriver.name;\n }\n return this._name;\n }\n\n set name(val: string) {\n this._name = val\n }\n\n get email(): string {\n if (!this._email) {\n this._email = this.selectedDriver.email;\n }\n return this._email;\n }\n\n set email(val: string) {\n this._email = val;\n }\n\n get accessType(): number {\n if (!this._accessType) {\n this._accessType = this.selectedDriver.accessType;\n }\n return this._accessType;\n }\n\n set accessType(val: number) {\n this._accessType = val;\n }\n\n launchEditUname() {\n this.globals.showEditDriverUname = true;\n theStore.dispatch(\"showEditDriverUname\", true);\n this.onClosePop();\n }\n\n launchEditPassword() {\n this.globals.showEditDriverPass = true;\n theStore.dispatch(\"showEditDriverPass\", true);\n this.onClosePop();\n }\n\n // launchEditPhoto() {\n // //DEFER: Deal with Coupling of AvatarEdit & DriverEdit\n // //DEFER: Punt by eliminating action from View\n // this.globals.showDriverEdit(this.driver)\n // // theStore.dispatch(\"showEditDriver\", true);\n // // theStore.dispatch(\"showEditAvatar\", true);\n // // this.globals.showEditAvatar = true;\n // // this.globals.showEditDriver = true;\n // this.onClosePop();\n // }\n\n onPickClick() {\n let showPopup = RwPrefUtils.hidePingPopup == false;\n if (showPopup) {\n theStore.dispatch(\"showPingTest\", true);\n this.globals.showPingTest = true;\n //!//this.driverSpace.showPingTest = true;\n } else {\n this.driverSpace.pingDriver();\n }\n this.onClosePop();\n }\n\n launchReplaceDriver() {\n this.deleteDriverDialog = false;\n this.teamDomain = this.globals.teamDomain;\n this.teamDomainDot = this.globals.teamDomain + \".\";\n theStore.dispatch(\"showReplaceDriver\", true);\n this.globals.showReplaceDriver = true;\n this.onClosePop();\n }\n\n launchDeleteDriver() {\n if (this.globals.enablePurchaseOps) {\n this.deleteDriverDialog = true;\n let showPopup = RwPrefUtils.hideDeletePopup == false;\n if (showPopup) {\n theStore.dispatch(\"showDeletePrompt\", true);\n this.globals.showDeletePrompt = true;\n //!//this.driverSpace.showDeletePrompt = true;\n } else {\n theStore.dispatch(\"showDeletePrompt\", false);\n\n this.globals.showDeletePrompt = false;\n //!//this.driverSpace.showDeletePrompt = false;\n }\n theStore.dispatch(\"showDeletePrompt\", true);\n this.globals.showDeleteDriver = true;\n this.onClosePop();\n } else {\n this.globals.showConfirmDialog(\"Add/Remove drivers temporarily disabled in Beta\",\n \"Adding and removing drivers is temporarily disabled in the RoadWarrior Beta, please use legacy Team for now\" +\n \" if you need to add or remove drivers.\", \"Ok\", \"\");\n }\n }\n\n onPop() {\n this.$emit(\"onPop\");\n }\n\n onDock() {\n this.$emit(\"onDock\");\n }\n\n onClosePop() {\n this.$emit(\"onClosePop\");\n }\n\n onCloseDock() {\n this.$emit(\"onCloseDock\");\n }\n\n onDeleted() {\n this.$emit(\"onDeleted\");\n }\n\n finalLength: string = this.detMaxTextLength();\n\n detMaxTextLength(): string {\n let length = window.innerWidth;\n if (this.isPopup == true) {\n length = 600\n } else {\n length = (length > 1000) ? Math.floor(length * 0.3) - 150 : length;\n }\n let output = \"max-width: \" + length.toString() + \"px\";\n this.finalLength = output;\n\n return output;\n }\n\n mounted() {\n window.addEventListener('resize', this.detMaxTextLength);\n }\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverView.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverView.vue?vue&type=style&index=0&id=279fb012&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwDriverView.vue?vue&type=template&id=279fb012&scoped=true&\"\nimport script from \"./RwDriverView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwDriverView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwDriverView.vue?vue&type=style&index=0&id=279fb012&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"279fb012\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"scrollable\":\"\",\"persistent\":\"\",\"max-width\":\"600px\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.enterPress.apply(null, arguments)}]},model:{value:(_vm.globals.showPingTest),callback:function ($$v) {_vm.$set(_vm.globals, \"showPingTest\", $$v)},expression:\"globals.showPingTest\"}},[_c(VCard,{attrs:{\"max-height\":\"400\"}},[_c(VToolbar,{attrs:{\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar,\"dense\":\"\"}},[_c(VImg,{attrs:{\"height\":\"32px\",\"width\":\"32px\",\"contain\":\"\",\"max-width\":\"56px\",\"src\":_vm.selectedDriver.imageUrl}}),_c(VToolbarTitle,[_vm._v(\"Push Test for \"+_vm._s(_vm.selectedDriver.formatDisplayName))])],1),_c(VCardText,{staticClass:\"popupText mt-2\",class:_vm.globals.theme},[_c('br'),_vm._v(\" The Push Test is designed to help troubleshoot connection issues to the selected Driver's mobile device.\"),_c('br'),_c('br'),_vm._v(\" Click \"),_c('b',[_vm._v(\"Ping\")]),_vm._v(\" below to test your connection. This may take several minutes depending on the mobile device's connectivity.\"),_c('br'),_c('br'),_c('b',[_vm._v(\"You may continue to work while this test runs\")]),_vm._v(\", a result will appear as a popup at the bottom of your screen when the ping is complete. \"),_c('br'),_c('br'),_c(VCheckbox,{attrs:{\"label\":\"Got it, do not show this again.\"},model:{value:(_vm.globals.hidePingPopup),callback:function ($$v) {_vm.$set(_vm.globals, \"hidePingPopup\", $$v)},expression:\"globals.hidePingPopup\"}})],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.showPingTest=false}}},[_vm._v(\"Cancel\")]),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.driverSpace.pingDriver()}}},[_vm._v(\"Ping\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theDriverSpace, {RwDriverSpace} from \"@/app/views/drivers/RwDriverSpace\";\nimport {RwUser} from \"@/app/dem/RwUser\";\n\n@Component\nexport default class RwAvatarEdit extends Vue {\n\n get driverSpace(): RwDriverSpace {\n return theDriverSpace;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get selectedDriver(): RwUser {\n return this.globals.selectedDriver;\n }\n\n set selectedDriver(val: RwUser) {\n this.globals.selectedDriver = val;\n }\n\n escPress(event: Event) {\n event.stopPropagation();\n this.globals.showPingTest = false;\n\n }\n\n enterPress(event: Event) {\n event.stopPropagation();\n this.driverSpace.pingDriver();\n this.globals.showPingTest = false;\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPingTest.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPingTest.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwPingTest.vue?vue&type=template&id=87ca5f32&scoped=true&\"\nimport script from \"./RwPingTest.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPingTest.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"87ca5f32\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{staticStyle:{\"max-height\":\"650px\"},attrs:{\"persistent\":\"\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"max-width\":\"600px\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.enterPress.apply(null, arguments)}]},model:{value:(_vm.globals.showReplaceDriver),callback:function ($$v) {_vm.$set(_vm.globals, \"showReplaceDriver\", $$v)},expression:\"globals.showReplaceDriver\"}},[_c(VCard,[_c(VToolbar,{attrs:{\"elevation\":\"0\",\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[_c(VImg,{attrs:{\"height\":\"32px\",\"width\":\"32px\",\"contain\":\"\",\"max-width\":\"56px\",\"src\":_vm.selectedDriver.imageUrl}}),_c(VToolbarTitle,[_vm._v(\"Replace User \"+_vm._s(_vm.selectedDriver.formatDisplayName))])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c('br'),_c('span',{staticClass:\"popupText\"},[_vm._v(\"Replacing a User will log out the old User immediately, and cannot be undone.\")]),_c('br'),_c('br'),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"autofocus\":\"\",\"dense\":\"\",\"label\":\"New Driver Name\",\"rules\":_vm.nameRules,\"required\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"New Username\",\"counter\":\"16\",\"prefix\":_vm.teamDomainDot,\"rules\":_vm.userNameRules,\"hint\":\"Must be different \",\"required\":\"\"},model:{value:(_vm.userNameSuffix),callback:function ($$v) {_vm.userNameSuffix=$$v},expression:\"userNameSuffix\"}})],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"dense\":\"\",\"label\":\"New Password\",\"type\":\"password\",\"hint\":\"minimum 4 characters\",\"required\":\"\",\"filled\":\"\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.showReplaceDriver = false}}},[_vm._v(\"Cancel\")]),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\",\"disabled\":!_vm.applyValid},on:{\"click\":function($event){return _vm.onClickReplaceDriver(_vm.userNameSuffix, _vm.password, _vm.name)}}},[_vm._v(\"Replace User \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwTaskDriver} from \"@/app/dal/RwTaskDriver\";\nimport theStore from \"@/store\"\nimport {RwTaskSync} from \"@/app/dal/RwTaskSync\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {ReplaceDriverError} from \"@/app/RwEnums\";\n\n@Component\nexport default class RwReplaceDriver extends Vue {\n\n name: string = \"\";\n userNameSuffix: string = \"\";\n password: string = \"\";\n\n // _teamDomainDot: string;\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n // get driverSpace(): RwDriverSpace {\n // return theDriverSpace;\n // }\n\n\n get selectedDriver(): RwUser {\n\n return theStore.getters.selectedDriver;\n }\n\n set selectedDriver(val: RwUser) {\n theStore.dispatch(\"selectedDriver\", val);\n }\n\n get teamDomainDot(): string {\n let teamDomainDot = (!this.$data._teamDomainDot) ? this.globals.teamDomain + \".\" : !this.$data._teamDomainDot;\n this.$data._teamDomainDot = teamDomainDot;\n return this.$data._teamDomainDot;\n }\n\n get userNameRules(): any[] {\n return [\n v => (v.length <= 16 && this.globals.isAlpha(v)) || 'Username must have up to 16 letters and numbers.',\n v => (this.driversUsernames.indexOf(v.toLowerCase()) === -1) || 'Username already in use.',\n v => (!this.isSelf(v)) || 'Must change username to replace.'\n ];\n }\n\n isSelf(val: string): boolean {\n if ((this.globals.teamDomain + \".\" + val).toLowerCase() === this.selectedDriver.userName.toLowerCase()) {\n return true;\n } else {\n return false;\n }\n }\n\n get nameRules(): any[] {\n if (this.name) {\n return [\n v => v.length >= 4 || 'Minimum 4 characters.',\n v => this.globals.isValidName(v) || 'Name cannot contain special characters and must be less than 50 chars'\n ]\n }\n }\n\n\n get applyValid(): boolean {\n if (this.name === '' || this.isSelf(this.userNameSuffix) || this.userNameSuffix.length < 3 || this.password.length < 4 ||\n this.userNameSuffix.length > 16 || !this.globals.isValidName(this.name) || !this.globals.isAlpha(this.userNameSuffix) ||\n this.driversUsernames.indexOf(this.userNameSuffix.toLowerCase()) > -1) {\n // console.warn(\"Apply Valid getter returning False\");\n return false;\n } else {\n // console.warn(\"Apply Valid getter returning True\");\n return true;\n }\n }\n\n escPress(event: Event) {\n event.stopPropagation();\n this.globals.showReplaceDriver = false;\n }\n\n enterPress(event: Event) {\n if (this.applyValid) {\n // console.warn(\"Enterpress returning valid True\");\n event.stopPropagation();\n (this.userNameSuffix && this.password && this.name)\n ? this.onClickReplaceDriver(this.userNameSuffix, this.password, this.name)\n : this.globals.showSnack(\"Please ensure all fields are filled in.\", \"error\");\n } else {\n // console.warn(\"Enterpress returning valid False\");\n this.globals.showSnack(\"Check error messages and try again.\", \"error\");\n\n }\n }\n\n get driversUsernames(): string[] {\n const unames = [];\n for (let driver of this.globals.drivers) {\n if (driver.userId != this.selectedDriver.userId) unames.push(driver.userName.toLowerCase().replace(this.teamDomainDot.toLowerCase(), ''));\n }\n return unames;\n }\n\n onClickReplaceDriver(newUNameSuffix: string, newPass: string, newName: string) {\n const SOURCE = \"onClickReplaceDriver\"\n // let newUName = this.globals.teamDomain + \".\" + newUNameSuffix;\n this.globals.showReplaceDriver = false;\n RwTaskDriver.replaceDriver(this.selectedDriver.userId, newUNameSuffix, newPass, newName)\n .then((errCode) => {\n if (!errCode) {\n this.globals.showReplaceDriver = false;\n this.globals.showSnack(\"User Replaced\", \"success\");\n this.$emit(\"onAction\", \"replaceDriver\");\n this.globals.drivers = this.globals.drivers.filter(drv => drv.userId !== this.selectedDriver.userId);\n RwTaskSync.syncDelta(this.globals.selectedRoute?.routeId || null)\n .then(deltas => {\n if (this.globals.selectedRoute) {\n this.globals.mergeDeltas(deltas);\n } else {\n this.globals.mergeDrivers(deltas.drivers);\n }\n });\n } else {\n switch (errCode) {\n case ReplaceDriverError.InvalidUserNamePassword:\n this.globals.showSnack(`Please choose a valid username and password for the new driver and try again.`, \"error\");\n break;\n\n case ReplaceDriverError.NewDriverAlreadyExists:\n this.globals.showSnack(`The driver ${newUNameSuffix} already exists, please choose a different username`);\n break;\n\n case ReplaceDriverError.InvalidDriverToReplace:\n this.globals.showSnack(`The driver you are replacing is not valid, please refresh and try again.`, \"error\");\n break;\n\n default:\n this.globals.showSnack(\"Sorry, we had an error replacing that user.\", \"error\");\n break;\n }\n\n }\n })\n .catch(err => {\n let status = !!err.Code ? err.Code : err.status;\n this.globals.showSnack(\"Failed to Replace User\", \"error\");\n if (status === 403) {\n RwLog.warn(SOURCE, `Token invalid error: ${JSON.stringify(err)}`);\n } else if (status === 504) {\n RwLog.warn(SOURCE, `Network error: ${JSON.stringify(err)}`)\n } else if (err.response) {\n if ((err && err.isHandled) == false) {\n RwLog.error(SOURCE, `Response error: ${JSON.stringify(err)}`);\n } else {\n RwLog.warn(SOURCE, `Response error: ${JSON.stringify(err)}`);\n }\n } else if (err.request) {\n // client never received a response, or request never left\n RwLog.error(SOURCE, `Request error: ${JSON.stringify(err)}`);\n } else {\n // anything else\n RwLog.error(SOURCE, `Unhandled: ${JSON.stringify(err)}`);\n }\n });\n\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwReplaceDriver.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwReplaceDriver.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwReplaceDriver.vue?vue&type=template&id=13fa83a4&scoped=true&\"\nimport script from \"./RwReplaceDriver.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwReplaceDriver.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13fa83a4\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{staticClass:\"overflow-y-hidden\",attrs:{\"scrollable\":\"\",\"persistent\":\"\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.enterPress.apply(null, arguments)}]},model:{value:(_vm.globals.showLimitPopup),callback:function ($$v) {_vm.$set(_vm.globals, \"showLimitPopup\", $$v)},expression:\"globals.showLimitPopup\"}},[_c(VCard,[_c(VToolbar,{attrs:{\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[_c(VIcon,{attrs:{\"color\":\"orange\"}},[_vm._v(\"mdi-alert\")]),_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[_c(VRow,{staticClass:\"mx-4 mt-4\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"\\\"\"+_vm._s(_vm.globals.activeRoute.name)+\"\\\" is less than 50 new Stops away from hitting the \"),_c('b',[_vm._v(\"500 Stop History limit\")]),_vm._v(\".\")]),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":\"grey\",\"size\":\"medium\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{staticStyle:{\"font-size\":\"small\",\"color\":\"grey\"}},[_vm._v(\" The History Limit prevents data backlogs that can slow down your app and lead to inaccurate reporting. \")])])],1)],1),_c(VRow,{staticClass:\"mx-4\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"Once this Route reaches 500 cumulative Stops (active and deleted), you will no longer be able to add new Stops to the Route. \")])])],1),_c(VRow,{staticClass:\"mx-4\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"To prevent unexpected interruption later, you may \"),_c('b',[_vm._v(\"create a copy of the current Route\")]),_vm._v(\", which will keep all current Stops, settings, and other features, or \"),_c('b',[_vm._v(\"start a new Route\")]),_vm._v(\".\")])])],1)],1),_c(VTabItem,{key:\"1\"},[_c(VRow,{staticClass:\"mx-4 mt-4\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"\\\"\"+_vm._s(_vm.globals.activeRoute.name)+\"\\\" has reached the \"),_c('b',[_vm._v(\"500 Stop History limit\")]),_vm._v(\".\")]),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":\"grey\",\"size\":\"medium\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('span',{staticStyle:{\"font-size\":\"small\",\"color\":\"grey\"}},[_vm._v(\" The History Limit prevents data backlogs that can slow down your app and lead to inaccurate reporting. \")])]),_c('span',[_vm._v(\" This Route can no longer support new Stops.\")])],1)],1),_c(VRow,{staticClass:\"mx-4\"},[_c(VCol,{staticClass:\"text-left\"},[_c('span',[_vm._v(\"To continue working, you may \"),_c('b',[_vm._v(\"create a copy of the current Route\")]),_vm._v(\", which will keep all current Stops, settings, and other features, or \"),_c('b',[_vm._v(\"start a new Route\")]),_vm._v(\".\")])])],1)],1)],1),_c(VCheckbox,{staticClass:\"ma-4\",attrs:{\"label\":\"Archive Current Route after New Route created\"},model:{value:(_vm.archiveRoute),callback:function ($$v) {_vm.archiveRoute=$$v},expression:\"archiveRoute\"}}),(_vm.idxTab===0)?_c(VCheckbox,{staticClass:\"mx-4\",attrs:{\"label\":\"Do not warn me again\"},model:{value:(_vm.notShowCheck),callback:function ($$v) {_vm.notShowCheck=$$v},expression:\"notShowCheck\"}}):_vm._e()],1),_c(VCardActions,[(_vm.idxTab === 0)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.escPress}},[_vm._v(\"Close\")]):_vm._e(),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.enterPress}},[_vm._v(\"Continue\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\n\n@Component\nexport default class RwProfileEdit extends Vue {\n\n idxTab: number = 0;\n showPassword: boolean = false;\n notShowCheck: boolean = false;\n archiveRoute: boolean = false;\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get plannerSpace(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get title(): string {\n if (this.idxTab == 0) {\n return \"Route History Approaching Limit\";\n } else {\n return \"Route History Limit Reached\";\n }\n }\n\n mounted() {\n if (this.globals.prompt500Popup.includes(this.plannerSpace.activeRoute.routeId)) {\n this.idxTab = 1;\n }\n }\n\n\n enterPress() {\n if (this.notShowCheck) {\n this.globals.hide450Popup = true;\n }\n if (this.idxTab == 1) {\n this.globals.prompt500Popup = [];\n }\n this.globals.prompt450Popup = [];\n let origRoute = this.plannerSpace.activeRoute;\n this.globals.showLimitPopup = false;\n this.globals\n .showRouteNew(false, null)\n .then(pick => {\n //console.log(\"onRouteAddClick callback\", pick);\n if (pick) {\n this.plannerSpace.openRouteInPlanner(pick);\n if (this.globals.editAfterAdd) this.globals.showRouteEdit(pick);\n }\n if (this.archiveRoute) {\n this.globals.confirmAndArchiveRoute(origRoute)\n .then(() => {\n this.plannerSpace.closeRoute(origRoute);\n })\n }\n });\n }\n\n escPress() {\n if (this.idxTab === 0) {\n if (this.notShowCheck) {\n RwPrefUtils.hide450Popup = true;\n }\n this.globals.showLimitPopup = false;\n }\n }\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwLimitPopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwLimitPopup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwLimitPopup.vue?vue&type=template&id=58953938&scoped=true&\"\nimport script from \"./RwLimitPopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwLimitPopup.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"58953938\",\n null\n \n)\n\nexport default component.exports","import { VBanner } from 'vuetify/lib/components/VBanner';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VStepper } from 'vuetify/lib/components/VStepper';\nimport { VStepperHeader } from 'vuetify/lib/components/VStepper';\nimport { VStepperStep } from 'vuetify/lib/components/VStepper';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(VBanner,{staticClass:\"mb-0 text-left\",staticStyle:{\"position\":\"relative\"},attrs:{\"icon\":\"warning\",\"color\":\"warning\"},model:{value:(_vm.showStopsViolationsBanner),callback:function ($$v) {_vm.showStopsViolationsBanner=$$v},expression:\"showStopsViolationsBanner\"}},[_vm._v(\" One or more stops have violations. \"),_c('span',{staticStyle:{\"text-decoration\":\"underline\",\"cursor\":\"pointer\"},on:{\"click\":function($event){_vm.showStopsViolationsList=true}}},[_vm._v(\" View details \")]),_c(VSpacer),_c(VBtn,{staticStyle:{\"position\":\"absolute\",\"top\":\"24px\",\"right\":\"15px\"},attrs:{\"text\":\"\",\"icon\":\"\"},on:{\"click\":_vm.dismissViolationWarning}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1),_c(VDialog,{attrs:{\"width\":\"600\"},model:{value:(_vm.showStopsViolationsList),callback:function ($$v) {_vm.showStopsViolationsList=$$v},expression:\"showStopsViolationsList\"}},[_c(VToolbar,[_c(VToolbarTitle,[_vm._v(\"Stops Violations\")]),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showStopsViolationsList = false}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1),_c(VCard,[_c(VCardText,[_c(VList,{staticClass:\"pt-6\"},_vm._l((_vm.stopsWithViolations),function(stop){return _c(VListItem,{key:stop.stopId,on:{\"click\":function($event){return _vm.onClickViolation(stop)}}},[_c(VImg,{staticStyle:{\"max-width\":\"36px\"},attrs:{\"contain\":\"\",\"height\":\"36\",\"width\":\"36\",\"src\":stop.dataUrl}}),_c('span',[_vm._v(_vm._s(stop.name))]),_c(VSpacer),_c('span',[_vm._v(_vm._s(stop.violationText))])],1)}),1)],1),_c(VCardActions,[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showStopsViolationsList = false}}},[_vm._v(\" Close \")])],1)],1)],1),_c(VToolbar,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.space.showPlannerToolbar && !_vm.globals.showSearchPanel),expression:\"space.showPlannerToolbar && !globals.showSearchPanel\"}],attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\",\"extended\":\"\"},scopedSlots:_vm._u([{key:\"extension\",fn:function(){return [_c(VTabs,{attrs:{\"show-arrows\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},_vm._l((_vm.openRoutes),function(route,idxTab){return _c(VTab,{key:idxTab,attrs:{\"to\":route.plannerUrl,\"exact\":\"\"},on:{\"click\":function($event){return _vm.tabClick(route, idxTab)}}},[_c('span',{staticClass:\"text-none\",staticStyle:{\"font-size\":\"small\"},on:{\"contextmenu\":function($event){return _vm.showTabContextMenu($event, idxTab, route)}}},[_vm._v(\" \"+_vm._s(route.name)+\" \"),_c(VBtn,{staticStyle:{\"height\":\"32px\",\"width\":\"32px\"},attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.tabCloseClick(route)}}},[_c(VIcon,{attrs:{\"x-small\":\"\"}},[_vm._v(\"mdi-close\")])],1)],1),_c(VMenu,{attrs:{\"close-on-content-click\":true,\"position-x\":_vm.contextMenuX,\"position-y\":_vm.contextMenuY,\"absolute\":\"\",\"bottom\":\"\",\"offset-y\":\"\"},model:{value:(_vm.showingTabMenu),callback:function ($$v) {_vm.showingTabMenu=$$v},expression:\"showingTabMenu\"}},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VListItem,{attrs:{\"to\":_vm.contextUrl},on:{\"click\":function($event){return _vm.tabMenuClick(3)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Route\")])],1),_c(VListItem,{attrs:{\"to\":_vm.contextUrl},on:{\"click\":function($event){return _vm.tabMenuClick(4)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit Route\")])],1),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.tabMenuClick(0)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close-box\")])],1),_c(VListItemTitle,[_vm._v(\"Close This\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.tabMenuClick(1)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close-box\")])],1),_c(VListItemTitle,[_vm._v(\"Close Others\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.tabMenuClick(2)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close-box\")])],1),_c(VListItemTitle,[_vm._v(\"Close All\")])],1)],1)],1)],1)}),1),_c(VBtn,{staticStyle:{\"text-transform\":\"inherit\",\"font-weight\":\"600\",\"color\":\"#6B6B6B\"},attrs:{\"text\":\"\",\"color\":_vm.displayEmptyState ? 'primary' : 'normal'},on:{\"click\":_vm.onRouteAddPicker}},[_c(VIcon,[_vm._v(\"mdi-plus\")]),_c('span',[_vm._v(\"New route\")])],1)]},proxy:true}])},[(!_vm.isMobile)?_c(VToolbarTitle,[_vm._v(\"Planner\")]):_vm._e(),(!_vm.isMobile)?_c('div',{staticStyle:{\"width\":\"96px\"}}):_vm._e(),(!_vm.isMobile)?_c(VSpacer):_vm._e(),(true)?_c(VStepper,{staticClass:\"elevation-0\",style:(_vm.stepperStyle),attrs:{\"dense\":\"\",\"value\":_vm.stepFocus,\"flat\":\"\"}},[_c(VStepperHeader,[_c(VStepperStep,{attrs:{\"complete\":(_vm.stepFocus === 0 || _vm.stepFocus > 1) && _vm.openRoutes.length>0,\"step\":\"1\",\"editable\":\"\",\"edit-icon\":_vm.isMobile ? 'mdi-magnify' : '$complete',\"color\":\"#E91E63\"},on:{\"click\":_vm.onSearchClick}},[_vm._v(\" Search \")]),_c(VDivider),_c(VStepperStep,{attrs:{\"complete\":(_vm.stepFocus === 0 || _vm.stepFocus > 2) && _vm.openRoutes.length>0,\"step\":\"2\",\"editable\":\"\",\"edit-icon\":_vm.isMobile ? 'mdi-map-marker-path' : '$complete',\"color\":\"#E91E63\"},on:{\"click\":_vm.onOrderClick}},[_vm._v(\" Order \")]),(_vm.globals.isDisp)?_c(VDivider):_vm._e(),_c(VStepperStep,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.globals.isDisp),expression:\"globals.isDisp\"}],attrs:{\"complete\":(_vm.isAssigned) && _vm.openRoutes.length>0,\"isAssigned\":\"\",\"step\":\"3\",\"editable\":\"\",\"edit-icon\":_vm.isMobile ? 'mdi-account-multiple-check' : '$complete',\"color\":\"#E91E63\"},on:{\"click\":_vm.onAssignClick}},[_vm._v(\" Assign \")]),(false)?_c(VStepperStep,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.canShowPushStep),expression:\"canShowPushStep\"}],attrs:{\"complete\":false,\"step\":\"4\",\"editable\":\"\",\"edit-icon\":undefined,\"color\":\"#E91E63\"},on:{\"click\":_vm.onPushClick}},[_vm._v(\" Push \")]):_vm._e()],1)],1):_vm._e(),_c(VSpacer),_c(VDivider,{staticClass:\"mx-3\",attrs:{\"vertical\":\"\"}}),(!_vm.isMobile && !_vm.globals.isTabletView)?_c('div',[(!_vm.space.showDataLayerRoute)?_c(VChip,{staticClass:\"ma-2\",attrs:{\"close\":\"\",\"color\":\"primary\"},on:{\"click:close\":_vm.onCloseFilterHideStops}},[_vm._v(\" Hiding Stops \")]):_vm._e(),(!_vm.space.showDataLayerSites)?_c(VChip,{staticClass:\"ma-2\",attrs:{\"close\":\"\",\"color\":\"primary\"},on:{\"click:close\":_vm.onCloseFilterHideSites}},[_vm._v(\" Hiding Favorites \")]):_vm._e(),(_vm.globals.isDisp && !_vm.space.showDataLayerTasks)?_c(VChip,{staticClass:\"ma-2\",attrs:{\"close\":\"\",\"color\":\"primary\"},on:{\"click:close\":_vm.onCloseFilterHideTasks}},[_vm._v(\" Hiding Tasks \")]):_vm._e(),(_vm.space.showDataLayerRoute && _vm.space.isStopFiltered)?_c(VChip,{staticClass:\"ma-2\",attrs:{\"close\":\"\",\"color\":\"primary\"},on:{\"click:close\":_vm.onCloseFilterStops}},[_vm._v(\" Filtering Stops \")]):_vm._e(),(_vm.space.showDataLayerSites && _vm.space.isSiteFiltered)?_c(VChip,{staticClass:\"ma-2\",attrs:{\"close\":\"\",\"color\":\"primary\"},on:{\"click:close\":_vm.onCloseFilterSites}},[_vm._v(\" Filtering Favorites \")]):_vm._e(),(_vm.globals.isDisp && _vm.space.showDataLayerTasks && _vm.space.isTaskFiltered)?_c(VChip,{staticClass:\"ma-2\",attrs:{\"close\":\"\",\"color\":\"primary\"},on:{\"click:close\":_vm.onCloseFilterTasks}},[_vm._v(\" Filtering Tasks \")]):_vm._e()],1):_vm._e(),(_vm.globals.isTabletView && !_vm.isMobile && _vm.hasActiveFilters)?[_c(VBtn,{staticStyle:{\"position\":\"relative\"},attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showTabletFilters = true;}}},[_c(VIcon,[_vm._v(\"mdi-filter\")]),_c('span',{staticClass:\"active-filters\"})],1),_c(VDialog,{attrs:{\"max-width\":\"450\"},model:{value:(_vm.showTabletFilters),callback:function ($$v) {_vm.showTabletFilters=$$v},expression:\"showTabletFilters\"}},[_c(VCard,[_c(VList,[(!_vm.space.showDataLayerRoute)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterHideStops}},[_vm._v(\" Hiding Stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(!_vm.space.showDataLayerSites)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterHideSites}},[_vm._v(\" Hiding Favorites \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(_vm.globals.isDisp && !_vm.space.showDataLayerTasks)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterHideTasks}},[_vm._v(\" Hiding Tasks \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(_vm.space.showDataLayerRoute && _vm.space.isStopFiltered)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterStops}},[_vm._v(\" Filtering Stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(_vm.space.showDataLayerSites && _vm.space.isSiteFiltered)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterSites}},[_vm._v(\" Filtering Favorites \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(_vm.globals.isDisp && _vm.space.showDataLayerTasks && _vm.space.isTaskFiltered)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterTasks}},[_vm._v(\" Filtering Tasks \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e()],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showTabletFilters=false}}},[_vm._v(\"Close\")])],1)],1)],1)]:_vm._e(),(_vm.isMobile)?[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showMobileActions = true}}},[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1),_c(VDialog,{model:{value:(_vm.showMobileActions),callback:function ($$v) {_vm.showMobileActions=$$v},expression:\"showMobileActions\"}},[_c(VCard,[_c(VTabs,{staticClass:\"mobile-planner-tabs\",model:{value:(_vm.mobileActionsTabsIdx),callback:function ($$v) {_vm.mobileActionsTabsIdx=$$v},expression:\"mobileActionsTabsIdx\"}},[_c(VTabItem,{key:0},[_c(VList,[_c(VListItem,{on:{\"click\":() => { _vm.onDataLayers(); _vm.showMobileActions = false; }}},[_vm._v(\" Data Layers \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-layers\")])],1),_c(VListItem,{on:{\"click\":() => { _vm.onMultiEnter();_vm.showMobileActions = false; }}},[_vm._v(\" Multi Select Mode \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-checkbox-multiple-marked\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.mobileActionsTabsIdx = 1}}},[_vm._v(\" Active Filters \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-filter\")])],1)],1)],1),_c(VTabItem,{key:1},[_c(VList,[(!_vm.space.showDataLayerRoute)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterHideStops}},[_vm._v(\" Hiding Stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(!_vm.space.showDataLayerSites)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterHideSites}},[_vm._v(\" Hiding Favorites \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(_vm.globals.isDisp && !_vm.space.showDataLayerTasks)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterHideTasks}},[_vm._v(\" Hiding Tasks \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(_vm.space.showDataLayerRoute && _vm.space.isStopFiltered)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterStops}},[_vm._v(\" Filtering Stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(_vm.space.showDataLayerSites && _vm.space.isSiteFiltered)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterSites}},[_vm._v(\" Filtering Favorites \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e(),(_vm.globals.isDisp && _vm.space.showDataLayerTasks && _vm.space.isTaskFiltered)?_c(VListItem,{on:{\"click\":_vm.onCloseFilterTasks}},[_vm._v(\" Filtering Tasks \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-close\")])],1):_vm._e()],1)],1)],1),_c(VCardActions,[(_vm.mobileActionsTabsIdx===1)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.mobileActionsTabsIdx=0}}},[_vm._v(\"Back\")]):_vm._e(),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":() => { _vm.showMobileActions=false;_vm.mobileActionsTabsIdx=0; }}},[_vm._v(\"Done \")])],1)],1)],1)]:_vm._e(),(!_vm.isMobile)?[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.openRoutes.length<1 || !(_vm.space.showPanelMap ||_vm.space.showPanelList),\"icon\":\"\"},on:{\"click\":_vm.onDataLayers}},on),[_c(VIcon,{attrs:{\"color\":_vm.space.isLayerDelta ? 'primary' : 'normal'}},[_vm._v(\"mdi-layers\")])],1)]}}],null,false,3418528746)},[_c('span',[_vm._v(\"Data Layers\")])]),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.openRoutes.length<1 || !(_vm.space.showPanelMap ||_vm.space.showPanelList),\"icon\":\"\"},on:{\"click\":function($event){return _vm.onMultiEnter()}}},on),[_c(VIcon,{attrs:{\"color\":_vm.colorMultiButton}},[_vm._v(\"mdi-checkbox-multiple-marked\")])],1)]}}],null,false,2520940825)},[_c('span',[_vm._v(\"Multi-Select Mode\")])]),_c(VDivider,{staticClass:\"mx-3\",attrs:{\"vertical\":\"\"}}),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"nudge-width\":65,\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.openRoutes.length<1,\"elevation\":\"0\",\"icon\":\"\"}},on),[_c(VIcon,[_vm._v(\"mdi-dock-right\")])],1)]}}],null,false,3403137359),model:{value:(_vm.showPanelMenu),callback:function ($$v) {_vm.showPanelMenu=$$v},expression:\"showPanelMenu\"}},[_c(VCard,[_c(VList,[_c(VSubheader,[_vm._v(\"Panel Visibility\")]),_c(VDivider),_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{staticClass:\"pre\",attrs:{\"label\":\" Show Map Panel\"},model:{value:(_vm.space.showPanelMap),callback:function ($$v) {_vm.$set(_vm.space, \"showPanelMap\", $$v)},expression:\"space.showPanelMap\"}})],1)],1),_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{staticClass:\"pre\",attrs:{\"label\":\" Show List Panel\"},model:{value:(_vm.space.showPanelList),callback:function ($$v) {_vm.$set(_vm.space, \"showPanelList\", $$v)},expression:\"space.showPanelList\"}})],1)],1),_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{staticClass:\"pre\",attrs:{\"label\":\" Show Pin Panel\"},model:{value:(_vm.globals.showPinPanel),callback:function ($$v) {_vm.$set(_vm.globals, \"showPinPanel\", $$v)},expression:\"globals.showPinPanel\"}})],1)],1),(_vm.globals.isDisp)?_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{staticClass:\"pre\",attrs:{\"label\":\" Show Status Panel\"},model:{value:(_vm.space.showPanelStatus),callback:function ($$v) {_vm.$set(_vm.space, \"showPanelStatus\", $$v)},expression:\"space.showPanelStatus\"}})],1)],1):_vm._e()],1)],1)],1)]:_vm._e()],2),_c(VToolbar,{directives:[{name:\"show\",rawName:\"v-show\",value:(this.isMultiMode),expression:\"this.isMultiMode\"}],attrs:{\"color\":\"primary\",\"dense\":\"\"}},[(!_vm.isMobile)?[(_vm.isMultiModeSites || _vm.isMultiModeTasks)?_c(VTooltip,{attrs:{\"color\":\"#222\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(_vm.isMultiModeSites || _vm.isMultiModeTasks)?_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.selectedPinCount === 0,\"icon\":\"\"},on:{\"click\":function($event){return _vm.onMultiAddToRoute()}}},on),[_c(VIcon,[_vm._v(\"mdi-routes\")])],1):_vm._e()]}}],null,false,1173029290)},[_c('span',[_vm._v(\"Add To Route\")])]):_vm._e(),_c(VTooltip,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isMultiModeStops),expression:\"isMultiModeStops\"}],attrs:{\"color\":\"#222\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on:onCopy }){return [_c(VBtn,_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isMultiModeStops),expression:\"isMultiModeStops\"}],attrs:{\"disabled\":_vm.selectedPinCount === 0,\"icon\":\"\"},on:{\"click\":_vm.onMultiCopy}},onCopy),[_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1)]}}],null,false,906617370)},[_c('span',[_vm._v(\"Move / Copy Stops\")])]),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.selectedPinCount === 0,\"icon\":\"\"},on:{\"click\":function($event){return _vm.onMultiVisit()}}},on),[_c(VIcon,[_vm._v(\"mdi-timelapse\")])],1)]}}],null,false,638982037)},[_c('span',[_vm._v(\"Set Visit Time\")])]),(_vm.isMultiModeStops)?_c(VTooltip,{attrs:{\"color\":\"#222\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(_vm.isMultiModeStops)?_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.selectedPinCount === 0,\"icon\":\"\"},on:{\"click\":function($event){return _vm.onMultiSked()}}},on),[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1):_vm._e()]}}],null,false,3086102864)},[_c('span',[_vm._v(\"Set Schedule\")])]):_vm._e(),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.selectedPinCount === 0,\"icon\":\"\"},on:{\"click\":function($event){return _vm.onMultiColor()}}},on),[_c(VIcon,[_vm._v(\"mdi-palette\")])],1)]}}],null,false,286652890)},[_c('span',[_vm._v(\"Set Color\")])]),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.selectedPinCount === 0,\"icon\":\"\"},on:{\"click\":_vm.onMultiDelete}},on),[_c(VIcon,[_vm._v(\"mdi-delete\")])],1)]}}],null,false,2630415772)},[_c('span',[_vm._v(\"Delete Selected\")])]),_c(VDivider,{staticClass:\"mx-4\",attrs:{\"vertical\":\"\"}}),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"bottom\":\"\",\"offset-y\":\"\",\"nudge-width\":\"128\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on:menu }){return [_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on:tooltip }){return [_c(VBtn,_vm._g({staticClass:\"text-none\",attrs:{\"elevation\":\"0\",\"icon\":\"\",\"text\":\"\"}},{ ...tooltip, ...menu }),[_c(VIcon,[_vm._v(_vm._s(_vm.multiModeTool === 0 ? 'mdi-cursor-default-click' : 'mdi-lasso'))])],1)]}}],null,true)},[_c('span',[_vm._v(\"Map Selection Tool\")])])]}}],null,false,3822611849),model:{value:(_vm.showMultiToolSelector),callback:function ($$v) {_vm.showMultiToolSelector=$$v},expression:\"showMultiToolSelector\"}},[_c(VCard,[_c(VList,[_c(VSubheader,[_vm._v(\"Pin Type Selector\")]),_c(VDivider),_c(VRadioGroup,{staticClass:\"mx-3\",model:{value:(_vm.multiModeTool),callback:function ($$v) {_vm.multiModeTool=$$v},expression:\"multiModeTool\"}},[_c(VRadio,{key:0,attrs:{\"value\":0,\"label\":\"Click Pins\"},nativeOn:{\"click\":function($event){return _vm.onMultiToolClick(0)}}}),_c(VRadio,{key:1,attrs:{\"value\":1,\"label\":\"Lasso Pins\"},nativeOn:{\"click\":function($event){return _vm.onMultiToolClick(1)}}})],1)],1)],1)],1),_c(VDivider,{staticClass:\"mx-4\",attrs:{\"vertical\":\"\"}}),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"bottom\":\"\",\"offset-y\":\"\",\"nudge-width\":\"128\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: menu }){return [_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on:tooltip }){return [_c(VBtn,_vm._g({staticClass:\"text-none\",attrs:{\"elevation\":\"0\",\"icon\":\"\",\"text\":\"\"}},{ ...tooltip, ...menu }),[_c(VIcon,[_vm._v(_vm._s(_vm.selectModeIcon))])],1)]}}],null,true)},[_c('span',[_vm._v(\"Multi-Mode Selector\")])])]}}],null,false,2532238952),model:{value:(_vm.showMultiModeSelector),callback:function ($$v) {_vm.showMultiModeSelector=$$v},expression:\"showMultiModeSelector\"}},[_c(VCard,[_c(VList,[_c(VSubheader,[_vm._v(\"Select Mode\")]),_c(VDivider),_c(VRadioGroup,{staticClass:\"mx-3\",model:{value:(_vm.multiMode),callback:function ($$v) {_vm.multiMode=$$v},expression:\"multiMode\"}},[_c(VRadio,{key:1,attrs:{\"value\":1,\"label\":\"Select Stop Pins\",\"name\":\"selectMode\"},nativeOn:{\"click\":function($event){return _vm.onMultiModeClick(1)}}}),_c(VRadio,{key:2,attrs:{\"value\":2,\"label\":\"Select Favorite Pins\",\"name\":\"selectMode\"},nativeOn:{\"click\":function($event){return _vm.onMultiModeClick(2)}}}),(_vm.globals.isDisp)?_c(VRadio,{key:3,attrs:{\"value\":3,\"label\":\"Select Task Pins\",\"name\":\"selectMode\"},nativeOn:{\"click\":function($event){return _vm.onMultiModeClick(3)}}}):_vm._e()],1)],1)],1)],1)]:_vm._e(),(_vm.isMobile)?[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showMobileMultiMode = true}}},[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1),_c(VDialog,{model:{value:(_vm.showMobileMultiMode),callback:function ($$v) {_vm.showMobileMultiMode=$$v},expression:\"showMobileMultiMode\"}},[_c(VCard,[_c(VTabs,{staticClass:\"mobile-planner-tabs\",model:{value:(_vm.mobileMultiModeIdx),callback:function ($$v) {_vm.mobileMultiModeIdx=$$v},expression:\"mobileMultiModeIdx\"}},[_c(VTabItem,{key:0},[_c(VList,[_c(VListItem,{on:{\"click\":_vm.onMultiAddToRoute}},[_vm._v(\" Add to Route \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-routes\")])],1),_c(VListItem,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isMultiModeStops),expression:\"isMultiModeStops\"}],on:{\"click\":_vm.onMultiCopy}},[_vm._v(\" Move / Copy Stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItem,{on:{\"click\":_vm.onMultiVisit}},[_vm._v(\" Set Visit Time \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-timelapse\")])],1),_c(VListItem,{on:{\"click\":_vm.onMultiSked}},[_vm._v(\" Set Schedule \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItem,{on:{\"click\":_vm.onMultiColor}},[_vm._v(\" Set Color \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-palette\")])],1),_c(VListItem,{on:{\"click\":_vm.onMultiDelete}},[_vm._v(\" Delete Selected \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.mobileMultiModeIdx=1}}},[_vm._v(\" Map Selection Tool \"),_c(VSpacer),_c(VIcon,[_vm._v(_vm._s(_vm.multiModeTool === 0 ? 'mdi-cursor-default-click' : 'mdi-lasso'))])],1),_c(VListItem,{on:{\"click\":function($event){_vm.mobileMultiModeIdx=2}}},[_vm._v(\" Multi-Mode Selector \"),_c(VSpacer),_c(VIcon,[_vm._v(_vm._s(_vm.selectModeIcon))])],1)],1)],1),_c(VTabItem,{key:1},[_c(VList,[_c(VListItem,{on:{\"click\":() => { _vm.onMultiToolClick(0); _vm.mobileMultiModeIdx = 0; }}},[_vm._v(\" Click Pins \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-cursor-default-click\")])],1),_c(VListItem,{on:{\"click\":() => { _vm.onMultiToolClick(1); _vm.mobileMultiModeIdx =0;}}},[_vm._v(\" Lasso Pins \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-lasso\")])],1)],1)],1),_c(VTabItem,{key:2},[_c(VList,[_c(VListItem,{on:{\"click\":() => { _vm.onMultiModeClick(1); _vm.mobileMultiModeIdx = 0; }}},[_vm._v(\" Stop Pins \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-map-marker\")])],1),_c(VListItem,{on:{\"click\":() => { _vm.onMultiModeClick(2); _vm.mobileMultiModeIdx =0;}}},[_vm._v(\" Favorite Pins \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-star-circle\")])],1),(_vm.globals.isDisp)?_c(VListItem,{on:{\"click\":() => { _vm.onMultiModeClick(3); _vm.mobileMultiModeIdx =0;}}},[_vm._v(\" Task Pins \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-clipboard-check\")])],1):_vm._e()],1)],1)],1),_c(VCardActions,[_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mobileMultiModeIdx!==0),expression:\"mobileMultiModeIdx!==0\"}],attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.mobileMultiModeIdx=0}}},[_vm._v(\"Back\")]),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.showMobileMultiMode=false}}},[_vm._v(\"Done\")])],1)],1)],1)]:_vm._e(),_c(VSpacer),_c('span',[_vm._v(_vm._s(_vm.selectedPinCount)+\" Selected\")]),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.onMultiExit()}}},on),[_c(VIcon,[_vm._v(\"mdi-close\")])],1)]}}])},[_c('span',[_vm._v(\"Exit Multi-Select\")])])],2),(_vm.canShowPlannerBody)?_c(VRow,{staticClass:\"rw-container\",style:(_vm.upperBodyStyle),attrs:{\"no-gutters\":\"\"}},[_c(VBanner,{staticStyle:{\"width\":\"100%\"},attrs:{\"color\":_vm.space.invalidPinIcon,\"icon\":_vm.space.invalidPinIcon},model:{value:(_vm.space.showInvalidPinBanner),callback:function ($$v) {_vm.$set(_vm.space, \"showInvalidPinBanner\", $$v)},expression:\"space.showInvalidPinBanner\"}},[_c('div',{staticClass:\"d-flex justify-space-between align-center\",style:(`width: 100%;${_vm.space.invalidPinIcon === 'error' ? 'font-weight: 600;' : ''}`)},[_vm._v(\" \"+_vm._s(_vm.invalidPinMessage)+\" \"),_c(VBtn,{attrs:{\"small\":\"\",\"text\":\"\"},on:{\"click\":_vm.resetInvalidPinBanner}},[_c(VIcon,[_vm._v(\"close\")])],1)],1)]),_c(VBanner,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.canShowPushStep),expression:\"canShowPushStep\"}],staticStyle:{\"width\":\"100%\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"normal\"},on:{\"click\":_vm.onPushDismiss}},[_vm._v(\" Dismiss \")]),_c(VBtn,{attrs:{\"disabled\":_vm.isPushPending,\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onPushClick}},[_vm._v(\" Push Changes \")])]},proxy:true}],null,false,4157517075)},[_c('div',[_c(VIcon,{staticClass:\"mr-2\",attrs:{\"icon\":\"mdi-alert\",\"color\":\"yellow\"}},[_vm._v(\" mdi-alert \")]),_vm._v(\" Changes to an assigned route. It is recommended to minimize changes after assignment to avoid conflicts. \")],1)]),(!_vm.isMobile)?[_c(VCol,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isSearchMode),expression:\"isSearchMode\"}],class:`${_vm.backColor} search-panel`,style:(`${_vm.panelsHeight};width:512px`),attrs:{\"cols\":\"auto\"}},[_c('RwSearchPanel',{staticStyle:{\"height\":\"100%\"}})],1),(_vm.canShowMapPanel)?_c(VCol,{staticClass:\"rw-container\",style:(`${_vm.panelsHeight};${_vm.globals.showSearchPanel ? 'flex:1;':''}`),attrs:{\"cols\":_vm.globals.showSearchPanel ? 'auto': _vm.panelCols}},[_c('RwPlannerMap',{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"}})],1):_vm._e(),(_vm.canShowListPanel)?_c(VCol,{class:_vm.backColor,style:(`${_vm.panelsHeight};width: 100%`),attrs:{\"cols\":_vm.panelCols}},[_c('RwPlannerList',{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"forceDropUpdate\":_vm.forceDropUpdateFlag},on:{\"addStop\":_vm.onSearchClick,\"orderRoute\":_vm.onOrderClick,\"assignToDriver\":_vm.onAssignClick}})],1):_vm._e(),(_vm.canShowPinPanel)?_c(VCol,{class:_vm.backColor,style:(_vm.panelsHeight),attrs:{\"cols\":_vm.panelCols}},[_c('RwPinPanel',{staticStyle:{\"height\":\"100%\"}})],1):_vm._e()]:_vm._e(),(_vm.isMobile)?[_c(VTabs,{staticClass:\"mobile-planner-tabs\",staticStyle:{\"position\":\"relative\",\"width\":\"100%\",\"height\":\"calc(100% - 50px)\"},attrs:{\"id\":\"mobile-panels\",\"show-arrows\":\"\"},model:{value:(_vm.mobilePanelTabsIdx),callback:function ($$v) {_vm.mobilePanelTabsIdx=$$v},expression:\"mobilePanelTabsIdx\"}},[_c(VTabsItems,{style:(`${_vm.mobilePanelsHeight};width:100%;`),attrs:{\"touchless\":\"\"},model:{value:(_vm.mobilePanelTabsIdx),callback:function ($$v) {_vm.mobilePanelTabsIdx=$$v},expression:\"mobilePanelTabsIdx\"}},[_c(VTabItem,{key:0,class:`${_vm.backColor} search-panel`,style:(`${_vm.mobilePanelsHeight};width: 100%;`)},[_c('RwSearchPanel',{style:(_vm.mobilePanelsHeight),on:{\"close\":() => this.mobilePanelTabsIdx=1}})],1),_c(VTabItem,{key:1,style:(`${_vm.mobilePanelsHeight};width:100%`)},[(!!_vm.activeRoute)?_c('RwPlannerMap',{style:(`${_vm.mobilePanelsHeight};width: 100%;`)}):_vm._e()],1),_c(VTabItem,{key:2},[_c('RwPlannerList',{style:(`${_vm.mobilePanelsHeight};width: 100%;`),attrs:{\"forceDropUpdate\":_vm.forceDropUpdateFlag}})],1),_c(VTabItem,{key:3},[_c('RwPinPanel',{style:(_vm.mobilePanelsHeight)})],1),_c(VTabItem,{key:4},[_c('RwPlannerStatus',{style:(_vm.mobilePanelsHeight)})],1)],1)],1),_c('div',{staticStyle:{\"width\":\"100%\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\",\"flex-wrap\":\"wrap\",\"height\":\"50px\"}},[_c(VBtn,{staticStyle:{\"width\":\"50%\",\"height\":\"100%\"},attrs:{\"disabled\":_vm.mobilePanelTabsIdx <= 1},on:{\"click\":function($event){_vm.mobilePanelTabsIdx -= 1}}},[_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"row\"}},[_c(VIcon,[_vm._v(\"mdi-arrow-left\")]),(_vm.mobilePanelTabsIdx === 2)?_c(VIcon,[_vm._v(\"mdi-map\")]):_vm._e(),(_vm.mobilePanelTabsIdx === 3)?_c(VIcon,[_vm._v(\"mdi-view-list\")]):_vm._e(),(_vm.mobilePanelTabsIdx === 4)?_c(VIcon,[_vm._v(\"mdi-flag\")]):_vm._e()],1)]),_c(VBtn,{staticStyle:{\"width\":\"50%\",\"height\":\"100%\"},attrs:{\"disabled\":_vm.mobilePanelTabsIdx >= 4},on:{\"click\":function($event){_vm.mobilePanelTabsIdx += 1}}},[_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"row\"}},[(_vm.mobilePanelTabsIdx === 1)?_c(VIcon,[_vm._v(\"mdi-view-list\")]):_vm._e(),(_vm.mobilePanelTabsIdx === 2)?_c(VIcon,[_vm._v(\"mdi-flag\")]):_vm._e(),(_vm.mobilePanelTabsIdx === 3)?_c(VIcon,[_vm._v(\"mdi-chart-timeline\")]):_vm._e(),_c(VIcon,[_vm._v(\"mdi-arrow-right\")])],1)])],1)]:_vm._e()],2):_vm._e(),(_vm.canShowStatusPanel && !_vm.isMobile)?_c(VRow,{staticClass:\"rw-container rw-status-panel\",class:_vm.backColor,style:(_vm.timelineStyle),attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c('RwPlannerStatus')],1):_vm._e(),(_vm.space.showSearchOptions)?_c('RwSearchOptions'):_vm._e(),(_vm.space.showRouteOrder)?_c('RwRouteOrder'):_vm._e(),_c('RwRouteSummary'),(_vm.space.showDataLayers)?_c('RwPlannerLayers'):_vm._e(),(_vm.space.showMapOptions)?_c('RwPlannerMapOptions'):_vm._e(),(_vm.globals.showPinPopup)?_c('RwPinPopup'):_vm._e(),(_vm.globals.showClusterPicker)?_c('RwClusterPicker',{on:{\"onClusterPick\":_vm.onClusterPick}}):_vm._e(),(_vm.globals.m_showRoutePicker)?_c('RwRoutePicker',{attrs:{\"init-tab\":0,\"init-src-id\":_vm.globals.m_routePickerSrcId},on:{\"onRoutePick\":_vm.onRoutePick,\"onTasks\":_vm.onCopyMoveTasks}}):_vm._e(),(_vm.globals.showOnboardSettings && (_vm.globals.isPro||_vm.globals.isTeam))?_c('RwOnboardSettings'):_vm._e(),(_vm.space.showDropSelect)?_c('RwPlannerDropSelect',{on:{\"close\":function($event){return _vm.forceDropUpdate()}}}):_vm._e(),(_vm.space.showDropRemove)?_c('RwPlannerDropRemove'):_vm._e(),(_vm.globals.showCCExpire)?_c('RwCCExpirePopup'):_vm._e(),(_vm.globals.showLimitPopup)?_c('RwLimitPopup'):_vm._e(),(_vm.globals.showAddReport)?_c('RwAddCorrectDialog'):_vm._e(),(_vm.globals.showAddMissingReport)?_c('RwAddMissingReportDialog'):_vm._e(),(_vm.globals.showAddMissingReport)?_c('RwAddMissingFinalizeDialog'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListGroup } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"map\",staticClass:\"rw-inset unselectable\"},[_c(VSnackbar,{attrs:{\"absolute\":\"\",\"top\":true,\"timeout\":500000},model:{value:(_vm.showZoomSnack),callback:function ($$v) {_vm.showZoomSnack=$$v},expression:\"showZoomSnack\"}},[_c('div',{staticClass:\"py-2 px-5 d-flex flex-row\",class:_vm.snackColor},[_c('div',{staticClass:\"flex-grow-1 snack-text text-center\"},[_vm._v(\" \"+_vm._s(_vm.zoomText)+\" \")])])]),(false)?_c(VBtn,{staticStyle:{\"top\":\"20px\",\"background-color\":\"#00000040\"},attrs:{\"dark\":\"\",\"small\":\"\",\"absolute\":\"\",\"left\":\"\",\"fab\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.zoomLevel)+\" \")]):_vm._e(),_c(VBtn,{staticClass:\"mr-2\",staticStyle:{\"top\":\"20px\",\"background-color\":\"#00000040\"},attrs:{\"dark\":\"\",\"small\":\"\",\"absolute\":\"\",\"right\":\"\",\"fab\":\"\"},on:{\"click\":_vm.onMapOptions}},[_c(VIcon,{attrs:{\"color\":\"grey\"}},[_vm._v(\"mdi-settings\")])],1),(!_vm.globals.showSearchPanel)?_c(VMenu,{attrs:{\"close-on-content-click\":false,\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"nudge-width\":\"256\",\"absolute\":\"\"},model:{value:(_vm.showMenuMap),callback:function ($$v) {_vm.showMenuMap=$$v},expression:\"showMenuMap\"}},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_c(VIcon,{staticClass:\"mr-2\"},[_vm._v(\"mdi-crosshairs\")]),_vm._v(\" At clicked location: \")],1),_c(VDivider),_c(VListItem,{on:{\"click\":_vm.onMapAddStopHere}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-map-marker\")])],1),_c(VListItemTitle,[_vm._v(\"Add Stop Here\")])],1),_c(VListItem,{on:{\"click\":_vm.onMapAddSiteHere}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-star\")])],1),_c(VListItemTitle,[_vm._v(\"Add Favorite Here\")])],1),(_vm.globals.isDisp)?_c(VListItem,{on:{\"click\":_vm.onMapAddTaskHere}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-clipboard-check\")])],1),_c(VListItemTitle,[_vm._v(\"Add Task Here\")])],1):_vm._e(),_c(VDivider),_c(VListItem,{on:{\"click\":_vm.onMapAddRouteHere}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-routes\")])],1),_c(VListItemTitle,[_vm._v(\"New Route Here\")])],1),_c(VListItem,{on:{\"click\":_vm.onMapSetDefaultHere}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-routes\")])],1),_c(VListItemTitle,[_vm._v(\"Set Default Start Here\")])],1),_c(VListItem,{on:{\"click\":_vm.onMapSetStartHere}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-routes\")])],1),_c(VListItemTitle,[_vm._v(\"Set Route Start Here\")])],1)],1)],1):_vm._e(),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"nudge-width\":\"256\",\"absolute\":\"\"},model:{value:(_vm.showMenuRoutePin),callback:function ($$v) {_vm.showMenuRoutePin=$$v},expression:\"showMenuRoutePin\"}},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_c(VImg,{staticClass:\"mr-2\",staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.pinClickedUrl}}),_vm._v(\" \"+_vm._s(_vm.pinClicked ? _vm.pinClicked.title : '')+\" \")],1),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.onRouteView(_vm.activeRoute)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Route\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onRouteEdit(_vm.activeRoute)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit Route\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onRouteCopy(_vm.activeRoute)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItemTitle,[_vm._v(\"Copy Route\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onRouteArchive(_vm.activeRoute)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-archive\")])],1),_c(VListItemTitle,[_vm._v(\"Archive Route\")])],1),_c(VDivider),_c(VListGroup,{attrs:{\"prepend-icon\":\"mdi-chevron-down\",\"no-action\":\"\",\"sub-group\":\"\",\"value\":false},on:{\"click\":_vm.onMoreMenu},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"More Actions\")])]},proxy:true}])},[(_vm.globals.isDisp)?_c(VListItem,{on:{\"click\":function($event){return _vm.onRouteAssign(_vm.activeRoute)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-account\")])],1),_c(VListItemTitle,[_vm._v(\"Assignment\")])],1):_vm._e(),_c(VListItem,{on:{\"click\":function($event){return _vm.onRouteStatus(_vm.activeRoute)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Change Status\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onRouteRelo(_vm.activeRoute)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-crosshairs\")])],1),_c(VListItemTitle,[_vm._v(\"Relocate Start\")])],1)],1)],1)],1),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"nudge-width\":\"256\",\"absolute\":\"\"},model:{value:(_vm.showMenuStopPin),callback:function ($$v) {_vm.showMenuStopPin=$$v},expression:\"showMenuStopPin\"}},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_c(VImg,{staticClass:\"mr-2\",staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.pinClickedUrl}}),_vm._v(\" \"+_vm._s(_vm.pinClicked ? _vm.pinClicked.title : '')+\" \")],1),_c(VDivider),_c(VListItem,{on:{\"click\":_vm.onStopView}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Full Stop\")])],1),_c(VListItem,{on:{\"click\":_vm.onStopEdit}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit Stop\")])],1),(_vm.globals.isActionAvailable(_vm.globals.Actions.deleteStops))?_c(VListItem,{on:{\"click\":_vm.onStopDelete}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete Stop\")])],1):_vm._e(),(!_vm.isStopCompleted())?_c(VListItem,{on:{\"click\":_vm.onStopCheckInScreen}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check-circle\")])],1),_c(VListItemTitle,[_vm._v(\"Check-In\")])],1):_c(VListItem,{on:{\"click\":_vm.onStopRestore}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-checkbox-blank-circle\")])],1),_c(VListItemTitle,[_vm._v(\"Restore\")])],1),_c(VDivider),(_vm.canStopShowMore())?_c(VListGroup,{staticStyle:{\"overflow-x\":\"auto\"},attrs:{\"prepend-icon\":\"mdi-chevron-down\",\"no-action\":\"\",\"sub-group\":\"\",\"value\":false},on:{\"click\":_vm.onMoreMenu},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"More Actions\")])]},proxy:true}],null,false,2946050079)},[(_vm.canStopAddSite())?_c(VListItem,{on:{\"click\":_vm.onStopAddSite}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-star\")])],1),_c(VListItemTitle,[_vm._v(\"Create Favorite\")])],1):_vm._e(),(_vm.globals.isDisp)?_c(VListItem,{on:{\"click\":_vm.onStopAddTask}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-clipboard-check\")])],1),_c(VListItemTitle,[_vm._v(\"Create Task\")])],1):_vm._e(),(_vm.canShowSkeds() && !_vm.isStopScheduled())?_c(VListItem,{on:{\"click\":_vm.onStopAddSked}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemTitle,[_vm._v(\"Add Schedule\")])],1):_vm._e(),(_vm.canShowSkeds() && _vm.isStopScheduled() && _vm.globals.isActionAvailable(_vm.globals.Actions.deleteSked))?_c(VListItem,{on:{\"click\":_vm.onStopRemoveSked}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemTitle,[_vm._v(\"Remove Schedule: \"+_vm._s(_vm.stopSkedText))])],1):_vm._e(),(!_vm.stopHasDrop())?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onAddDropStop(_vm.pinClicked)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-package-variant\")])],1),_c(VListItemTitle,[_vm._v(\"Add Drop Stop\")])],1):_vm._e(),(_vm.stopHasDrop())?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onAddDropStop(_vm.pinClicked)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-package-variant\")])],1),_c(VListItemTitle,[_vm._v(\"Replace Drop Stop\")])],1):_vm._e(),(_vm.space.canShowRemoveDropStop(_vm.pinClicked))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onRemoveDropStop(_vm.pinClicked)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-package-variant-closed\")])],1),_c(VListItemTitle,[_vm._v(\"Remove Drop Stop (\"+_vm._s(_vm.pinClickedDropStopName)+\")\")])],1):_vm._e(),(_vm.canShowMarkFirst())?_c(VListItem,{on:{\"click\":_vm.onStopMarkFirst}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-first\")])],1),_c(VListItemTitle,[_vm._v(\"Mark First\")])],1):_vm._e(),(_vm.canShowUnmarkFirst())?_c(VListItem,{on:{\"click\":_vm.onStopUnmarkFirst}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-first\")])],1),_c(VListItemTitle,[_vm._v(\"Unmark First\")])],1):_vm._e(),(_vm.canShowMarkFinal())?_c(VListItem,{on:{\"click\":_vm.onStopMarkFinal}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-last\")])],1),_c(VListItemTitle,[_vm._v(\"Mark Final\")])],1):_vm._e(),(_vm.canShowUnmarkFinal())?_c(VListItem,{on:{\"click\":_vm.onStopUnmarkFinal}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-last\")])],1),_c(VListItemTitle,[_vm._v(\"Unmark Final\")])],1):_vm._e(),_c(VListItem,{on:{\"click\":_vm.onStopRelocate}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-crosshairs\")])],1),_c(VListItemTitle,[_vm._v(\"Relocate Pin\")])],1),_c(VListItem,{on:{\"click\":_vm.onStopMoveCopy}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItemTitle,[_vm._v(\"Move to Another Route\")])],1)],1):_vm._e()],1)],1),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"nudge-width\":\"256\",\"absolute\":\"\"},model:{value:(_vm.showMenuCheckin),callback:function ($$v) {_vm.showMenuCheckin=$$v},expression:\"showMenuCheckin\"}},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_c(VImg,{staticClass:\"mr-2\",staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.pinClickedUrl}}),_vm._v(\" Check In Status: \"+_vm._s(_vm.pinClicked ? _vm.pinClicked.title : '')+\" \")],1),_c(VDivider),(_vm.pinnedStatus.length>0)?_c(VListGroup,{staticStyle:{\"overflow-x\":\"auto\"},attrs:{\"prepend-icon\":\"mdi-chevron-down\",\"no-action\":\"\",\"sub-group\":\"\",\"value\":false},on:{\"click\":_vm.onPinned},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"Pinned\")]),_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pin\")])],1)]},proxy:true}],null,false,1911030987)},[(_vm.pinnedStatus.includes('0'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(0)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-map-marker\")])],1),_c(VListItemTitle,[_vm._v(\"Active (Default)\")])],1):_vm._e(),(_vm.pinnedStatus.includes('1'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(1)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-map-marker\")])],1),_c(VListItemTitle,[_vm._v(\"New\")])],1):_vm._e(),(_vm.pinnedStatus.includes('10'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(10)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Complete (Default)\")])],1):_vm._e(),(_vm.pinnedStatus.includes('11'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(11)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Service Complete\")])],1):_vm._e(),(_vm.pinnedStatus.includes('12'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(12)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Left at Front Door/on Porch\")])],1):_vm._e(),(_vm.pinnedStatus.includes('13'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(13)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Left at Gate/in Lobby\")])],1):_vm._e(),(_vm.pinnedStatus.includes('14'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(14)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Left in Mail Area\")])],1):_vm._e(),(_vm.pinnedStatus.includes('15'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(15)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Handed to Customer\")])],1):_vm._e(),(_vm.pinnedStatus.includes('16'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(16)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Signature Collected\")])],1):_vm._e(),(_vm.pinnedStatus.includes('17'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(17)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Pick-Up Complete\")])],1):_vm._e(),(_vm.pinnedStatus.includes('20'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(20)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Incomplete (Default)\")])],1):_vm._e(),(_vm.pinnedStatus.includes('21'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(21)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Nobody There/Not Open\")])],1):_vm._e(),(_vm.pinnedStatus.includes('22'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(22)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Incorrect Address\")])],1):_vm._e(),(_vm.pinnedStatus.includes('23'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(23)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Address Unreachable\")])],1):_vm._e(),(_vm.pinnedStatus.includes('24'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(24)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Customer Refused\")])],1):_vm._e(),(_vm.pinnedStatus.includes('25'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(25)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Sent Text/Email\")])],1):_vm._e(),(_vm.pinnedStatus.includes('26'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(26)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Called/Left Voicemail\")])],1):_vm._e(),(_vm.pinnedStatus.includes('27'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(27)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Spoke with Customer\")])],1):_vm._e(),(_vm.pinnedStatus.includes('28'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(28)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Left a Note\")])],1):_vm._e(),(_vm.pinnedStatus.includes('29'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(29)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Attempt Again Later\")])],1):_vm._e(),(_vm.pinnedStatus.includes('30'))?_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(30)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,[_vm._v(\"Do Not Re-Attempt\")])],1):_vm._e()],1):_vm._e(),(_vm.pinnedStatus.length>0)?_c(VListGroup,{staticStyle:{\"overflow-x\":\"auto\"},attrs:{\"prepend-icon\":\"mdi-chevron-down\",\"no-action\":\"\",\"sub-group\":\"\",\"value\":false},on:{\"click\":_vm.onComplete},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"Complete\")]),_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1)]},proxy:true}],null,false,2840828843)},[_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(10)}}},[_c(VListItemTitle,[_vm._v(\"Complete (Default)\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(11)}}},[_c(VListItemTitle,[_vm._v(\"Service Complete\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(12)}}},[_c(VListItemTitle,[_vm._v(\"Left at Front Door/on Porch\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(13)}}},[_c(VListItemTitle,[_vm._v(\"Left at Gate/in Lobby\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(14)}}},[_c(VListItemTitle,[_vm._v(\"Left in Mail Area\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(15)}}},[_c(VListItemTitle,[_vm._v(\"Handed to Customer\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(16)}}},[_c(VListItemTitle,[_vm._v(\"Signature Collected\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(17)}}},[_c(VListItemTitle,[_vm._v(\"Pick-Up Complete\")])],1)],1):_vm._e(),(_vm.pinnedStatus.length>0)?_c(VListGroup,{staticStyle:{\"overflow-x\":\"auto\"},attrs:{\"prepend-icon\":\"mdi-chevron-down\",\"no-action\":\"\",\"sub-group\":\"\",\"value\":false},on:{\"click\":_vm.onIncomplete},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"Incomplete\")]),_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1)]},proxy:true}],null,false,2065927900)},[_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(20)}}},[_c(VListItemTitle,[_vm._v(\"Incomplete (Default)\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(21)}}},[_c(VListItemTitle,[_vm._v(\"Nobody There/Not Open\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(22)}}},[_c(VListItemTitle,[_vm._v(\"Incorrect Address\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(23)}}},[_c(VListItemTitle,[_vm._v(\"Address Unreachable\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(24)}}},[_c(VListItemTitle,[_vm._v(\"Customer Refused\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(25)}}},[_c(VListItemTitle,[_vm._v(\"Sent Text/Email\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(26)}}},[_c(VListItemTitle,[_vm._v(\"Called/Left Voicemail\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(27)}}},[_c(VListItemTitle,[_vm._v(\"Spoke with Customer\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(28)}}},[_c(VListItemTitle,[_vm._v(\"Left a Note\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(29)}}},[_c(VListItemTitle,[_vm._v(\"Attempt Again Later\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onCheckInStatus(30)}}},[_c(VListItemTitle,[_vm._v(\"Do Not Re-Attempt\")])],1)],1):_vm._e()],1)],1),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"nudge-width\":\"256\",\"absolute\":\"\"},model:{value:(_vm.showMenuClusterPin),callback:function ($$v) {_vm.showMenuClusterPin=$$v},expression:\"showMenuClusterPin\"}},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_c(VImg,{staticClass:\"mr-2\",staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.pinClickedUrl}}),_vm._v(\" \"+_vm._s(_vm.pinClicked ? _vm.pinClicked.title : '')+\" \")],1),_c(VDivider),_c(VListItem,{on:{\"click\":_vm.onClusterView}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Full Cluster\")])],1),_c(VListItem,{on:{\"click\":_vm.onClusterDelete}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete All\")])],1),(!_vm.isClusterCompleted())?_c(VListItem,{on:{\"click\":_vm.onClusterCheckIn}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check-circle\")])],1),_c(VListItemTitle,[_vm._v(\"Check-In All\")])],1):_c(VListItem,{on:{\"click\":_vm.onClusterRestore}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-checkbox-blank-circle\")])],1),_c(VListItemTitle,[_vm._v(\"Restore All\")])],1),_c(VDivider),(_vm.canStopShowMore())?_c(VListGroup,{staticStyle:{\"overflow-x\":\"auto\"},attrs:{\"prepend-icon\":\"mdi-chevron-down\",\"no-action\":\"\",\"sub-group\":\"\",\"value\":false},on:{\"click\":_vm.onMoreMenu},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"More Actions\")])]},proxy:true}],null,false,2946050079)},[(_vm.canStopAddSite())?_c(VListItem,{on:{\"click\":_vm.onStopAddSite}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-star\")])],1),_c(VListItemTitle,[_vm._v(\"Add Favorite\")])],1):_vm._e(),(_vm.canShowSkeds() && !_vm.isStopScheduled())?_c(VListItem,{on:{\"click\":_vm.onStopAddSked}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemTitle,[_vm._v(\"Add Schedule\")])],1):_vm._e(),(_vm.canShowSkeds() && _vm.isStopScheduled() && _vm.globals.isActionAvailable(_vm.globals.Actions.deleteSked))?_c(VListItem,{on:{\"click\":_vm.onStopRemoveSked}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemTitle,[_vm._v(\"Remove Schedule: \"+_vm._s(_vm.stopSkedText))])],1):_vm._e(),(_vm.canShowMarkFirst())?_c(VListItem,{on:{\"click\":_vm.onStopMarkFirst}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-first\")])],1),_c(VListItemTitle,[_vm._v(\"Mark First\")])],1):_vm._e(),(_vm.canShowUnmarkFirst())?_c(VListItem,{on:{\"click\":_vm.onStopUnmarkFirst}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-first\")])],1),_c(VListItemTitle,[_vm._v(\"Unmark First\")])],1):_vm._e(),(_vm.canShowMarkFinal())?_c(VListItem,{on:{\"click\":_vm.onStopMarkFinal}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-last\")])],1),_c(VListItemTitle,[_vm._v(\"Mark Final\")])],1):_vm._e(),(_vm.canShowUnmarkFinal())?_c(VListItem,{on:{\"click\":_vm.onStopUnmarkFinal}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-last\")])],1),_c(VListItemTitle,[_vm._v(\"Unmark Final\")])],1):_vm._e(),_c(VListItem,{on:{\"click\":_vm.onStopRelocate}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-crosshairs\")])],1),_c(VListItemTitle,[_vm._v(\"Relocate\")])],1)],1):_vm._e()],1)],1),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"nudge-width\":\"256\",\"absolute\":\"\"},model:{value:(_vm.showMenuSitePin),callback:function ($$v) {_vm.showMenuSitePin=$$v},expression:\"showMenuSitePin\"}},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_c(VImg,{staticClass:\"mr-2\",staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.pinClickedUrl}}),_vm._v(\" \"+_vm._s(_vm.pinClicked ? _vm.pinClicked.title : '')+\" \")],1),_c(VDivider),_c(VListItem,{on:{\"click\":_vm.onSiteView}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Full Favorite\")])],1),_c(VListItem,{on:{\"click\":_vm.onSiteEdit}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit Favorite\")])],1),(_vm.globals.isActionAvailable(_vm.globals.Actions.deleteSked))?_c(VListItem,{on:{\"click\":_vm.onSiteDelete}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete Favorite\")])],1):_vm._e(),(!_vm.space.isSiteRouted(_vm.pinClicked))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onSiteToRoute(_vm.pinClicked)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItemTitle,[_vm._v(\"Add To Route\")])],1):_vm._e(),_c(VDivider),_c(VListGroup,{attrs:{\"prepend-icon\":\"mdi-chevron-down\",\"no-action\":\"\",\"sub-group\":\"\",\"value\":false},on:{\"click\":_vm.onMoreMenu},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"More Actions\")])]},proxy:true}])},[_c(VListItem,{on:{\"click\":_vm.onSiteRelocate}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-crosshairs\")])],1),_c(VListItemTitle,[_vm._v(\"Relocate\")])],1)],1)],1)],1),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"nudge-width\":\"256\",\"absolute\":\"\"},model:{value:(_vm.showMenuTaskPin),callback:function ($$v) {_vm.showMenuTaskPin=$$v},expression:\"showMenuTaskPin\"}},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_c(VImg,{staticClass:\"mr-2\",staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.pinClickedUrl}}),_vm._v(\" \"+_vm._s(_vm.pinClicked ? _vm.pinClicked.title : '')+\" \")],1),_c(VDivider),_c(VListItem,{on:{\"click\":_vm.onTaskView}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Full Task\")])],1),_c(VListItem,{on:{\"click\":() => _vm.onTaskEdit()}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit Task\")])],1),_c(VListItem,{on:{\"click\":_vm.onTaskDelete}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete Task\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.space.onTaskToRoute(_vm.pinClicked)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-arrow-right\")])],1),_c(VListItemTitle,[_vm._v(\"Add to Route\")])],1),_c(VDivider),_c(VListGroup,{attrs:{\"prepend-icon\":\"mdi-chevron-down\",\"no-action\":\"\",\"sub-group\":\"\",\"value\":false},on:{\"click\":_vm.onMoreMenu},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"More Actions\")])]},proxy:true}])},[_c(VListItem,{on:{\"click\":_vm.onTaskRelocate}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-crosshairs\")])],1),_c(VListItemTitle,[_vm._v(\"Relocate\")])],1)],1)],1)],1),_c(VMenu,{attrs:{\"close-on-content-click\":false,\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"nudge-width\":\"128\",\"absolute\":\"\"},model:{value:(_vm.showMenuDriverPin),callback:function ($$v) {_vm.showMenuDriverPin=$$v},expression:\"showMenuDriverPin\"}},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_c(VImg,{staticClass:\"mr-2\",staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.pinClickedUrl}}),_vm._v(\" \"+_vm._s(_vm.pinClicked ? _vm.pinClicked.title : '')+\" \")],1),_c(VDivider),_c(VListItem,{on:{\"click\":_vm.onDriverView}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-account-multiple\")])],1),_c(VListItemTitle,[_vm._v(\"View Full Driver\")])],1),_c(VListItem,{on:{\"click\":_vm.onDriverEdit}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit User\")])],1),_c(VDivider)],1)],1),_c(VMenu,{attrs:{\"position-x\":_vm.mouseX + 160,\"position-y\":_vm.mouseY + 70,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.showMenuSearchTarget),callback:function ($$v) {_vm.showMenuSearchTarget=$$v},expression:\"showMenuSearchTarget\"}},[_c(VList,[_c(VListItem,{staticClass:\"d-block\",on:{\"click\":_vm.reportTargetAddress}},[_c(VListItemTitle,{staticClass:\"pt-2\"},[_c('div',[_vm._v(\" Report Address Issue \")])]),_c(VListItemSubtitle,{staticClass:\"mt-2 pb-2\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.reportAddress)+\" \")])])],1)],1)],1),_c(VMenu,{attrs:{\"position-x\":_vm.mouseX + 155,\"position-y\":_vm.mouseY + 70,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.showMenuSearchPin),callback:function ($$v) {_vm.showMenuSearchPin=$$v},expression:\"showMenuSearchPin\"}},[_c(VList,[_c(VListItem,{staticClass:\"d-block\",on:{\"click\":_vm.reportSearchPin}},[_c(VListItemTitle,{staticClass:\"pt-2\"},[_c('div',[_vm._v(\" Report Address Issue \")])]),_c(VListItemSubtitle,{staticClass:\"mt-2 pb-2\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.reportAddress)+\" \")])])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport moment from \"moment\";\nimport {md5} from \"md5js\";\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport {RwRoute, RwRouteStatusCodes} from \"@/app/dem/RwRoute\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwMarker, RwPin} from \"@/app/dem/RwPin\";\nimport {\n RwAddReportEnum,\n RwAddStatusEnum,\n RwAddVoteEnum,\n RwMultiMode,\n RwMutiModeTool,\n RwPinTypes,\n RwRouteCopyType\n} from \"@/app/RwEnums\";\nimport {RwGeoUtils} from \"@/app/utils/RwGeoUtils\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views//planner/RwPlannerSpace\";\nimport {RwViewUtils} from \"@/app//utils/RwViewUtils\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwDeltas} from \"@/app/dal/RwDeltas\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport RwEvents from \"@/app/consts/RwEvents\";\nimport theSettingSpace, {RwSettingSpace} from \"@/app/views/account/RwSettingSpace\";\nimport {PODDefaultSettings} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport {RwStopAddOns} from \"@/app/dem/RwStopAddOns\";\n\n@Component\nexport default class RwPlannerMap extends Vue {\n\n\n //#region Props\n\n map: H.Map;\n mapui: H.ui.UI;\n platform: H.service.Platform;\n darkRouteActiveStyle: H.map.Style;\n startPinZIndex = 300;\n mapBehaviors: H.mapevents.Behavior;\n isLassoMode: boolean = false;\n defaultLayers: H.service.Platform.MapTypes31;\n polySelectGroup: H.map.Group;\n mapGroupRoute: H.map.Group;\n mapGroupSites: H.map.Group;\n mapGroupTasks: H.map.Group;\n\n mouseDownTime: moment.Moment;\n mouseX: number = 0;\n mouseY: number = 0;\n menuX: number = 0;\n menuY: number = 0;\n\n polyPoints: H.geo.Point[] = [];\n polySelector: H.map.Polygon;\n dragViewportX: number;\n dragViewportY: number;\n polyString: string = null;\n polyLine: H.map.Polyline;\n lineStr: H.geo.LineString;\n\n isMapReady = false;\n isRenderedRoute = false;\n lastZoomedRouteId = \"\";\n lastRenderedRouteId = \"\";\n lastRenderedStopCount = 0;\n lastRouteLoadTime = 0;\n m_showMenuMap = false;\n showMenuStopPin = false;\n showMenuCheckin = false;\n showMenuSitePin = false;\n showMenuRoutePin = false;\n showMenuTaskPin = false;\n showMenuDriverPin = false;\n showMenuClusterPin = false;\n showMenuSearchTarget = false;\n showMenuSearchPin = false;\n m_zoomLevel: number = 0;\n trafficLayer: H.map.layer.TileLayer;\n incidentsLayer: H.map.layer.TileLayer;\n isPinClick = false;\n isMapDoubleClick = false;\n isPinDoubleClick = false;\n isSearchPinClick = false;\n searchId = \"\";\n\n searchTarget = null;\n searchMarker: RwMarker[] = [];\n\n currentPath = null;\n\n private timeOfLastPinClick;\n private pinClicked: RwPin = null;\n private reticle: RwMarker;\n private lastDrvLoc = {lat: 0, lng: 0};\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get settingSpace(): RwSettingSpace {\n return theSettingSpace;\n }\n\n get stopPins(): RwPin[] {\n return this.space.stopPins;\n }\n\n get sitePins(): RwPin[] {\n return this.space.sitePins;\n }\n\n get showZoomSnack(): boolean {\n let showZoom = false;\n if (this.globals.showSearchPanel && Number(this.zoomLevel) <= 9) {\n showZoom = true;\n }\n return showZoom;\n }\n\n get zoomText(): string {\n if (this.zoomLevel < 7) {\n return \"Zoom in to activate search.\"\n } else {\n return \"Zoom map to local area for most accurate results.\"\n }\n }\n\n get snackColor(): string {\n if (this.zoomLevel < 7) {\n return \"error\";\n } else {\n return \"primary\";\n }\n }\n\n\n get mapShowTraffic(): boolean {\n return this.space.mapShowTraffic;\n }\n\n get mapShowIncidents(): boolean {\n return this.space.mapShowIncidents;\n }\n\n get mapShowSatellite(): boolean {\n return this.space.mapShowSatellite;\n }\n\n get multiModeTool(): RwMutiModeTool {\n return this.space.multiModeTool;\n }\n\n get selectMode(): RwMultiMode {\n return this.space.multiMode;\n }\n\n get activeRoute(): RwRoute {\n return this.space.activeRoute;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get isSimpleMap(): boolean {\n return this.globals.isSimpleMap;\n }\n\n get sizeDelta(): number {\n return this.space.sizeDelta;\n }\n\n get isMultiMode(): boolean {\n return this.space.multiMode != RwMultiMode.none;\n }\n\n get pinClickedUrl() {\n let url = ''\n if (this.pinClicked) {\n url = this.pinClicked.dataUrl ? this.pinClicked.dataUrl : ''\n }\n return url;\n }\n\n get pinnedStatus(): string[] {\n return this.globals.pinnedStatus;\n }\n\n get reportAddress(): string {\n if (this.isSearchPinClick) {\n const report = this.space.searchReportInfo.find(i => i.entityId === this.searchId);\n if (report) {\n return report.address;\n }\n } else {\n return this.space.selectedSearchResult ? this.space.selectedSearchResult.address : \"\";\n }\n\n }\n\n canStopShowMore(): boolean {\n let canShow = false;\n if (this.pinClicked && this.pinClicked.stop) {\n let stop = this.pinClicked.stop;\n if (!stop.isComplete) {\n canShow = true;\n }\n }\n return canShow;\n }\n\n canStopAddSite(): boolean {\n let canShow = false;\n if (this.pinClicked && this.pinClicked.stop) {\n let stop = this.pinClicked.stop;\n //console.log(\"RwPlannerMap.isStopSited\", stop.name);\n canShow = !stop.isSited;\n }\n return canShow;\n }\n\n isStopScheduled(): boolean {\n let gotSked = false;\n if (this.pinClicked && this.pinClicked.stop) {\n let stop = this.pinClicked.stop;\n gotSked = stop.isScheduled;\n //console.log(\"isStopScheduled gotSked skedId, priority\", gotSked, stop.skedId, stop.priority);\n }\n return gotSked;\n }\n\n stopHasDrop(): boolean {\n let hasDrop = false;\n if (this.pinClicked && this.pinClicked.stop) {\n let stop = this.pinClicked.stop;\n hasDrop = stop.hasDrops();\n }\n return hasDrop;\n }\n\n get pinClickedDropStopName(): string {\n if (this.stopHasDrop()) {\n let dropStop = this.pinClicked?.stop?.getDrop();\n if (dropStop) {\n return dropStop.name;\n }\n } else {\n return \"\";\n }\n }\n\n get stopSkedText(): string {\n let text: string;\n if (this.pinClicked && this.pinClicked.stop) {\n let stop = this.pinClicked.stop;\n text = stop.skedText;\n }\n return text;\n }\n\n isStopCompleted(): boolean {\n let isSited = false;\n if (this.pinClicked && this.pinClicked.stop) {\n let stop = this.pinClicked.stop;\n isSited = stop.isComplete;\n }\n return isSited;\n }\n\n canShowMarkFirst(): boolean {\n let show = false;\n let route = this.activeRoute;\n if (this.pinClicked && this.pinClicked.stop && route) {\n let stop = this.pinClicked.stop;\n show = !stop.isMarkedFirst(route);\n }\n return show;\n }\n\n canShowSkeds(): boolean {\n let show = false;\n let route = this.activeRoute;\n if (this.pinClicked && this.pinClicked.stop && route) {\n let stop = this.pinClicked.stop;\n show = (stop.isMarkedFirst(route) || stop.isMarkedFinal(route)) == false;\n }\n return show;\n }\n\n canShowMarkFinal(): boolean {\n let show = false;\n let route = this.activeRoute;\n if (this.pinClicked && this.pinClicked.stop && route) {\n let stop = this.pinClicked.stop;\n show = !stop.isMarkedFinal(route);\n }\n return show;\n }\n\n canShowUnmarkFirst(): boolean {\n let show = false;\n let route = this.activeRoute;\n if (this.pinClicked && this.pinClicked.stop && route) {\n let stop = this.pinClicked.stop;\n show = route.isFirstStop(stop)\n }\n return show;\n }\n\n canShowUnmarkFinal(): boolean {\n let show = false;\n let route = this.activeRoute;\n if (this.pinClicked && this.pinClicked.stop && route) {\n let stop = this.pinClicked.stop;\n show = route.isFinalStop(stop)\n }\n return show;\n }\n\n get zoomLevel(): number {\n // console.warn(\"zoom level get: \", this.m_zoomLevel);\n return this.m_zoomLevel\n }\n\n set zoomLevel(val: number) {\n this.m_zoomLevel = val;\n this.space.zoomLevel = val;\n }\n\n get showMenuMap(): boolean {\n return this.m_showMenuMap\n }\n\n set showMenuMap(val: boolean) {\n if (val) {\n if (!this.globals.showSearchPanel) {\n this.showMarkerReticle();\n } else {\n val = false;\n }\n } else {\n this.hideMarkerReticle();\n }\n this.m_showMenuMap = val;\n }\n\n get mouseOffsetX(): number {\n return this.mouseX + (this.globals.isOpenDrawer ? 104 : 32);\n }\n\n\n //#endregion Props\n\n\n //#region Watchers\n\n @Watch(\"sizeDelta\")\n watchPlannerSizeDelta(val: boolean) {\n this.resizeMapViewDelayed(100);\n }\n\n @Watch(\"isDarkMode\")\n watchIsDarkMode(isDark: boolean) {\n this.setMapStyle();\n this.$forceUpdate();\n }\n\n @Watch(\"globals.showSearchPanel\")\n watchIsSearchExit(val: boolean) {\n if (!this.globals.showSearchPanel) {\n this.resizeMapView();\n this.zoomToRoute(true);\n // console.warn(\"search exit triggered\");\n } else {\n this.showMenuMap = false;\n }\n }\n\n @Watch(\"activeRoute\")\n watchActiveRoute(val: number) {\n //console.log(\"watchActiveRoute\");\n if (this.isMapReady) {\n this.refreshRoute();\n }\n }\n\n @Watch(\"activeRoute.stops\")\n watchActiveRouteStops() {\n if (this.isMapReady) this.refreshRoute();\n }\n\n @Watch(\"activeRoute\", {deep: true})\n watchActiveRoutePath(val) {\n if (this.currentPath !== val.path) {\n this.currentPath = val.path;\n //this.setMapStyle();\n }\n }\n\n @Watch(\"globals.refreshRouteTrigger\")\n watchRefreshRouteTrigger(route: RwRoute) {\n //console.log(\"watchRefreshRouteTrigger\");\n if (this.isMapReady) {\n this.refreshRoute();\n }\n }\n\n oldPins: any[] = [...this.space.stopPins.map(sp => JSON.stringify(RwPin.toJSON(sp)))] || [];\n lastStopsHash: number;\n\n @Watch(\"space.stopPins\")\n watchStopPins(pins: RwPin[]) {\n //console.log(\"Map.watchStopPins\");\n const parsedPins = pins.map(p => JSON.stringify(RwPin.toJSON(p)));\n if (this.isMapReady) {\n let refresh = false;\n if (this.oldPins.length != pins.length) {\n refresh = true;\n } else {\n for (let op of this.oldPins) {\n const parsedOp = JSON.parse(op);\n let pinExists = false;\n for (let p of pins) {\n if (p.id == parsedOp.id) {\n pinExists = true;\n if (JSON.stringify(RwPin.toJSON(p)) !== op) {\n refresh = true;\n }\n }\n }\n if (!pinExists) refresh = true;\n if (refresh) break;\n }\n }\n if (refresh) {\n this.oldPins = [...pins.map(p => JSON.stringify(RwPin.toJSON(p)))];\n this.refreshRoute();\n }\n }\n }\n\n @Watch(\"space.sitePins\")\n watchSitePins(sites: RwPin[]) {\n this.space.sitePins;\n //console.log(\"Map.watchSitePins\");\n this.refreshSites()\n this.refreshStopPinsBySites();\n }\n\n refreshStopPinsBySites() {\n this.stopPins.forEach(stopPin => {\n if (stopPin.stop.getSite()) {\n let currHash = stopPin.urlHash;\n RwPin.updateStopPin(stopPin, stopPin.stop);\n if (currHash !== stopPin.urlHash) {\n this.removePinFromMap(stopPin);\n let url = this.globals.idxURL[stopPin.urlHash];\n if (url && url.length > 0) {\n this.addPin(stopPin, url, stopPin.zIndex, null, 1);\n } else {\n stopPin\n .dataUrlAsync()\n .then(pinUrl => this.addPin(stopPin, pinUrl, stopPin.zIndex, null, 1));\n }\n }\n }\n });\n }\n\n @Watch(\"space.taskPins\")\n watchTaskPins(tasks: RwPin[]) {\n //console.log(\"Map.watchTaskPins\");\n this.refreshTasks();\n }\n\n @Watch(\"globals.drivers\")\n watchDriverPins(tasks: RwPin[]) {\n //console.warn('watchDriverPins');\n //this.refreshDrivers();\n }\n\n @Watch(\"isMapReady\")\n watchMapReady(isReady: boolean) {\n const isFirstTime = this.isRenderedRoute == false;\n //console.log(\"RwMapView.watch isMapReady, isFirstTime:\", isReady, isFirstTime);\n if (isFirstTime) {\n this.refreshAll();\n }\n }\n\n @Watch(\"selectMode\")\n watchSelectMode(val: RwMultiMode) {\n\n const self = this;\n const SOURCE = \"RwPlannerMap.watchSelectMode\";\n //console.error(SOURCE);\n\n if (self.space.selectedPins.length > 0) {\n this.space.clearPinSelections();\n }\n\n if (self.isMultiMode) {\n\n switch (val) {\n case RwMultiMode.stops:\n self.mapGroupRoute.setVisibility(true);\n self.mapGroupSites.setVisibility(false);\n self.mapGroupTasks.setVisibility(false);\n break;\n\n case RwMultiMode.sites:\n self.mapGroupRoute.setVisibility(false);\n self.mapGroupSites.setVisibility(true);\n self.mapGroupTasks.setVisibility(false);\n break;\n\n case RwMultiMode.tasks:\n self.mapGroupRoute.setVisibility(false);\n self.mapGroupSites.setVisibility(false);\n self.mapGroupTasks.setVisibility(true);\n break;\n\n default:\n RwLog.error(SOURCE, \"WTF: watchSelectMode SelectMode not found:\" + val);\n break;\n }\n\n } else {\n self.mapBehaviors.enable(H.mapevents.Behavior.DRAGGING);\n self.mapBehaviors.enable(H.mapevents.Behavior.DBLTAPZOOM);\n self.mapGroupRoute.setVisibility(RwPrefUtils.showDataLayerRoute);\n self.mapGroupSites.setVisibility(RwPrefUtils.showDataLayerSites);\n self.mapGroupTasks.setVisibility(RwPrefUtils.showDataLayerTasks);\n }\n\n\n this.resizeMapView();\n }\n\n @Watch(\"space.selectedPins\")\n watchSelectedPins(newVals: RwPin[]) {\n const self = this;\n const SOURCE = \"RwPlannerMap.watchSelectedPins\"\n //console.error(SOURCE);\n\n let deltas = RwDeltas.getDeltas(newVals, this.space.priorSelectPins, this.space.lastRefreshSelects);\n if (deltas.gotAdds || deltas.gotRemoves) {\n //console.log(SOURCE, `adds:${deltas.adds.length}, removes:${deltas.removes.length}`);\n\n if (deltas.removes.length > 0) {\n deltas.removes.forEach(p => {\n\n //console.log(SOURCE, \"updatePin DESELECT\", p.title, p.zIndex);\n self.updatePin(p);\n\n let cluster = p.clusterParent;\n if (cluster) {\n //console.log(SOURCE, \"updatePin DESELECT CLUSTER\", cluster.title, cluster.selectRatio());\n self.updatePin(cluster)\n }\n });\n }\n\n\n let focusId = self.globals.targetFocusId;\n if (deltas.adds.length > 0) {\n deltas.adds.forEach(p => {\n //console.log(SOURCE, \"updatePin SELECT\", p.title, p.zIndex);\n\n self.updatePin(p);\n let eid = p.eid;\n if (focusId && focusId === eid) {\n //console.log(SOURCE, \"focusPin\", p.title, eid == focusId, eid);\n self.focusPin(p, true, false);\n }\n\n let cluster = p.clusterParent;\n if (cluster) {\n //console.log(SOURCE, \"updatePin SELECT CLUSTER\", cluster.title, cluster.selectRatio());\n self.updatePin(cluster)\n }\n\n });\n }\n\n\n this.space.lastRefreshSelects = Date.now();\n this.space.priorSelectPins = [...newVals];\n\n } else {\n // let priors = this.space.priorSelectPins;\n // let priorName = (priors.length > 0) ? priors[0].title : \"\";\n //console.error(SOURCE, \"SKIP NO DELTAS\", priors.length, priorName);\n //console.error(SOURCE, \"SKIP NO DELTAS\");\n }\n }\n\n @Watch(\"mapShowTraffic\")\n watchShowTraffic(val: boolean) {\n this.setMapStyle();\n }\n\n @Watch(\"mapShowIncidents\")\n watchShowTrafficIncidents(val: boolean) {\n this.setMapStyle();\n }\n\n @Watch(\"mapShowSatellite\")\n watchMapShowSatellite(val: boolean) {\n this.setMapStyle();\n }\n\n @Watch(\"space.showDataLayerRoute\")\n watchShowDataLayerRoute(val: boolean) {\n //console.log(\"RwMapView.watchShowDataLayerRoute:\", val);\n if (val) {\n this.mapGroupRoute.setVisibility(true);\n this.refreshRoute();\n } else {\n this.mapGroupRoute.setVisibility(false);\n }\n this.setMapStyle();\n }\n\n @Watch(\"space.showDataLayerSites\")\n watchShowLayerSites(val: boolean) {\n //console.log(\"RwMapView.showDataLayerSites:\", val);\n if (val) {\n this.refreshSites();\n this.mapGroupSites.setVisibility(true);\n } else {\n this.mapGroupSites.setVisibility(false);\n }\n }\n\n @Watch(\"space.showDataLayerTasks\")\n watchShowDataLayerTasks(val: boolean) {\n //console.log(\"RwMapView.showDataLayerTasks:\", val);\n if (val) {\n this.refreshTasks();\n this.mapGroupTasks.setVisibility(true);\n } else {\n this.mapGroupTasks.setVisibility(false);\n }\n }\n\n @Watch(\"globals.centerMapData\")\n watchCenterMap(val: { lat: number, lng: number }) {\n this.clearSearchTargets();\n\n if (val.lat != 0 || val.lng != 0) {\n const centroid = new H.geo.Point(val.lat, val.lng);\n const icon = new H.map.DomIcon(RwPin.searchPinSVG);\n this.searchTarget = new H.map.DomMarker(centroid, {icon});\n this.map.addObject(this.searchTarget);\n this.map.setCenter(centroid, true);\n }\n }\n\n\n @Watch(\"space.mapCentroid\")\n watchCentroid(val: { lat: number, lng: number, zoom: number }) {\n //console.log(\"watchCentroid => \", val.lat, val.lng, val.zoom)\n\n if (val.lat != 0 || val.lng != 0) {\n const centroid = new H.geo.Point(val.lat, val.lng);\n\n if (val.zoom != 0) {\n RwViewUtils.mapSetViewPoint(this.map, centroid, val.zoom, true);\n } else {\n this.map.setCenter(centroid, true);\n }\n }\n }\n\n\n @Watch(\"space.searchPinData\")\n watchSearchPin(val: { pinType: RwPinTypes, lat: number, lng: number, id: string }) {\n\n const self = this;\n //console.log(\"watchSearchPin\")\n this.clearSearchTargets();\n if (val.lat != 0 || val.lng != 0) {\n let args = this.createSearchPinArgs(val);\n let hash = RwPin.getPinHash(args);\n let cachedUrl = this.globals.idxURL[hash];\n if (cachedUrl) {\n //console.log(\"watchSearchPin cachedUrl\", cachedUrl)\n self.addSearchMarker(val, cachedUrl);\n } else {\n switch (val.pinType) {\n case RwPinTypes.Route: {\n let route = self.globals.activeRoute;\n if (route != null) {\n let args = {typ: RwPinTypes.Route, sub: route.subType};\n let url = RwPin.getRoutePinUrl(args);\n //console.log(\"watchSearchPin route url\", url)\n self.addSearchMarker(val, url);\n }\n break;\n }\n case RwPinTypes.Stop: {\n RwPin.calcStopPinUrl(hash, args)\n .then(dataUrl => {\n //console.log(\"watchSearchPin stop dataUrl\", dataUrl)\n self.addSearchMarker(val, dataUrl);\n });\n break;\n }\n case RwPinTypes.Site: {\n RwPin\n .calcSitePinUrlNew(hash, args)\n .then(dataUrl => {\n //console.log(\"watchSearchPin site dataUrl\", dataUrl)\n self.addSearchMarker(val, dataUrl);\n });\n break;\n }\n case RwPinTypes.Task: {\n RwPin\n .calcTaskPinUrl(hash, args)\n .then(dataUrl => {\n //console.log(\"watchSearchPin task dataUrl\", dataUrl)\n self.addSearchMarker(val, dataUrl);\n });\n break;\n }\n default:\n break;\n }\n }\n\n }\n }\n\n @Watch(\"space.showDropSelect\")\n watchDropStopSelect(val) {\n if (!val) this.updatePin(this.pinClicked);\n }\n\n @Watch(\"space.showDropRemove\")\n watchDropStopRemove(val) {\n if (!val) this.updatePin(this.pinClicked);\n }\n\n @Watch(\"space.activeRoute.isDynLoc\")\n watchIsDynLoc(val) {\n if (this.space.startPin && this.space.startPin.marker &&\n (this.space.activeRoute.lat != 0 || this.space.activeRoute.lng != 0)) {\n let startPin = this.space.startPin;\n if (!this.space.activeRoute.isDynLoc) {\n startPin.lat = this.space.activeRoute.lat;\n startPin.lng = this.space.activeRoute.lng;\n startPin.type = RwPinTypes.Route;\n setTimeout(() => {\n this.updatePin(startPin);\n this.updateMarkerPosition(startPin, startPin.marker);\n }, 500);\n }\n }\n }\n\n private addSearchMarker(val: { pinType: RwPinTypes; lat: number; lng: number, id: string }, dataUrl: string) {\n const self = this;\n let iconSize: H.math.ISize = self.globals.getIconSize(val.pinType);\n let anchor = self.globals.getAnchorPoint(val.pinType);\n let iconOpts = {} as H.map.Icon.Options;\n if (anchor) iconOpts.anchor = anchor;\n if (iconSize) iconOpts.size = iconSize;\n self.globals.getIcon(dataUrl, iconOpts)\n .then(icon => {\n let markerLoc = {lat: val.lat, lng: val.lng};\n let hereMarker = new H.map.Marker(markerLoc, {icon: icon});\n let searchM = hereMarker as RwMarker;\n searchM.searchId = val.id;\n self.searchMarker.push(searchM);\n self.map.addObject(searchM);\n //this.map.setCenter(centroid, true);\n });\n }\n\n\n private createSearchPinArgs(val: { pinType: RwPinTypes; lat: number; lng: number }) {\n let args: any;\n switch (val.pinType) {\n //@formatter:off\n case RwPinTypes.Route:\n args = {typ: RwPinTypes.Route};\n break;\n case RwPinTypes.Stop:\n args = {typ: RwPinTypes.Stop, color: RwPrefUtils.stopColor};\n break;\n case RwPinTypes.Site:\n args = {typ: RwPinTypes.Site, color: RwPrefUtils.siteColor};\n break;\n case RwPinTypes.Task:\n args = {typ: RwPinTypes.Task, color: RwPrefUtils.taskColor};\n break;\n default:\n break;\n //@formatter:on\n }\n return args;\n }\n\n\n private clearSearchMarkers() {\n if (this.searchTarget) {\n this.map.removeObject(this.searchTarget);\n this.searchTarget = null;\n }\n\n this.searchMarker.forEach(item => this.map.removeObject(item))\n this.searchMarker = [];\n }\n\n clearSearchTargets() {\n if (this.searchTarget) {\n this.map.removeObject(this.searchTarget);\n this.searchTarget = null;\n }\n }\n\n @Watch(\"globals.showSearchPanel\")\n watchShowSearchPanel(isSearchMode: boolean) {\n const self = this;\n //console.log(\"MAP watchShowSearchPanel\", isSearchMode)\n this.clearSearchMarkers();\n if (isSearchMode) {\n self.mapGroupRoute.setVisibility(false);\n self.mapGroupSites.setVisibility(false);\n self.mapGroupTasks.setVisibility(false);\n } else {\n self.mapGroupRoute.setVisibility(self.space.showDataLayerRoute);\n self.mapGroupSites.setVisibility(self.space.showDataLayerSites);\n self.mapGroupTasks.setVisibility(self.space.showDataLayerTasks);\n }\n }\n\n\n //#endregion Watchers\n\n\n //#region Map Config\n\n private mapInit() {\n this.platform = new H.service.Platform({\n 'apikey': RwConstants.hereApiKey\n });\n\n const options: H.Map.Options = {\n zoom: RwPrefUtils.viewZoom,\n center: { lat: RwPrefUtils.viewCenterLat, lng: RwPrefUtils.viewCenterLng },\n engineType: H.Map.EngineType['HARP'],\n pixelRatio: window.devicePixelRatio > 1 ? 2 : 1\n };\n this.defaultLayers = this.platform.createDefaultLayers({\n tileSize: 512, // Use 512 for high-resolution tiles\n engineType: H.Map.EngineType['HARP'],\n });\n this.baseSatelliteLayer = this.defaultLayers.raster.satellite.map;\n\n let mapContainer = this.$refs.map as Element;\n this.map = new H.Map(mapContainer, this.defaultLayers.vector.normal.map, options);\n\n let events = new H.mapevents.MapEvents(this.map);\n this.mapBehaviors = new H.mapevents.Behavior(events);\n this.mapui = H.ui.UI.createDefault(this.map, this.defaultLayers);\n\n this.configMapControls();\n this.configMapEvents();\n this.setMapStyle();\n this.configGroups();\n\n this.isMapReady = true;\n this.updateDynamicRouteStart();\n }\n\n private configMapControls() {\n //console.log(`RwPlannerMap.configMapControls started`);\n this.mapui?.getControl(\"mapsettings\").setVisibility(false);\n\n const zoom = this.mapui?.getControl('zoom');\n zoom?.setAlignment(H.ui.LayoutAlignment.RIGHT_MIDDLE);\n const imprint = this.map.getImprint();\n if (imprint) {\n if (this.globals.isDarkMode) {\n imprint.setOptions({invert: true});\n } else {\n imprint.setOptions({invert: false});\n }\n }\n }\n\n\n private configGroups() {\n //console.log(`RwPlannerMap.configGroups started`);\n\n this.mapGroupSites = new H.map.Group({volatility: false, visibility: true, zIndex: 3});\n this.mapGroupTasks = new H.map.Group({volatility: false, visibility: true, zIndex: 2});\n this.mapGroupRoute = new H.map.Group({volatility: false, visibility: true, zIndex: 1});\n\n this.map.addObject(this.mapGroupSites);\n this.map.addObject(this.mapGroupTasks);\n this.map.addObject(this.mapGroupRoute);\n\n this.mapGroupRoute.setZIndex(1);\n this.mapGroupTasks.setZIndex(3);\n this.mapGroupSites.setZIndex(4);\n }\n\n baseSatelliteLayer: H.map.layer.TileLayer = null;\n\n private setMapStyle() {\n if (this.map) {\n //Clear layers\n let layers = this.map.getLayers();\n layers.asArray().forEach(l => {\n this.map.removeLayer(l);\n })\n\n //Set Base Layer [Satellite, Street]\n if (RwPrefUtils.mapShowSatellite) {\n this.map.setBaseLayer(this.defaultLayers.raster.satellite.map);\n } else {\n const baseLayer = this.isDarkMode ? this.defaultLayers.vector.normal.mapnight : this.defaultLayers.vector.normal.map;\n this.map.setBaseLayer(baseLayer);\n }\n\n if (this.mapShowTraffic) {\n this.map.addLayer(this.defaultLayers.vector.traffic.map);\n } else {\n const idxTraffic = layers.indexOf(this.defaultLayers.vector.traffic.map);\n if (idxTraffic >= 0) {\n layers.removeAt(idxTraffic);\n }\n }\n\n this.resizeMapViewDelayed(1000);\n }\n }\n\n //#endregion\n\n\n //#region Map Events\n\n reportSearchPin() {\n const SOURCE = \"RwPlannerMap.reportSearchPin\";\n if (this.searchId) {\n const report = this.space.searchReportInfo.find(i => i.entityId === this.searchId);\n RwLog.consoleLog(\"Reporting \", report);\n this.globals.showAddMissingReport = false;\n this.globals.showAddReport = true;\n this.globals.addReport = report;\n this.globals.showSearchPanel = false;\n this.showMenuSearchPin = false;\n this.globals.showReloPicker(\"\", report.lat, report.lng, false, true)\n .then(geoPoint => {\n this.globals.addReport.lngDelta = geoPoint.lng;\n this.globals.addReport.latDelta = geoPoint.lat;\n this.globals.addReport.step = 1;\n })\n .catch(() => {\n RwLog.error(SOURCE, `Error with relo picker correcting address \\n\\t Report:${JSON.stringify(report)}`);\n });\n }\n }\n\n reportTargetAddress() {\n const SOURCE = \"RwPlannerMap.reportTargetAddress\";\n if (this.space.selectedSearchResult) {\n const searchResult = this.space.selectedSearchResult;\n RwLog.consoleLog(\"Reporting \", searchResult);\n let report = new RwAddReport();\n report.status = RwAddStatusEnum.Pending;\n report.type = RwAddReportEnum.Correction;\n report.vote = RwAddVoteEnum.Indeterminate;\n report.name = searchResult.name;\n report.lat = searchResult.lat;\n report.lng = searchResult.lng;\n report.address = searchResult.address;\n report.userId = this.globals.userId;\n report.viewPort = `${RwPrefUtils.viewWest.toFixed(6)},${RwPrefUtils.viewSouth.toFixed(6)},\n ${RwPrefUtils.viewEast.toFixed(6)},${RwPrefUtils.viewNorth.toFixed(6)}`; // W S E N\n report.query = searchResult.query;\n report.message = `Correction for ${report.name}`;\n this.globals.showAddMissingReport = false;\n this.globals.showAddReport = true;\n this.globals.addReport = report;\n this.globals.showSearchPanel = false;\n this.showMenuSearchTarget = false;\n this.globals.showReloPicker(\"\", report.lat, report.lng, false, true)\n .then(geoPoint => {\n this.globals.addReport.lngDelta = geoPoint.lng;\n this.globals.addReport.latDelta = geoPoint.lat;\n this.globals.addReport.step = 1;\n })\n .catch(() => {\n RwLog.error(SOURCE, `Error with relo picker correcting address \\n\\t Report:${JSON.stringify(report)}`);\n\n });\n }\n\n\n }\n\n configMapEvents() {\n this.map.addEventListener('pointerdown', this.onPointerDown);\n this.map.addEventListener('pointerup', this.onPointerUp);\n\n this.map.addEventListener('drag', this.onDrag);\n this.map.addEventListener('dragend', this.onDragEnd);\n this.map.addEventListener(\"mapviewchangeend\", () => {\n this.saveViewPort();\n this.resizeMapView();\n this.zoomLevel = Number(this.map.getZoom().toFixed(1));\n });\n\n\n //self.map.addEventListener('tap', function(evt) {console.log(evt.type, \"onTap\");});\n //self.map.addEventListener('dbltap', self.onDoubleClick);\n // self.map.addEventListener('tap', self.onTap);\n this.map.addEventListener('longpress', this.onLongPress);\n // self.map.addEventListener(\"pointermove\", self.onPointerMove);\n //self.map.addEventListener('dragstart', function(evt:any) { console.log(evt.type, evt.currentPointer.type);});\n }\n\n\n onLongPress(evt: any) {\n let isLassoSelect = this.isMultiMode && this.multiModeTool == RwMutiModeTool.lasso;\n if (!isLassoSelect) {\n\n let mapEvent: H.mapevents.Event = evt;\n let marker = mapEvent.target as RwMarker;\n if (!marker && this.isPinClick && this.lastMarker) {\n marker = this.lastMarker;\n }\n\n if (this.isPinClick) {\n let pin = marker.pin || this.lastPin;\n if (pin) {\n let isHit = this.hitTest(pin, evt);\n if (isHit) this.onPinClick(marker, true);\n }\n\n setTimeout(() => {\n this.mapBehaviors.enable(H.mapevents.Behavior.DRAGGING);\n this.mapBehaviors.enable(H.mapevents.Behavior.DBLTAPZOOM);\n }, 500);\n } else {\n this.onMapClick(evt, true);\n }\n }\n }\n\n onPointerDown(evt: any) {\n let self = this;\n //console.log(\"pointerdown\")\n\n if (self.showMenuMap) self.showMenuMap = false;\n if (self.showMenuRoutePin) self.showMenuRoutePin = false;\n if (self.showMenuStopPin) self.showMenuStopPin = false;\n if (self.showMenuSitePin) self.showMenuSitePin = false;\n if (self.showMenuTaskPin) self.showMenuTaskPin = false;\n if (self.showMenuDriverPin) self.showMenuDriverPin = false;\n if (self.showMenuClusterPin) self.showMenuClusterPin = false;\n\n\n let mapEvent: H.mapevents.Event = evt;\n self.mouseX = ((mapEvent.currentPointer) as any).viewportX;\n self.mouseY = ((mapEvent.currentPointer) as any).viewportY;\n self.mouseDownTime = moment();\n //console.warn(\"onPointerDown\", this.mouseDownX, this.mouseDownY);\n //console.warn(\"pointerdown isLassoSelect\", self.multiModeTool, self.isMultiMode);\n\n let lassoSelect = self.isMultiMode && self.multiModeTool == RwMutiModeTool.lasso;\n if (lassoSelect) {\n //console.warn(\"lasso starting\");\n self.isLassoMode = true;\n const coord = self.map.screenToGeo(self.mouseX, self.mouseY);\n self.dragViewportX = self.mouseX;\n self.dragViewportY = self.mouseY;\n self.polyPoints.push(coord);\n self.lineStr = new H.geo.LineString();\n self.polyPoints.forEach(p => {\n self.lineStr.pushLatLngAlt(p.lat, p.lng, p.alt);\n });\n\n if (self.polySelectGroup) {\n self.polySelectGroup.removeAll();\n self.polySelectGroup.setVisibility(false);\n self.polySelectGroup.setVisibility(true);\n } else {\n self.polySelectGroup = new H.map.Group({\n visibility: true,\n volatility: true,\n });\n self.map.addObject(self.polySelectGroup);\n }\n\n self.polySelector = new H.map.Polygon(self.lineStr, this.space.polySelectOptions);\n self.polySelectGroup.addObject(self.polySelector);\n\n self.mapBehaviors.disable(H.mapevents.Behavior.DRAGGING);\n } else {\n //console.log(\"onPointerDown NOT DRAG MODE\");\n //console.log(\"onPointerUp this.isPinClick\", this.isPinClick);\n\n this.isPinClick = false;\n let isDoubleClick = this.isDoubleClick();\n //let mapEvent: H.mapevents.Event = evt;\n let marker = mapEvent.target as RwMarker;\n if (marker.pin) {\n this.isPinClick = true;\n this.isPinDoubleClick = isDoubleClick;\n this.isMapDoubleClick = false;\n this.lastPin = marker.pin;\n this.lastMarker = marker;\n this.isSearchPinClick = false;\n } else if (marker.searchId) {\n this.isSearchPinClick = true;\n } else {\n if (isDoubleClick && this.lastPin && this.lastMarker) {\n this.isPinClick = true;\n this.isPinDoubleClick = true;\n this.isMapDoubleClick = false;\n this.lastPin = marker.pin;\n this.lastMarker = marker;\n this.isSearchPinClick = false;\n } else {\n //console.warn(\"onPointerDown isPinClick = false; Try Hit Test\");\n this.isPinClick = false;\n this.isPinDoubleClick = false;\n this.isMapDoubleClick = isDoubleClick;\n this.lastPin = null;\n this.lastMarker = null;\n this.isSearchPinClick = false;\n }\n }\n\n //console.warn(\"onPointerDown isPinClick:\", this.isPinClick);\n if (this.isPinClick) {\n self.mapBehaviors.disable(H.mapevents.Behavior.DRAGGING);\n self.mapBehaviors.disable(H.mapevents.Behavior.DBLTAPZOOM);\n //console.warn(\"onPointerDown DBLTAPZOOM disable\")\n } else {\n self.mapBehaviors.enable(H.mapevents.Behavior.DRAGGING);\n self.mapBehaviors.enable(H.mapevents.Behavior.DBLTAPZOOM);\n }\n\n }\n }\n\n lastPin: RwPin;\n lastMarker: RwMarker;\n\n onPointerUp(evt: any) {\n let self = this;\n self.isLassoMode = false;\n //console.log(\"onPointerUp\");\n\n let mapEvent: H.mapevents.Event = evt;\n self.mouseX = ((mapEvent.currentPointer) as any).viewportX;\n self.mouseY = ((mapEvent.currentPointer) as any).viewportY;\n\n let menuOffsetY = 96;\n let menuOffsetX = (self.globals.isOpenDrawer) ? 104 : 32;\n self.menuX = self.mouseX + menuOffsetX;\n self.menuY = self.mouseY + menuOffsetY;\n\n\n self.mouseDownTime = moment();\n let isRightClick = mapEvent.currentPointer.button == 2;\n\n let isLassoSelect = self.isMultiMode && self.multiModeTool == RwMutiModeTool.lasso;\n if (!isLassoSelect) {\n //console.log(\"onPointerUp NOT DRAGGING\");\n let marker = mapEvent.target as RwMarker;\n\n if (!marker && this.isPinClick && this.lastMarker) {\n marker = this.lastMarker;\n }\n //console.warn(\"onPointerUp this.isPinClick\", this.isPinClick);\n if (this.isPinClick) {\n let pin = marker.pin || this.lastPin;\n if (pin) {\n let isHit = this.hitTest(pin, evt);\n if (isHit || this.isPinDoubleClick) {\n if (this.isPinDoubleClick) {\n this.onPinDoubleClick(pin);\n } else {\n this.onPinClick(marker, isRightClick);\n }\n }\n }\n\n setTimeout(() => {\n self.mapBehaviors.enable(H.mapevents.Behavior.DRAGGING);\n self.mapBehaviors.enable(H.mapevents.Behavior.DBLTAPZOOM);\n }, 500);\n } else if (mapEvent.target === this.searchTarget && isRightClick) {\n this.showMenuSearchTarget = true;\n } else if (this.isSearchPinClick && marker.searchId) {\n this.searchId = marker.searchId;\n this.showMenuSearchPin = true;\n } else {\n\n let isLassoSelect = self.isLassoMode && self.isMultiMode && self.multiModeTool == RwMutiModeTool.lasso;\n if (isLassoSelect) {\n self.mapBehaviors.enable(H.mapevents.Behavior.DRAGGING);\n self.mapBehaviors.enable(H.mapevents.Behavior.DBLTAPZOOM);\n } else {\n\n }\n //console.warn(\"this.isPinClick == false\", mapEvent);\n\n this.onMapClick(evt, isRightClick);\n }\n }\n this.isPinClick = false;\n }\n\n\n onDrag(evt: any) {\n let self = this;\n //console.warn(\"onDrag\")\n\n let isLassoSelect = self.isLassoMode && self.isMultiMode && self.multiModeTool == RwMutiModeTool.lasso;\n if (isLassoSelect) {\n\n let mapEvent: H.mapevents.Event = evt;\n let currPointer = mapEvent.currentPointer as any;\n let coord = self.map.screenToGeo(\n currPointer.viewportX,\n currPointer.viewportY\n );\n\n let deltaX = currPointer.viewportX - self.dragViewportX;\n let deltaY = currPointer.viewportY - self.dragViewportY\n let distFromPrev = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n if (distFromPrev > RwConstants.PolyLassoResolution) {\n self.dragViewportX = currPointer.viewportX;\n self.dragViewportY = currPointer.viewportY;\n self.polyPoints.push(coord);\n self.lineStr.pushLatLngAlt(coord.lat, coord.lng, coord.alt);\n self.polySelector.setGeometry(new H.geo.Polygon(self.lineStr));\n }\n }\n\n }\n\n\n onDragEnd(evt: any) {\n let self = this;\n self.isLassoMode = false;\n //console.log(\"onDragEnd\");\n\n let mapEvent: H.mapevents.Event = evt;\n self.mouseX = ((mapEvent.currentPointer) as any).viewportX;\n self.mouseY = ((mapEvent.currentPointer) as any).viewportY;\n self.mouseDownTime = moment();\n //console.warn(\"onPointerUp\", this.mouseDownX, this.mouseDownY);\n\n let isLassoSelect = self.isMultiMode && self.multiModeTool == RwMutiModeTool.lasso;\n if (isLassoSelect) {\n //console.log(\"lasso complete\");\n\n if (self.polySelector) {\n //console.warn(\"RwPlannerMap onPointerUp\");\n let pins = this.getPinsForSelectMode();\n let bbox = self.getEnvelope(self.polyPoints);\n let pinsInPoly = RwGeoUtils.getPinsInsidePoly(self.polyPoints, pins, bbox);\n //console.warn(\"polySelector pins:\", pinsInPoly.length, pinsInPoly);\n\n\n if (pinsInPoly && pinsInPoly.length > 0) {\n let clustersComplete: RwPin[] = []\n pinsInPoly.forEach(p => {\n //console.warn(\"polySelector pin:\", p.title, p.type);\n switch (p.type) {\n case RwPinTypes.Stop:\n if (self.selectMode == RwMultiMode.stops) {\n\n if (p.clusterParent) {\n let cluster = p.clusterParent;\n let donePin = clustersComplete.find(p => p === cluster);\n if (!donePin) {\n let selectRatio = cluster.selectRatio();\n let targetSelect = selectRatio <= 0.5;\n //console.warn(\"onDragEnd\", \"setPinSelection CLUSTER\", targetSelect, selectRatio)\n self.space.setPinSelection(cluster, targetSelect)\n clustersComplete.push(cluster)\n }\n } else {\n self.togglePinSelect(p);\n }\n }\n break;\n case RwPinTypes.Site:\n if (self.selectMode == RwMultiMode.sites) self.togglePinSelect(p);\n break;\n case RwPinTypes.Task:\n if (self.selectMode == RwMultiMode.tasks) self.togglePinSelect(p);\n break;\n }\n });\n }\n }\n\n self.polySelectGroup.removeAll();\n self.polySelectGroup.setVisibility(false);\n self.polyPoints = [];\n self.lineStr = null;\n self.polySelector = null;\n }\n self.mapBehaviors.enable(H.mapevents.Behavior.DRAGGING);\n self.mapBehaviors.enable(H.mapevents.Behavior.DBLTAPZOOM);\n }\n\n\n isDoubleClick(): boolean {\n let isDoubleClick = false;\n let timePassed = 0;\n if (this.timeOfLastPinClick) {\n timePassed = moment().diff(this.timeOfLastPinClick);\n if (timePassed < 500) {\n isDoubleClick = true;\n }\n //let elapsed = 0;\n //elapsed = RwTextUtils.round4(timePassed);\n //console.log(\"elapsed time: \", elapsed, this.timeOfLastPinClick);\n }\n this.timeOfLastPinClick = moment();\n return isDoubleClick;\n }\n\n\n hitTest(pin: RwPin, evt: any): boolean {\n const SOURCE = \"RwPlannerMap.hitTest\";\n\n let isHit = false;\n let pinPixel = this.map.geoToScreen({lat: pin.lat, lng: pin.lng});\n if (pinPixel) {\n\n switch (pin.type) {\n case RwPinTypes.Stop: {\n let isHitX = pinPixel.x - 22 <= this.mouseX && pinPixel.x + 22 >= this.mouseX;\n let isHitY = pinPixel.y - 44 <= this.mouseY && pinPixel.y >= this.mouseY;\n if (isHitX && isHitY) {\n isHit = true;\n }\n break;\n }\n\n case RwPinTypes.Site:\n case RwPinTypes.Task: {\n let isHitX = pinPixel.x - 15 <= this.mouseX && pinPixel.x + 15 >= this.mouseX;\n let isHitY = pinPixel.y - 15 <= this.mouseY && pinPixel.y + 15 >= this.mouseY;\n if (isHitX && isHitY) {\n isHit = true;\n }\n break;\n }\n\n case RwPinTypes.Route: {\n let isHitX = pinPixel.x - 15 <= this.mouseX && pinPixel.x + 15 >= this.mouseX;\n let isHitY = pinPixel.y - 44 <= this.mouseY && pinPixel.y >= this.mouseY;\n if (isHitX && isHitY) {\n isHit = true;\n }\n break;\n }\n\n case RwPinTypes.Driver: {\n let isHitX = pinPixel.x - 18 <= this.mouseX && pinPixel.x + 18 >= this.mouseX;\n let isHitY = pinPixel.y - 18 <= this.mouseY && pinPixel.y + 18 >= this.mouseY;\n if (isHitX && isHitY) {\n isHit = true;\n }\n break;\n }\n\n default:\n RwLog.error(SOURCE, \"WTF: unexpected pin type\" + pin.type);\n break;\n }\n }\n return isHit;\n }\n\n\n onPinDoubleClick(pin: RwPin) {\n //console.log(\"onDoubleClick\");\n this.space.forceShowDataView();\n }\n\n\n onMapClick(evt: any, isRightClick: boolean) {\n let self = this;\n if (!self.isMultiMode || RwPrefUtils.planMultiModeTool == RwMutiModeTool.click) {\n if (isRightClick) {\n self.onMapRightClick(evt)\n }\n }\n }\n\n\n onPinClick(target: RwMarker, isRightClick: boolean) {\n const self = this;\n let pin = target.pin;\n //console.log(\"onPinClick self.isMultiMode\", self.isMultiMode);\n\n if (self.isMultiMode) {\n self.togglePinSelect(pin);\n } else {\n if (isRightClick) {\n self.pinClicked = pin;\n\n if (pin.isCluster) {\n //console.warn(\"onClusterClick R-Click\");\n self.showMenuClusterPin = true;\n } else {\n switch (pin.type) {\n //@formatter:off\n case RwPinTypes.Route:\n self.showMenuRoutePin = true;\n break;\n case RwPinTypes.Stop:\n self.showMenuStopPin = true;\n break;\n case RwPinTypes.Site:\n self.showMenuSitePin = true;\n break;\n case RwPinTypes.Task:\n self.showMenuTaskPin = true;\n break;\n case RwPinTypes.Driver:\n self.showMenuDriverPin = true;\n break;\n //@formatter:on\n }\n }\n } else {\n self.togglePinSelect(pin, true);\n }\n }\n }\n\n\n onMapRightClick(evt: any) {\n //console.log(\"onMapRightClick called\");\n\n let self = this;\n if (self.mouseX && self.mouseY) {\n let mapEvent: H.mapevents.Event = evt;\n let target = mapEvent.target as RwMarker;\n if (target) {\n this.$nextTick(() => {\n self.showMenuMap = true\n });\n }\n }\n }\n\n\n onMapSetStartHere() {\n let self = this;\n const coord = self.map.screenToGeo(self.mouseX, self.mouseY);\n this.showMenuMap = false;\n this.updateStartAtCoord(coord.lat, coord.lng);\n }\n\n\n onMapSetDefaultHere() {\n let self = this;\n const coord = self.map.screenToGeo(self.mouseX, self.mouseY);\n this.settingSpace.startLat = coord.lat;\n RwPrefUtils.startLat = coord.lat;\n this.settingSpace.startLng = coord.lng;\n RwPrefUtils.startLng = coord.lng;\n RwPrefUtils.isDynPoint = false;\n this.globals\n .saveWebPrefs()\n .then(isSaved => {\n ///console.log(\"onMapSetDefaultHere isSaved\", isSaved);\n if (isSaved) {\n this.showMenuMap = false;\n this.globals.showSnack('Route Default Start location is reset', \"success\");\n } else {\n this.globals.showSnack('Failed to update Default Route Start', \"error\");\n }\n })\n .catch(() => {\n RwLog.consoleError(\"WTF: onMapSetDefaultHere failed\");\n this.showMenuMap = false;\n this.globals.showSnack('Failed to update Default Route Start', \"error\");\n });\n }\n\n\n onMapAddRouteHere() {\n let self = this;\n const coord = self.map.screenToGeo(self.mouseX, self.mouseY);\n this.showMenuMap = false;\n this.addRouteAtCoord(coord.lat, coord.lng, [\"RwPlannerMap.onMapAddRouteHere\"]);\n }\n\n\n onMapAddStopHere() {\n let self = this;\n const coord = self.map.screenToGeo(self.mouseX, self.mouseY);\n this.showMenuMap = false;\n this.addStopAtCoord(coord.lat, coord.lng);\n this.space.checkHistLimitPopups(this.space.activeRoute);\n }\n\n\n onMapAddSiteHere() {\n let self = this;\n const coord = self.map.screenToGeo(self.mouseX, self.mouseY);\n this.showMenuMap = false;\n const site = this.addSiteAtCoord(coord.lat, coord.lng);\n if (this.globals.editAfterAdd) this.globals.showSiteEdit(site);\n }\n\n\n onMapAddTaskHere() {\n let self = this;\n const coord = self.map.screenToGeo(self.mouseX, self.mouseY);\n this.showMenuMap = false;\n const task = this.addTaskAtCoord(coord.lat, coord.lng);\n if (this.globals.editAfterAdd) this.onTaskEdit(task);\n }\n\n\n togglePinSelect(pin: RwPin, isIdempotent?: boolean) {\n if (pin.isCluster) {\n if (this.isMultiMode) {\n let ratio = pin.selectRatio();\n let targetSelect = ratio <= 0.5;\n this.space.setPinSelection(pin, targetSelect)\n } else {\n this.onClusterClick(pin);\n }\n } else {\n //console.warn(\"RwPlannerMap.togglePinSelect isSelected\", pin.title);\n let isSelected = this.space.isSelected(pin);\n if (isSelected) {\n if (!isIdempotent) {\n this.space.setPinSelection(pin, false);\n }\n } else {\n this.space.setPinSelection(pin, true);\n }\n }\n }\n\n\n resizeMapViewDelayed(delay: number) {\n setTimeout(() => {\n this.resizeMapView();\n }, delay);\n }\n\n\n resizeMapView() {\n if (this.map) {\n this.map.getViewPort().resize();\n }\n }\n\n\n private currZoomId: string;\n\n zoomToRoute(animate: boolean): boolean {\n const SOURCE = \"RwPlannerMap.zoomToRoute\";\n let self = this;\n let zoomSuccess = false;\n let hasStart = false;\n let startPoint: H.geo.Point;\n let hasBounds = false;\n let bounds = new H.map.Group();\n let bboxDelta: H.geo.Rect;\n let route = this.activeRoute;\n if (route != null) {\n\n let isZoomBusy = this.currZoomId && this.currZoomId == route.routeId;\n if (!isZoomBusy) {\n this.currZoomId = route.routeId;\n\n try {\n\n if (route.driverId) {\n if (route.isDynLoc) {\n let driver = self.globals.findDriver(route.driverId);\n if (driver && (driver.lat != 0 && driver.lng != 0)) {\n let driverLoc = new H.map.Marker(new H.geo.Point(driver.lat, driver.lng));\n bounds.addObject(driverLoc)\n }\n }\n }\n\n\n if (route.lat && route.lat != 0 && route.lng && route.lng != 0) {\n startPoint = new H.geo.Point(route.lat, route.lng);\n let rtCenter = new H.map.Marker(startPoint);\n bounds.addObject(rtCenter);\n hasStart = true;\n //console.warn(\"zoomToRoute\", route.lat, route.lng)\n } else {\n //RwLog.consoleWarn(\"zoomToRoute lat & lng == 0\", route.lat, route.lng);\n }\n\n if (route.stops && route.stops.length > 0) {\n //console.log(\"zoomToRoute route.stops.length\", route.stops.length);\n route.stops.forEach(stop => {\n if (stop.lat != 0 && stop.lng != 0) {\n let markerLoc = new H.map.Marker(new H.geo.Point(stop.lat, stop.lng));\n //console.log(\"zoomToRoute stop lat, lng\", stop.lat, stop.lng);\n\n bounds.addObject(markerLoc);\n hasBounds = true;\n }\n });\n\n //(Math.round(num * 100) / 100).toFixed(2);\n if (hasBounds) {\n if (self.map != null) {\n const bbox = bounds.getBoundingBox();\n const n = RwTextUtils.round4(bbox.getTop());\n const e = RwTextUtils.round4(bbox.getRight());\n const s = RwTextUtils.round4(bbox.getBottom());\n const w = RwTextUtils.round4(bbox.getLeft());\n //console.log(\"zoomToRoute\", n, e, s, w);\n\n let mapDiv = this.$refs.map as Element;\n let height = mapDiv.clientHeight;\n let width = mapDiv.clientWidth;\n\n if (height && width) {\n //console.log(\"bboxDelta\", height, width, height != 0);\n\n //xTEST: This probably needs to factor in DPI\n let pixelMarginX = 64.0 / height;\n let pixelMarginY = 32.0 / width;\n let geoHeight = n - s;\n let geoWidth = e - w;\n\n //Create new borders including margin for images\n let nDelta = n + pixelMarginX * geoHeight;\n let wDelta = w - pixelMarginY * geoWidth;\n let eDelta = e + pixelMarginY * geoWidth;\n let sDelta = s - pixelMarginX * geoHeight;\n //let sDelta = bbox.getBottom();\n //console.log(\"bboxDelta\", height, width, nDelta, wDelta, sDelta, eDelta);\n\n bboxDelta = new H.geo.Rect(\n nDelta,\n wDelta,\n sDelta,\n eDelta\n );\n\n } else {\n //console.error(\"zoomToRoute height || width == 0\", height, width, this.map.getViewPort());\n // let mapHeight = this.map.getViewPort().height;\n // let mapWidth = this.map.getViewPort().width;\n //RwLog.consoleWarn(\"WTF: zoomToRoute height || width == 0\", height, width, mapHeight, mapWidth, this.map.getViewPort());\n bboxDelta = bbox;\n }\n\n //console.warn(SOURCE, \"mapSetViewBounds\", \"ANIMATE\")\n RwViewUtils.mapSetViewBounds(self.map, bboxDelta, animate);\n zoomSuccess = true;\n } else {\n this.currZoomId = undefined;\n }\n\n } else {\n if (hasStart) {\n //console.warn(SOURCE, \"mapSetViewPoint startPoint\", animate)\n RwViewUtils.mapSetViewPoint(self.map, startPoint, 11, animate);\n zoomSuccess = true;\n } else {\n let prefStart = this.getPrefStartLocation(route);\n if (prefStart && prefStart.lat !== 0 || prefStart.lng !== 0) {\n //console.warn(SOURCE, \"mapSetViewPoint prefStart\", animate)\n RwViewUtils.mapSetViewPoint(self.map, startPoint, 11, animate);\n zoomSuccess = true;\n } else {\n RwLog.consoleError(\"WTF: ROUTE LOCATION UNKNOWN\");\n }\n }\n }\n\n bounds.removeAll();\n } else {\n\n if (hasStart) {\n //console.log(\"mapSetViewPoint\")\n RwViewUtils.mapSetViewPoint(self.map, startPoint, 11);\n zoomSuccess = true;\n } else {\n let prefStart = this.getPrefStartLocation(route);\n if (prefStart && prefStart.lat !== 0 || prefStart.lng !== 0) {\n RwViewUtils.mapSetViewPoint(self.map, startPoint, 11);\n zoomSuccess = true;\n } else {\n RwLog.consoleError(\"WTF: ROUTE LOCATION UNKNOWN\");\n }\n }\n }\n\n } catch (error) {\n\n let bboxText = \"NO BBOX\";\n if (bboxDelta) {\n const n = RwTextUtils.round4(bboxDelta.getTop());\n const e = RwTextUtils.round4(bboxDelta.getRight());\n const s = RwTextUtils.round4(bboxDelta.getBottom());\n const w = RwTextUtils.round4(bboxDelta.getLeft());\n bboxText = `zoomToRoute: ${n}, ${e}, ${s}, ${w}`;\n }\n RwLog.warn(SOURCE, `Unhandled: bboxText:${bboxText} \\n\\n${JSON.stringify(error)}`);\n }\n\n if (zoomSuccess) {\n setTimeout(() => self.currZoomId = undefined, 1500)\n } else {\n self.currZoomId = undefined\n }\n\n }\n }\n\n return zoomSuccess;\n }\n\n\n private getPrefStartLocation(route: RwRoute): H.geo.Point {\n //Should be captured during onboarding;\n let lat = RwPrefUtils.lastFixedStartLat;\n let lng = RwPrefUtils.lastFixedStartLng;\n if (route.isDynLoc) {\n\n lat = RwPrefUtils.startLat;\n lng = RwPrefUtils.startLng;\n //DEFER: UX: consider using assigned driver's last known location\n RwLog.consoleWarn(\"WTF: Route wo/Start Location; Using Dynamic Default\");\n } else {\n lat = RwPrefUtils.lastFixedStartLat;\n lng = RwPrefUtils.lastFixedStartLng;\n RwLog.consoleWarn(\"WTF: Route wo/Start Location; Using Fixed Default\");\n }\n\n if (lat === 0 || lng === 0) {\n lat = 40.013249;\n lng = -105.287532;\n RwLog.consoleError(\"WTF: route has no start point. NEED TO SET ONE! Using HCC!!!\");\n }\n return new H.geo.Point(lat, lng);\n }\n\n\n saveViewPort() {\n const SOURCE = \"RwPlannerMap.saveViewport\";\n let self = this;\n if (self.map) {\n let center = self.map.getCenter();\n //console.warn(\"saveViewPort\", center.lat(), center.lng());\n RwPrefUtils.viewCenterLat = center.lat;\n RwPrefUtils.viewCenterLng = center.lng;\n\n let viewBounds = self.map.getViewModel().getLookAtData().bounds; //:H.geo.AbstractGeometry\n let bounds = viewBounds.getBoundingBox();\n //console.warn(\"saveViewPort bounds W S E N\", sw.lng(), sw.lat(), ne.lng(), ne.lat());\n const w = bounds.getLeft();\n const s = bounds.getBottom();\n const e = bounds.getRight();\n const n = bounds.getTop();\n\n // Check for invalid viewport before saving\n if (w !== e && s !== n) {\n //console.log (`Saving viewport: w:${w},s:${s},e:${e},n:${n}`);\n RwPrefUtils.viewWest = bounds.getLeft();\n RwPrefUtils.viewSouth = bounds.getBottom();\n RwPrefUtils.viewEast = bounds.getRight();\n RwPrefUtils.viewNorth = bounds.getTop();\n\n RwPrefUtils.viewZoom = self.map.getZoom();\n //console.log(\"saveViewPort zoom\", RwPrefUtils.viewZoom);\n\n //calc radius\n let distMeters = center.distance(\n new H.geo.Point(RwPrefUtils.viewNorth, RwPrefUtils.viewEast)\n );\n //console.warn(\"saveViewPort distMeters\", distMeters);\n RwPrefUtils.viewRadius = distMeters;\n } else {\n RwLog.warn(SOURCE, `Attempting to save invalid viewport: w:${w},s:${s},e:${e},n:${n}`)\n }\n }\n }\n\n //#endregion\n\n\n //region Map Pins\n\n\n getPinsForSelectMode() {\n let pins: RwPin[];\n switch (this.selectMode) {\n case RwMultiMode.stops:\n pins = this.space.stopPinsFiltered;\n break;\n case RwMultiMode.sites:\n pins = this.space.sitePinsFiltered;\n break;\n case RwMultiMode.tasks:\n pins = this.space.taskPinsFiltered;\n break;\n }\n return pins;\n }\n\n\n updatePin(pin: RwPin) {\n const self = this;\n const SOURCE = \"RwPlannerMap.updatePin\"\n //console.log(\"updatePin:\", pin.title);\n\n if (self.map && pin) {\n\n let isClusterChild = !!pin.clusterParent\n if (!isClusterChild) {\n let marker = self.findMarker(pin);\n if (marker) {\n self.updateMarker(pin, marker);\n self.focusCheck(pin);\n }\n } else {\n //NOTE: Cluster Children do not have markers\n let cluster = pin.clusterParent;\n if (cluster.marker) {\n cluster.invalidatePinImage();\n self.updateMarker(cluster, cluster.marker);\n }\n\n pin.invalidatePinImage();\n pin.lastHash = Date.now();\n //console.log(SOURCE, pin.title, pin.urlHash, pin.imgArgs);\n\n }\n\n } else {\n RwLog.consoleError(\"WTF: No Map || No Pin\");\n }\n }\n\n\n updateMarker(pin: RwPin, marker: RwMarker) {\n const self = this;\n const SOURCE = 'RwPlannerMap.updateMarker';\n //console.log(\"updateMarker:\", pin.title);\n\n if (pin && marker) {\n pin.invalidatePinImage();\n pin.lastHash = Date.now();\n\n let url = thePlanSpace.globals.idxURL[pin.urlHash];\n if (url && url.length > 0) {\n self.setMapMarker(pin, marker, url);\n } else {\n pin\n .dataUrlAsync()\n .then(dataUrl => {\n self.setMapMarker(pin, marker, dataUrl);\n });\n }\n } else {\n RwLog.consoleError(SOURCE, \"WTF: updateMarker: no marker\");\n }\n }\n\n\n private setMapMarker(pin: RwPin, marker: RwMarker, dataUrl: string) {\n const SOURCE = 'RwPlannerMap.setMapMarker';\n //console.log(SOURCE, pin.title);\n const self = this;\n let zIndex = pin.zIndex;\n let iconSize = self.globals.getIconSize(pin.type);\n let anchor = self.globals.getAnchorPoint(pin.type);\n let iconOpts = {} as H.map.Icon.Options;\n if (anchor) iconOpts.anchor = anchor;\n if (iconSize) iconOpts.size = iconSize;\n let icon = new H.map.Icon(dataUrl, iconOpts);\n marker.setZIndex(zIndex); //Note: setZIndex must be called prior to setIcon\n marker.setIcon(icon);\n marker.invalidate(0);\n //console.warn(SOURCE, \"POST marker.invalidate\", pin.title, pin.baseColor);\n }\n\n\n updateMarkerPosition(pin: RwPin, marker: RwMarker) {\n const SOURCE = 'RwPlannerMap.updateMarkerPosition';\n //console.warn(\"updateMarkerPosition:\", marker.pin ? marker.pin.title : \"\");\n if (pin && marker) {\n marker.setGeometry({lat: pin.lat, lng: pin.lng});\n marker.invalidate(0);\n } else {\n RwLog.warn(SOURCE, `Unable to update marker position, ${!pin ? 'no pin' : ''}, ${!marker ? 'no marker' : ''}`);\n }\n }\n\n addPin(pin: RwPin, imgUri: string, zIndex: number, pins: RwPin[], scale: number, custAnchor?: H.math.Point, logIt?: boolean): Promise {\n const self = this;\n const SOURCE = \"RwPlannerMap.addPin\"\n\n return new Promise((resolve => {\n if (pin.lat == 0 && pin.lng == 0) {\n switch (pin.type) {\n case RwPinTypes.Route:\n if (this.activeRoute.isDynLoc) {\n if (!(RwPrefUtils.startLat == 0 && RwPrefUtils.startLng == 0)) {\n this.activeRoute.lat = pin.lat = RwPrefUtils.startLat;\n this.activeRoute.lng = pin.lng = RwPrefUtils.startLng;\n } else {\n this.space.invalidPinError = \"Route\";\n this.space.invalidPinIcon = \"error\";\n this.space.showInvalidPinBanner = true;\n }\n } else {\n this.space.invalidPinError = \"Route\";\n this.space.invalidPinIcon = \"error\";\n this.space.showInvalidPinBanner = true;\n }\n break;\n case RwPinTypes.Stop:\n if (this.space.invalidPinError === \"Route\" && this.space.showInvalidPinBanner) break;\n this.space.invalidPinError = \"Stop\";\n this.space.invalidPinIcon = \"warning\";\n this.space.showInvalidPinBanner = true;\n break;\n case RwPinTypes.Driver:\n //this.globals.showSnack(\"Invalid driver location detected.\", \"warning\");\n break;\n }\n RwLog.warn(SOURCE, `Pin lat and lng are 0 \\n\\n stack:${new Error().stack}\\n\\npin type:${pin.type}`);\n return resolve(false);\n }\n\n let isAdded = false;\n if (self.map) {\n\n let iconSize: H.math.ISize = self.globals.getIconSize(pin.type);\n let anchor = self.globals.getAnchorPoint(pin.type, custAnchor);\n let iconOpts = {} as H.map.Icon.Options;\n if (anchor) iconOpts.anchor = anchor;\n if (iconSize) iconOpts.size = iconSize;\n\n //console.log(SOURCE, \"getIcon\", imgUri);\n self.globals.getIcon(imgUri, iconOpts)\n .then(icon => {\n let markerLoc = {lat: pin.lat, lng: pin.lng};\n let hereMarker = new H.map.Marker(markerLoc, {icon: icon});\n let marker = hereMarker as RwMarker;\n marker.setZIndex(zIndex);\n isAdded = this.addMarker(marker, pin, logIt);\n if (isAdded) {\n if (pins != null) pins.push(pin);\n self.focusCheck(pin);\n resolve(true);\n } else {\n resolve(false)\n }\n });\n\n } else {\n RwLog.consoleError(\"WTF: map not ready\");\n resolve(false);\n }\n\n }));\n\n }\n\n\n private focusCheck(pin: RwPin) {\n const self = this;\n let focusId = self.globals.targetFocusId;\n if (focusId && focusId === pin.eid) {\n //console.log(\"RwPlannerMap.focusCheck\", pin.title);\n self.globals.targetFocusId = undefined;\n setTimeout(() => {\n self.focusPin(pin, true, false);\n }, 250);\n }\n }\n\n addMarker(marker: RwMarker, pin: RwPin, logIt?: boolean): boolean {\n let self = this;\n let isAdded = false;\n\n marker.pinType = pin.type;\n marker.pin = pin;\n pin.marker = marker;\n //marker.eid = pin.eid;\n //console.log(\"addMarker\", pin.title, self.markers.length);\n let mapGroup = self.getMapGroupByType(pin.type);\n if (mapGroup) {\n if (theGlobals.showSearchPanel) {\n marker.searchId = pin.id;\n }\n mapGroup.addObject(marker);\n isAdded = true;\n\n } else {\n RwLog.consoleError(\"WTF: NO GROUP for:\", pin.type);\n }\n\n marker.setZIndex(pin.zIndex);\n return isAdded;\n }\n\n\n showMarkerReticle(): boolean {\n const self = this;\n\n let isShowing = false;\n if (this.map) {\n\n if (this.reticle) {\n this.hideMarkerReticle();\n }\n\n let iconSize: H.math.ISize = self.globals.getIconSize(RwPinTypes.Target);\n let iconOpts = {} as H.map.Icon.Options;\n iconOpts.size = iconSize;\n let anchor = self.globals.getAnchorPoint(RwPinTypes.Target, null);\n if (anchor) iconOpts.anchor = anchor;\n\n let iconPath = this.globals.isDarkMode ? RwConstants.IconTargetDark : RwConstants.IconTargetLight;\n let icon = new H.map.Icon(iconPath, iconOpts);\n\n let coord = this.map.screenToGeo(this.mouseX, this.mouseY);\n let markerLoc = {lat: coord.lat, lng: coord.lng};\n let hereMarker = new H.map.Marker(markerLoc, {icon: icon});\n let marker = hereMarker as RwMarker;\n marker.setZIndex(0);\n\n isShowing = true;\n marker.setZIndex(0);\n this.reticle = marker;\n\n this.map.addObject(this.reticle);\n\n }\n return isShowing;\n }\n\n\n hideMarkerReticle() {\n if (this.map && this.reticle) {\n this.map.removeObject(this.reticle);\n this.reticle = null;\n }\n }\n\n findMarker(pin: RwPin): RwMarker {\n let marker = pin.marker;\n // if (!marker) {\n // RwLog.consoleWarn(\"RwPlannerMap.findMarker\", `WTF: pin.marker === null: ${pin.title}`);\n // }\n return marker;\n }\n\n\n removePinFromMap(pin: RwPin, pins?: RwPin[], marker?: RwMarker): boolean {\n let isRemoved = false;\n //console.warn(\"removePin\", pin.title);\n let self = this;\n if (self.map && pin) {\n\n let marker = this.findMarker(pin);\n if (marker) {\n let isMarkerRemoved = self.removeMarker(pin, marker);\n //console.log(\"removePinFromMap removeMarker\", pin.title, self.markers.length);\n if (isMarkerRemoved) {\n if (pins) {\n let idxPin = pins.indexOf(pin);\n if (idxPin >= 0) {\n pins.splice(idxPin, 1);\n isRemoved = true;\n }\n } else {\n isRemoved = true;\n }\n }\n } else {\n RwLog.consoleWarn(\"WTF: removePin marker not found!\", pin.title);\n }\n }\n return isRemoved;\n }\n\n\n removeMarker(pin: RwPin, markerXXX: RwMarker): boolean {\n const self = this;\n const SOURCE = \"RwPlannerMap.removeMarker\"\n //console.log(SOURCE, pin.title);\n\n let isRemoved = false;\n if (pin) {\n\n let pinId = pin.eid;\n let pinType = pin.type;\n let mapGroup = self.getMapGroupByType(pinType);\n if (mapGroup) {\n try {\n let mapObjects = mapGroup.getObjects();\n let foundMarker = mapObjects.find(mo => {\n let rwm = (mo as RwMarker);\n if (rwm && rwm.pin && rwm.pin.eid === pinId) {\n return mo;\n } else {\n return null;\n }\n });\n if (foundMarker) {\n mapGroup.removeObject(foundMarker);\n // if(pin.type === RwPinTypes.Route) {\n // console.log(SOURCE, \"REMOVED: \" + pin.title);\n // }\n\n let isSelected = this.space.isSelected(pin);\n if (isSelected) {\n this.space.deselectPin(pin)\n //console.log(SOURCE, \"DESELECTED: \" + pin.title);\n }\n } else {\n RwLog.consoleWarn(SOURCE, \"WTF: NOT FOUND markerId\", pinId, mapObjects.length);\n // mapObjects.forEach(mo => {\n // let marker = (mo as RwMarker)\n // if (marker) {\n // if (marker.pin) {\n // //if (marker && marker.pin && marker.pin.type === RwPinTypes.Route) {\n // console.log(\"\\t\\t marker:\", marker.pin.eid);\n // }\n // else {\n // console.log(\"\\t\\t marker.pin === null\", marker);\n // }\n // }\n // })\n }\n\n } catch (e) {\n RwLog.consoleError(\"WTF: Error removing marker\", e.toString(), pinType);\n }\n\n }\n }\n\n return isRemoved;\n }\n\n\n clearPath(withRoute?: boolean) {\n if (this.polyLine) {\n this.mapGroupRoute.removeObject(this.polyLine);\n this.polyLine = null;\n if (withRoute) {\n let route = this.activeRoute;\n if (route) {\n route.path = null;\n }\n }\n }\n }\n\n\n getMapGroupByType(pinType: RwPinTypes) {\n let group: H.map.Group;\n switch (pinType) {\n //@formatter:off\n case RwPinTypes.Stop:\n case RwPinTypes.Driver:\n case RwPinTypes.Route:\n group = this.mapGroupRoute;\n break;\n case RwPinTypes.Site:\n group = this.mapGroupSites;\n break;\n case RwPinTypes.Task:\n group = this.mapGroupTasks;\n break;\n //@formatter:on\n default: {\n RwLog.consoleError(\"WTF: NO GROUP FOR:\", pinType);\n break;\n }\n\n }\n return group;\n }\n\n\n decodePath(str: string, precision: number): H.geo.Point[] {\n let index: number = 0;\n let lat: number = 0;\n let lng: number = 0;\n let coordinates: H.geo.Point[] = [];\n let shift: number = 0;\n let result: number = 0;\n let byte: number = null;\n let latitude_change: number;\n let longitude_change: number;\n let factor: number = Math.pow(10, precision || 5);\n\n // Coordinates have variable length when encoded, so just keep\n // track of whether we've hit the end of the string. In each\n // loop iteration, a single coordinate is decoded.\n while (index < str.length) {\n // Reset shift, result, and byte\n byte = null;\n shift = 0;\n result = 0;\n\n do {\n byte = str.charCodeAt(index++) - 63;\n result |= (byte & 0x1f) << shift;\n shift += 5;\n } while (byte >= 0x20);\n\n latitude_change = result & 1 ? ~(result >> 1) : result >> 1;\n\n shift = result = 0;\n\n do {\n byte = str.charCodeAt(index++) - 63;\n result |= (byte & 0x1f) << shift;\n shift += 5;\n } while (byte >= 0x20);\n\n longitude_change = result & 1 ? ~(result >> 1) : result >> 1;\n\n lat += latitude_change;\n lng += longitude_change;\n\n let coord = new H.geo.Point(lat / factor, lng / factor);\n coordinates.push(coord);\n }\n\n return coordinates;\n }\n\n clearRouteMarkers() {\n this.space.startPin = null;\n this.polyLine = null;\n this.mapGroupRoute.removeAll();\n //console.error(\"clearRouteMarkers startPin = null\");\n }\n\n\n // clearRouteMarkers() {\n // this.space.startPin = null;\n // this.polyLine = null;\n // this.mapGroupRoute.removeAll();\n // //console.error(\"clearRouteMarkers\", this.markers.length);\n // }\n\n\n clearSitePins() {\n //console.log(\"clearSitePins\");\n this.mapGroupSites.removeAll();\n }\n\n\n clearTaskPins() {\n //console.log(\"clearTaskPins\");\n this.mapGroupTasks.removeAll();\n }\n\n\n refreshDriverPinDelta(driverId: string) {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshDriverPin\";\n\n let driver = this.globals.findDriver(driverId);\n let driverPin = this.driverPinCache;\n if (driver && driverPin && driverPin.eid === driverId) {\n let needsPositionUpdate = driver.lat != driverPin.lat || driver.lng !== driverPin.lng;\n if (needsPositionUpdate) {\n let marker = driverPin.marker;\n if (marker) {\n self.updateMarkerPosition(driverPin, driverPin.marker);\n }\n }\n } else {\n this.driverPinCache = null;\n this.clearDriverMarkers(self);\n this.refreshDriverPin(driverId)\n }\n this.updateDynamicRouteStart();\n }\n\n\n private clearDriverMarkers(self: this) {\n let mapGroup = self.getMapGroupByType(RwPinTypes.Route);\n if (mapGroup) {\n let mapObjects = mapGroup.getObjects();\n let driverMarkers = mapObjects.filter(mo => (mo as RwMarker).pinType === RwPinTypes.Driver);\n if (driverMarkers.length > 0) {\n driverMarkers.forEach(dm => {\n mapGroup.removeObject(dm);\n })\n }\n }\n }\n\n refreshDriverPin(driverId: string) {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshDriverPin\";\n let driver = this.globals.findDriver(driverId);\n if (driver) {\n let driverPin = RwPin.fromDriver(driver);\n driverPin\n .dataUrlAsync()\n .then(newUrl => {\n //console.log(SOURCE, \"driverPin addPin\", driverPin.title);\n self.addPin(driverPin, newUrl, driverPin.zIndex, null, 1);\n })\n .catch(err => {\n RwLog.consoleError(\"Unhandled: \", err);\n })\n }\n }\n\n\n focusPin(pin: RwPin, withPan: boolean, withZoom: boolean) {\n let self = this;\n if (pin != null) {\n let centroid = new H.geo.Point(pin.lat, pin.lng);\n //console.log(\"focusPin\", centroid, withPan, withZoom);\n self.focusMarker(centroid, withPan, withZoom, true);\n } else {\n RwLog.consoleError(\"WTF: focusPin pin === null\");\n }\n }\n\n\n focusMarker(centroid: H.geo.Point, withPan: boolean, withZoom: boolean, animate: boolean) {\n if (withPan) {\n //console.log(\"focusMarker centroid, pan, zoom\");\n this.map.setCenter(centroid, animate);\n }\n if (withZoom) {\n this.map.setZoom(14, animate);\n }\n }\n\n\n findPinByStop(stop: RwStop) {\n let foundPin: RwPin;\n const stopPins = this.stopPins;\n if (stopPins && stopPins.length > 0) {\n foundPin = stopPins.find(p => p.stop.stopId == stop.stopId);\n }\n return foundPin;\n }\n\n\n findPinBySite(site: RwSite) {\n let foundPin: RwPin;\n const route = this.space.activeRoute;\n if (route && route.isRouted(site)) {\n if (this.stopPins && this.stopPins.length > 0) {\n foundPin = this.stopPins.find(p => p.stop.siteId == site.siteId);\n }\n } else {\n if (this.sitePins && this.sitePins.length > 0) {\n foundPin = this.sitePins.find(p => p.site.siteId == site.siteId);\n }\n }\n return foundPin;\n }\n\n\n updateStartAtCoord(lat: number, lng: number, isDynLoc = false) {\n const self = this;\n const SOURCE = \"RwPlannerMap.updateStartAtCoord\";\n\n if (self.space.activeRoute) {\n const route = this.space.activeRoute;\n if (route != null) {\n if (lat != 0 || lng != 0) {\n route.lat = lat;\n route.lng = lng;\n } else {\n this.globals.showSnack('Start cannot be (0,0)', 'error');\n }\n route.isDynLoc = isDynLoc;\n if (!isDynLoc) route.path = null;\n route.address = `${lat.toFixed(5)}, ${lng.toFixed(5)}`;\n\n this.globals\n .updateRouteDB(route, false)\n .then(isCommitted => {\n if (isCommitted) {\n //console.log(\"updateStartAtCoord success\", isCommitted);\n\n let startPin = self.space.startPin;\n if (startPin && startPin.marker) {\n if (lat != 0 || lng != 0) {\n startPin.lat = lat;\n startPin.lng = lng;\n self.updateMarkerPosition(startPin, startPin.marker)\n } else {\n RwLog.warn(SOURCE, `start pin being set to 0,0`);\n this.globals.showSnack('Start cannot be (0,0)', 'error');\n }\n } else {\n RwLog.warn(SOURCE, `start pin not found for update, refresh to prevent double start pin`);\n this.refreshRoute();\n }\n //self.space.startPin.lastUpdate = Date.now()\n //self.updatePin(self.space.startPin)\n //self.refreshStartPin(false)\n //self.refreshStartPin()\n }\n })\n .catch(err => {\n let status = err.code ? err.code : err.status;\n if (status) {\n if (status === 504 || status === 403) {\n RwLog.warn(SOURCE, `Network error updating start coord: ${JSON.stringify(err)}`);\n } else if (status === 403) {\n RwLog.warn(SOURCE, `Invalid token updating start coord: ${JSON.stringify(err)}`);\n } else {\n RwLog.error(SOURCE, `Unhandled error updating start coord: ${JSON.stringify(err)}`);\n }\n } else {\n RwLog.warn(SOURCE, `Undefined status: ${JSON.stringify(err)}`);\n }\n });\n }\n }\n }\n\n\n addRouteAtCoord(lat: number, lng: number, stack: string[] = []) {\n const SOURCE = \"RwPlannerMap.addRouteAtCoord\";\n const self = this;\n\n let route = RwRoute.blankRoute();\n route.isDynLoc = false;\n if (!(lat == 0 && lng == 0)) {\n route.lat = lat;\n route.lng = lng;\n } else if (!(RwPrefUtils.startLat == 0 && RwPrefUtils.startLng == 0)) {\n route.lat = RwPrefUtils.startLat;\n route.lng = RwPrefUtils.startLng;\n } else {\n route.lat = 40.013249;\n route.lng = -105.287532;\n }\n\n this.globals.addRouteDB(route, [...stack, SOURCE], false)\n .then(routeAdded => {\n //console.log(\"onRouteCreate addRouteDB callback\");\n this.globals.showSnack(`Route Created: ${routeAdded.name}`, \"success\");\n this.globals.addRoute(route);\n self.space.openRoute(routeAdded);\n\n\n this.space.activeRoute = route;\n this.$router.push(route.plannerUrl);\n if (this.space.startPin) {\n this.space.setPinSelection(this.space.startPin, true);\n //this.space.forceShowDataView();\n }\n if (this.globals.editAfterAdd) this.globals.showRouteEdit(route);\n })\n .catch(err => {\n self.globals.showSnack(`Route Creation Failed: ${err}`, \"error\");\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n });\n\n }\n\n\n addStopAtCoord(lat: number, lng: number): RwStop {\n let route = this.space.activeRoute;\n if (this.globals.editAfterAdd) this.globals.recentStopAdd = true;\n let title = `${lat.toFixed(4)}, ${lng.toFixed(4)}`;\n let stop = route.createStop(title, title, lat, lng);\n this.addStopToMap(stop, route, false);\n return stop;\n }\n\n\n private addStopToMap(stop: RwStop, route: RwRoute, setFocus: boolean) {\n const SOURCE = \"RwPlannerMap.addStopToMap\";\n //console.log(\"addStopToMap\");\n\n this.globals.targetSelectId = stop.stopId;\n this.globals.addStopDB(stop, route, setFocus, true)\n .then(isAdded => {\n if (isAdded) {\n //console.log(\"addStopToMap success\", isAdded);\n }\n })\n .catch(err => {\n let status = !!err.Code ? err.Code : err.status;\n if (status === 504) {\n RwLog.warn(SOURCE, `Network error: ${JSON.stringify(err)}`)\n } else if (status === 403) {\n RwLog.warn(SOURCE, `Auth error: ${JSON.stringify(err)}`);\n } else {\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n }\n // resolve(false);\n })\n .finally(() => {\n this.space.addingStop = false;\n });\n }\n\n\n addSiteAtCoord(lat: number, lng: number): RwSite {\n const SOURCE = \"RwPlannerMap.addSiteAtCoord\";\n let title = `${lat.toFixed(4)}, ${lng.toFixed(4)}`;\n\n let site = new RwSite();\n site.name = title;\n site.address = title;\n site.lat = lat;\n site.lng = lng;\n site.baseColor = RwPrefUtils.siteColor;\n site.visitTime = -1;\n\n if (!this.space.addingStop) {\n this.globals.addSite(site, false)\n .catch(err => {\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n })\n .finally(() => {\n this.space.addingStop = false;\n });\n return site;\n } else {\n RwLog.consoleWarn(SOURCE, \"already adding stop?\")\n }\n }\n\n\n addTaskAtCoord(lat: number, lng: number) {\n const SOURCE = \"RwPlannerMap.addTaskAtCoord\";\n if (!this.space.addingTask) {\n let title = `${lat.toFixed(4)}, ${lng.toFixed(4)}`;\n let task = new RwStop();\n task.isTask = true;\n task.isActive = true;\n task.name = title;\n task.address = title;\n task.lat = lat;\n task.lng = lng;\n task.routeId = RwPrefUtils.accountId;\n task.baseColor = RwPrefUtils.taskColor;\n task.visitTime = -1;\n if (this.globals.editAfterAdd) this.globals.recentStopAdd = true;\n\n this.globals.addTaskDB(task, false)\n .then(isAdded => {\n //console.log(\"addTaskFromSearch success\", isAdded);\n })\n .catch(err => {\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n })\n .finally(() => this.space.addingTask = false);\n return task;\n }\n }\n\n\n getEnvelope(points: H.geo.Point[]): H.geo.Rect {\n\n let envelope: H.geo.Rect;\n let n = -90;\n let e = -180;\n let s = 90;\n let w = 180;\n if (points && points.length > 0) {\n points.forEach(p => {\n if (p.lat > n) n = p.lat;\n if (p.lat < s) s = p.lat;\n if (p.lng > e) e = p.lng;\n if (p.lng < w) w = p.lng;\n });\n\n envelope = new H.geo.Rect(n, w, s, e);\n }\n return envelope\n }\n\n\n //#endregion Map Pins\n\n\n //#region Route Actions\n\n onRouteView(route: RwRoute) {\n //console.log(\"RwPlannerMap.onRouteView\");\n this.space.setPinSelection(this.space.startPin, true, false);\n this.space.onRouteView(this.activeRoute);\n this.showMenuRoutePin = false;\n }\n\n onRouteEdit(route: RwRoute) {\n this.space.onRouteEdit(route);\n this.showMenuRoutePin = false;\n }\n\n onRouteCopy(route: RwRoute) {\n const self = this;\n //console.log(\"onRouteCopy\");\n\n this.globals\n .copyRoute(route, RwRouteCopyType.AllStops, [\"RwPlannerMap.onRouteCopy\"])\n .then((copy) => {\n this.space.openRouteInPlanner(copy);\n })\n .catch();\n\n this.showMenuRoutePin = false;\n }\n\n onRouteArchive(route: RwRoute) {\n //console.log(\"onRouteArchive\");\n this.globals.confirmAndArchiveRoute(route);\n this.showMenuRoutePin = false;\n }\n\n\n onRouteAssign(route: RwRoute) {\n //console.log(\"onRouteAssign\");\n this.globals.assignRoute(route);\n this.showMenuRoutePin = false;\n }\n\n\n onRouteStatus(route: RwRoute) {\n //console.log(\"onRouteStatus\");\n this.globals.onRouteStatus(route);\n this.showMenuRoutePin = false\n }\n\n\n onRouteRelo(route: RwRoute) {\n const self = this;\n const SOURCE = \"RwPlannerMap.onRouteRelo\";\n this.showMenuRoutePin = false;\n if (route) {\n //console.log(\"onRouteRelo lat, lng\", route.lat, route.lng);\n\n self.globals\n .showReloPicker(route.name, route.lat, route.lng)\n .then(coord => {\n if (coord) {\n //console.log(\"RwPlannerMap.onSiteRelocate showReloPicker callback\", coord.lat, coord.lng);\n let priLat = route.lat;\n let priLng = route.lng;\n\n if (coord.lat != 0 || coord.lng != 0) {\n route.lat = coord.lat;\n route.lng = coord.lng;\n\n self.globals\n .updateRouteDB(route, true)\n .then(isCommit => {\n //console.log(\"updateSiteDB isCommit\", isCommit);\n if (isCommit) {\n //self.globals.showSnack(\"Route location updated.\", \"success\");\n route.lastHash = Date.now();\n if (self.globals.activeRoute && self.activeRoute === route) {\n self.globals.commitRoute()\n }\n } else {\n //rollback update\n route.lat = priLat;\n route.lng = priLng;\n self.globals.showSnack(\"Route relocation failed.\", \"error\");\n }\n })\n .catch(err => {\n //rollback update\n route.lat = priLat;\n route.lng = priLng;\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n self.globals.showSnack(\"Route relocation failed.\", \"error\");\n });\n } else {\n self.globals.showSnack(\"Route cannot start at (0,0).\", \"error\");\n }\n }\n });\n }\n\n\n }\n\n\n //#endregion Route Actions\n\n\n //#region Stop Actions\n\n onStopView() {\n const self = this;\n self.showMenuStopPin = false;\n this.forceViewPopup();\n }\n\n\n onStopEdit() {\n const self = this;\n self.showMenuStopPin = false;\n\n if ((self.pinClicked && self.pinClicked.stop)) {\n let stop = self.pinClicked.stop;\n if (this.space.selectedPin != self.pinClicked) {\n this.space.setPinSelection(self.pinClicked, true, false);\n }\n\n self\n .globals.showStopEdit(stop)\n .then(isCommit => {\n if (isCommit) {\n self.globals.showSnack(\"Stop Edited\", \"success\");\n }\n //console.log(\"RwPlannerList.onEditStopClick\", \"showStopEdit callback\", updated.name);\n })\n .catch(err => {\n self.globals.showSnack(\"Stop Edit FAILED\", \"error\");\n //console.log(\"RwPlannerList.onEditStopClick\", \"Unhandled Error: \", err.toString());\n })\n\n }\n }\n\n onStopDelete() {\n const SOURCE = \"RwPlannerMap.onStopDelete\";\n const self = this;\n self.showMenuStopPin = false;\n let pin = self.pinClicked;\n this.space.deleteStopPin(pin, [SOURCE], true)\n .then((deleted) => {\n //self.removePinFromMap(pin, self.stopPins);\n if (deleted) {\n let isRouted = pin.stop && pin.stop.isRouted;\n if (isRouted) {\n this.space.activeRoute.path = \"\";\n this.globals.updateRouteDB(this.space.activeRoute, false)\n .then(updated => {\n if (updated) {\n self.clearPath(true);\n } else {\n RwLog.warn(SOURCE, `Unable to clear route path after stop del ${pin.stop.stopId}`);\n }\n })\n .catch(err => {\n RwLog.error(SOURCE, `Unable to clear route path after stop del ${pin.stop.stopId},\\n\\n err:${JSON.stringify(err)}`);\n });\n }\n }\n });\n }\n\n onStopCheckInScreen() {\n if (RwPrefUtils.checkInStyle == 1 && !this.globals.hideStopStatus) {\n this.showMenuStopPin = false;\n this.showMenuCheckin = true;\n } else {\n this.pinClicked.stop.status = 10;\n this.onStopCheckIn();\n }\n }\n\n\n onCheckInStatus(val: number) {\n this.showMenuCheckin = false;\n this.pinClicked.stop.status = val;\n this.onStopCheckIn();\n }\n\n\n onStopCheckIn() {\n const self = this;\n self.showMenuStopPin = false;\n if (self.pinClicked && self.pinClicked.stop) {\n if (!self.pinClicked.stop.note || self.pinClicked.stop.note.length <= 1000) {\n this.space.checkInStopPin(self.pinClicked)\n .then(() => {\n this.updatePin(self.pinClicked);\n // console.warn(\"this.pinclicked.stop.status:\", self.pinClicked.stop.status);\n self.globals.commitStops();\n if (this.activeRoute.statusCode == RwRouteStatusCodes.created) {\n this.activeRoute.statusCode = RwRouteStatusCodes.active;\n }\n })\n .catch(err => {\n swal(\"Error updating stop\", err.message, \"error\");\n })\n } else {\n this.globals.showSnack(\"Please shorten Stop note to 1000 characters or less and try again.\", \"error\");\n }\n } else {\n RwLog.error(\"RwPlannerMap.onCheckInClick\", \"no stop \");\n }\n }\n\n\n onStopRestore() {\n const self = this;\n self.showMenuStopPin = false;\n\n if (self.pinClicked && self.pinClicked.stop) {\n\n self.space.restoreStopPin(this.pinClicked)\n .then(res => {\n //console.log(\"onRestoreClick callback\");\n this.updatePin(self.pinClicked);\n self.globals.commitStops();\n })\n .catch(err => {\n swal(\"Error restoring stop\", err.message, \"error\");\n })\n }\n }\n\n\n onStopAddSite() {\n this.showMenuStopPin = false;\n this.space.addSiteFromPin(this.pinClicked)\n }\n\n\n onStopAddSked() {\n this.showMenuStopPin = false;\n\n if (this.pinClicked && this.pinClicked.stop) {\n let stop = this.pinClicked.stop;\n this.globals\n .multiSked(false, [stop])\n .then((isAdded) => {\n //console.log(\"onStopAddSked callback\", isAdded, stop.priority);\n if (isAdded) {\n this.globals.commitStops();\n Vue.nextTick(() => {\n const refreshedPinClicked = this.stopPins.find(p => p.stop.stopId === stop.stopId)\n if (refreshedPinClicked) {\n refreshedPinClicked.stop.lastHash = Date.now();\n refreshedPinClicked.lastHash = Date.now();\n refreshedPinClicked.isSked = true;\n refreshedPinClicked.priority = stop.priority;\n this.updatePin(refreshedPinClicked);\n } else {\n this.refreshRoute();\n }\n });\n }\n });\n }\n }\n\n\n onStopRemoveSked() {\n const self = this;\n self.showMenuStopPin = false;\n\n if (self.pinClicked && self.pinClicked.stop) {\n let stop = self.pinClicked.stop;\n\n self.globals\n .multiSkedDB(false, [stop.stopId], RwSysUtils.guidEmpty(), stop.priority, 0, 0)\n .then((isCommitted) => {\n //console.log(\"onStopRemoveSked callback\", isCommitted);\n stop.skedId = undefined;\n stop.openTime = 0;\n stop.closeTime = 0;\n stop.lastHash = Date.now();\n self.pinClicked.isSked = false;\n self.updatePin(self.pinClicked);\n self.globals.commitStops();\n this.refreshRoute();\n });\n }\n }\n\n onStopMarkFirst() {\n // console.warn(\"Previous route.firstStopId: \", this.activeRoute.firstStopId);\n let route = this.activeRoute;\n //console.warn(\"Route.ismanOrder: \", route.isManOrder);\n if (route.isManOrder) {\n this.globals.showConfirmDialog(\"Confirm Mark First\", \"Marking this stop First will disable Manual Order and revert the Route settings to Optimize. If you want to keep your Manual Order, hit Back and set your Stop Order in the Route Order Window.\", \"Continue\", \"Back\")\n .then(onConfirm => {\n if (onConfirm) {\n route.isManOrder = false;\n this.markFirst();\n }\n })\n } else {\n this.markFirst();\n }\n }\n\n\n markFirst() {\n const self = this;\n //console.log(\"onStopMarkFirst\")\n\n self.showMenuStopPin = false;\n if (self.pinClicked && self.pinClicked.stop) {\n let stop = self.pinClicked.stop;\n let route = self.activeRoute;\n if (stop && route) {\n let priorId = route.firstStopId;\n route.firstStopId = stop.stopId;\n\n if (route.firstStopId == route.finalStopId) {\n route.finalStopId = \"\";\n }\n self.globals.updateRouteDB(route, false, false, false, true)\n .then(() => {\n\n self.pinClicked.isFirst = true;\n self.updatePin(self.pinClicked);\n\n if (priorId && priorId.length > 0) {\n let priorPin = self.space.stopPins.find(p => p.eid === priorId);\n //console.warn(\"onStopMarkFirst OLD\", priorPin.title);\n if (priorPin) {\n priorPin.isFirst = false;\n self.updatePin(priorPin);\n }\n }\n\n self.globals.commitStops()\n\n });\n }\n }\n }\n\n onStopMarkFinal() {\n let route = this.activeRoute;\n //console.warn(\"Route.ismanOrder: \", route.isManOrder);\n if (route.isManOrder) {\n this.globals.showConfirmDialog(\"Confirm Mark Final\", \"Marking this stop Final will disable Manual Order and revert the Route settings to Optimize. If you want to keep your Manual Order, hit Back and set your Stop Order in the Route Order Window.\", \"Continue\", \"Back\")\n .then(onConfirm => {\n if (onConfirm) {\n route.isManOrder = false;\n this.markFinal();\n }\n })\n } else {\n this.markFinal();\n }\n }\n\n\n markFinal() {\n const self = this;\n self.showMenuStopPin = false;\n if (self.pinClicked && self.pinClicked.stop) {\n let stop = self.pinClicked.stop;\n let route = self.activeRoute;\n if (stop && route) {\n let priorId = route.finalStopId;\n route.finalStopId = stop.stopId;\n if (route.firstStopId == route.finalStopId) {\n route.firstStopId = \"\";\n }\n self.globals\n .updateRouteDB(route, false, false, false, true)\n .then(() => {\n self.pinClicked.isFinal = true;\n self.updatePin(self.pinClicked);\n\n if (priorId && priorId.length > 0) {\n let priorPin = self.space.stopPins.find(p => p.eid === priorId);\n //console.warn(\"onStopMarkFinal\", priorPin.title);\n if (priorPin) {\n priorPin.isFinal = false;\n self.updatePin(priorPin);\n }\n }\n\n self.globals.commitStops();\n })\n }\n }\n }\n\n\n onStopUnmarkFirst() {\n const self = this;\n self.showMenuStopPin = false;\n let route = self.activeRoute;\n if (route) {\n route.firstStopId = \"\";\n self.globals\n .updateRouteDB(route, false, false, false, true)\n .then(() => {\n //console.log(\"onStopMarkFirst updatePin isFirst == false\", self.pinClicked.title);\n self.pinClicked.isFirst = false;\n self.updatePin(self.pinClicked);\n\n self.globals.commitStops()\n })\n\n }\n }\n\n\n onStopUnmarkFinal() {\n const self = this;\n self.showMenuStopPin = false;\n let route = self.activeRoute;\n if (stop && route) {\n route.finalStopId = \"\";\n self.globals\n .updateRouteDB(route, false, false, false, true)\n .then(() => {\n self.pinClicked.isFinal = false;\n self.updatePin(self.pinClicked);\n self.globals.commitStops();\n })\n }\n }\n\n\n onMoreMenu() {\n setTimeout(() => window.dispatchEvent(new Event('resize')), 100);\n }\n\n onPinned() {\n setTimeout(() => window.dispatchEvent(new Event('resize')), 100);\n }\n\n onComplete() {\n setTimeout(() => window.dispatchEvent(new Event('resize')), 100);\n }\n\n onIncomplete() {\n setTimeout(() => window.dispatchEvent(new Event('resize')), 100);\n }\n\n\n //#endregion Stop Actions\n\n\n //#region Site Actions\n\n onSiteView() {\n const self = this;\n self.showMenuSitePin = false;\n this.forceViewPopup();\n }\n\n\n onSiteEdit() {\n if (this.pinClicked && this.pinClicked.site) {\n this.globals.showSiteEdit(this.pinClicked.site);\n //this.space.editSitePin(this.pinClicked);\n }\n this.showMenuSitePin = false;\n }\n\n\n onSiteDelete() {\n const self = this;\n self.showMenuSitePin = false;\n let pin = self.pinClicked;\n self.space.onSiteDelete(pin)\n .then((isDeleted) => {\n if (isDeleted) {\n //console.log(\"onDeleteSiteClick callback PASS\");\n self.removePinFromMap(pin, self.sitePins);\n }\n })\n .catch(err => {\n RwLog.consoleError(\"WTF: onDeleteSiteClick FAIL\", err.toString());\n });\n\n }\n\n\n onSiteRelocate() {\n const self = this;\n const SOURCE = \"RwPlannerMap.onSiteRelocate\";\n self.showMenuSitePin = false;\n let pin = self.pinClicked;\n let site = pin.site;\n if (site) {\n //console.log(SOURCE, \"lat, lng\", site.lat, site.lng);\n\n self.globals\n .showReloPicker(site.name, site.lat, site.lng)\n .then(coord => {\n if (coord) {\n //console.log(SOURCE, \"showReloPicker callback\", coord.lat, coord.lng);\n let priLat = site.lat;\n let priLng = site.lng;\n\n site.lat = coord.lat;\n site.lng = coord.lng;\n\n self.globals\n .updateSiteDB(site, [SOURCE])\n .then(isCommit => {\n //console.log(SOURCE, \"updateSiteDB isCommit\", isCommit);\n if (isCommit) {\n //self.globals.showSnack(\"Favorite location updated.\", \"success\");\n site.lastHash = Date.now();\n pin.lat = coord.lat;\n pin.lng = coord.lng;\n self.updatePinPosition(pin);\n\n // self.globals.targetFocusId = site.siteId;\n // self.globals.commitSites();\n } else {\n //rollback update\n site.lat = priLat;\n site.lng = priLng;\n self.globals.showSnack(\"Favorite relocation failed.\", \"error\");\n }\n })\n .catch(err => {\n //rollback update\n site.lat = priLat;\n site.lng = priLng;\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n self.globals.showSnack(\"Favorite relocation failed.\", \"error\");\n });\n\n }\n });\n }\n }\n\n onStopMoveCopy() {\n const self = this;\n\n let pins = [self.pinClicked];\n if (pins && pins.length > 0) {\n\n let route = this.activeRoute;\n let stops = pins.map(p => p.stop);\n\n self.globals.multiCopy(route, stops);\n\n }\n }\n\n onStopRelocate() {\n const self = this;\n const SOURCE = \"RwPlannerMap.onStopRelocate\";\n\n self.showMenuStopPin = false;\n let pin = self.pinClicked;\n\n let stop = pin.stop;\n if (stop) {\n //console.log(SOURCE, \" lat, lng\", stop.lat, stop.lng);\n\n self.globals\n .showReloPicker(stop.name, stop.lat, stop.lng)\n .then(coord => {\n if (coord) {\n //console.log(SOURCE, \"showReloPicker callback\", coord.lat, coord.lng);\n let priLat = stop.lat;\n let priLng = stop.lng;\n\n stop.lat = coord.lat;\n stop.lng = coord.lng;\n\n self.globals\n .updateStopDB(stop)\n .then(isCommit => {\n //console.log(SOURCE, \"isCommit\", isCommit, priLat, priLng, stop.lat, stop.lng);\n if (isCommit) {\n stop.lastHash = Date.now();\n let stopPin = this.stopPins.find(s => s.stop && s.stop.stopId === stop.stopId);\n if (stopPin) {\n stopPin.lat = coord.lat;\n stopPin.lng = coord.lng;\n //this.updateMarkerPosition(stopPin, stopPin.marker);\n this.removePinFromMap(stopPin);\n this.$nextTick(() => {\n this.addPin(stopPin, this.globals.idxURL[stopPin.urlHash], stopPin.zIndex, null, 1);\n })\n this.map.setCenter(new H.geo.Point(coord.lat, coord.lng), true);\n }\n\n let isRouted = stop.isRouted;\n if (isRouted) {\n this.space.activeRoute.path = \"\";\n theGlobals.updateRouteDB(this.space.activeRoute, false)\n .then((updated) => {\n if (updated) {\n self.clearPath(true);\n } else {\n RwLog.warn(SOURCE, `Unable to clear route path after relocating stop, ${stop.stopId}, rt: ${stop.routeId}\\n\\n`);\n }\n })\n .catch(err => {\n if (!err || (err.status !== 403 && err.status !== 504)) {\n RwLog.error(SOURCE, `Error clearing route path after relocating stop, ${stop.stopId}, rt: ${stop.routeId}\\n\\n\n err:${JSON.stringify(err)}`);\n }\n });\n\n }\n } else {\n RwLog.warn(SOURCE, \"Rolling back update stop\")\n //rollback update\n stop.lat = priLat;\n stop.lng = priLng;\n }\n })\n .catch(err => {\n //rollback update\n stop.lat = priLat;\n stop.lng = priLng;\n RwLog.error(SOURCE, `WTF: update error, ${JSON.stringify(err)}`);\n });\n\n }\n });\n }\n\n\n }\n\n\n private updatePinPosition(pin: RwPin) {\n let marker = this.findMarker(pin);\n if (marker) {\n this.updateMarkerPosition(pin, marker);\n this.focusPin(pin, true, false);\n } else {\n RwLog.log(\"RwPlannerMap.updatePinPosition\", \"refreshing rt, marker not found\");\n this.refreshRoute();\n }\n }\n\n\n //#endregion Site Actions\n\n\n //#region Task Actions\n\n\n onTaskView() {\n this.forceViewPopup();\n this.showMenuTaskPin = false;\n }\n\n\n onTaskEdit(newTask: RwStop | undefined) {\n const self = this;\n this.showMenuTaskPin = false;\n if ((self.pinClicked && self.pinClicked.task) || newTask) {\n let stop;\n if (newTask) {\n stop = newTask;\n } else {\n stop = self.pinClicked.task;\n if (this.space.selectedPin != self.pinClicked) {\n this.space.setPinSelection(self.pinClicked, true, false);\n }\n }\n\n self\n .globals.showStopEdit(stop)\n .then(isCommit => {\n if (isCommit) {\n self.globals.commitTasks();\n self.globals.showSnack(\"Task Edited\", \"success\");\n }\n //console.log(\"RwPlannerList.onEditStopClick\", \"showStopEdit callback\", updated.name);\n })\n .catch(err => {\n self.globals.showSnack(\"Task Edit FAILED\", \"error\");\n //console.log(\"RwPlannerList.onEditStopClick\", \"Unhandled Error: \", err.toString());\n })\n }\n }\n\n\n onTaskDelete() {\n const self = this;\n let pin = self.pinClicked;\n this.showMenuTaskPin = false;\n\n this.space.onTaskDelete(pin)\n .then(() => {\n //console.log(\"onDeleteSiteClick SUCCESS!!!\");\n self.removePinFromMap(pin, self.globals.taskPins);\n })\n .catch(err => {\n RwLog.consoleError(\"WTF: onDeleteSiteClick FAIL\", err.toString());\n })\n }\n\n onTaskRelocate() {\n const self = this;\n const SOURCE = \"RwPlannerMap.onTaskRelocate\";\n\n let pin = self.pinClicked;\n this.showMenuTaskPin = false;\n\n let task = pin.task;\n if (task) {\n //console.log(\"onSiteRelocate lat, lng\", site.lat, site.lng);\n\n self.globals\n .showReloPicker(task.name, task.lat, task.lng)\n .then(coord => {\n if (coord) {\n //console.log(\"RwPlannerMap.onSiteRelocate showReloPicker callback\", coord.lat, coord.lng);\n let priLat = task.lat;\n let priLng = task.lng;\n\n task.lat = coord.lat;\n task.lng = coord.lng;\n\n self.globals\n .updateStopDB(task)\n .then(isCommit => {\n //console.log(\"updateSiteDB isCommit\", isCommit);\n if (isCommit) {\n //self.globals.showSnack(\"Task location updated.\", \"success\");\n task.lastHash = Date.now();\n pin.lat = coord.lat;\n pin.lng = coord.lng;\n self.updatePinPosition(pin);\n //self.space.setPinSelection(pin, true, true);\n //self.globals.targetFocusId = task.stopId;\n //self.globals.commitTasks();\n } else {\n //rollback update\n task.lat = priLat;\n task.lng = priLng;\n self.globals.showSnack(\"Task relocation failed.\", \"error\");\n }\n })\n .catch(err => {\n //rollback update\n task.lat = priLat;\n task.lng = priLng;\n self.globals.showSnack(\"Task relocation failed.\", \"error\");\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n });\n\n }\n });\n }\n\n\n }\n\n\n //#endregion Task Actions\n\n\n //#region Driver Actions\n\n\n onDriverView() {\n const self = this;\n self.showMenuDriverPin = false;\n let pin = self.pinClicked;\n this.forceViewPopup();\n }\n\n\n onDriverEdit() {\n const self = this;\n self.showMenuDriverPin = false;\n\n let pin = self.pinClicked;\n if (pin && pin.driver) {\n this.globals.showDriverEdit(pin.driver)\n // if (this.space.selectedPin != pin) {\n // this.space.setPinSelection(pin, true, false);\n // }\n // this.globals.showEditDriver = true;\n }\n }\n\n\n onDriverDelete() {\n const self = this;\n self.showMenuDriverPin = false;\n\n let pin = self.pinClicked;\n //DEFER: ACTIONS: MAP: onDeleteDriverClick\n }\n\n\n //#endregion Driver Actions\n\n\n //#region Cluster Actions\n\n\n onClusterClick(pin: RwPin) {\n this.globals.selectedClusterPin = pin;\n this.globals.showClusterPicker = true;\n }\n\n\n isClusterCompleted(): boolean {\n let isComplete = false;\n let pin = this.pinClicked;\n if (pin && pin.isCluster) {\n let clustered = pin.clusteredPins;\n let completeCount = clustered.filter(p => p.stop && p.stop.isComplete).length;\n if (completeCount === clustered.length) {\n isComplete = true;\n }\n }\n return isComplete;\n }\n\n\n onClusterView() {\n let pin = this.pinClicked;\n if (pin && pin.isCluster) {\n this.onClusterClick(pin);\n }\n this.showMenuClusterPin = false;\n }\n\n\n onClusterDelete() {\n const self = this;\n self.showMenuClusterPin = false;\n\n let cluster = this.pinClicked;\n if (cluster && cluster.isCluster) {\n let clustered = cluster.clusteredPins;\n let stops = clustered.map(p => p.stop);\n stops = stops.filter((value, index, self) => self.findIndex(s => s.stopId === value.stopId) === index);\n this.globals\n .confirmAndDeleteStops(stops, [\"RwPlannerMap.onClusterDelete\"])\n .then(() => {\n self.removePinFromMap(cluster)\n })\n\n }\n }\n\n\n onClusterCheckIn() {\n const self = this;\n self.showMenuClusterPin = false;\n\n let cluster = this.pinClicked;\n if (cluster && cluster.isCluster) {\n let clustered = cluster.clusteredPins;\n let gotCommits = false;\n clustered.forEach(p => {\n self.space\n .checkInStopPin(p)\n .then((isCommitted) => {\n //console.log(\"onClusterChecking\", \"checkInStopPin, isCommitted\", isCommitted)\n if (isCommitted) {\n gotCommits = true;\n self.updatePin(p)\n }\n })\n })\n\n if (gotCommits) {\n //self.space.setClusterSelect(cluster, this.space.selectedPins, true);\n self.updatePin(cluster)\n }\n\n }\n }\n\n onClusterRestore() {\n const self = this;\n self.showMenuClusterPin = false;\n\n let cluster = this.pinClicked;\n if (cluster && cluster.isCluster) {\n let clustered = cluster.clusteredPins;\n let gotCommits = false;\n clustered.forEach(p => {\n self.space\n .restoreStopPin(p)\n .then((isCommitted) => {\n if (isCommitted) {\n gotCommits = true;\n self.updatePin(p)\n }\n })\n })\n\n if (gotCommits) {\n self.updatePin(cluster)\n }\n\n }\n }\n\n\n //#endregion Cluster Actions\n\n\n //#region Map Refresh Ops\n\n\n refreshAll() {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshAll\"\n //console.log(SOURCE);\n\n //Check if pins require lazy init; occurs if planner is not 1st view\n if (RwPrefUtils.showDataLayerRoute) {\n if (this.isMapReady) {\n this.refreshRoute();\n }\n }\n\n //xTEST: Might be overkill, but this fixes login w/sites & tasks not displayed\n\n if (RwPrefUtils.showDataLayerSites) {\n setTimeout(() => {\n let start = Date.now()\n self.refreshSites();\n let elapsed = Date.now() - start;\n RwLog.consoleWarn(SOURCE, `sites loaded: ${elapsed}ms`);\n }, 5000)\n //this.refreshSites(); xxx\n }\n\n if (RwPrefUtils.showDataLayerTasks) {\n setTimeout(() => {\n let start = Date.now()\n this.refreshTasks()\n let elapsed = Date.now() - start;\n RwLog.consoleWarn(SOURCE, `tasks loaded: ${elapsed}ms`);\n }, 7500);\n }\n\n }\n\n\n refreshRoute() {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshRoute\";\n //console.warn(SOURCE);\n\n if (RwPrefUtils.showDataLayerRoute) {\n if (this.map && this.activeRoute && self.isMapReady) {\n this.isRenderedRoute = true;\n //console.error(SOURCE, `${this.activeRoute.name} (${this.activeRoute.stops.length})`);\n let route = this.activeRoute;\n let isSameRoute = route.routeId === this.lastRenderedRouteId;\n this.lastRenderedRouteId = route.routeId;\n\n if (isSameRoute) {\n this.refreshRouteDelta();\n } else {\n this.refreshRouteFull();\n }\n }\n }\n }\n\n\n refreshRouteFull() {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshRouteFull\";\n //console.warn(SOURCE);\n\n let route = this.activeRoute;\n\n this.clearRouteMarkers();\n\n self.refreshStartPin();\n\n self.refreshDriverPin(route.driverId);\n\n let pins = this.space.stopPinsFiltered;\n if (pins) {\n\n let idxClusterIds: string[] = [];\n let clusterPins = self.createClusterPins(pins);\n if (clusterPins && clusterPins.length > 0) {\n\n //Create index of flattened cluster pin ids\n clusterPins.forEach(cp => {\n cp.clusteredPins.forEach(p => {\n idxClusterIds.push(p.id);\n })\n });\n\n // Add Clustered Stops\n clusterPins.forEach(clusterPin => {\n //console.log(SOURCE, \"PRE clusterPin.dataUrlAsync type, subType\", clusterPin.type, clusterPin.subType, clusterPin.seq);\n\n let url = self.globals.idxURL[clusterPin.urlHash];\n if (url && url.length > 0) {\n self.addPin(clusterPin, url, clusterPin.zIndex, null, 1);\n } else {\n clusterPin\n .dataUrlAsync()\n .then(pinUrl => {\n self.addPin(clusterPin, pinUrl, clusterPin.zIndex, null, 1);\n });\n }\n });\n }\n\n\n let soloPins = pins.filter(p => idxClusterIds.indexOf(p.id) === -1)\n this.cacheStopPinSet(soloPins);\n\n\n // Add Stops (non-clustered)\n soloPins.forEach(stopPin => {\n let url = self.globals.idxURL[stopPin.urlHash];\n if (url && url.length > 0) {\n self.addPin(stopPin, url, stopPin.zIndex, null, 1);\n } else {\n stopPin\n .dataUrlAsync()\n .then(pinUrl => {\n //console.log(SOURCE, \"stopPin addPin\", stopPin.title);\n self.addPin(stopPin, pinUrl, stopPin.zIndex, null, 1);\n });\n }\n });\n\n this.updatePolyline(route);\n\n //Zoom To Route\n this.zoomCheck(route);\n\n }\n\n }\n\n isRefreshing = false\n gotRefreshOnDeck = false\n startPinCache: RwPin\n driverPinCache: RwPin\n stopPinCache: RwPin[] = []\n refreshRouteDeltaTS: number = 0;\n\n\n refreshRouteDelta() {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshRouteDelta\";\n //console.log(SOURCE);\n\n let route = this.activeRoute;\n if (this.isRefreshing) {\n //console.log(\"isRefreshing SKIP\")\n this.gotRefreshOnDeck = true;\n } else {\n this.isRefreshing = true;\n this.gotRefreshOnDeck = false;\n\n //console.log(SOURCE, \"isRefreshing\")\n this.refreshStartPinDelta(route);\n this.refreshDriverPinDelta(route.driverId);\n\n let pins = this.space.stopPinsFiltered;\n if (pins) {\n\n //console.log(SOURCE, \"got filtered pins\", pins.length)\n let idxClusterIds: string[] = [];\n this.clearClusterMarkers();\n let clusterPins = self.createClusterPins(pins);\n if (clusterPins && clusterPins.length > 0) {\n\n //Create index of flattened cluster pin ids\n clusterPins.forEach(cp => {\n cp.clusteredPins.forEach(p => {\n idxClusterIds.push(p.id);\n })\n });\n\n // Add Clustered Stops\n clusterPins.forEach(clusterPin => {\n //console.log(SOURCE, \"PRE clusterPin.dataUrlAsync type, subType\", clusterPin.type, clusterPin.subType, clusterPin.seq);\n clusterPin\n .dataUrlAsync()\n .then(pinUrl => {\n //console.log(SOURCE, \"clusterPin addPin\", clusterPin.title);\n self.addPin(clusterPin, pinUrl, clusterPin.zIndex, null, 1);\n });\n\n });\n }\n\n // Add Stops (non-clustered)\n let soloPins = pins.filter(p => idxClusterIds.indexOf(p.id) === -1)\n //console.log(SOURCE, \"got soloPins pins\", soloPins.length)\n\n let deltas = RwDeltas.getDeltas(soloPins, this.stopPinCache, this.refreshRouteDeltaTS);\n this.cacheStopPinSet(soloPins);\n //deltas.print(SOURCE);\n if (deltas.gotAdds || deltas.gotRemoves || deltas.gotDeltas) {\n //console.log(SOURCE, \"targetFocusId\", self.globals.targetFocusId);\n deltas.adds.forEach(stopPin => {\n //console.log(SOURCE, \"ADD stopPin\", stopPin.title);\n let url = self.globals.idxURL[stopPin.urlHash];\n if (url && url.length > 0) {\n self.addPin(stopPin, url, stopPin.zIndex, null, 1);\n } else {\n stopPin\n .dataUrlAsync()\n .then(pinUrl => {\n //console.log(SOURCE, \"stopPin addPin\", stopPin.title);\n self.addPin(stopPin, pinUrl, stopPin.zIndex, null, 1);\n });\n }\n\n });\n //console.log(\"updateStopPins newPins POST ADDS\", newPins.length);\n\n deltas.removes.forEach(stopPin => {\n //console.log(SOURCE, \"REMOVE stopPin\", stopPin.title);\n if (stopPin) {\n self.removeMarker(stopPin, stopPin.marker)\n } else {\n RwLog.consoleError(\"remove without marker???\", stopPin.title)\n }\n });\n\n\n deltas.deltas.forEach(stopPin => {\n //let isNewer = stopPin.lastHash > this.refreshRouteDeltaTS;\n //console.warn(SOURCE, \"UPDATE stopPin\", stopPin.title);\n //console.warn(SOURCE, \"UPDATE stopPin\", stopPin.title, \"isNewer\", isNewer, \"lastHash:\", stopPin.lastHash, \"TS\", this.refreshRouteDeltaTS);\n this.updatePin(stopPin)\n });\n\n\n //this.plan.updateStopPins(deltas.adds, deltas.removes, deltas.deltas);\n } else {\n //console.warn(SOURCE, \"NO DELTAS\")\n }\n\n\n //xTEST: updatePolyline\n this.updatePolyline(route);\n\n //Zoom To Route\n this.zoomCheck(route);\n\n } else {\n //console.warn(SOURCE, \"NO PINS\")\n }\n\n this.isRefreshing = false;\n\n if (this.gotRefreshOnDeck) {\n setTimeout(() => this.refreshRouteDelta(), 100)\n }\n\n }\n\n }\n\n\n private refreshStartPinDelta(route: RwRoute) {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshStartPinDelta\"\n //console.log(SOURCE, route.routeId)\n let routePin = this.space.startPin;\n if (routePin) {\n let isCurrent = routePin.eid === route.routeId;\n if (isCurrent) {\n\n let gotStartDelta = route.lastHash > this.refreshRouteDeltaTS || routePin.lastHash > this.refreshRouteDeltaTS;\n if (gotStartDelta) {\n //console.log(SOURCE, \"UPDATE gotStartDelta\")\n if (routePin.marker) {\n\n let isUpdatedPosition = route.lat != routePin.lat || route.lng != routePin.lng;\n if (isUpdatedPosition && routePin.marker) {\n if (!(route.lat == 0 && route.lng == 0)) {\n routePin.lat = route.lat;\n routePin.lng = route.lng;\n self.updateMarkerPosition(routePin, routePin.marker)\n } else {\n this.globals.showSnack('Route start cannot be (0,0)', 'error');\n }\n }\n\n //console.log(SOURCE, \"UPDATE gotStartDelta updatePin\")\n this.updatePin(routePin);\n } else {\n RwLog.warn(SOURCE, `NO MARKER!`);\n // Refresh route instead of setting new pin to avoid duplicate pin\n this.refreshRoute();\n }\n } else {\n //console.log(SOURCE, \"NOOP: gotStartDelta\")\n }\n } else {\n RwLog.consoleError(SOURCE, \"WTF, NOT CURRENT!\")\n }\n } else {\n RwLog.consoleError(SOURCE, \"NO PIN!\")\n this.refreshStartPin();\n routePin = this.space.startPin;\n }\n\n this.startPinCache = routePin;\n return routePin;\n }\n\n\n private zoomCheck(route: RwRoute) {\n const self = this;\n let zoomTime = false;\n let gotNewRoute = route.routeId != this.lastZoomedRouteId;\n if (gotNewRoute) {\n //console.log(\"refreshRoute gotNewRoute zoomTime\");\n zoomTime = true;\n self.lastRouteLoadTime = route.loadTimeStops;\n\n let pin = this.space.startPin;\n if (pin) {\n self.space.setPinSelection(self.space.startPin, true, false);\n }\n } else {\n if (route.loadTimeStops > self.lastRouteLoadTime) {\n zoomTime = true;\n self.lastRouteLoadTime = route.loadTimeStops;\n }\n }\n\n if (zoomTime) {\n route.zoomedTo = true;\n //console.log(\"refreshRoute zoomToRoute\");\n self.resizeMapView();\n setTimeout(() => {\n if (self.zoomToRoute(true)) {\n self.lastZoomedRouteId = route.routeId;\n self.lastRenderedStopCount = route.stops.length;\n //resizeMapView will interfere with zoom animation\n setTimeout(() => self.resizeMapView(), 2500);\n }\n }, 1000); //Adjusting this allows time for map to prepare for zoom\n\n }\n }\n\n\n private cacheStopPinSet(pins: RwPin[]) {\n this.refreshRouteDeltaTS = Date.now();\n if (pins && pins.length > 0) {\n this.stopPinCache = [...pins];\n } else {\n this.stopPinCache = [];\n }\n }\n\n\n private gotRoutePinDelta(route: RwRoute): RwPin {\n let updatedPin: RwPin;\n let startPin = this.space.startPin;\n if (startPin) {\n let currHash = startPin.urlHash;\n let newPin = RwPin.fromRoute(route);\n let newHash = newPin.urlHash;\n let isDelta = currHash !== newHash;\n if (isDelta) {\n updatedPin = newPin;\n }\n //console.warn(\"gotRouteDelta\", isDelta, currHash, newHash);\n }\n return updatedPin;\n }\n\n\n private createClusterPins(pins: RwPin[]): RwPin[] {\n\n //Identify Stops Same Location Point\n let clusterPins: RwPin[] = [];\n if (pins.length > 1) {\n\n //xWIP: createClusterPins Short-Circuit: Check if there are any clusters\n //let gotClusters = pins.find(p => p.clusterParent\n\n let idxGeo: { [locHash: string]: RwPin[] } = {};\n pins.forEach(stopPin => {\n //DEFER: Consider if clustered Pins must have beyond location same dependencies (e.g. TW, Drops)\n let locHash = md5(`${stopPin.lat},${stopPin.lng}`, 8);\n if (idxGeo[locHash]) {\n idxGeo[locHash].push(stopPin);\n } else {\n let newPinArray = [stopPin];\n idxGeo[locHash] = newPinArray;\n }\n });\n\n //For locations with more than 1 stop; add to clusters list\n for (let key in idxGeo) {\n let geoCluster: RwPin[] = idxGeo[key];\n if (geoCluster.length >= 2) {\n let clusterPin = RwPin.fromStopPins(geoCluster);\n clusterPins.push(clusterPin);\n }\n }\n }\n\n return clusterPins;\n }\n\n\n private clearClusterMarkers() {\n let mapGroup = this.getMapGroupByType(RwPinTypes.Route);\n if (mapGroup) {\n let mapObjects = mapGroup.getObjects();\n //let stopMarkers = mapObjects.filter(mo => (mo as RwMarker).pinType === RwPinTypes.Stop).map(mo => mo as RwMarker);\n let stopMarkers = mapObjects.map(mo => mo as RwMarker);\n let clusterMarkers = stopMarkers.filter(m => m.pin && m.pin.isCluster);\n if (clusterMarkers.length > 0) {\n clusterMarkers.forEach(dm => mapGroup.removeObject(dm))\n }\n }\n }\n\n\n refreshStartPin() {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshStartPin\";\n\n if (this.map && this.activeRoute && self.isMapReady) {\n let route = this.activeRoute;\n\n //xTEST: refreshStartPin: selection | focus logic\n let setSelect = self.globals.targetSelectId && self.globals.targetSelectId === route.routeId;\n let setFocus = self.globals.targetFocusId && self.globals.targetFocusId === route.routeId;\n if (setFocus) {\n setSelect = true;\n }\n\n let routePin = RwPin.fromRoute(route);\n let anchor: H.math.Point = null;\n if (route.isDynLoc) {\n anchor = new H.math.Point(24, 24);\n }\n\n this.startPinCache = routePin;\n this.space.startPin = routePin;\n\n routePin\n .dataUrlAsync()\n .then(url => {\n\n //console.log(SOURCE, \"routePin addPin\", routePin.title);\n self\n .addPin(routePin, url, self.startPinZIndex, null, 1, anchor)\n .then(isAdded => {\n if (isAdded) {\n routePin.lastHash = Date.now();\n //console.log(\"refreshStartPin\", setSelect, setFocus);\n if (setSelect) self.space.setPinSelection(routePin, true);\n if (setFocus) self.focusPin(routePin, true, false);\n } else {\n RwLog.consoleError(\"WTF: refreshStartPin addPin FAILED\", routePin.type);\n }\n });\n });\n }\n }\n\n\n private addSitePins(pins, cachedUrl) {\n const self = this;\n pins.forEach(pin => {\n if (pin.eid === this.globals.targetSelectId) {\n let setFocus = pin.eid === this.globals.targetFocusId;\n self.space.setPinSelection(pin, true, setFocus);\n }\n self.addPin(pin, cachedUrl, 2, null, 40 / 48);\n })\n }\n\n\n refreshSites() {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshSites\"\n\n if (this.map && self.isMapReady && RwPrefUtils.showDataLayerSites) {\n this.clearSitePins();\n let pins = this.space.sitePinsFiltered;\n //console.warn(\"RwPlannerMap refreshSites\", this.refreshSitesCount, pins.length);\n\n //Add Sites\n if (pins) {\n pins.forEach(sitePin => {\n if (sitePin) {\n\n if (sitePin.eid === this.globals.targetSelectId) {\n let setFocus = sitePin.eid === this.globals.targetFocusId;\n self.space.setPinSelection(sitePin, true, setFocus);\n }\n\n let args = sitePin.imgArgs;\n let hash = RwPin.getPinHash(args);\n let cachedUrl = this.globals.idxURL[hash];\n if (cachedUrl) {\n self.addPin(sitePin, cachedUrl, 2, null, 40 / 48);\n } else {\n RwPin\n .calcSitePinUrlNew(hash, args)\n .then(dataUrl => {\n //console.log(SOURCE, \"sitePin addPin\", sitePin.title);\n self.addPin(sitePin, dataUrl, 2, null, 40 / 48);\n });\n\n }\n }\n });\n }\n }\n }\n\n\n refreshTasks() {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshTasks\"\n\n if (this.map && self.isMapReady && RwPrefUtils.showDataLayerTasks) {\n this.clearTaskPins();\n let pins = this.space.taskPinsFiltered;\n\n //Add Pins to Map\n if (pins) {\n pins.forEach(taskPin => {\n if (taskPin) {\n\n let args = taskPin.imgArgs;\n let hash = RwPin.getPinHash(args);\n let cachedUrl = this.globals.idxURL[hash];\n\n if (cachedUrl) {\n //console.warn(SOURCE, \"cachedUrl\", hash, cachedUrl);\n if (taskPin.eid === this.globals.targetSelectId) {\n let setFocus = taskPin.eid === this.globals.targetFocusId;\n self.space.setPinSelection(taskPin, true, setFocus);\n }\n self.addPin(taskPin, cachedUrl, taskPin.zIndex, null, 1);\n } else {\n if (taskPin.eid === this.globals.targetSelectId) {\n let setFocus = taskPin.eid === this.globals.targetFocusId;\n self.space.setPinSelection(taskPin, true, setFocus);\n }\n\n //console.warn(SOURCE, \"PRE calcTaskPinUrl\", hash);\n RwPin\n .calcTaskPinUrl(hash, args)\n .then(dataUrl => {\n self.addPin(taskPin, dataUrl, taskPin.zIndex, null, 1);\n });\n }\n }\n });\n }\n }\n }\n\n\n updatePolyline(route: RwRoute) {\n const self = this;\n if (route.path && route.path.length > 0) {\n self.clearPath();\n let coords = self.decodePath(route.path, 5);\n let strip = new H.geo.LineString() as any;\n coords.forEach(c => {\n strip.pushPoint(new H.geo.Point(c.lat, c.lng));\n });\n\n let polylineOpts: H.map.Polyline.Options = {\n //style: {lineWidth: 6, strokeColor: \"rgba(233,30,99,0.5)\"}, //E91E63\n style: {lineWidth: 6, strokeColor: \"rgba(33,245,218,0.76)\"},\n /*arrows: {\n fillColor: \"rgba(255, 255, 255,0.7)\",\n frequency: 4,\n width: 2,\n length: 4\n }*/\n };\n\n self.polyLine = new H.map.Polyline(strip, polylineOpts);\n self.mapGroupRoute.addObject(self.polyLine);\n self.polyString = route.path;\n } else {\n self.clearPath();\n }\n }\n\n\n refreshRouteInfo(route: RwRoute) {\n let self = this;\n\n //REFACTOR: This should be calculated fields on the route\n let travelText = \"\";\n let distText = \"\";\n let timeText = \"\";\n let warningText = \"\";\n let rtTimeText = \"\";\n\n if (route != null) {\n travelText = route.travelTimeText;\n distText = route.totalDistText;\n timeText = route.totalTimeString;\n warningText = route.fullVioText;\n rtTimeText = route.departureTimeString;\n }\n\n this.space.travelTimeText = travelText == null ? \"\" : \"Travel Time: \" + travelText;\n this.space.totalDistText = distText == null ? \"\" : \"Travel Dist: \" + distText;\n this.space.totalTimeText = timeText == null ? \"\" : \"Total Time: \" + timeText;\n this.space.routeTimeText = rtTimeText ? rtTimeText : \"\";\n this.space.routeWarningText = warningText;\n }\n\n\n //#endregion\n\n\n //region Helper Ops\n\n onMapOptions() {\n\n //xTEST: Remove\n // let realToken = RwPrefUtils.token;\n // RwPrefUtils.token = \"64e08c26-1757-48b2-879e-f97c99c80aa7\";\n // RwTaskMisc.getWebPrefs()\n // .then(prefs => {\n // RwPrefUtils.token = realToken;\n // if (prefs.FlexOptIn && prefs.FlexOptIn !== 0) {\n // RwPrefUtils.flexOptInSelected = prefs.FlexOptIn;\n // }\n // else {\n // RwTaskLicense.getLicenseCount().then(lc => {\n // if (lc.LicenseCount > 0 || theStore.drivers.length > 0) theStore.showFlexOptIn = true;\n // })\n // }\n // })\n // .catch(err => {\n // RwPrefUtils.token = realToken;\n // RwLog.consoleLog(\"onMapOptions\", `err: ${err}`)\n // })\n\n\n //xTEST: Remove\n // let jRoute = {\"nm\":\"September 30 Jordan \",\"rid\":\"28e6591f-623f-496e-bd29-ac7a194cda4d\",\"uid\":\"15326636-3931-4eac-bceb-f53299598169\",\"rnm\":\"September 30 Jordan \",\"ssm\":1601502180000,\"sem\":1601574180000,\"lat\":51.1966833,\"lon\":-114.5153631,\"om\":2,\"mode\":\"driving\",\"vio\":0,\"tdist\":63946,\"t2d\":4588,\"ttime\":5548,\"uhard\":true,\"ihstt\":false,\"ihstp\":false,\"idl\":true,\"t2i\":0,\"irt\":false,\"imo\":false,\"isArch\":false,\"isTemp\":false,\"isComp\":false,\"status\":0,\"assign\":0,\"rtime\":0,\"rdist\":0,\"note\":\"\",\"poly\":\"_jnwHvg}yTm@eC@_@fBoFzCoIlBsDxBcDdB|DhAdCdM}SlAgBmAhBqBdDgCyFiA_CeAa@_AA[iE_@mAaAyDuAoGtAnGx@bDiBnB{A|A_@d@GZCrJ\\\\|@lBzDyB`DqBtDyCnIyDDmNIEkAESE]BoGsA@qBA[GoCcBeBwAbAgFcFcDc@[fA{F`BoI}GqE`E}RpAkHvAiI?[l@cDn@aEnD_X`B}Ir@yCx@wCbAcDj@cBjBoEjDlAhAXhARdBTzCRxD?pCSnC[p@M`Hw@zQ}BjCWpACbCBbBVpF`ADc@p@{Cj@cAz@w@tAiCNg@|@kGd@sE`@Fp@@q@Aa@EB}MAgCoE]sAq@k@g@o@lCUr@a@p@_@T_@AsAi@gA}@iBw@yAb@AyB?mDB_@HC|Ah@fAh@fCjBV\\\\BN?V_@~@i@vArAh@^B^W^q@Vs@n@mCh@d@ZPx@^pGl@`JpAz@G~@_@h@q@`@s@Z_Af@_CrB{IlB|@x@TnDd@InACZGNMACKFuBjEj@{IkAy@QoB}@fBqHjC{ImCyClCxCmCzIeBpHyCvM[`Aa@p@i@p@_A`@}@F_JqAaAK@dCC|Me@pE}@jGOf@wAhCy@v@k@bAq@|CE`@jCf@\\\\H^@bCr@|A^~EzAnAZnATzAJ`ABnBGn@GxBc@~@WnAe@lAq@xB_B|@{@bF{Fzq@{x@|DcEdDoCtB{AjC_B|BoAbSsJ`EuBdBw@hDcBpDeB|HkDzD}A`A[hAYtAUxC_@v@GfCGnR?`Z@lOIv@BdQKhTBfBAbaB@tsAAng@FfEDb`@FrAA`f@@PBjY?lcAGpUDlHAzHIf}AMlsAK|KAzN?tED`FCvMIbAIt@KtBg@p@IfD?R@VX@XDRNTNHTAVWb@MxLC|KThAHlARvAX`Cp@`Br@xCfBnA|@hB~AzA~AlAxAdA~AbAdB`AlB~@tBz@rBv@xBhFhQvE|NrAlDrBbF`ArB|AtCjFfJ~@dB|ClFhDnFhArAhFjF~U`UhAdApA~@nAp@zAn@na@`P~F|BzAr@z@f@r@j@hArA`@n@jC~E~c@~|@jBnEp@dB|B`H~@jCjPzf@dGvQrAtDh@hBrAhE`[d_Ar@hBv@`Bn`@bq@dYxe@zAdCfAvAvAzAx\\\\`]|M~MvA|AhCbDXVXP~DLjBH`OxAzALpCJhB@lBAlESxAGnN{@hIIzqBAHgGDk|ADyDFmCJeBVcCRoAd@}Bp@sCfAyD`AsDd@mCXeCP_DHeDBcWB_BNuCRgCNkAb@yC\\\\{Az@{C~@iCbAaCbb@icAvAaE`AqERmA^aDTuDHkEBqj@?aq@H_FT}EZuCd@uC~@eEt@wBzAkDzA}CxAoCzAaDx@aCr@gCf@eCPmA^sC\\\\uFFmE@kCLie@E}CGkC[}E_@uCsDmRm@_EYuDG_AGaD@wDHwCvAiTP{Bf@qH\\\\wDzA}T\\\\eE\\\\cD\\\\gCv@yEPy@dJgj@dEmW^wEPsDB{B?kDC_BYaGUgC_@kCo@eD{Jce@{@oEy@aG[{DGgBEeBCwDK}pC@{BLgENiDTuDh@aFx@sF~@wEfAkEtAkEb@eAbAcChAwBrCwEtAkBtB}B|@y@`DeCvBmAxFeClCiApBaAxBqAjA}@xAmA`AgAz@eAt@aApAqBd@u@dAuBbBuDvAgEd@_BXcAl@oCl@kDh@{D\\\\qCVcDLmBJwCDsDBaCCgh@nADJZ@ri@KbFwApQDvfAEdc@@tcAE|AQ~@gD`Ho@lAyAlB{F`FeChB}HrDmEjEYqCVcG\",\"did\":\"9628f8f9-293c-4f3b-912f-d09f5c0bb6fc\",\"add\":\"51.19668, -114.51536\",\"avoids\":[]}\n // let route = new RwRoute(jRoute);\n // this.globals.copyRoute(route, RwRouteCopyType.AllStops)\n\n //RwTaskManifest.TestImportManifestV2();\n\n this.space.showMapOptions = true;\n }\n\n\n private forceViewPopup() {\n if (this.pinClicked) {\n if (this.space.selectedPin != this.pinClicked) {\n this.space.setPinSelection(this.pinClicked, true, false);\n }\n this.space.forceShowDataView();\n }\n }\n\n updateDynamicRouteStart() {\n if (this.activeRoute.isDynLoc && !!this.activeRoute.driver && (this.lastDrvLoc.lat !== this.activeRoute.driver.lat && this.lastDrvLoc.lng !== this.activeRoute.driver.lng)) {\n this.lastDrvLoc.lat = this.activeRoute.driver.lat;\n this.lastDrvLoc.lng = this.activeRoute.driver.lng;\n this.updateStartAtCoord(this.activeRoute.driver.lat, this.activeRoute.driver.lng, true);\n }\n }\n\n //endregion Helper Ops\n\n //#region LifeCycle\n\n\n created() {\n window.addEventListener(\"resize\", this.resizeViaWindow, {passive: true});\n }\n\n resizeViaWindow() {\n this.resizeMapView();\n }\n\n\n mounted() {\n //console.warn(`RwPlannerMap.mounted`);\n setTimeout(() => this.mapInit(), 100);\n RwEventBus.$on(RwEvents.RouteRefresh, () => {\n this.refreshRouteFull();\n });\n\n RwEventBus.$on(RwEvents.StopUpdate, (stopId) => {\n let stopPin = this.stopPins.find(s => s.stop && s.stop.stopId === stopId);\n if (stopPin && stopPin.marker) {\n //this.updateMarkerPosition(stopPin, stopPin.marker);\n this.removePinFromMap(stopPin);\n this.$nextTick(() => {\n this.addPin(stopPin, this.globals.idxURL[stopPin.urlHash], stopPin.zIndex, null, 1);\n })\n this.map.setCenter(new H.geo.Point(stopPin.lat, stopPin.lng), true);\n }\n });\n\n RwEventBus.$on(RwEvents.MapReRender, () => {\n this.resizeMapViewDelayed(1000);\n });\n }\n\n\n activated() {\n this.resizeMapView();\n\n const isFirstTime = this.isRenderedRoute == false;\n if (isFirstTime && this.isMapReady) {\n //console.error(\"RwPlannerMap.activated >> refreshView\");\n this.refreshAll();\n } else {\n //console.info(\"RwPlannerMap.activated SKIPPED refreshView\");\n }\n }\n\n\n destroyed() {\n window.removeEventListener(\"resize\", this.resizeViaWindow);\n }\n\n\n //#endregion\n\n\n onStopAddTask() {\n this.showMenuStopPin = false;\n this.space.addTaskFromPin(this.pinClicked)\n }\n\n get changePin(): RwPin {\n return this.space.changePin;\n }\n\n @Watch(\"changePin\")\n watchChangePin(val) {\n if (this.changePin) {\n this.updatePinPosition(this.space.changePin);\n this.space.changePin = null;\n }\n }\n\n}\n\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerMap.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerMap.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerMap.vue?vue&type=style&index=0&id=7213fbb6&prod&lang=scss&\"","import { render, staticRenderFns } from \"./RwPlannerMap.vue?vue&type=template&id=7213fbb6&\"\nimport script from \"./RwPlannerMap.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPlannerMap.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPlannerMap.vue?vue&type=style&index=0&id=7213fbb6&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// extracted by mini-css-extract-plugin\nexport {};","// Styles\nimport \"../../../src/components/VTimeline/VTimeline.sass\";\nimport mixins from '../../util/mixins'; // Mixins\n\nimport Themeable from '../../mixins/themeable';\nexport default mixins(Themeable\n/* @vue/component */\n).extend({\n name: 'v-timeline',\n\n provide() {\n return {\n timeline: this\n };\n },\n\n props: {\n alignTop: Boolean,\n dense: Boolean,\n reverse: Boolean\n },\n computed: {\n classes() {\n return {\n 'v-timeline--align-top': this.alignTop,\n 'v-timeline--dense': this.dense,\n 'v-timeline--reverse': this.reverse,\n ...this.themeClasses\n };\n }\n\n },\n\n render(h) {\n return h('div', {\n staticClass: 'v-timeline',\n class: this.classes\n }, this.$slots.default);\n }\n\n});\n//# sourceMappingURL=VTimeline.js.map","// Types\nimport mixins from '../../util/mixins';\nimport VIcon from '../VIcon'; // Mixins\n\nimport Themeable from '../../mixins/themeable';\nimport Colorable from '../../mixins/colorable';\nconst baseMixins = mixins(Colorable, Themeable\n/* @vue/component */\n);\nexport default baseMixins.extend().extend({\n name: 'v-timeline-item',\n inject: ['timeline'],\n props: {\n color: {\n type: String,\n default: 'primary'\n },\n fillDot: Boolean,\n hideDot: Boolean,\n icon: String,\n iconColor: String,\n large: Boolean,\n left: Boolean,\n right: Boolean,\n small: Boolean\n },\n computed: {\n hasIcon() {\n return !!this.icon || !!this.$slots.icon;\n }\n\n },\n methods: {\n genBody() {\n return this.$createElement('div', {\n staticClass: 'v-timeline-item__body'\n }, this.$slots.default);\n },\n\n genIcon() {\n if (this.$slots.icon) {\n return this.$slots.icon;\n }\n\n return this.$createElement(VIcon, {\n props: {\n color: this.iconColor,\n dark: !this.theme.isDark,\n small: this.small\n }\n }, this.icon);\n },\n\n genInnerDot() {\n const data = this.setBackgroundColor(this.color);\n return this.$createElement('div', {\n staticClass: 'v-timeline-item__inner-dot',\n ...data\n }, [this.hasIcon && this.genIcon()]);\n },\n\n genDot() {\n return this.$createElement('div', {\n staticClass: 'v-timeline-item__dot',\n class: {\n 'v-timeline-item__dot--small': this.small,\n 'v-timeline-item__dot--large': this.large\n }\n }, [this.genInnerDot()]);\n },\n\n genDivider() {\n const children = [];\n if (!this.hideDot) children.push(this.genDot());\n return this.$createElement('div', {\n staticClass: 'v-timeline-item__divider'\n }, children);\n },\n\n genOpposite() {\n return this.$createElement('div', {\n staticClass: 'v-timeline-item__opposite'\n }, this.$slots.opposite);\n }\n\n },\n\n render(h) {\n const children = [this.genBody(), this.genDivider()];\n if (this.$slots.opposite) children.push(this.genOpposite());\n return h('div', {\n staticClass: 'v-timeline-item',\n class: {\n 'v-timeline-item--fill-dot': this.fillDot,\n 'v-timeline-item--before': this.timeline.reverse ? this.right : this.left,\n 'v-timeline-item--after': this.timeline.reverse ? this.left : this.right,\n ...this.themeClasses\n }\n }, children);\n }\n\n});\n//# sourceMappingURL=VTimelineItem.js.map","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VLazy } from 'vuetify/lib/components/VLazy';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTimeline } from 'vuetify/lib/components/VTimeline';\nimport { VTimelineItem } from 'vuetify/lib/components/VTimeline';\nimport Scroll from 'vuetify/lib/directives/scroll';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"background-color\":\"white\"}},[_c(VRow,{staticStyle:{\"height\":\"48px\",\"width\":\"100%\",\"background-color\":\"green\"},attrs:{\"no-gutters\":\"\"}},[_c(VTabs,{class:_vm.backColor,attrs:{\"grow\":\"\",\"show-arrows\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTab,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showSteps),expression:\"showSteps\"}],key:\"0\",class:_vm.globals.backColorBar},[_vm._v(\"Itinerary\")]),_c(VTab,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showStops),expression:\"showStops\"}],key:\"1\",class:_vm.globals.backColorBar},[_vm._v(\"Stops\")]),_c(VTab,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showSites),expression:\"showSites\"}],key:\"2\",class:_vm.globals.backColorBar},[_vm._v(\"Favorites\")]),_c(VTab,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTasks),expression:\"showTasks\"}],key:\"3\",class:_vm.globals.backColorBar},[_vm._v(\"Tasks\")])],1)],1),_c(VRow,{staticStyle:{\"height\":\"calc(100% - 48px)\",\"width\":\"100%\",\"background-color\":\"green\"},attrs:{\"no-gutters\":\"\"}},[_c(VTabsItems,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticClass:\"rw-container tab-content timeline-tab\",class:_vm.globals.theme,staticStyle:{\"width\":\"100%\"},attrs:{\"no-gutters\":\"\"}},[_c('RwPlannerActions',{attrs:{\"stops\":_vm.stops,\"showAddStopsImage\":\"true\"},on:{\"addStop\":function($event){return _vm.$emit('addStop')},\"orderRoute\":function($event){return _vm.$emit('orderRoute')},\"assignToDriver\":function($event){return _vm.$emit('assignToDriver')}}}),_c(VRow,{staticClass:\"rw-container ma-0 pa-0\",staticStyle:{},attrs:{\"no-gutters\":\"\"}},[(_vm.idxTab === 0)?_c(VTimeline,{staticClass:\"smallText tab-content\",class:_vm.globals.theme,staticStyle:{\"width\":\"100%\",\"height\":\"100%\"},attrs:{\"fixed-header\":\"\",\"align-top\":\"\",\"dense\":\"\"},on:{\"click\":_vm.onTimeLine}},_vm._l((_vm.steps),function(step,idxStep){return _c(VTimelineItem,{key:idxStep,staticClass:\"text-left\",attrs:{\"color\":_vm.stepColor(step),\"small\":step.stepType === 1,\"left\":\"\"},on:{\"click\":function($event){return _vm.onStepBody(step)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('span',{class:_vm.stepTextColor(step),on:{\"click\":function($event){return _vm.onStepIcon(step)}}},[_c('strong',[_vm._v(_vm._s(_vm.stepSeqText(step)))])])]},proxy:true}],null,true)},[(step.stepType === 0)?_c('div',[_c(VRow,{staticClass:\"text--primary\",staticStyle:{\"height\":\"36px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":function($event){return _vm.onStepBody(step)}}},[_c(VCol,{attrs:{\"cols\":\"7\"}},[_vm._v(_vm._s(step.text))]),_c(VCol,{staticClass:\"text-right mr-8\"},[_vm._v(_vm._s(step.time))])],1)],1):_vm._e(),(step.stepType === 1)?_c('div',[_c(VRow,{staticClass:\"grey--text mb-2\",style:(`font-size: small;${_vm.globals.isMobileView?'height:auto;':'height:24px;'}`),attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\",attrs:{\"cols\":\"7\"}},[_vm._v(_vm._s(step.text))]),_c(VCol,{staticClass:\"text-right mr-8\"},[_vm._v(_vm._s(step.time))])],1)],1):(step.stepType === 2)?_c('div',[_c(VRow,{staticClass:\"text--primary\",staticStyle:{\"height\":\"36px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":function($event){return _vm.onStepBody(step)}}},[_c(VCol,{staticClass:\"text-left\",attrs:{\"cols\":\"7\"}},[_vm._v(_vm._s(step.text))]),_c(VCol,{staticClass:\"text-right mr-8\"},[_vm._v(_vm._s(step.time))])],1)],1):(step.stepType === 3)?_c('div',[_c(VRow,{staticClass:\"text--primary\",staticStyle:{\"height\":\"36px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":function($event){return _vm.onStepBody(step)}}},[_c(VCol,{attrs:{\"cols\":\"7\"}},[_vm._v(_vm._s(step.text))]),_c(VCol,{staticClass:\"text-right mr-8\"},[_vm._v(_vm._s(step.time))])],1)],1):(step.stepType === 4)?_c('div',[_c(VRow,{staticClass:\"text--primary\",staticStyle:{\"height\":\"36px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":function($event){return _vm.onStepBody(step)}}},[_c(VCol,[_vm._v(_vm._s(step.text))]),_c(VCol,{staticClass:\"text-right mr-8\"},[_vm._v(_vm._s(step.time))])],1)],1):_vm._e()])}),1):_vm._e()],1)],1),_c(VTabItem,{key:\"1\",staticClass:\"rw-container tab-content\"},[_c('RwPlannerActions',{attrs:{\"stops\":_vm.stops},on:{\"addStop\":function($event){return _vm.$emit('addStop')},\"orderRoute\":function($event){return _vm.$emit('orderRoute')},\"assignToDriver\":function($event){return _vm.$emit('assignToDriver')}}}),(_vm.idxTab === 1)?_c(VDataTable,{staticClass:\"tab-content\",class:_vm.globals.theme,attrs:{\"headers\":_vm.headerStops,\"items\":_vm.stopPins,\"disable-pagination\":\"\",\"multi-sort\":false,\"show-select\":_vm.isMultiMode,\"single-select\":_vm.isMultiMode === false,\"sort-by\":_vm.sortByStops,\"sort-desc\":_vm.sortDescStops,\"fixed-header\":\"\",\"hide-default-footer\":\"\",\"item-key\":\"id\",\"must-sort\":\"\"},on:{\"update:sortBy\":function($event){_vm.sortByStops=$event},\"update:sort-by\":function($event){_vm.sortByStops=$event},\"update:sortDesc\":function($event){_vm.sortDescStops=$event},\"update:sort-desc\":function($event){_vm.sortDescStops=$event},\"click:row\":_vm.onStopPinClick},scopedSlots:_vm._u([{key:\"item.baseOrder\",fn:function({ item }){return [_c('div',{staticClass:\"stop-icon-wrapper\"},[_c(VImg,{attrs:{\"src\":item.dataUrl ? item.dataUrl : '',\"contain\":\"\",\"height\":\"32\",\"width\":\"32\"}}),(item.stop && !!item.stop.siteId)?_c(VIcon,{staticClass:\"stop-favorite-icon\",attrs:{\"color\":_vm.getSiteColor(item.stop.siteId)}},[_vm._v(\" grade \")]):_vm._e()],1)]}},{key:\"item.title\",fn:function({ item }){return [_c('div',{staticClass:\"rw-cell\"},[_c('div',{staticClass:\"rw-cell-overflow\"},[_vm._v(\" \"+_vm._s(item.title)+\" \")])])]}},{key:\"item.address\",fn:function({ item }){return [_c('div',{staticClass:\"rw-cell\"},[(item.stop)?_c('div',{staticClass:\"rw-cell-overflow\"},[_vm._v(\" \"+_vm._s(item.stop.address)+\" \")]):_vm._e()])]}},(!_vm.isMultiMode)?{key:\"item.action\",fn:function({ item }){return [_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();}}},on),[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,true)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c(VListItemTitle,[_vm._v(\"More Actions\")])]},proxy:true}],null,true)},[_c(VSubheader,[_c(VImg,{staticClass:\"mr-2\",staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.pinClickedUrl(item)}}),_vm._v(\" \"+_vm._s(item ? item.title : '')+\" \")],1),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.onPinView(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Full Stop\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onEditStopClick(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit\")])],1),(_vm.globals.isActionAvailable(_vm.globals.Actions.deleteStops))?_c(VListItem,{on:{\"click\":function($event){return _vm.onDeleteStopClick(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete\")])],1):_vm._e(),(!_vm.space.isStopCompleted(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onStopCheckIn(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check-circle\")])],1),_c(VListItemTitle,[_vm._v(\"Check-In\")])],1):_c(VListItem,{on:{\"click\":function($event){return _vm.space.onStopRestore(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-checkbox-blank-circle\")])],1),_c(VListItemTitle,[_vm._v(\"Restore\")])],1),_c(VDivider),(_vm.space.canStopAddSite(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onStopAddSite(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-star\")])],1),_c(VListItemTitle,[_vm._v(\"Create Favorite\")])],1):_vm._e(),(_vm.space.canShowSkeds(item) && !_vm.space.isStopScheduled(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onStopAddSked(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemTitle,[_vm._v(\"Add Schedule\")])],1):_vm._e(),(_vm.space.canShowSkeds(item) && _vm.space.isStopScheduled(item) && _vm.globals.isActionAvailable(_vm.globals.Actions.deleteSked))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onStopRemoveSked(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemTitle,[_vm._v(\"Remove Schedule: \"+_vm._s(_vm.space.stopSkedText(item))+\" \")])],1):_vm._e(),(!_vm.space.hasDropStop(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onAddDropStop(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-package-variant\")])],1),_c(VListItemTitle,[_vm._v(\"Add Drop Stop\")])],1):_vm._e(),(_vm.space.hasDropStop(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onAddDropStop(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-package-variant\")])],1),_c(VListItemTitle,[_vm._v(\"Replace Drop Stop\")])],1):_vm._e(),(_vm.space.canShowRemoveDropStop(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onRemoveDropStop(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-package-variant-closed\")])],1),_c(VListItemTitle,[_vm._v(\"Remove Drop Stop (\"+_vm._s(_vm.space.getDropStopName(item))+\") \")])],1):_vm._e(),(_vm.space.canShowMarkFirst(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onStopMarkFirst(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-first\")])],1),_c(VListItemTitle,[_vm._v(\"Mark First\")])],1):_vm._e(),(_vm.space.canShowUnmarkFirst(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onStopUnmarkFirst(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-first\")])],1),_c(VListItemTitle,[_vm._v(\"Unmark First\")])],1):_vm._e(),(_vm.space.canShowMarkFinal(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onStopMarkFinal(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-last\")])],1),_c(VListItemTitle,[_vm._v(\"Mark Final\")])],1):_vm._e(),(_vm.space.canShowUnmarkFinal(item))?_c(VListItem,{on:{\"click\":function($event){return _vm.space.onStopUnmarkFinal(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-last\")])],1),_c(VListItemTitle,[_vm._v(\"Unmark Final\")])],1):_vm._e(),_c(VListItem,{on:{\"click\":function($event){return _vm.onStopRelocate(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-crosshairs\")])],1),_c(VListItemTitle,[_vm._v(\"Relocate Pin\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onStopMoveCopy(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItemTitle,[_vm._v(\"Move to Another Route\")])],1)],1)],1)]}}:null],null,true),model:{value:(_vm.selectedPins),callback:function ($$v) {_vm.selectedPins=$$v},expression:\"selectedPins\"}}):_vm._e()],1),_c(VTabItem,{key:\"2\",staticClass:\"rw-container tab-content\"},[_c('RwPlannerActions',{attrs:{\"stops\":_vm.stops},on:{\"addStop\":function($event){return _vm.$emit('addStop')},\"orderRoute\":function($event){return _vm.$emit('orderRoute')},\"assignToDriver\":function($event){return _vm.$emit('assignToDriver')}}}),(_vm.idxTab === 2)?_c(VDataTable,{directives:[{def: Scroll,name:\"scroll\",rawName:\"v-scroll:#virtualized-sites\",value:(_vm.onScrollSites),expression:\"onScrollSites\",arg:\"#virtualized-sites\"}],staticClass:\"tab-content\",class:_vm.globals.theme,attrs:{\"headers\":_vm.headerSites,\"items\":_vm.sitePins,\"id\":\"virtualized-sites\",\"multi-sort\":false,\"show-select\":_vm.isMultiMode,\"single-select\":_vm.isMultiMode === false,\"sort-by\":_vm.sortBySites,\"sort-desc\":_vm.sortDescSites,\"item-key\":\"id\",\"fixed-header\":\"\",\"must-sort\":\"\",\"disable-pagination\":\"\",\"hide-default-footer\":\"\"},on:{\"update:sortBy\":function($event){_vm.sortBySites=$event},\"update:sort-by\":function($event){_vm.sortBySites=$event},\"update:sortDesc\":function($event){_vm.sortDescSites=$event},\"update:sort-desc\":function($event){_vm.sortDescSites=$event},\"click:row\":_vm.onSitePinClick},scopedSlots:_vm._u([{key:\"item.baseOrder\",fn:function({ item }){return [_c(VLazy,[(item.isSite)?_c(VImg,{staticStyle:{\"margin-left\":\"4px\"},attrs:{\"src\":item.dataUrl ? item.dataUrl : '',\"height\":\"24\",\"width\":\"24\"}}):_vm._e(),(item.isSite === false)?_c(VImg,{attrs:{\"src\":item.dataUrl ? item.dataUrl : '',\"height\":\"32\",\"width\":\"32\"}}):_vm._e()],1)]}},{key:\"item.title\",fn:function({ item }){return [_c(VLazy,[_c('div',{staticClass:\"rw-cell\"},[_c('div',{staticClass:\"rw-cell-overflow\"},[_vm._v(\" \"+_vm._s(item.title)+\" \")])])])]}},{key:\"item.address\",fn:function({ item }){return [_c(VLazy,[_c('div',{staticClass:\"rw-cell\"},[_c('div',{staticClass:\"rw-cell-overflow\"},[_vm._v(\" \"+_vm._s(item.site.address)+\" \")])])])]}},{key:\"item.timeText\",fn:function({ item }){return [_c(VLazy,[_c('div',{staticClass:\"rw-cell\"},[_c('div',{staticClass:\"rw-cell-overflow\"},[_vm._v(\" \"+_vm._s(item.travelText)+\" \")])])])]}},(!_vm.isMultiMode)?{key:\"item.action\",fn:function({ item }){return [_c(VLazy,[_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();}}},on),[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,true)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_vm._v(\"Site Actions\")]),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.onPinView(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Full Favorite\")])],1),(!_vm.space.isSiteRouted(item))?[_c(VListItem,{on:{\"click\":function($event){return _vm.space.onSiteToRoute(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItemTitle,[_vm._v(\"Add To Open Route\")])],1)]:_vm._e(),_c(VListItem,{on:{\"click\":function($event){return _vm.onEditSiteClick(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit\")])],1),(_vm.globals.isActionAvailable(_vm.globals.Actions.deleteFavorite))?_c(VListItem,{on:{\"click\":function($event){return _vm.onDeleteSiteClick(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete\")])],1):_vm._e(),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.onSiteRelocate(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-crosshairs\")])],1),_c(VListItemTitle,[_vm._v(\"Relocate\")])],1)],2)],1)],1)]}}:null],null,true),model:{value:(_vm.selectedPins),callback:function ($$v) {_vm.selectedPins=$$v},expression:\"selectedPins\"}}):_vm._e()],1),_c(VTabItem,{key:\"3\",staticClass:\"rw-container tab-content\"},[_c('RwPlannerActions',{attrs:{\"stops\":_vm.stops},on:{\"addStop\":function($event){return _vm.$emit('addStop')},\"orderRoute\":function($event){return _vm.$emit('orderRoute')},\"assignToDriver\":function($event){return _vm.$emit('assignToDriver')}}}),(_vm.idxTab === 3)?_c(VDataTable,{directives:[{def: Scroll,name:\"scroll\",rawName:\"v-scroll:#virtualized-tasks\",value:(_vm.onScrollTasks),expression:\"onScrollTasks\",arg:\"#virtualized-tasks\"}],staticClass:\"tab-content\",class:_vm.globals.theme,attrs:{\"headers\":_vm.headerTasks,\"items\":_vm.tasks,\"id\":\"virtualized-tasks\",\"hide-default-footer\":\"\",\"multi-sort\":false,\"show-select\":_vm.isMultiMode,\"single-select\":_vm.isMultiMode === false,\"sort-by\":_vm.sortByTasks,\"sort-desc\":_vm.sortDescTasks,\"fixed-header\":\"\",\"item-key\":\"id\",\"must-sort\":\"\",\"disable-pagination\":\"\"},on:{\"update:sortBy\":function($event){_vm.sortByTasks=$event},\"update:sort-by\":function($event){_vm.sortByTasks=$event},\"update:sortDesc\":function($event){_vm.sortDescTasks=$event},\"update:sort-desc\":function($event){_vm.sortDescTasks=$event},\"click:row\":_vm.onTaskPinClick},scopedSlots:_vm._u([{key:\"item.baseOrder\",fn:function({ item }){return [_c(VLazy,[_c(VImg,{attrs:{\"src\":item.dataUrl ? item.dataUrl : '',\"contain\":\"\",\"height\":\"24\",\"width\":\"24\"}})],1)]}},{key:\"item.title\",fn:function({ item }){return [_c(VLazy,[_c('div',{staticClass:\"rw-cell\"},[_c('div',{staticClass:\"rw-cell-overflow\"},[_vm._v(\" \"+_vm._s(item.title)+\" \")])])])]}},{key:\"item.address\",fn:function({ item }){return [_c(VLazy,[_c('div',{staticClass:\"rw-cell\"},[_c('div',{staticClass:\"rw-cell-overflow\"},[_vm._v(\" \"+_vm._s(item.task.address)+\" \")])])])]}},(!_vm.isMultiMode)?{key:\"item.action\",fn:function({ item }){return [_c(VLazy,[_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();}}},on),[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,true)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_vm._v(\"Task Actions\")]),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.onPinView(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Full Task\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onEditTaskClick(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onTaskDelete(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.space.onTaskToRoute(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-arrow-right\")])],1),_c(VListItemTitle,[_vm._v(\"Add to Open Route\")])],1),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.onTaskRelocate(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-crosshairs\")])],1),_c(VListItemTitle,[_vm._v(\"Relocate\")])],1)],1)],1)],1)]}}:null],null,true),model:{value:(_vm.selectedPins),callback:function ($$v) {_vm.selectedPins=$$v},expression:\"selectedPins\"}}):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwStop} from \"@/app/dem/RwStop\";\n// import {RwPin} from \"@/app/dem/RwPin\";\n// import {RwDateUtils} from \"@/app/utils/RwDateUtils\";\n// import theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\n// import thePlanSpace, {RwPlannerSpace} from \"@/app/views//planner/RwPlannerSpace\";\n//import { selectedPin } from \"@/app/views/planner/RwPlannerSpace\"\n\n\nexport enum RwStepTypes { start, travel, stop, finish, offRoute}\n\n\nexport class RwStep {\n\n stepType: RwStepTypes;\n seq: number\n text: string;\n time: string;\n custColor: string;\n isSelected: boolean;\n stop: RwStop;\n route: RwRoute;\n\n // get globals(): RwGlobals {\n // return theGlobals;\n // }\n //\n // get space(): RwPlannerSpace {\n // return thePlanSpace;\n // }\n //\n // get stopPin():RwPin {\n // let pin:RwPin;\n // if(this.stop && this.stop.stopId){\n // let stopId = this.stop.stopId;\n // pin = this.space.stopPins.find(p => p.eid === stopId);\n // }\n // return pin;\n // }\n //\n //\n // get selectedPin():RwPin {\n // //return selectedPin.value;\n // return thePlanSpace.selectedPin\n // }\n //\n //\n // get stepColor() {\n // let stepColor = '';\n // if (this.custColor) {\n // stepColor = this.custColor;\n // }\n // else {\n // switch (this.stepType) {\n // //@formatter:off\n // case RwStepTypes.start: stepColor = '#6da848'; break;\n // case RwStepTypes.finish: stepColor = '#F00'; break;\n // case RwStepTypes.stop: stepColor = '#000'; break;\n // case RwStepTypes.travel: stepColor = '#3a3a3a'; break;\n // //@formatter:on\n // }\n // }\n // return stepColor;\n // }\n //\n //\n // get checkIsSelected():boolean{\n // let isSel = false;\n // let stop = this.stop;\n // let pin = this.stopPin;\n // if(stop && pin) {\n // //if (this.stepType == RwStepTypes.stop && this.pin && this.pin.stop) {\n // //let stop = this.pin.stop;\n // let selPin = this.selectedPin;\n // if (selPin && selPin.stop) {\n // isSel = selPin.stop.stopId === stop.stopId;\n // }\n // }\n // //console.warn(\"isSelected\", isSel);\n // return isSel;\n // }\n //\n //\n // get seqText(){\n // let seqText = '';\n // if (this.stepType == RwStepTypes.stop){\n // if(this.seq >= 1 && this.seq <= 240){\n // seqText = this.seq.toString();\n // }\n // }\n // return seqText;\n // }\n //\n //\n // static startStep(pin:RwPin, route:RwRoute): RwStep{\n // let step = new RwStep();\n // step.stepType = RwStepTypes.start;\n // step.seq = 0;\n // //step.pin = pin;\n // step.route = route;\n // step.text = \"START\";\n // if(route){\n // step.time = route.startTimeString;\n // }\n // return step;\n // }\n //\n //\n // static travelStep(stop:RwStop): RwStep{\n // let step = new RwStep();\n // //step.pin = pin;\n // step.stop = stop;\n // step.stepType = RwStepTypes.travel;\n // //step.seq = pin.seq - 0.5;\n // step.seq = stop.seq - 0.5;\n // step.text = \"travel to: \" + stop.address;\n // if(stop && stop.timeOfArr) {\n // //if(pin.stop && pin.stop.timeOfArr) {\n // //step.time = pin.stop.timeOfArr.toTimeString();\n // //step.time = pin.travelText;\n // step.time = stop.travelText;\n // }\n // return step;\n // }\n //\n //\n // static stopStep(stop:RwStop): RwStep {\n // let step = new RwStep();\n // //step.pin = pin;\n // step.stop = stop;\n // step.stepType = RwStepTypes.stop;\n // step.seq = stop.seq;\n // step.text = stop.name;\n //\n // step.isSelected = step.checkIsSelected;\n //\n // if (stop.timeOfArr) {\n // step.time = stop.timeText;\n // }\n //\n // if (step.isSelected) {\n // step.custColor = \"#FFFFFF\";\n // }\n // else {\n // if (stop.isActive) {\n // if (stop.baseColor) {\n // step.custColor = stop.baseColor;\n // }\n // }\n // else {\n // step.custColor = \"#595a5b\";\n // }\n // }\n // return step;\n // }\n //\n //\n // static lastTravelStep(route:RwRoute): RwStep{\n // let step: RwStep;\n // if(route.isRoundTrip) {\n // step = new RwStep();\n // step.stepType = RwStepTypes.travel;\n // step.text = \"return to start\"\n // if(route.stops && route.stops.length > 0) {\n // step.time = route.travelReturnText;\n // }\n // step.seq = route.stops.length + 0.5;\n //\n // }\n // return step;\n // }\n //\n //\n // static finishStep(route:RwRoute): RwStep{\n // let step = new RwStep();\n // step.stepType = RwStepTypes.finish;\n // step.text = \"FINISH\";\n // if(route && route.stops){\n // step.time = route.finishTimeString;\n // step.seq = route.stops.length + 1;\n // }\n // return step;\n // }\n //\n //\n // static offRouteStep(stop:RwStop): RwStep{\n // let step = new RwStep();\n // //step.pin = pin;\n // step.stop = stop;\n // step.stepType = RwStepTypes.offRoute;\n // //step.seq = pin.seq;\n // step.text = stop.name;\n // if(stop) {\n //\n // step.isSelected = step.checkIsSelected;\n // if(stop.isComplete){\n // step.time = RwDateUtils.formatDate(stop.checkDate);\n // }\n // else {\n // step.time = \"off-route\";\n // }\n //\n // if(step.isSelected){\n // step.custColor = \"#FFFFFF\";\n // }\n // else {\n // if (stop.isComplete) {\n // step.custColor = \"#595a5b\";\n // }\n // else {\n // if (stop.baseColor) {\n // step.custColor = stop.baseColor;\n // }\n // }\n //\n // // if (stop.isActive) {\n // // if (stop.baseColor) {\n // // step.custColor = stop.baseColor;\n // // }\n // // }\n // // else {\n // // step.custColor = \"#595a5b\";\n // // }\n // }\n //\n // }\n // return step;\n // }\n //\n\n}\n\n","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VItemGroup } from 'vuetify/lib/components/VItemGroup';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.globals.isMobile())?_c(VItemGroup,{staticClass:\"v-btn-toggle\",class:{ dark: _vm.globals.isDarkMode },staticStyle:{\"margin\":\"12px\",\"position\":\"relative\"},attrs:{\"id\":\"tab-actions\"}},[_c(VBtn,{staticStyle:{\"border-radius\":\"8px 0 0 8px\"},on:{\"click\":function($event){return _vm.$emit('addStop')}}},[_c(VIcon,{attrs:{\"left\":\"\",\"color\":\"primary\"}},[_vm._v(\" mdi-magnify \")]),_c('span',[_vm._v(\"Add stop\")])],1),_c(VBtn,{attrs:{\"disabled\":!_vm.stops.length},on:{\"click\":function($event){return _vm.$emit('orderRoute')}}},[_c('div',{staticClass:\"star-icons\"},[_c(VIcon,{staticClass:\"top\",attrs:{\"left\":\"\",\"color\":\"primary\"}},[_vm._v(\" mdi-star-four-points \")]),_c(VIcon,{staticClass:\"middle\",attrs:{\"left\":\"\",\"color\":\"primary\"}},[_vm._v(\" mdi-star-four-points \")]),_c(VIcon,{staticClass:\"bottom\",attrs:{\"left\":\"\",\"color\":\"primary\"}},[_vm._v(\" mdi-star-four-points \")])],1),_c('span',[_vm._v(\"Order route\")])]),_c(VBtn,{staticStyle:{\"border-radius\":\"0 8px 8px 0\"},attrs:{\"disabled\":!_vm.stops.length},on:{\"click\":function($event){return _vm.$emit('assignToDriver')}}},[_c(VIcon,{attrs:{\"left\":\"\",\"color\":\"primary\"}},[_vm._v(\" mdi-account-outline \")]),_c('span',[_vm._v(\"Assign to driver\")])],1),(_vm.showAddStopsImage && _vm.globals.showOnboardAddStopArrowActive && _vm.stops.length === 0)?_c('RwAddStopsArrow',{attrs:{\"id\":\"add-stops-image\"}}):_vm._e(),(_vm.showAddStopsImage && _vm.stops.length === 0)?_c('button',{attrs:{\"id\":\"add-stops-button\"},on:{\"click\":function($event){return _vm.$emit('addStop')}}},[_c('img',{attrs:{\"src\":\"/images/icons/add_stops.svg\"}}),_vm._v(\" Add some stops to your route\")]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('lottie',{attrs:{\"options\":_vm.defaultOptions,\"height\":380,\"width\":380},on:{\"animCreated\":_vm.handleAnimation}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"lavContainer\",style:(_vm.style)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./lottie.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./lottie.vue?vue&type=template&id=3c796cc7&\"\nimport script from \"./lottie.vue?vue&type=script&lang=js&\"\nexport * from \"./lottie.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue } from \"vue-property-decorator\";\nimport Lottie from 'vue-lottie';\nimport * as animationData from '@/assets/animations/add-stops-arrow.json';\n\n@Component({ components: { Lottie } })\nexport default class RwAddStopsArrow extends Vue {\n\n defaultOptions = { animationData: animationData };\n anim = null;\n\n handleAnimation(anim) {\n this.anim = anim;\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAddStopsArrow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAddStopsArrow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwAddStopsArrow.vue?vue&type=template&id=15174084&scoped=true&\"\nimport script from \"./RwAddStopsArrow.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwAddStopsArrow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"15174084\",\n null\n \n)\n\nexport default component.exports","\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport theGlobals, { RwGlobals } from \"@/app/RwGlobals\";\nimport { RwStop } from \"@/app/dem/RwStop\";\nimport RwAddStopsArrow from \"@/app/views/animations/RwAddStopsArrow.vue\";\n\n@Component({ components: { RwAddStopsArrow } })\nexport default class RwPlannerActions extends Vue {\n @Prop() stops: RwStop[];\n @Prop({ required: false, default: false }) showAddStopsImage: boolean;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerActions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerActions.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerActions.vue?vue&type=style&index=0&id=34b0455a&prod&lang=scss&\"","import { render, staticRenderFns } from \"./RwPlannerActions.vue?vue&type=template&id=34b0455a&\"\nimport script from \"./RwPlannerActions.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPlannerActions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPlannerActions.vue?vue&type=style&index=0&id=34b0455a&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\nimport moment from \"moment\";\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwMarker, RwPin} from \"@/app/dem/RwPin\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views//planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwMultiMode} from \"@/app/RwEnums\";\nimport {RwStep, RwStepTypes} from \"@/app/dem/RwStep\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport RwEvents from \"@/app/consts/RwEvents\";\nimport RwPlannerActions from \"@/app/views/planner/RwPlannerActions.vue\";\n\n@Component({components: {RwPlannerActions}})\nexport default class RwPlannerList extends Vue {\n\n\n //#region Props\n\n idxTab = 0;\n stepsCount = 0;\n private lastPinClickTime;\n private lastPinClicked: RwPin = null;\n showOverflowMenu = false;\n\n get steps(): RwStep[] {\n let stops = this.stops;\n let selectPin = this.space.selectedPin;\n let selectId = selectPin ? selectPin.eid : null;\n let steps = this.genSteps(stops, selectId);\n return steps;\n }\n\n set steps(val: RwStep[]) {\n this.space.steps = val;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get activeRoute(): RwRoute {\n return this.space.activeRoute;\n }\n\n get selectedPin(): RwPin {\n let selPin: RwPin;\n if (this.space.isMultiMode == false) {\n let selPins = this.selectedPins;\n if (selPins && selPins.length > 0) {\n selPin = selPins[0];\n }\n }\n //console.warn(\"RwPinPanel.selectedPin\");\n return selPin;\n }\n\n get headerStops(): any[] {\n return [\n {text: \"\", align: \"center\", value: \"baseOrder\"},\n {text: \"Name\", align: \"left\", value: \"title\"},\n {text: \"Address\", value: \"address\"},\n {\n text: \"Actions\",\n value: \"action\",\n width: 48,\n align: \"center\",\n divider: \"true\",\n sortable: false\n }\n ];\n }\n\n get headerSites(): any[] {\n return [\n {text: \"\", align: \"center\", value: \"baseOrder\"},\n {text: \"Name\", align: \"left\", value: \"title\"},\n {text: \"Address\", value: \"address\"},\n {\n text: \"Actions\",\n value: \"action\",\n width: 48,\n align: \"center\",\n divider: \"true\",\n sortable: false\n }\n ];\n }\n\n get headerTasks(): any[] {\n return [\n {text: \"\", align: \"center\", value: \"baseOrder\"},\n {text: \"Name\", align: \"left\", value: \"title\"},\n {text: \"Address\", value: \"address\"},\n {\n text: \"Actions\",\n value: \"action\",\n width: 48,\n align: \"center\",\n divider: \"true\",\n sortable: false\n }\n ];\n }\n\n\n get selectedPins(): RwPin[] {\n //console.log(\"RwPlannerList GET selectedPins\", this.space.selectedPins);\n return this.space.selectedPins;\n }\n\n set selectedPins(val: RwPin[]) {\n //console.log(\"RwPlannerList SET selectedPins\", val);\n this.space.selectedPins = val;\n }\n\n get sortByStops(): string[] {\n return RwPrefUtils.plannerSortByStops;\n }\n\n set sortByStops(val: string[]) {\n RwPrefUtils.plannerSortByStops = val;\n }\n\n get sortDescStops(): boolean[] {\n return RwPrefUtils.plannerSortDescStops;\n }\n\n set sortDescStops(val: boolean[]) {\n RwPrefUtils.plannerSortDescStops = val;\n }\n\n get sortBySites(): string[] {\n return RwPrefUtils.plannerSortBySites;\n }\n\n set sortBySites(val: string[]) {\n RwPrefUtils.plannerSortBySites = val;\n }\n\n get sortDescSites(): boolean[] {\n return RwPrefUtils.plannerSortDescSites;\n }\n\n set sortDescSites(val: boolean[]) {\n RwPrefUtils.plannerSortDescSites = val;\n }\n\n get sortByTasks(): string[] {\n return RwPrefUtils.plannerSortByTasks;\n }\n\n set sortByTasks(val: string[]) {\n RwPrefUtils.plannerSortByTasks = val;\n }\n\n get sortDescTasks(): boolean[] {\n return RwPrefUtils.plannerSortDescTasks;\n }\n\n set sortDescTasks(val: boolean[]) {\n RwPrefUtils.plannerSortDescTasks = val;\n }\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get showSteps(): boolean {\n return !this.isMultiMode;\n }\n\n get tasks(): RwPin[] {\n //return this.space.taskPins;\n return this.space.taskPinsFiltered;\n }\n\n @Prop() forceDropUpdate: boolean;\n\n @Watch(\"forceDropUpdate\")\n watchForceDropUpdate(item) {\n this.selectedPins = [this.stopPins.find(sp => sp.id !== item.id)];\n setTimeout(() => this.selectedPins = [item], 500);\n }\n\n get stopPins(): RwPin[] {\n //let stopPins = this.space.stopPins;\n let stopPins = this.space.stopPinsFiltered;\n return stopPins;\n }\n\n get sitePins(): RwPin[] {\n //let sitePins = this.space.sitePins;\n let sitePins = this.space.sitePinsFiltered;\n return sitePins;\n }\n\n get stops(): RwStop[] {\n return this.space.activeRoute && this.space.activeRoute.stops ? this.space.activeRoute.stops : [];\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get isMultiMode(): boolean {\n return this.space.multiMode != RwMultiMode.none;\n }\n\n get showTasks(): boolean {\n let canShow = this.space.showDataLayerTasks && (this.globals.isDisp && (!this.isMultiMode || this.space.multiMode == RwMultiMode.tasks));\n return canShow;\n }\n\n\n get showStops(): boolean {\n let canShowStops = this.space.showDataLayerRoute && (!this.isMultiMode || this.space.multiMode == RwMultiMode.stops);\n return canShowStops;\n }\n\n get showSites(): boolean {\n return this.space.showDataLayerSites && (!this.isMultiMode || this.space.multiMode == RwMultiMode.sites);\n }\n\n get siteColor(): string {\n return RwPrefUtils.siteColor;\n }\n\n updatePin(pin: RwPin) {\n const self = this;\n const SOURCE = \"RwPlannerList.updatePin\"\n //console.log(\"updatePin:\", pin.title);\n\n if (pin) {\n let isClusterChild = !!pin.clusterParent\n if (!isClusterChild) {\n let marker = pin.marker;\n if (marker) {\n self.updateMarker(pin, marker);\n }\n } else {\n //NOTE: Cluster Children do not have markers\n let cluster = pin.clusterParent;\n if (cluster.marker) {\n cluster.invalidatePinImage();\n self.updateMarker(cluster, cluster.marker);\n }\n\n pin.invalidatePinImage();\n pin.lastHash = Date.now();\n //console.log(SOURCE, pin.title, pin.urlHash, pin.imgArgs);\n\n }\n\n } else {\n RwLog.consoleError(\"WTF: No Map || No Pin - List\");\n }\n }\n\n\n updateMarker(pin: RwPin, marker: RwMarker) {\n const self = this;\n const SOURCE = 'RwPlannerList.updateMarker';\n //console.log(\"updateMarker:\", pin.title);\n\n if (pin && marker) {\n pin.invalidatePinImage();\n pin.lastHash = Date.now();\n\n let url = thePlanSpace.globals.idxURL[pin.urlHash];\n if (url && url.length > 0) {\n self.setMapMarker(pin, marker, url);\n } else {\n pin\n .dataUrlAsync()\n .then(dataUrl => {\n self.setMapMarker(pin, marker, dataUrl);\n });\n }\n } else {\n RwLog.consoleError(SOURCE, \"WTF: updateMarker: no marker\");\n }\n }\n\n private setMapMarker(pin: RwPin, marker: RwMarker, dataUrl: string) {\n const SOURCE = 'RwPlannerMap.setMapMarker';\n //console.log(SOURCE, pin.title);\n const self = this;\n let zIndex = pin.zIndex;\n let iconSize = self.globals.getIconSize(pin.type);\n let anchor = self.globals.getAnchorPoint(pin.type);\n let iconOpts = {} as H.map.Icon.Options;\n if (anchor) iconOpts.anchor = anchor;\n if (iconSize) iconOpts.size = iconSize;\n let icon = new H.map.Icon(dataUrl, iconOpts);\n marker.setZIndex(zIndex); //Note: setZIndex must be called prior to setIcon\n marker.setIcon(icon);\n marker.invalidate(0);\n //console.warn(SOURCE, \"POST marker.invalidate\", pin.title, pin.baseColor);\n }\n\n\n //#endregion\n\n\n //region Virtualization POC\n\n start = 0;\n timeout = null;\n rowHeight = 48;\n perPage = 50;\n\n onScrollSites(e) {\n // debounce if scrolling fast\n this.timeout && clearTimeout(this.timeout);\n\n this.timeout = setTimeout(() => {\n const {scrollTop} = e.target;\n const rows = Math.ceil(scrollTop / this.rowHeight);\n\n this.start = rows + this.perPage > this.sitePins.length ?\n this.sitePins.length - this.perPage : rows;\n\n this.$nextTick(() => {\n e.target.scrollTop = scrollTop;\n });\n }, 20);\n }\n\n /* scrollableTasks = [];\n _tasks = [];\n @Watch(\"idxTab\")\n watchIdxTab(val) {\n if(val === 3){\n const met = () => {\n if(RwPrefUtils.sortByTasks === [\"baseOrder\"]){\n this._tasks = this.tasks;\n }else {\n const key = RwPrefUtils.sortByTasks[0];\n this._tasks = this.tasks.sort((a, b) => RwPrefUtils.sortDescTasks ? (a[key] < b[key]) ? 1 : -1 : (a[key] > b[key]) ? 1 : -1 );\n }\n this.scrollableTasks = this._tasks;\n console.log(this.scrollableTasks);\n }\n const timeout = () => setTimeout(() => !(this.tasks.length) ? timeout() : met(),20);\n timeout();\n }\n\n\n }*/\n\n onScrollTasks(e) {\n // debounce if scrolling fast\n this.timeout && clearTimeout(this.timeout);\n\n this.timeout = setTimeout(() => {\n const {scrollTop} = e.target;\n const rows = Math.ceil(scrollTop / this.rowHeight);\n\n this.start = rows + this.perPage > this.tasks.length ?\n this.tasks.length - this.perPage : rows;\n\n this.$nextTick(() => {\n e.target.scrollTop = scrollTop;\n });\n }, 20);\n }\n\n //endregion Virtualization POC\n\n\n //#region Watchers\n\n\n @Watch(\"space.multiMode\")\n watchSelectMode(mode: RwMultiMode) {\n //console.warn(`RwPlannerList.watchSelectMode mode:`, mode, this.idxTab);\n switch (mode) {\n //@formatter:off\n case RwMultiMode.stops:\n this.idxTab = 1;\n break;\n case RwMultiMode.sites:\n this.idxTab = 2;\n break;\n case RwMultiMode.tasks:\n this.idxTab = 3;\n break;\n default:\n this.idxTab = 0;\n break;\n //@formatter:on\n }\n\n //console.log(`RwPlannerList.watchSelectMode mode:`, mode, this.idxTab);\n }\n\n @Watch(\"space.showDropSelect\")\n watchDropStopSelect(val) {\n if (!val) this.updatePin(this.selectedPin);\n }\n\n @Watch(\"space.showDropRemove\")\n watchDropStopRemove(val) {\n if (!val) this.updatePin(this.selectedPin);\n }\n\n @Watch(\"space.showDataLayerRoute\")\n watchShowDataLayerRoute(val: boolean) {\n if (!val && this.idxTab === 1) {\n this.idxTab = 0;\n }\n }\n\n\n @Watch(\"space.showDataLayerSites\")\n watchShowLayerSites(val: boolean) {\n if (!val && this.idxTab === 2) {\n this.idxTab = 0;\n }\n }\n\n\n @Watch(\"space.showDataLayerTasks\")\n watchShowDataLayerTasks(val: boolean) {\n if (!val && this.idxTab === 3) {\n this.idxTab = 0;\n }\n }\n\n //#endregion\n\n\n //#region Data Ops\n\n getSiteColor(siteId: string) {\n if (siteId) {\n const site = theGlobals.sites.find(s => s.siteId === siteId);\n if (site) {\n return site.baseColor;\n }\n }\n return this.siteColor;\n }\n\n pinClickedUrl(pin: RwPin) {\n let url = ''\n if (pin) {\n url = pin.dataUrl ? pin.dataUrl : ''\n }\n return url;\n }\n\n onEditStopClick(pin: RwPin) {\n const self = this;\n if (pin && pin.stop) {\n let stop = pin.stop;\n if (this.selectedPin != pin) {\n this.space.setPinSelection(pin, true, false);\n }\n\n self\n .globals.showStopEdit(stop)\n .then(isCommit => {\n if (isCommit) {\n self.globals.showSnack(\"Stop Edited\", \"success\");\n }\n //console.log(\"RwPlannerList.onEditStopClick\", \"showStopEdit callback\", updated.name);\n })\n .catch(err => {\n self.globals.showSnack(\"Stop Edit FAILED\", \"error\");\n //console.log(\"RwPlannerList.onEditStopClick\", \"Unhandled Error: \", err.toString());\n })\n\n }\n }\n\n\n onDeleteStopClick(pin: RwPin) {\n const SOURCE = \"RwPlannerList.onDeleteStopClick\";\n let isStop = pin && pin.stop;\n if (isStop) {\n this.space.deleteStopPin(pin, [SOURCE])\n .then((deleted) => {\n if (deleted) {\n let isRouted = pin.stop && pin.stop.isRouted;\n if (isRouted) {\n this.space.activeRoute.path = \"\";\n this.globals.updateRouteDB(this.space.activeRoute, false)\n .then(updated => {\n if (updated) {\n RwEventBus.$emit(\"onRouteRefresh\");\n } else {\n RwLog.warn(SOURCE, `Unable to clear route path after stop del ${pin.stop.stopId}`);\n }\n })\n .catch(err => {\n RwLog.error(SOURCE, `Unable to clear route path after stop del ${pin.stop.stopId},\\n\\n err:${JSON.stringify(err)}`);\n });\n }\n }\n });\n }\n }\n\n\n onEditSiteClick(pin: RwPin) {\n if (pin && pin.site) {\n this.globals.showSiteEdit(pin.site);\n //this.space.editSitePin(pin);\n }\n }\n\n\n onDeleteSiteClick(pin: RwPin) {\n //console.log(\"onDeleteSiteClick\");\n let isSite = pin && pin.site;\n if (isSite) {\n this.space.onSiteDelete(pin);\n }\n }\n\n\n //#endregion\n\n\n //#region List Ops\n\n onEditTaskClick(pin: RwPin) {\n const self = this;\n if (pin && pin.task) {\n let stop = pin.task;\n if (this.selectedPin != pin) {\n this.space.setPinSelection(pin, true, false);\n }\n //this.space.showStopEdit = true;\n\n self\n .globals.showStopEdit(stop)\n .then(isCommit => {\n if (isCommit) {\n self.globals.commitTasks();\n self.globals.showSnack(\"Task Edited\", \"success\");\n }\n //console.log(\"RwPlannerList.onEditStopClick\", \"showStopEdit callback\", updated.name);\n })\n .catch(err => {\n self.globals.showSnack(\"Task Edit FAILED\", \"error\");\n //console.log(\"RwPlannerList.onEditStopClick\", \"Unhandled Error: \", err.toString());\n })\n }\n }\n\n\n onTaskDelete(pin: RwPin) {\n const SOURCE = \"RwPlannerList.onTaskDelete\";\n let isTask = pin && pin.task;\n if (isTask) {\n const self = this;\n this.space.onTaskDelete(pin)\n .then(() => {\n //console.log(\"delete success\");\n })\n .catch(ex => {\n RwLog.error(SOURCE, \"WTF: delete failed\");\n });\n }\n }\n\n\n stepTextColor(step: RwStep) {\n let textColor = 'white--text';\n if (step.isSelected) {\n textColor = 'black--text'\n } else {\n let isDark = RwImgUtils.isDark(this.stepColor(step));\n if (isDark) {\n textColor = 'white--text'\n } else {\n textColor = 'black--text'\n }\n\n }\n //return !step.isSelected || theGlobals.isDarkMode ? 'white--text' : 'black--text'\n return textColor;\n }\n\n\n genSteps(stops: RwStop[], selectId?: string): RwStep[] {\n const self = this;\n\n //console.warn(\"genSteps selectId\", selectId);\n\n let steps: RwStep[] = [];\n if (this.activeRoute) {\n //let pins = this.stopPins;\n this.stepsCount = this.stopPins.length;\n let activeStops = this.stops.filter(s => s.seq > 0 && s.seq <= 240 && s.isActive);\n activeStops.sort((a, b) => a.seq < b.seq ? -1 : a.seq > b.seq ? 1 : 0);\n\n let pin = this.space.startPin;\n //steps.push(RwStep.startStep(pin, this.activeRoute));\n steps.push(self.startStep(pin, this.activeRoute));\n activeStops.forEach(s => {\n if (s.isActive) {\n steps.push(self.travelStep(s));\n steps.push(self.stopStep(s));\n }\n });\n\n if (this.activeRoute.isRoundTrip) {\n let lastStep = self.lastTravelStep(this.activeRoute);\n if (lastStep) {\n steps.push(lastStep);\n }\n }\n steps.push(self.finishStep(this.activeRoute));\n\n\n // let offStops = stops.filter(s => s.seq <= 0 || s.seq > 240 || !s.isActive);\n let offStops = stops.filter(s => s.isRouted === false);\n\n offStops.sort((a, b) => {\n if (a.isComplete === b.isComplete) {\n if (a.isComplete) {\n return a.checkDate < b.checkDate ? -1 : 0;\n } else {\n return a.seq < b.seq ? -1 : a.seq > b.seq ? 1 : 0;\n }\n } else {\n return (!a.isComplete) ? -1 : 1;\n }\n });\n\n\n offStops.forEach(s => {\n let offStep = self.offRouteStep(s);\n steps.push(offStep);\n });\n\n }\n return steps;\n }\n\n\n onTimeLine() {\n //console.log(\"onTimeLine\");\n }\n\n\n onStepIcon(step: RwStep) {\n //console.log(\"onStepIcon\");\n this.onTimeItemClicked(step);\n }\n\n\n onStepBody(step: RwStep) {\n //console.log(\"onStepBody\");\n this.onTimeItemClicked(step);\n }\n\n private onTimeItemClicked(step: RwStep) {\n let pin: RwPin;\n if (step.stop) {\n let stopId = step.stop.stopId;\n pin = this.space.stopPins.find(p => p.eid === stopId);\n } else if (step.route) {\n pin = this.space.startPin.eid === step.route.routeId ? this.space.startPin : null;\n }\n\n if (pin) {\n this.togglePinSelect(pin);\n }\n }\n\n\n onStopPinClick(pin: RwPin, evt) {\n //console.log(\"onStopPinClick\", pin, evt)\n if (!this.space.isMultiMode) {\n this.togglePinSelect(pin);\n }\n }\n\n canStopShowMore(pin: RwPin): boolean {\n let canShow = false;\n if (pin && pin.stop) {\n let stop = pin.stop;\n if (!stop.isComplete) {\n canShow = true;\n }\n }\n return canShow;\n }\n\n onSitePinClick(pin: RwPin) {\n if (!this.space.isMultiMode) {\n this.togglePinSelect(pin);\n }\n }\n\n\n onTaskPinClick(pin: RwPin) {\n if (!this.space.isMultiMode) {\n this.togglePinSelect(pin);\n }\n }\n\n\n togglePinSelect(pin: RwPin) {\n if (pin) {\n //console.warn(\"RwPlannerList.togglePinSelect isSelected\", pin.title);\n let isSelected = this.space.isSelected(pin);\n if (isSelected) {\n // pin.isSelected = false;\n // this.space.deselectPin(pin);\n\n let isDoubleClick = this.isDoubleClick(pin);\n if (isDoubleClick) {\n this.space.forceShowDataView();\n }\n\n } else {\n //console.log(\"RwPlannerList.togglePinSelect\");\n this.space.setPinSelection(pin, true, true);\n }\n }\n }\n\n\n isDoubleClick(pin: RwPin): boolean {\n let isDoubleClick = false;\n\n if (pin && pin === this.lastPinClicked) {\n let timePassed = 0;\n if (this.lastPinClickTime) {\n timePassed = moment().diff(this.lastPinClickTime);\n if (timePassed < 500) {\n isDoubleClick = true;\n }\n // let elapsed = RwTextUtils.round4(timePassed);\n // console.log(\"elapsed time: \", elapsed, this.timeOfLastPinClick);\n }\n }\n this.lastPinClicked = pin;\n this.lastPinClickTime = moment();\n\n return isDoubleClick;\n }\n\n\n //#endregion\n\n\n //#region Step Ops\n\n stepPin(step: RwStep): RwPin {\n let pin: RwPin;\n if (step.stop && step.stop.stopId) {\n let stopId = step.stop.stopId;\n pin = this.space.stopPins.find(p => p.eid === stopId);\n }\n return pin;\n }\n\n\n stepColor(step: RwStep) {\n let stepColor = '';\n if (step.custColor) {\n stepColor = step.custColor;\n } else {\n switch (step.stepType) {\n //@formatter:off\n case RwStepTypes.start:\n stepColor = '#6da848';\n break;\n case RwStepTypes.finish:\n stepColor = '#F00';\n break;\n case RwStepTypes.stop:\n stepColor = '#000';\n break;\n case RwStepTypes.travel:\n stepColor = '#3a3a3a';\n break;\n //@formatter:on\n }\n }\n return stepColor;\n }\n\n\n stepIsSelected(step: RwStep): boolean {\n let isSelected = false;\n let stop = step.stop;\n let pin = this.stepPin(step);\n if (stop && pin) {\n let selPin = this.selectedPin;\n if (selPin && selPin.stop) {\n isSelected = selPin.stop.stopId === stop.stopId;\n }\n }\n //console.warn(\"isSelected\", isSel);\n return isSelected;\n }\n\n\n stepSeqText(step: RwStep) {\n let seqText = '';\n if (step.stepType == RwStepTypes.stop) {\n if (step.seq >= 1 && step.seq <= 240) {\n seqText = step.seq.toString();\n }\n }\n return seqText;\n }\n\n\n startStep(pin: RwPin, route: RwRoute): RwStep {\n let step = new RwStep();\n step.stepType = RwStepTypes.start;\n step.seq = 0;\n step.route = route;\n step.text = \"START\";\n if (route) {\n step.time = route.startTimeString;\n }\n return step;\n }\n\n\n travelStep(stop: RwStop): RwStep {\n let step = new RwStep();\n step.stop = stop;\n step.stepType = RwStepTypes.travel;\n step.seq = stop.seq - 0.5;\n step.text = \"travel to: \" + stop.address;\n if (stop && stop.timeOfArr) {\n step.time = stop.travelText;\n }\n return step;\n }\n\n\n stopStep(stop: RwStop): RwStep {\n let step = new RwStep();\n step.stop = stop;\n step.stepType = RwStepTypes.stop;\n step.seq = stop.seq;\n step.text = stop.name;\n\n step.isSelected = this.stepIsSelected(step);\n\n if (stop.timeOfArr) {\n step.time = stop.timeText;\n }\n\n if (step.isSelected) {\n step.custColor = \"#FFFFFF\";\n } else {\n if (stop.isActive) {\n if (stop.baseColor) {\n step.custColor = stop.baseColor;\n }\n } else {\n step.custColor = \"#595a5b\";\n }\n }\n return step;\n }\n\n\n lastTravelStep(route: RwRoute): RwStep {\n let step: RwStep;\n if (route.isRoundTrip) {\n step = new RwStep();\n step.stepType = RwStepTypes.travel;\n step.text = \"return to start\"\n if (route.stops && route.stops.length > 0) {\n step.time = route.travelReturnText;\n }\n step.seq = route.stops.length + 0.5;\n\n }\n return step;\n }\n\n\n finishStep(route: RwRoute): RwStep {\n let step = new RwStep();\n step.stepType = RwStepTypes.finish;\n step.text = \"FINISH\";\n if (route && route.stops) {\n step.time = route.finishTimeString;\n step.seq = route.stops.length + 1;\n }\n return step;\n }\n\n\n offRouteStep(stop: RwStop): RwStep {\n let step = new RwStep();\n step.stop = stop;\n step.stepType = RwStepTypes.offRoute;\n step.text = stop.name;\n if (stop) {\n\n step.isSelected = this.stepIsSelected(step);\n if (stop.isComplete) {\n step.time = RwDateUtils.formatDate(stop.checkDate);\n } else {\n step.time = \"not optimized\";\n }\n\n if (step.isSelected) {\n step.custColor = \"#FFFFFF\";\n } else {\n if (stop.isComplete) {\n step.custColor = \"#595a5b\";\n } else {\n if (stop.baseColor) {\n step.custColor = stop.baseColor;\n }\n }\n }\n\n }\n return step;\n }\n\n onPinView(item) {\n if (this.space.selectedPin != item) {\n this.space.setPinSelection(item, true, false);\n }\n this.space.forceShowDataView();\n }\n\n onStopRelocate(pin) {\n const SOURCE = \"RwPlannerList.onStopRelocate\";\n let stop = pin.stop as RwStop;\n if (stop) {\n //RwLog.log(SOURCE, `Starting stop relocate for stop: ${stop.stopId} @ ${stop.lat},${stop.lng}, \\n\\njson: ${JSON.stringify(stop)}`)\n this.globals\n .showReloPicker(stop.name, stop.lat, stop.lng)\n .then(coord => {\n //RwLog.log(SOURCE, `Stop relocate, back from relopicker, for stop: ${stop.stopId} @ ${stop.lat},${stop.lng} \\n\\n coord: ${JSON.stringify(coord)}`);\n if (coord) {\n let priLat = stop.lat;\n let priLng = stop.lng;\n\n stop.lat = coord.lat;\n stop.lng = coord.lng;\n\n //RwLog.log(SOURCE, `Stop relocate, before updatestopdb, for stop: ${stop.stopId} @ ${stop.lat},${stop.lng} \\n\\n stop: ${JSON.stringify(stop)}}`)\n this.globals\n .updateStopDB(stop)\n .then(isCommit => {\n if (isCommit) {\n stop.lastHash = Date.now();\n //pin.lat = coord.lat;\n //pin.lng = coord.lng;\n let stopPin = this.stopPins.find(p => p.stop && p.stop.stopId === stop.stopId);\n if (stopPin) {\n stopPin.lat = coord.lat;\n stopPin.lng = coord.lng;\n }\n let stopToUpdate = this.space.activeRoute.findStop(stop.stopId);\n if (stopToUpdate) {\n stopToUpdate.lat = coord.lat;\n stopToUpdate.lng = coord.lng;\n }\n RwEventBus.$emit(RwEvents.StopUpdate, stopToUpdate.stopId);\n //this.space.changePin = pin;\n if (stop.isRouted) {\n this.space.activeRoute.path = \"\";\n theGlobals.updateRouteDB(this.space.activeRoute, false)\n .then((updated) => {\n if (updated) {\n RwEventBus.$emit(RwEvents.RouteRefresh);\n } else {\n RwLog.warn(SOURCE, `Unable to clear route path after relocating stop, ${stop.stopId}, rt: ${stop.routeId}\\n\\n`);\n }\n })\n .catch(err => {\n RwLog.error(SOURCE, `Error clearing route path after relocating stop, ${stop.stopId}, rt: ${stop.routeId}\\n\\n\n err:${JSON.stringify(err)}`);\n });\n } else {\n RwEventBus.$emit(RwEvents.RouteRefresh);\n }\n } else {\n //rollback update\n stop.lat = priLat;\n stop.lng = priLng;\n }\n })\n .catch(err => {\n //rollback update\n RwLog.warn(SOURCE, `Stop relocate, in catch, rolling back update, for stop: ${stop.stopId} @ ${stop.lat},${stop.lng} \\n\\n err: ${JSON.stringify(err)}}`)\n stop.lat = priLat;\n stop.lng = priLng;\n });\n\n } else {\n RwLog.warn(SOURCE, `Stop relocate, back from relopicker, for stop: ${stop.stopId} @ ${stop.lat},${stop.lng} \\n\\n coord is null`)\n }\n });\n }\n }\n\n onStopMoveCopy(pin) {\n let pins = [pin];\n if (pins && pins.length > 0) {\n let route = this.activeRoute;\n let stops = pins.map(p => p.stop);\n this.space.selectedPins = pins;\n this.globals.multiCopy(route, stops);\n }\n }\n\n onSiteRelocate(pin) {\n const self = this;\n const SOURCE = \"RwPlannerList.onSiteRelocate\";\n let site = pin.site;\n if (site) {\n //console.log(SOURCE, \"lat, lng\", site.lat, site.lng);\n\n self.globals\n .showReloPicker(site.name, site.lat, site.lng)\n .then(coord => {\n if (coord) {\n let priLat = site.lat;\n let priLng = site.lng;\n\n site.lat = coord.lat;\n site.lng = coord.lng;\n\n self.globals\n .updateSiteDB(site, [SOURCE])\n .then(isCommit => {\n if (isCommit) {\n site.lastHash = Date.now();\n pin.lat = coord.lat;\n pin.lng = coord.lng;\n this.space.changePin = pin;\n } else {\n //rollback update\n site.lat = priLat;\n site.lng = priLng;\n self.globals.showSnack(\"Favorite relocation failed.\", \"error\");\n }\n })\n .catch(err => {\n //rollback update\n site.lat = priLat;\n site.lng = priLng;\n RwLog.consoleError(SOURCE, \"Update error\", err.toString());\n self.globals.showSnack(\"Favorite relocation failed.\", \"error\");\n });\n\n }\n });\n }\n }\n\n onTaskRelocate(pin) {\n const self = this;\n const SOURCE = \"RwPlannerMap.onTaskRelocate\";\n\n let task = pin.task;\n if (task) {\n\n self.globals\n .showReloPicker(task.name, task.lat, task.lng)\n .then(coord => {\n if (coord) {\n let priLat = task.lat;\n let priLng = task.lng;\n\n task.lat = coord.lat;\n task.lng = coord.lng;\n\n self.globals\n .updateStopDB(task)\n .then(isCommit => {\n if (isCommit) {\n task.lastHash = Date.now();\n pin.lat = coord.lat;\n pin.lng = coord.lng;\n this.space.changePin = pin;\n } else {\n //rollback update\n task.lat = priLat;\n task.lng = priLng;\n self.globals.showSnack(\"Task relocation failed.\", \"error\");\n }\n })\n .catch(err => {\n //rollback update\n task.lat = priLat;\n task.lng = priLng;\n self.globals.showSnack(\"Task relocation failed.\", \"error\");\n RwLog.consoleError(SOURCE, \"Update error\", err.toString());\n });\n\n }\n });\n }\n\n\n }\n\n //#endregion Step Ops\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerList.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerList.vue?vue&type=style&index=0&id=7cc9df21&prod&scoped=true&lang=scss&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerList.vue?vue&type=style&index=1&id=7cc9df21&prod&lang=scss&\"","import { render, staticRenderFns } from \"./RwPlannerList.vue?vue&type=template&id=7cc9df21&scoped=true&\"\nimport script from \"./RwPlannerList.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPlannerList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPlannerList.vue?vue&type=style&index=0&id=7cc9df21&prod&scoped=true&lang=scss&\"\nimport style1 from \"./RwPlannerList.vue?vue&type=style&index=1&id=7cc9df21&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7cc9df21\",\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VLazy } from 'vuetify/lib/components/VLazy';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDataTable,{staticClass:\"elevation-1 rw-inset darkMode ml-0\",class:_vm.globals.theme,staticStyle:{\"margin-left\":\"0\",\"padding-left\":\"0\"},style:(_vm.calcTableStyle),attrs:{\"items\":_vm.openRoutes,\"headers\":_vm.m_headers,\"items-per-page\":100,\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc,\"item-key\":\"routeId\",\"hide-default-footer\":\"\"},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event},\"update:sortDesc\":function($event){_vm.sortDesc=$event},\"update:sort-desc\":function($event){_vm.sortDesc=$event},\"click:row\":_vm.onRowClick},scopedSlots:_vm._u([{key:\"item.isSelected\",fn:function({ item }){return [(_vm.isSelected(item))?_c('div',{staticStyle:{\"background-color\":\"#E2004F\",\"height\":\"100%\",\"width\":\"4px\",\"margin-left\":\"-16px\",\"padding-top\":\"2px\",\"padding-bottom\":\"2px\"}}):_vm._e()]}},{key:\"item.name\",fn:function({ item }){return [_c('div',{staticClass:\"rw-cell\"},[_c('div',{staticClass:\"rw-cell-overflow\"},[_vm._v(\" \"+_vm._s(item.name)+\" \")])])]}},{key:\"item.assignment\",fn:function({ item }){return [_c(VLazy,[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VAvatar,{attrs:{\"size\":\"32\",\"icon\":\"\"}},[_c(VImg,{attrs:{\"src\":_vm.driverUrl(item),\"alt\":\"driverImage\"}})],1),_c(VCol,[_c('div',{staticClass:\"rw-cell\"},[_c('div',{staticClass:\"rw-cell-overflow\"},[_c('span',{staticClass:\"ml-0\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.driverName(item))+\" \")]),(item.assignCode !== 0)?_c('span',{class:item.getAssignTextStyle()},[_vm._v(\" \"+_vm._s(item.assignTextInline)+\" \")]):_vm._e()])])])],1)],1)]}},{key:\"item.statusCode\",fn:function({ item }){return [_c('span',{class:item.getStatusTextStyle()},[_vm._v(\" \"+_vm._s(item.routeStatusText)+\" \")])]}},{key:\"item.progress\",fn:function({ item }){return [_c(VTooltip,{attrs:{\"top\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VProgressLinear,_vm._g({attrs:{\"color\":item.getProgressColor(),\"height\":\"10\",\"value\":item.progress,\"striped\":\"\"}},on))]}}],null,true)},[_c('span',{staticStyle:{\"font-size\":\"small\",\"margin-left\":\"4px\"}},[_vm._v(\" \"+_vm._s(item.getProgressText())+\" \")])])]}},{key:\"item.action\",fn:function({ item }){return [_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();}}},on),[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,true)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_vm._v(\"Route Actions\")]),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.space.onRouteView(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"View Route\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.space.onRouteEdit(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit Route\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.onRouteCopy(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItemTitle,[_vm._v(\"Copy Route\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.globals.confirmAndArchiveRoute(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-archive\")])],1),_c(VListItemTitle,[_vm._v(\"Archive Route\")])],1),_c(VDivider),(_vm.globals.isDisp)?_c(VListItem,{on:{\"click\":function($event){return _vm.globals.assignRoute(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-account\")])],1),_c(VListItemTitle,[_vm._v(\"Assignment\")])],1):_vm._e(),_c(VListItem,{on:{\"click\":function($event){return _vm.globals.onRouteStatus(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Change Status\")])],1)],1)],1)]}}]),model:{value:(_vm.selectedRoutes),callback:function ($$v) {_vm.selectedRoutes=$$v},expression:\"selectedRoutes\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views//planner/RwPlannerSpace\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\n@Component\nexport default class RwPlannerStatus extends Vue {\n\n //#region Props\n\n counter = 0;\n showStatusMenu = false;\n showAssignMenu = false;\n clickRoute: RwRoute = null;\n\n get globals(): RwGlobals {\n return this.space.globals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get isDispatcher(): boolean {\n if (this.globals.isTeam && this.globals.isDisp) {\n return true;\n } else {\n return false;\n }\n }\n\n get m_headers() {\n return this.headers.filter(x => x.show)\n }\n\n get headers(): any[] {\n return [\n {value: \"isSelected\", align: 'left', sortable: false, width: 8, show: true},\n {text: \"Route\", value: \"name\", align: \"left\", show: true},\n {text: \"Assignment\", value: \"assignment\", align: \"left\", show: this.isDispatcher},\n {text: \"Status\", value: \"statusCode\", align: \"center\", width: 128, show: true},\n {text: \"Progress\", value: \"progress\", width: \"25%\", show: true},\n //{text: \"\", value: \"action\", width: 64},\n\n ];\n }\n\n get sortBy(): string {\n return RwPrefUtils.routeStatusSortBy;\n }\n\n set sortBy(val: string) {\n RwPrefUtils.routeStatusSortBy = val;\n }\n\n get sortDesc(): boolean {\n return RwPrefUtils.routeStatusSortDesc;\n }\n\n set sortDesc(val: boolean) {\n RwPrefUtils.routeStatusSortDesc = val;\n }\n\n get calcTableStyle() {\n let heightStyle = '';\n let height = this.space.timeHeight;\n if (this.space.showPanelStatus && !this.space.showPanelMap && !this.space.showPanelList) {\n heightStyle = \"width:100%;height:100%;overflow-y:auto;\";\n } else {\n heightStyle = height <= 240 ? `overflow-y:auto;width:100%;height: ${height}px` : `overflow-y:scroll;width:100%;height:100%`;\n }\n return heightStyle;\n }\n\n get openRoutes(): RwRoute[] {\n return this.space.openRoutes;\n }\n\n get selectedRoutes(): RwRoute[] {\n let routes: RwRoute[] = [];\n if (this.space.activeRoute) {\n routes = [this.space.activeRoute];\n }\n return routes;\n }\n\n set selectedRoutes(val: RwRoute[]) {\n if (val && val.length > 0) {\n //console.warn(\"selectedRoutes\", val[0]);\n this.space.activeRoute = val[0];\n }\n }\n\n\n //#endregion\n\n\n //#region Helper APIs\n\n driverUrl(route: RwRoute): string {\n let driverUrl: string;\n if (route && route.driver) {\n driverUrl = route.driver.imageUrl;\n }\n return driverUrl;\n }\n\n driverName(route: RwRoute): string {\n // let driverName = route.driver ? route.driver.userName : \"NO DRIVER\"\n // console.log(\"RwRouteList.driverName\", route.name, driverName)\n let driverUrl: string;\n if (route && route.driver) {\n driverUrl = route.driver.userName;\n }\n return driverUrl;\n }\n\n onRouteCopy(route: RwRoute) {\n //console.log(\"onRouteCopy\");\n const self = this;\n this.globals\n .showRouteNew(false, route)\n .then(pick => {\n if (pick) {\n self.globals.plan.openRouteInPlanner(pick);\n if (RwPrefUtils.editAfterAdd) {\n self.globals.showRouteEdit(pick)\n }\n\n }\n });\n\n // this.globals\n // .showRouteEdit(route)\n // .then(isSaved => {\n // self.globals.plan.openRouteInPlanner(route);\n // });\n\n }\n\n onRowClick(route: RwRoute) {\n //console.warn(\"RwPlannerStatus.clickRow\", route.name)\n if (route && route != this.space.activeRoute) {\n this.$router.push({path: route.plannerUrl}).catch();\n this.space.activeRoute = route;\n }\n }\n\n\n onButtonClick(route: RwRoute) {\n //console.warn(\"RwPlannerStatus.clickRow\", route.name)\n if (route) {\n this.clickRoute = route;\n }\n }\n\n\n isSelected(item: RwRoute): boolean {\n let isSel = this.space.activeRoute && this.space.activeRoute == item;\n return isSel;\n }\n\n\n //endregion\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerStatus.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerStatus.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerStatus.vue?vue&type=style&index=0&id=6cd2a630&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./RwPlannerStatus.vue?vue&type=template&id=6cd2a630&scoped=true&\"\nimport script from \"./RwPlannerStatus.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPlannerStatus.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPlannerStatus.vue?vue&type=style&index=0&id=6cd2a630&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6cd2a630\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"}},[(_vm.showDriverView)?_c('RwDriverView',{attrs:{\"driver\":_vm.selectedPin.dataItem,\"is-popup\":false},on:{\"onCloseDock\":_vm.onCloseDock,\"onDeleted\":_vm.onDeleted,\"onPop\":_vm.onPop}}):_vm._e(),(_vm.showRouteView)?_c('RwRouteView',{attrs:{\"is-planner\":true,\"is-popup\":false,\"route\":_vm.selectedPin.dataItem},on:{\"onCloseDock\":_vm.onCloseDock,\"onDeleted\":_vm.onDeleted,\"onPop\":_vm.onPop}}):_vm._e(),(_vm.showSiteView)?_c('RwSiteView',{attrs:{\"is-popup\":false,\"site\":_vm.selectedPin.dataItem},on:{\"onCloseDock\":_vm.onCloseDock,\"onDeleted\":_vm.onDeleted,\"onPop\":_vm.onPop}}):_vm._e(),(_vm.showStopView)?_c('RwStopView',{attrs:{\"popup\":false,\"stop\":_vm.selectedPin.dataItem},on:{\"onCloseDock\":_vm.onCloseDock,\"onDeleted\":_vm.onDeleted,\"onPop\":_vm.onPop}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views//planner/RwPlannerSpace\";\nimport RwStopView from \"@/app/views/planner/RwStopView.vue\";\nimport {RwPinTypes} from \"@/app/RwEnums\";\nimport RwRouteView from \"@/app/views/routes/RwRouteView.vue\";\nimport RwSiteView from \"@/app/views/sites/RwSiteView.vue\";\nimport RwDriverView from \"@/app/views/drivers/RwDriverView.vue\";\nimport {RwPin} from \"@/app/dem/RwPin\";\n\n@Component({components: {RwStopView, RwRouteView, RwSiteView, RwDriverView}})\nexport default class RwPinPanel extends Vue {\n\n ///region Props\n\n get globals(): RwGlobals {\n return theGlobals\n };\n\n get space(): RwPlannerSpace {\n return thePlan\n };\n\n get activeRoute(): RwRoute {\n return this.space.activeRoute;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n\n get selectedPins(): RwPin[] {\n //console.log(\"GET selectedPins\", theStore.getters.selectedPins.length);\n return this.space.selectedPins;\n }\n\n get selectedPin(): RwPin {\n let selPin: RwPin;\n if (this.space.isMultiMode == false) {\n let selPins = this.selectedPins;\n if (selPins && selPins.length > 0) {\n selPin = selPins[0];\n }\n }\n //console.warn(\"RwPinPanel.selectedPin\");\n return selPin;\n }\n\n get showStopView() {\n let show = false;\n let pin = this.selectedPin;\n if (pin && (pin.type == RwPinTypes.Stop || pin.type == RwPinTypes.Task)) {\n show = true;\n }\n //console.warn(\"showStopView\", show, pin);\n return show;\n }\n\n\n get showDriverView() {\n let show = false;\n let pin = this.selectedPin;\n if (pin && pin.type == RwPinTypes.Driver) {\n show = true;\n }\n //console.log(\"showDriverView\", show);\n return show;\n }\n\n get showRouteView() {\n let show = false;\n let pin = this.selectedPin;\n if (pin && pin.type == RwPinTypes.Route) {\n show = true;\n }\n //console.log(\"showRouteView\", show);\n return show;\n }\n\n get showSiteView() {\n let show = false;\n let pin = this.selectedPin;\n if (pin && pin.type == RwPinTypes.Site) {\n show = true;\n }\n //console.log(\"showSiteView\", show);\n return show;\n }\n\n //#endregion\n\n onPop() {\n this.globals.showPinPopup = true;\n this.globals.showPinPanel = false;\n }\n\n onCloseDock() {\n this.globals.showPinPopup = false;\n this.globals.showPinPanel = false;\n }\n\n onDeleted() {\n this.globals.showPinPopup = false;\n this.space.clearPinSelections();\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPinPanel.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPinPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwPinPanel.vue?vue&type=template&id=f60b9142&\"\nimport script from \"./RwPinPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPinPanel.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.5\",\"overlay-color\":_vm.globals.isDarkMode ? '#000' : '#000'},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)}},model:{value:(_vm.globals.showPinPopup),callback:function ($$v) {_vm.$set(_vm.globals, \"showPinPopup\", $$v)},expression:\"globals.showPinPopup\"}},[(_vm.showDriverView)?_c('RwDriverView',{attrs:{\"driver\":_vm.space.selectedPin.dataItem,\"is-popup\":true},on:{\"onDock\":_vm.onDock,\"onClosePop\":_vm.onClosePop,\"onDeleted\":_vm.onDeleted}}):_vm._e(),(_vm.showRouteView)?_c('RwRouteView',{attrs:{\"route\":_vm.space.selectedPin.dataItem,\"is-popup\":true,\"is-planner\":true},on:{\"onDock\":_vm.onDock,\"onClosePop\":_vm.onClosePop,\"onDeleted\":_vm.onDeleted}}):_vm._e(),(_vm.showSiteView)?_c('RwSiteView',{attrs:{\"site\":_vm.space.selectedPin.dataItem,\"is-popup\":true},on:{\"onDock\":_vm.onDock,\"onClosePop\":_vm.onClosePop,\"onDeleted\":_vm.onDeleted}}):_vm._e(),(_vm.showStopView)?_c('RwStopView',{attrs:{\"popup\":true,\"stop\":_vm.space.selectedPin.dataItem},on:{\"onClosePop\":_vm.onClosePop,\"onDeleted\":_vm.onDeleted,\"onDock\":_vm.onDock}}):_vm._e(),(_vm.showHistoryView)?_c('RwHistoryView',{attrs:{\"popup\":true,\"hist\":_vm.selectedHistoryItem},on:{\"onClosePop\":_vm.onClosePop,\"onDeleted\":_vm.onDeleted,\"onDock\":_vm.onDock}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VCard,{ref:\"cardHistView\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"max-height\":\"48px\",\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[(_vm.plan.previousPin)?_c(VBtn,{staticClass:\"pl-0 pr-0\",staticStyle:{\"min-width\":\"auto\"},attrs:{\"text\":\"\"},on:{\"click\":_vm.backToStop}},[_c(VIcon,[_vm._v(\"chevron_left\")])],1):_vm._e(),(_vm.stop)?_c(VImg,{attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.stop.dataUrl ? _vm.stop.dataUrl : '',\"max-width\":\"32\"}}):_vm._e(),_c(VToolbarTitle,{staticClass:\"ml-2\"},[_vm._v(\"View Check-In: \"+_vm._s(_vm.name))]),_c(VSpacer),(_vm.stop)?_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(_vm.hist)?_c(VBtn,{attrs:{\"icon\":\"\"},on:{\"click\":_vm.onClickEdit}},[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1):_vm._e()]}}],null,false,4293292929)},[_c('span',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Edit\")])]):_vm._e()],1),(_vm.hist)?_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 98px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Name: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.hist.name)+\" \")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Check-In Time: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.hist.formattedStartTime)+\" \")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Address: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.hist.address)+\" \")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Display Color: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_c(VIcon,{attrs:{\"color\":_vm.color}},[_vm._v(\"mdi-map-marker\")])],1)]),(_vm.globals.showProofOfDelivery)?_c(VRow,{staticClass:\"px-3 flex-column text-left\",attrs:{\"no-gutters\":\"\"}},[(!!_vm.stop.addOns.itemToDeliver?.trim())?_c(VRow,{staticClass:\"mt-2\",attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Item: \")]),_c('div',{staticStyle:{\"font-size\":\"small\",\"font-weight\":\"bold\"}},[_vm._v(\" \"+_vm._s(_vm.stop.addOns.itemToDeliver.trim())+\" \")])]):_vm._e(),_c('div',{staticClass:\"mt-4 mb-2\"},[_vm._v(\" Proof of Delivery: \")]),_c('div',{staticStyle:{\"display\":\"flex\",\"column-gap\":\"10px\",\"flex-direction\":\"row\"}},[(_vm.stop && !_vm.stop.addOns.podPhoto && !_vm.stop.addOns.podBar && !_vm.stop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"fulfill\",\"type\":\"none\",\"checked\":\"true\"}}):_vm._e(),(_vm.stop && _vm.stop.addOns.podPhoto)?_c('RwPODThumbnail',{attrs:{\"mode\":\"fulfill\",\"type\":\"photo\",\"media\":_vm.hist.getFirstPhoto(),\"quantity\":_vm.hist.getPhotos()?.length},on:{\"clicked\":function($event){return _vm.viewPOD(_vm.ConfirmationType.Photo)}}}):_vm._e(),(_vm.stop && _vm.stop.addOns.podBar)?_c('RwPODThumbnail',{attrs:{\"mode\":\"fulfill\",\"type\":\"barcode\",\"media\":_vm.hist.getMedia(_vm.ConfirmationType.Barcode)},on:{\"clicked\":function($event){return _vm.viewPOD(_vm.ConfirmationType.Barcode)}}}):_vm._e(),(_vm.stop && _vm.stop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"fulfill\",\"type\":\"signature\",\"media\":_vm.hist.getMedia(_vm.ConfirmationType.Signature)},on:{\"clicked\":function($event){return _vm.viewPOD(_vm.ConfirmationType.Signature)}}}):_vm._e()],1),(_vm.viewingPOD)?_c('div',{staticClass:\"viewPODPopup\",class:_vm.globals.isDarkMode ? 'dark' : ''},[_c('button',{staticStyle:{\"font-size\":\"28px\",\"position\":\"absolute\",\"top\":\"15px\",\"right\":\"15px\"},on:{\"click\":function($event){return _vm.closeViewPOD()}}},[_c(VIcon,{style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"mdi-close\")])],1),(_vm.isViewingPhoto() && _vm.showNextPhotoButton())?_c('button',{staticStyle:{\"position\":\"absolute\",\"top\":\"50%\",\"right\":\"15px\",\"margin-top\":\"-15px\"},on:{\"click\":function($event){return _vm.showNextPhoto()}}},[_c(VIcon,{staticStyle:{\"font-size\":\"40px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"mdi-chevron-right\")])],1):_vm._e(),(_vm.isViewingPhoto() && _vm.currentPhotoIndex > 0)?_c('button',{staticStyle:{\"position\":\"absolute\",\"top\":\"50%\",\"left\":\"15px\",\"margin-top\":\"-15px\"},on:{\"click\":function($event){return _vm.showPreviousPhoto()}}},[_c(VIcon,{staticStyle:{\"font-size\":\"40px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"mdi-chevron-left\")])],1):_vm._e(),_c('div',[(!!_vm.getCurrentMedia())?_c('div',{staticStyle:{\"position\":\"relative\"},attrs:{\"id\":\"popup-image-wrapper\"}},[_c('img',{staticStyle:{\"max-width\":\"460px\",\"max-height\":\"60vh\"},style:({background: _vm.getCurrentMediaBackgroundColor(), borderRadius: _vm.getCurrentMediaBorderRadius(), padding: _vm.getCurrentMediaPadding(), opacity: _vm.popupImageOpacity}),attrs:{\"src\":_vm.getMediaLink()}})]):_vm._e()])]):_vm._e()],1):_vm._e(),(_vm.hist.note)?_c(VRow,{staticClass:\"px-3 mt-3 mb-4\",attrs:{\"no-gutters\":\"\"}},[(_vm.hist.note)?_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"row\",\"flex-basis\":\"100%\"}},[_c('div',{staticClass:\"text-left\",staticStyle:{\"flex-basis\":\"35%\"}},[_vm._v(\"Check-in comments:\")]),_c('div',{staticClass:\"text-right\",staticStyle:{\"flex-basis\":\"65%\",\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.hist.note))])]):_vm._e()]):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport RwPODThumbnail from \"@/app/views/components/RwPODThumbnail.vue\";\nimport {ConfirmationType} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport { RwCoreMedia } from \"@/app/dem/ProofOfDelivery/RwCoreMedia\";\n\n@Component({\n components: {RwPODThumbnail}\n})\nexport default class RwHistoryView extends Vue {\n @Prop(Boolean) readonly popup: boolean;\n @Prop(RwHistory) readonly hist: RwHistory;\n\n isMounted = false;\n finalLength: string = this.calcMaxWidth();\n noteVisibility = false;\n\n ConfirmationType = ConfirmationType;\n viewingPOD = false;\n currentPhotoIndex = 0;\n viewingType: ConfirmationType;\n popupImageOpacity = 0;\n\n get stop() {\n if (this.hist && this.hist.stopId) {\n if (this.plan.selectedStop && this.plan.selectedStop.stopId === this.hist.stopId) {\n return this.plan.selectedStop;\n } else {\n const stop = this.globals.stops.find(s => s.stopId === this.hist.stopId);\n return stop ?? null;\n }\n }\n return null;\n }\n\n get color() {\n if (this.stop) {\n return this.stop.baseColor;\n }\n return \"#ff5963\";\n\n }\n\n get name() {\n return this.hist?.name ?? \"\";\n }\n\n get globals(): RwGlobals {\n return theGlobals\n }\n\n get plan(): RwPlannerSpace {\n return thePlan;\n };\n\n onClickEdit() {\n if (this.hist) {\n this.globals.showHistoryEdit(this.hist);\n this.onClosePop();\n }\n }\n\n onClosePop() {\n this.$emit(\"onClosePop\");\n }\n\n closeViewPOD() {\n this.viewingPOD = false;\n this.currentPhotoIndex = 0;\n }\n\n isViewingPhoto(): boolean {\n return this.viewingType === ConfirmationType.Photo;\n }\n\n showNextPhotoButton(): boolean {\n return this.hist.getPhotos()?.length > 1 && this.currentPhotoIndex < this.hist.getPhotos()?.length - 1;\n }\n\n showNextPhoto(): void {\n if (this.currentPhotoIndex < this.hist.getPhotos().length - 1) {\n this.popupImageOpacity = 0;\n setTimeout(() => {\n this.currentPhotoIndex++;\n setTimeout(() => {\n this.popupImageOpacity = 1;\n }, 200);\n }, 200);\n }\n }\n\n showPreviousPhoto(): void {\n if (this.currentPhotoIndex > 0) {\n this.popupImageOpacity = 0;\n setTimeout(() => {\n this.currentPhotoIndex--;\n setTimeout(() => {\n this.popupImageOpacity = 1;\n }, 200);\n }, 200);\n }\n }\n\n getCurrentMedia(): RwCoreMedia {\n if (this.viewingType === ConfirmationType.Photo) {\n return this.hist.getPhoto(this.currentPhotoIndex);\n }\n return this.hist.getMedia(this.viewingType);\n }\n\n getMediaLink(): string {\n return RwCoreMedia.getLink(this.getCurrentMedia());\n }\n\n getCurrentMediaBackgroundColor(): string {\n if (this.getCurrentMedia().confType === ConfirmationType.Signature) {\n return 'white';\n }\n return 'none';\n }\n\n getCurrentMediaBorderRadius(): string {\n return '8px';\n }\n\n getCurrentMediaPadding(): string {\n if (this.getCurrentMedia().confType === ConfirmationType.Signature) {\n return '20px';\n }\n return 'none';\n }\n\n viewPOD(type: ConfirmationType) {\n if (this.hist.getMedia(type)) {\n this.viewingType = type;\n this.viewingPOD = true;\n \n this.popupImageOpacity = 0;\n setTimeout(() => {\n this.popupImageOpacity = 1;\n }, 200);\n }\n }\n\n backToStop() {\n this.plan.selectedPin = this.plan.previousPin;\n this.globals.showHistoryPop = false;\n this.globals.selectedHistoryItem = null;\n }\n\n get cardElement(): Element {\n let el: Element;\n let card = this.$refs.cardHistView as any;\n if (card && card.$el && card.$el) {\n el = card.$el;\n }\n return el;\n }\n\n showTooltip(text: string) {\n return text.length > 72 || text.indexOf(\"\\n\") !== -1;\n }\n\n toggleNoteVisibility() {\n this.noteVisibility = !this.noteVisibility;\n }\n\n calcMaxWidth(): string {\n const SOURCE = \"RwHistoryView.calcMaxWidth\"\n\n let maxWidth = window.innerWidth;\n if (this.popup == true) {\n maxWidth = 450\n } else {\n\n if (this.isMounted) {\n\n let card = this.cardElement;\n if (card && card.clientWidth) {\n maxWidth = card.clientWidth - 150;\n } else {\n //This occurs in Empty State\n maxWidth = 450;\n }\n }\n\n }\n let output = \"max-width: \" + maxWidth.toString() + \"px\";\n this.finalLength = output;\n\n return output;\n }\n\n mounted() {\n this.isMounted = true;\n this.calcMaxWidth();\n window.addEventListener('resize', this.calcMaxWidth);\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwHistoryView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwHistoryView.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwHistoryView.vue?vue&type=style&index=0&id=7f85fdce&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./RwHistoryView.vue?vue&type=template&id=7f85fdce&scoped=true&\"\nimport script from \"./RwHistoryView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwHistoryView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwHistoryView.vue?vue&type=style&index=0&id=7f85fdce&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7f85fdce\",\n null\n \n)\n\nexport default component.exports","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport RwStopView from \"@/app/views/planner/RwStopView.vue\";\nimport RwHistoryView from \"@/app/views/history/RwHistoryView.vue\";\nimport RwRouteView from \"@/app/views/routes/RwRouteView.vue\";\nimport RwSiteView from \"@/app/views/sites/RwSiteView.vue\";\nimport RwDriverView from \"@/app/views/drivers/RwDriverView.vue\";\nimport {RwPinTypes} from \"@/app/RwEnums\";\n\n@Component({components: {RwStopView, RwRouteView, RwSiteView, RwDriverView, RwHistoryView}})\nexport default class RwPinPopup extends Vue {\n\n //#region Props\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get showHistoryView() {\n return this.globals.showHistoryPop && this.selectedHistoryItem;\n }\n\n get selectedHistoryItem() {\n return this.globals.selectedHistoryItem;\n }\n\n get showStopView() {\n let show = false;\n let pin = this.space.selectedPin;\n if (pin && (pin.type == RwPinTypes.Stop || pin.type == RwPinTypes.Task)) {\n show = true;\n }\n //console.warn(\"showStopView\", show);\n return show;\n }\n\n get showDriverView() {\n let show = false;\n let pin = this.space.selectedPin;\n if (pin && pin.type == RwPinTypes.Driver) {\n show = true;\n }\n //console.log(\"showDriverView\", show);\n return show;\n }\n\n get showRouteView() {\n let show = false;\n let pin = this.space.selectedPin;\n if (pin && pin.type == RwPinTypes.Route) {\n show = true;\n }\n //console.log(\"showRouteView\", show);\n return show;\n }\n\n get showSiteView() {\n let show = false;\n let pin = this.space.selectedPin;\n if (pin && pin.type == RwPinTypes.Site) {\n show = true;\n }\n //console.log(\"showSiteView\", show);\n return show;\n }\n\n\n //#endregion\n\n\n onDock() {\n this.globals.showPinPopup = false;\n this.globals.showPinPanel = true;\n }\n\n onClosePop() {\n this.globals.showPinPopup = false;\n }\n\n onDeleted() {\n //console.log(\"RwPinPopup.onDeleted\")\n this.globals.showPinPopup = false;\n this.space.clearPinSelections();\n }\n\n escPress(event: Event) {\n event.stopPropagation();\n this.globals.showPinPopup = false;\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPinPopup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPinPopup.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPinPopup.vue?vue&type=style&index=0&id=c5e0d1ce&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwPinPopup.vue?vue&type=template&id=c5e0d1ce&scoped=true&\"\nimport script from \"./RwPinPopup.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPinPopup.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPinPopup.vue?vue&type=style&index=0&id=c5e0d1ce&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c5e0d1ce\",\n null\n \n)\n\nexport default component.exports","// extracted by mini-css-extract-plugin\nexport {};","import VSlider from './VSlider';\nexport { VSlider };\nexport default VSlider;\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VRangeSlider/VRangeSlider.sass\"; // Components\n\nimport VSlider from '../VSlider'; // Helpers\n\nimport { addOnceEventListener, createRange, deepEqual, passiveSupported } from '../../util/helpers';\n/* @vue/component */\n\nexport default VSlider.extend({\n name: 'v-range-slider',\n props: {\n value: {\n type: Array,\n default: () => [0, 0]\n }\n },\n\n data() {\n return {\n activeThumb: null,\n lazyValue: this.value\n };\n },\n\n computed: {\n classes() {\n return { ...VSlider.options.computed.classes.call(this),\n 'v-input--range-slider': true\n };\n },\n\n internalValue: {\n get() {\n return this.lazyValue;\n },\n\n set(val) {\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n let value = val.map((v = 0) => this.roundValue(Math.min(Math.max(v, this.minValue), this.maxValue))); // Switch values if range and wrong order\n\n if (value[0] > value[1] || value[1] < value[0]) {\n if (this.activeThumb !== null) {\n const toFocus = this.activeThumb === 1 ? 0 : 1;\n const el = this.$refs[`thumb_${toFocus}`];\n el.focus();\n }\n\n value = [value[1], value[0]];\n }\n\n this.lazyValue = value;\n if (!deepEqual(value, this.value)) this.$emit('input', value);\n this.validate();\n }\n\n },\n\n inputWidth() {\n return this.internalValue.map(v => (this.roundValue(v) - this.minValue) / (this.maxValue - this.minValue) * 100);\n }\n\n },\n methods: {\n getTrackStyle(startLength, endLength, startPadding = 0, endPadding = 0) {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'top' : 'bottom' : this.$vuetify.rtl ? 'right' : 'left';\n const endDir = this.vertical ? 'height' : 'width';\n const start = `calc(${startLength}% + ${startPadding}px)`;\n const end = `calc(${endLength}% + ${endPadding}px)`;\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end\n };\n },\n\n getIndexOfClosestValue(arr, v) {\n if (Math.abs(arr[0] - v) < Math.abs(arr[1] - v)) return 0;else return 1;\n },\n\n genInput() {\n return createRange(2).map(i => {\n const input = VSlider.options.methods.genInput.call(this);\n input.data = input.data || {};\n input.data.attrs = input.data.attrs || {};\n input.data.attrs.value = this.internalValue[i];\n input.data.attrs.id = `input-${i ? 'max' : 'min'}-${this._uid}`;\n return input;\n });\n },\n\n genTrackContainer() {\n const children = [];\n const padding = this.isDisabled ? 10 : 0;\n const sections = [{\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [0, this.inputWidth[0], 0, -padding]\n }, {\n class: this.isDisabled ? 'v-slider__track-background' : 'v-slider__track-fill',\n color: this.isDisabled ? this.computedTrackColor : this.computedTrackFillColor,\n styles: [this.inputWidth[0], Math.abs(this.inputWidth[1] - this.inputWidth[0]), padding, padding * -2]\n }, {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [this.inputWidth[1], Math.abs(100 - this.inputWidth[1]), padding, -padding]\n }];\n if (this.$vuetify.rtl) sections.reverse();\n children.push(...sections.map(section => this.$createElement('div', this.setBackgroundColor(section.color, {\n staticClass: section.class,\n style: this.getTrackStyle(...section.styles)\n }))));\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track'\n }, children);\n },\n\n genChildren() {\n return [this.genInput(), this.genTrackContainer(), this.genSteps(), createRange(2).map(index => {\n const value = this.internalValue[index];\n\n const onFocus = e => {\n this.isFocused = true;\n this.activeThumb = index;\n this.$emit('focus', e);\n };\n\n const onBlur = e => {\n this.isFocused = false;\n this.activeThumb = null;\n this.$emit('blur', e);\n };\n\n const valueWidth = this.inputWidth[index];\n const isActive = this.isActive && this.activeThumb === index;\n const isFocused = this.isFocused && this.activeThumb === index;\n return this.genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, `thumb_${index}`);\n })];\n },\n\n reevaluateSelected(value) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value);\n const refName = `thumb_${this.activeThumb}`;\n const thumbRef = this.$refs[refName];\n thumbRef.focus();\n },\n\n onSliderMouseDown(e) {\n var _a;\n\n const value = this.parseMouseMove(e);\n this.reevaluateSelected(value);\n this.oldValue = this.internalValue;\n this.isActive = true;\n\n if ((_a = e.target) === null || _a === void 0 ? void 0 : _a.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true;\n const domRect = e.target.getBoundingClientRect();\n const touch = 'touches' in e ? e.touches[0] : e;\n this.startOffset = this.vertical ? touch.clientY - (domRect.top + domRect.height / 2) : touch.clientX - (domRect.left + domRect.width / 2);\n } else {\n this.startOffset = 0;\n window.clearTimeout(this.mouseTimeout);\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true;\n }, 300);\n }\n\n const mouseUpOptions = passiveSupported ? {\n passive: true,\n capture: true\n } : true;\n const mouseMoveOptions = passiveSupported ? {\n passive: true\n } : false;\n const isTouchEvent = ('touches' in e);\n this.onMouseMove(e);\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions);\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions);\n this.$emit('start', this.internalValue);\n },\n\n onSliderClick(e) {\n if (!this.isActive) {\n if (this.noClick) {\n this.noClick = false;\n return;\n }\n\n const value = this.parseMouseMove(e);\n this.reevaluateSelected(value);\n this.setInternalValue(value);\n this.$emit('change', this.internalValue);\n }\n },\n\n onMouseMove(e) {\n const value = this.parseMouseMove(e);\n\n if (e.type === 'mousemove') {\n this.thumbPressed = true;\n }\n\n if (this.activeThumb === null) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value);\n }\n\n this.setInternalValue(value);\n },\n\n onKeyDown(e) {\n if (this.activeThumb === null) return;\n const value = this.parseKeyDown(e, this.internalValue[this.activeThumb]);\n if (value == null) return;\n this.setInternalValue(value);\n this.$emit('change', this.internalValue);\n },\n\n setInternalValue(value) {\n this.internalValue = this.internalValue.map((v, i) => {\n if (i === this.activeThumb) return value;else return Number(v);\n });\n }\n\n }\n});\n//# sourceMappingURL=VRangeSlider.js.map","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRangeSlider } from 'vuetify/lib/components/VRangeSlider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSlider } from 'vuetify/lib/components/VSlider';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"overlay-color\":_vm.globals.isDarkMode ? '#000' : '#000',\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.space.showDataLayers),callback:function ($$v) {_vm.$set(_vm.space, \"showDataLayers\", $$v)},expression:\"space.showDataLayers\"}},[_c(VCard,{staticClass:\"dialog-card mx-auto\"},[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\"}},[_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))])],1),_c(VCardText,{class:_vm.globals.theme,staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[_c(VContainer,{staticClass:\"mt-4\"},[_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c('span',{staticClass:\"item-text-overflow\"},[_vm._v(\"Show Route (Stops)\")]),_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"end\",\"no-gutters\":\"\"}},[_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.space.showDataLayerRoute),callback:function ($$v) {_vm.$set(_vm.space, \"showDataLayerRoute\", $$v)},expression:\"space.showDataLayerRoute\"}}),_c(VBtn,{attrs:{\"disabled\":!_vm.space.showDataLayerRoute,\"icon\":\"\"},on:{\"click\":_vm.onFilterStopsClick}},[_c(VIcon,{attrs:{\"color\":_vm.isStopFiltered ? 'primary' : 'normal'}},[_vm._v(\"mdi-filter\")])],1)],1)],1),_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c('span',{staticClass:\"item-text-overflow\"},[_vm._v(\"Show Favorites\")]),_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"end\",\"no-gutters\":\"\"}},[_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.space.showDataLayerSites),callback:function ($$v) {_vm.$set(_vm.space, \"showDataLayerSites\", $$v)},expression:\"space.showDataLayerSites\"}}),_c(VBtn,{attrs:{\"disabled\":!_vm.space.showDataLayerSites,\"icon\":\"\"},on:{\"click\":_vm.onFilterSitesClick}},[_c(VIcon,{attrs:{\"color\":_vm.isSiteFiltered ? 'primary' : 'normal'}},[_vm._v(\"mdi-filter\")])],1)],1)],1),(_vm.globals.isDisp)?_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c('span',{staticClass:\"item-text-overflow\"},[_vm._v(\"Show Tasks\")]),_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"end\",\"no-gutters\":\"\"}},[_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.space.showDataLayerTasks),callback:function ($$v) {_vm.$set(_vm.space, \"showDataLayerTasks\", $$v)},expression:\"space.showDataLayerTasks\"}}),_c(VBtn,{attrs:{\"disabled\":!_vm.space.showDataLayerTasks,\"icon\":\"\"},on:{\"click\":_vm.onFilterTasksClick}},[_c(VIcon,{attrs:{\"color\":_vm.isTaskFiltered ? 'primary' : 'normal'}},[_vm._v(\"mdi-filter\")])],1)],1)],1):_vm._e()],1)],1),_c(VTabItem,{key:\"1\"},[_c(VContainer,{staticClass:\"mt-4\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VTextField,{ref:\"txtStopFilterName\",attrs:{\"clearable\":\"\",\"filled\":\"\",\"label\":\"Filter By Name\",\"single-line\":\"\"},model:{value:(_vm.stopFilterName),callback:function ($$v) {_vm.stopFilterName=$$v},expression:\"stopFilterName\"}})],1),_c(VRow,{attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"filled\":\"\",\"label\":\"Filter By Address\",\"single-line\":\"\"},model:{value:(_vm.stopFilterAddress),callback:function ($$v) {_vm.stopFilterAddress=$$v},expression:\"stopFilterAddress\"}})],1),_c(VBtn,{staticClass:\"mx-0 px-0 grey--text font-weight-bold filter-button\",staticStyle:{\"height\":\"56px\",\"width\":\"100%\"},attrs:{\"block\":\"\",\"justify\":\"space-between\",\"text\":\"\"},on:{\"click\":_vm.onActiveStopsSwitch}},[_c('div',{staticClass:\"text-left text-capitalize\",staticStyle:{\"white-space\":\"pre-wrap\"}},[_vm._v(\"Active Stops Only: \")]),_c(VCol,{staticClass:\"ma-0 pa-0\",attrs:{\"align\":\"right\"}},[_c(VSwitch,{staticClass:\"pt-2 ma-0\",staticStyle:{\"height\":\"32px\",\"width\":\"40px\"},on:{\"click\":_vm.onActiveStopsSwitch},model:{value:(_vm.stopFilterActiveOnly),callback:function ($$v) {_vm.stopFilterActiveOnly=$$v},expression:\"stopFilterActiveOnly\"}})],1)],1),_c(VBtn,{staticClass:\"mx-0 px-0 grey--text font-weight-bold filter-button\",staticStyle:{\"height\":\"56px\",\"width\":\"100%\"},attrs:{\"block\":\"\",\"justify\":\"space-between\",\"text\":\"\"},on:{\"click\":_vm.onStopDist}},[_c('div',{staticClass:\"text-left text-capitalize\",staticStyle:{\"white-space\":\"pre-wrap\"}},[_vm._v(\"Distance From Route Start: \")]),_c(VCol,{staticClass:\"mr-0 pr-0\",attrs:{\"align\":\"right\"}},[_c('span',{staticClass:\"pink--text darken-1\"},[_vm._v(_vm._s(_vm.stopDistText))]),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VBtn,{staticClass:\"mx-0 px-0 grey--text font-weight-bold filter-button\",staticStyle:{\"height\":\"56px\",\"width\":\"100%\"},attrs:{\"block\":\"\",\"justify\":\"space-between\",\"text\":\"\"},on:{\"click\":_vm.onStopHash}},[_c('div',{staticClass:\"text-left text-capitalize\",staticStyle:{\"white-space\":\"pre-wrap\"}},[_vm._v(\"Hashtags (from Notes): \")]),_c(VCol,{staticClass:\"mr-0 pr-0\",attrs:{\"align\":\"right\"}},[_c('span',{staticClass:\"pink--text text-none\"},[_vm._v(_vm._s(_vm.stopHashText))]),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VBtn,{staticClass:\"mx-0 px-0 grey--text font-weight-bold\",staticStyle:{\"height\":\"56px\"},attrs:{\"block\":\"\",\"justify\":\"space-between\",\"text\":\"\"},on:{\"click\":_vm.onStopColor}},[_c('div',{staticClass:\"text-left text-capitalize\"},[_vm._v(\" Color Match: \")]),_c(VCol,{staticClass:\"mr-0 pr-0\",attrs:{\"align\":\"right\"}},[(_vm.stopFilterColor.length > 0)?_c(VIcon,{staticClass:\"ml-2\",attrs:{\"color\":_vm.stopFilterColor}},[_vm._v(\" mdi-map-marker \")]):_vm._e(),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1)],1)],1),_c(VTabItem,{key:\"2\"},[_c(VContainer,{staticClass:\"mt-4\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VTextField,{ref:\"txtSiteFilterName\",attrs:{\"clearable\":\"\",\"filled\":\"\",\"label\":\"Filter By Name\",\"single-line\":\"\"},model:{value:(_vm.siteFilterName),callback:function ($$v) {_vm.siteFilterName=$$v},expression:\"siteFilterName\"}})],1),_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"filled\":\"\",\"label\":\"Filter By Address\",\"single-line\":\"\"},model:{value:(_vm.siteFilterAddress),callback:function ($$v) {_vm.siteFilterAddress=$$v},expression:\"siteFilterAddress\"}})],1),_c(VRow,{staticStyle:{\"height\":\"56px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":_vm.onSiteDist}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Distance From Route Start: \")]),_c(VCol,{attrs:{\"align\":\"right\"}},[_c('span',{staticClass:\"pink--text darken-1\"},[_vm._v(_vm._s(_vm.siteDistText))]),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticStyle:{\"height\":\"56px\"},attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":_vm.onSiteHash}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Hashtags (from Notes): \")]),_c(VCol,{attrs:{\"align\":\"right\"}},[_c('span',{staticClass:\"pink--text darken-1\"},[_vm._v(_vm._s(_vm.siteHashText))]),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticStyle:{\"height\":\"56px\"},attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":_vm.onSiteColor}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Color Match: \")]),_c(VCol,{attrs:{\"align\":\"right\"}},[(_vm.siteFilterColor.length > 0)?_c(VIcon,{staticClass:\"ml-2\",attrs:{\"color\":_vm.siteFilterColor}},[_vm._v(\" mdi-star \")]):_vm._e(),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticStyle:{\"height\":\"56px\"},attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":_vm.onSiteCheck}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Check-In: \")]),_c(VCol,{attrs:{\"align\":\"right\"}},[_c('span',{staticClass:\"pink--text lighten-3\"},[_vm._v(_vm._s(_vm.siteCheckText))]),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1)],1)],1),_c(VTabItem,{key:\"3\"},[_c(VContainer,{staticClass:\"mt-4\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VTextField,{ref:\"txtTaskFilterName\",attrs:{\"clearable\":\"\",\"filled\":\"\",\"label\":\"Filter By Name\",\"single-line\":\"\"},model:{value:(_vm.taskFilterName),callback:function ($$v) {_vm.taskFilterName=$$v},expression:\"taskFilterName\"}})],1),_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"filled\":\"\",\"label\":\"Filter By Address\",\"single-line\":\"\"},model:{value:(_vm.taskFilterAddress),callback:function ($$v) {_vm.taskFilterAddress=$$v},expression:\"taskFilterAddress\"}})],1),_c(VRow,{staticStyle:{\"height\":\"56px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":_vm.onTaskDist}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Distance From Route Start: \")]),_c(VCol,{attrs:{\"align\":\"right\"}},[_c('span',{staticClass:\"pink--text\"},[_vm._v(_vm._s(_vm.taskDistText))]),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticStyle:{\"height\":\"56px\"},attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":_vm.onTaskHash}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Hashtags (from Notes): \")]),_c(VCol,{attrs:{\"align\":\"right\"}},[_vm._v(\"\\\\ \"),_c('span',{staticClass:\"pink--text\"},[_vm._v(_vm._s(_vm.taskHashText))]),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VRow,{staticStyle:{\"height\":\"56px\"},attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"},on:{\"click\":_vm.onTaskColor}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Color Match: \")]),_c(VCol,{attrs:{\"align\":\"right\"}},[(_vm.taskFilterColor.length > 0)?_c(VIcon,{staticClass:\"ml-2\",attrs:{\"color\":_vm.taskFilterColor}},[_vm._v(\" mdi-clipboard-check \")]):_vm._e(),_c(VIcon,{staticClass:\"ml-2\"},[_vm._v(\"mdi-chevron-right\")])],1)],1)],1)],1),_c(VTabItem,{key:\"4\"},[_c(VContainer,{staticClass:\"mt-4\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VTextField,{ref:\"txtDriverFilterName\",attrs:{\"clearable\":\"\",\"filled\":\"\",\"label\":\"Filter By Name\",\"single-line\":\"\"},model:{value:(_vm.driverFilterName),callback:function ($$v) {_vm.driverFilterName=$$v},expression:\"driverFilterName\"}})],1)],1)],1),_c(VTabItem,{key:\"5\"},[_c(VContainer,{staticClass:\"mt-1\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{staticClass:\"mb-4\",attrs:{\"justify\":\"space-between\"}},[_c(VCol,{staticClass:\"text-center\"},[_c('span',{staticClass:\"display-3 font-weight-light\"},[_vm._v(\" \"+_vm._s(_vm.distText)+\" \")])])],1),_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VSlider,{attrs:{\"always-dirty\":\"\",\"color\":\"primary\",\"max\":\"100\",\"min\":\"0\",\"track-color\":\"grey\"},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c(VIcon,{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onDecrement}},[_vm._v(\" mdi-minus \")])]},proxy:true},{key:\"append\",fn:function(){return [_c(VIcon,{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onIncrement}},[_vm._v(\" mdi-plus \")])]},proxy:true}]),model:{value:(_vm.dist),callback:function ($$v) {_vm.dist=$$v},expression:\"dist\"}})],1)],1)],1),_c(VTabItem,{key:\"6\"},[_c(VContainer,{staticClass:\"mt-4\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.hashAll ? 'Match ALL tags' : 'Match ANY tags')+\" \")]),_c('div',{staticStyle:{\"width\":\"40px\"}},[_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.hashAll),callback:function ($$v) {_vm.hashAll=$$v},expression:\"hashAll\"}})],1)]),_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"hint\":\"multiple tags can be listed by separating each tag with a space\",\"label\":\"Hashtags\",\"outlined\":\"\",\"placeholder\":\"#tag1 #tag2\"},model:{value:(_vm.hash),callback:function ($$v) {_vm.hash=$$v},expression:\"hash\"}})],1)],1)],1),_c(VTabItem,{key:\"7\"},[_c(VContainer,{staticClass:\"mt-4\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"hide-sliders\":\"\",\"flat\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},model:{value:(_vm.color),callback:function ($$v) {_vm.color=$$v},expression:\"color\"}})],1)],1)],1),_c(VTabItem,{key:\"8\"},[_c(VContainer,{staticClass:\"mt-4\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{staticClass:\"mb-4\",attrs:{\"justify\":\"space-between\"}},[_c(VCol,{staticClass:\"text-center\"},[_c('span',{staticClass:\"display-1 font-weight-light\"},[_vm._v(\" \"+_vm._s(_vm.checkDateText)+\" \")])])],1),_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"dense\":\"\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VRangeSlider,{staticClass:\"align-center\",attrs:{\"color\":\"primary\",\"max\":0,\"min\":-100,\"hide-details\":\"\"},model:{value:(_vm.checkRange),callback:function ($$v) {_vm.checkRange=$$v},expression:\"checkRange\"}})],1),_c(VBtn,{staticClass:\"mx-0 px-0 grey--text font-weight-bold\",staticStyle:{\"height\":\"56px\"},attrs:{\"block\":\"\",\"justify\":\"space-between\",\"text\":\"\"},on:{\"click\":_vm.onWithinDayRange}},[_c('div',{staticClass:\"text-left text-capitalize\"},[_vm._v(\" Check-in within day range: \")]),_c(VCol,{staticClass:\"ma-0 pa-0\",attrs:{\"align\":\"right\"}},[_c(VSwitch,{staticClass:\"pt-2 ma-0\",staticStyle:{\"height\":\"32px\",\"width\":\"40px\"},on:{\"click\":_vm.onWithinDayRange},model:{value:(_vm.siteFilterCheckWithin),callback:function ($$v) {_vm.siteFilterCheckWithin=$$v},expression:\"siteFilterCheckWithin\"}})],1)],1)],1)],1)],1)],1),_c(VCardActions,[_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab >= 1 && _vm.idxTab <= 4),expression:\"idxTab >= 1 && idxTab <= 4\"}],attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\"Back\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 5),expression:\"idxTab === 5\"}],attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onBackDist}},[_vm._v(\"Back\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 6),expression:\"idxTab === 6\"}],attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onBackHash}},[_vm._v(\"Back\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 7),expression:\"idxTab === 7\"}],attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onBackColor}},[_vm._v(\"Back\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 8),expression:\"idxTab === 8\"}],attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onBackCheck}},[_vm._v(\"Back\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 0 && _vm.isLayerHiddenOrFiltered),expression:\"idxTab === 0 && isLayerHiddenOrFiltered\"}],attrs:{\"text\":\"\"},on:{\"click\":_vm.onClearAll}},[_vm._v(\"Clear All\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 1 && (_vm.isStopFiltered || _vm.gotStopDeltas)),expression:\"idxTab === 1 && (isStopFiltered || gotStopDeltas)\"}],attrs:{\"text\":\"\"},on:{\"click\":_vm.onClearFilter}},[_vm._v(\"Clear Filter \")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 2 && (_vm.isSiteFiltered || _vm.gotSiteDeltas)),expression:\"idxTab === 2 && (isSiteFiltered || gotSiteDeltas)\"}],attrs:{\"text\":\"\"},on:{\"click\":_vm.onClearFilter}},[_vm._v(\"Clear Filter \")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 3 && (_vm.isTaskFiltered || _vm.gotTaskDeltas)),expression:\"idxTab === 3 && (isTaskFiltered || gotTaskDeltas)\"}],attrs:{\"text\":\"\"},on:{\"click\":_vm.onClearFilter}},[_vm._v(\"Clear Filter \")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 4 && (_vm.isDriverFiltered || _vm.gotDriverDeltas)),expression:\"idxTab === 4 && (isDriverFiltered || gotDriverDeltas)\"}],attrs:{\"text\":\"\"},on:{\"click\":_vm.onClearFilter}},[_vm._v(\"Clear Filter \")]),_c(VSpacer),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 1 && _vm.gotStopDeltas),expression:\"idxTab === 1 && gotStopDeltas\"}],attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApplyFilter}},[_vm._v(\"Apply\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 2 && _vm.gotSiteDeltas),expression:\"idxTab === 2 && gotSiteDeltas\"}],attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApplyFilter}},[_vm._v(\"Apply\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 3 && _vm.gotTaskDeltas),expression:\"idxTab === 3 && gotTaskDeltas\"}],attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApplyFilter}},[_vm._v(\"Apply\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 4 && _vm.gotDriverDeltas),expression:\"idxTab === 4 && gotDriverDeltas\"}],attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApplyFilter}},[_vm._v(\"Apply\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 5),expression:\"idxTab === 5\"}],attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApplyDist}},[_vm._v(\"Apply\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 6),expression:\"idxTab === 6\"}],attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApplyHash}},[_vm._v(\"Apply\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 7),expression:\"idxTab === 7\"}],attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApplyColor}},[_vm._v(\"Apply\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 8),expression:\"idxTab === 8\"}],attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApplyCheck}},[_vm._v(\"Apply\")]),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab === 0),expression:\"idxTab === 0\"}],attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onDone}},[_vm._v(\"Done\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\"\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwDistUnits, RwStopFilterType} from \"@/app/RwEnums\";\n\n\n@Component\nexport default class RwPlannerLayers extends Vue {\n\n\n //#region Props\n\n idxTab = 0;\n idxTabSrc = 0;\n dist = 0;\n hash = \"\";\n hashAll = false;\n color = \"\";\n checkRange = [-100, 0];\n checkWithin = true;\n\n stopFilterName = RwPrefUtils.stopFilterName;\n stopFilterAddress = RwPrefUtils.stopFilterAddress;\n stopFilterActiveOnly = RwPrefUtils.stopFilterType === RwStopFilterType.ActiveStopsOnly;\n stopFilterDistance = RwPrefUtils.stopFilterDistance;\n stopFilterHash = RwPrefUtils.stopFilterHash;\n stopFilterHashAll = RwPrefUtils.stopFilterHashAll;\n stopFilterColor = RwPrefUtils.stopFilterColor;\n\n siteFilterName = RwPrefUtils.siteFilterName;\n siteFilterAddress = RwPrefUtils.siteFilterAddress;\n siteFilterDistance = RwPrefUtils.siteFilterDistance;\n siteFilterHash = RwPrefUtils.siteFilterHash;\n siteFilterHashAll = RwPrefUtils.siteFilterHashAll;\n siteFilterColor = RwPrefUtils.siteFilterColor;\n siteFilterCheckMin = RwPrefUtils.siteFilterCheckMin;\n siteFilterCheckMax = RwPrefUtils.siteFilterCheckMax;\n siteFilterCheckWithin = RwPrefUtils.siteFilterCheckWithin;\n\n taskFilterName = RwPrefUtils.taskFilterName;\n taskFilterAddress = RwPrefUtils.taskFilterAddress;\n taskFilterDistance = RwPrefUtils.taskFilterDistance;\n taskFilterHash = RwPrefUtils.taskFilterHash;\n taskFilterHashAll = RwPrefUtils.taskFilterHashAll;\n taskFilterColor = RwPrefUtils.taskFilterColor;\n\n driverFilterName = RwPrefUtils.driverFilterName;\n\n recomputeStops = 0;\n recomputeSites = 0;\n recomputeTasks = 0;\n recomputeDrivers = 0;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlan\n };\n\n get title() {\n let title: string;\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n title = \"Data Layers\";\n break;\n case 1:\n title = \"Stops Filter\";\n break;\n case 2:\n title = \"Favorites Filter\";\n break;\n case 3:\n title = \"Tasks Filter\";\n break;\n case 4:\n title = \"Drivers Filter\";\n break;\n case 5:\n title = \"Distance Filter\";\n break;\n case 6:\n title = \"Hashtag Filter\";\n break;\n case 7:\n title = \"Color Filter\";\n break;\n case 8:\n title = \"Check-In Filter\";\n break;\n //@formatter:on\n }\n return title;\n }\n\n\n get stopDistText() {\n return this.displayDistance(this.stopFilterDistance, \"\");\n }\n\n get siteDistText() {\n return this.displayDistance(this.siteFilterDistance, \"\");\n }\n\n get taskDistText() {\n return this.displayDistance(this.taskFilterDistance, \"\");\n }\n\n get stopHashText() {\n return this.displayHash(this.stopFilterHash, this.stopFilterHashAll);\n }\n\n get siteHashText() {\n return this.displayHash(this.siteFilterHash, this.siteFilterHashAll);\n }\n\n get taskHashText() {\n return this.displayHash(this.taskFilterHash, this.taskFilterHashAll);\n }\n\n get siteCheckText() {\n const trigger = this.recomputeSites;\n let min = Math.abs(RwPrefUtils.siteFilterCheckMin);\n let max = Math.abs(RwPrefUtils.siteFilterCheckMax);\n let include = RwPrefUtils.siteFilterCheckWithin;\n //console.warn(\"siteCheckText min, max\", min, max);\n let text = this.getCheckText(include, min, max, \"\");\n return text;\n }\n\n private getCheckText(include: boolean, min: number, max: number, anyText: string) {\n let text = include ? \"include check-ins \" : \"exclude check-ins \";\n if (min !== 100 || max !== 0) {\n if (min < 100 && max > 0) {\n //text = `${min} to ${max} days old`;\n text = `${max} to ${min} days old`;\n } else {\n if (min !== 100 && max === 0) text = `less than ${min} days old`;\n if (min === 100 && max !== 0) text = `more than ${max} days old`;\n }\n } else {\n text = anyText;\n }\n return text;\n }\n\n get gotStopDeltas(): boolean {\n let gotDeltas = false;\n const trigger = this.recomputeStops;\n if (this.stopFilterName !== RwPrefUtils.stopFilterName) gotDeltas = true;\n else if (this.stopFilterAddress !== RwPrefUtils.stopFilterAddress) gotDeltas = true;\n else if (this.stopFilterActiveOnly != (RwPrefUtils.stopFilterType === RwStopFilterType.ActiveStopsOnly)) gotDeltas = true;\n else if (this.stopFilterDistance != RwPrefUtils.stopFilterDistance) gotDeltas = true;\n else if (this.stopFilterHash != RwPrefUtils.stopFilterHash) gotDeltas = true;\n else if (this.stopFilterHashAll != RwPrefUtils.stopFilterHashAll) gotDeltas = true;\n else if (this.stopFilterColor != RwPrefUtils.stopFilterColor) gotDeltas = true;\n return gotDeltas;\n }\n\n get gotSiteDeltas(): boolean {\n let gotDeltas = false;\n const trigger = this.recomputeSites;\n let isNameDelta = this.siteFilterName !== RwPrefUtils.siteFilterName;\n let isAddressDelta = this.siteFilterAddress !== RwPrefUtils.siteFilterAddress;\n let gotTextDelta = isNameDelta || isAddressDelta;\n if (gotTextDelta) {\n gotDeltas = true;\n //console.warn(\"gotSiteDeltas gotTextDelta: isNameDelta, isAddressDelta\", isNameDelta, isAddressDelta);\n } else {\n let isDistDelta = this.siteFilterDistance !== RwPrefUtils.siteFilterDistance;\n if (isDistDelta) {\n gotDeltas = true;\n //console.warn(\"gotSiteDeltas isDistDelta\");\n } else {\n let isHashDelta = this.siteFilterHash != RwPrefUtils.siteFilterHash;\n let isHashAllDelta = this.siteFilterHashAll != RwPrefUtils.siteFilterHashAll;\n let gotHashDelta = isHashDelta || isHashAllDelta;\n if (gotHashDelta) {\n gotDeltas = true;\n //console.warn(\"gotSiteDeltas gotHashDelta: isHashDelta, isHashAllDelta\", isHashDelta, isHashAllDelta);\n } else {\n let isColorDelta = this.siteFilterColor != RwPrefUtils.siteFilterColor;\n if (isColorDelta) {\n gotDeltas = true;\n //console.warn(\"gotSiteDeltas isColorDelta\");\n } else {\n let isCheckMinDelta = this.siteFilterCheckMin != RwPrefUtils.siteFilterCheckMin;\n let isCheckMaxDelta = this.siteFilterCheckMax != RwPrefUtils.siteFilterCheckMax;\n let isCheckWithinDelta = this.siteFilterCheckWithin != RwPrefUtils.siteFilterCheckWithin;\n let gotCheckDelta = isCheckMinDelta || isCheckMaxDelta || isCheckWithinDelta;\n if (gotCheckDelta) {\n gotDeltas = true;\n //console.warn(\"gotSiteDeltas gotCheckDelta: isCheckMinDelta, siteFilterCheckMax\", isCheckMinDelta, siteFilterCheckMax);\n }\n }\n }\n }\n }\n return gotDeltas;\n }\n\n get gotTaskDeltas(): boolean {\n let gotDeltas = false;\n const trigger = this.recomputeTasks;\n if (this.taskFilterName !== RwPrefUtils.taskFilterName) gotDeltas = true;\n else if (this.taskFilterAddress !== RwPrefUtils.taskFilterAddress) gotDeltas = true;\n else if (this.taskFilterDistance !== RwPrefUtils.taskFilterDistance) gotDeltas = true;\n else if (this.taskFilterHash != RwPrefUtils.taskFilterHash) gotDeltas = true;\n else if (this.taskFilterHashAll != RwPrefUtils.taskFilterHashAll) gotDeltas = true;\n else if (this.taskFilterColor != RwPrefUtils.taskFilterColor) gotDeltas = true;\n return gotDeltas;\n }\n\n get gotDriverDeltas(): boolean {\n let gotDeltas = false;\n const trigger = this.recomputeDrivers;\n if (this.driverFilterName !== RwPrefUtils.driverFilterName) {\n gotDeltas = true;\n }\n return gotDeltas;\n }\n\n get isLayerHiddenOrFiltered(): boolean {\n return this.isLayerFiltered || this.space.isLayerHidden;\n }\n\n get isLayerFiltered() {\n let isFiltered = this.isStopFiltered || this.isSiteFiltered || this.isTaskFiltered || this.isDriverFiltered;\n //console.log(\"isLayersFiltered\", isFiltered, this.isStopFiltered);\n return isFiltered;\n }\n\n get isStopFiltered(): boolean {\n let gotFilter = false;\n const trigger = this.recomputeStops;\n const deltas = this.gotStopDeltas;\n if (RwPrefUtils.stopFilterName && RwPrefUtils.stopFilterName.length > 0) gotFilter = true;\n else if (RwPrefUtils.stopFilterAddress && RwPrefUtils.stopFilterAddress.length > 0) gotFilter = true;\n else if (RwPrefUtils.stopFilterType === RwStopFilterType.ActiveStopsOnly) gotFilter = true;\n else if (RwPrefUtils.stopFilterDistance > 0 && RwPrefUtils.stopFilterDistance < 100) gotFilter = true;\n else if (RwPrefUtils.stopFilterHash && RwPrefUtils.stopFilterHash.length > 0) gotFilter = true;\n else if (RwPrefUtils.stopFilterHashAll) gotFilter = true;\n else if (RwPrefUtils.stopFilterColor && RwPrefUtils.stopFilterColor.length > 0) gotFilter = true;\n return gotFilter;\n }\n\n get isSiteFiltered(): boolean {\n //xREF: isSiteFiltered\n let gotFilter = false;\n const trigger = this.recomputeSites;\n const deltas = this.gotSiteDeltas;\n\n let isNameDelta = RwPrefUtils.siteFilterName && RwPrefUtils.siteFilterName.length > 0;\n let isAddressDelta = RwPrefUtils.siteFilterAddress && RwPrefUtils.siteFilterAddress.length > 0;\n //console.log(\"isSiteFiltered\", isAddressDelta, RwPrefUtils.siteFilterAddress);\n let gotTextDelta = isNameDelta || isAddressDelta;\n if (gotTextDelta) {\n gotFilter = true;\n //console.warn(\"isSiteFiltered gotTextDelta: isNameDelta, isAddressDelta\", isNameDelta, isAddressDelta);\n } else {\n let isDistDelta = RwPrefUtils.siteFilterDistance > 0 && RwPrefUtils.siteFilterDistance < 100;\n if (isDistDelta) {\n gotFilter = true;\n //console.warn(\"isSiteFiltered isDistDelta\");\n } else {\n let isHashDelta = RwPrefUtils.siteFilterHash && RwPrefUtils.siteFilterHash.length > 0;\n let isHashAllDelta = RwPrefUtils.siteFilterHashAll;\n let gotHashDeltas = isHashDelta || isHashAllDelta;\n if (gotHashDeltas) {\n gotFilter = true;\n //console.warn(\"isSiteFiltered gotHashDelta: isHashDelta, isHashAllDelta\", isHashDelta, isHashAllDelta);\n } else {\n let isColorDelta = RwPrefUtils.siteFilterColor && RwPrefUtils.siteFilterColor.length > 0;\n if (isColorDelta) {\n gotFilter = true;\n //console.warn(\"isSiteFiltered isColorDelta\");\n } else {\n let isCheckMinDelta = RwPrefUtils.siteFilterCheckMin != -100;\n let isCheckMaxDelta = RwPrefUtils.siteFilterCheckMax != 0;\n let isCheckIncludeDelta = RwPrefUtils.siteFilterCheckWithin != true;\n let gotCheckDelta = isCheckMinDelta || isCheckMaxDelta || isCheckIncludeDelta;\n if (gotCheckDelta) {\n gotFilter = true;\n //console.warn(\"isSiteFiltered gotCheckDelta: isCheckMinDelta, isCheckMaxDelta\", isCheckMinDelta, isCheckMaxDelta);\n }\n\n }\n }\n }\n }\n return gotFilter;\n }\n\n get isTaskFiltered(): boolean {\n let gotFilter = false;\n const trigger = this.recomputeTasks;\n const deltas = this.gotTaskDeltas;\n if (RwPrefUtils.taskFilterName && RwPrefUtils.taskFilterName.length > 0) gotFilter = true;\n else if (RwPrefUtils.taskFilterAddress && RwPrefUtils.taskFilterAddress.length > 0) gotFilter = true;\n else if (RwPrefUtils.taskFilterDistance > 0 && RwPrefUtils.taskFilterDistance < 100) gotFilter = true;\n else if (RwPrefUtils.taskFilterHash && RwPrefUtils.taskFilterHash.length > 0) gotFilter = true;\n else if (RwPrefUtils.taskFilterHashAll) gotFilter = true;\n else if (RwPrefUtils.taskFilterColor && RwPrefUtils.taskFilterColor.length > 0) gotFilter = true;\n return gotFilter;\n }\n\n get isDriverFiltered(): boolean {\n let gotFilter = false;\n const trigger = this.recomputeDrivers;\n if (this.driverFilterName && this.driverFilterName.length > 0) gotFilter = true;\n return gotFilter;\n }\n\n get isKilometers(): boolean {\n return RwPrefUtils.distUnits === RwDistUnits.Kilometers;\n }\n\n get distText(): string {\n let text: string;\n let distText = this.dist;\n text = this.displayDistance(distText, \"Any distance\");\n return text;\n }\n\n get checkDateText(): string {\n let text = \"\";\n let min = Math.abs(this.checkRange[0]);\n let max = Math.abs(this.checkRange[1]);\n let within = this.checkWithin;\n text = this.getCheckText(within, min, max, \"Unfiltered\");\n return text;\n }\n\n private displayHash(hash: string, hashAll: boolean) {\n //console.log(\"displayHash\", hash, hashAll);\n let text = \"\";\n let gotHash = hash && hash.length > 0;\n if (gotHash) {\n let isAllText = hashAll ? \"All of: \" : \"Any of: \";\n text = `${isAllText} ${hash}`;\n }\n return text;\n }\n\n //#endregion Props\n\n\n //#region Navigation\n\n onFilterStopsClick() {\n const self = this;\n this.idxTab = 1;\n setTimeout(() => {\n self.$nextTick((self.$refs.txtStopFilterName as any).focus);\n }, 200);\n }\n\n onFilterSitesClick() {\n const self = this;\n this.idxTab = 2;\n setTimeout(() => {\n self.$nextTick((self.$refs.txtSiteFilterName as any).focus);\n }, 200);\n }\n\n onFilterTasksClick() {\n const self = this;\n this.idxTab = 3;\n setTimeout(() => {\n self.$nextTick((self.$refs.txtTaskFilterName as any).focus);\n }, 200);\n }\n\n onFilterDriversClick() {\n const self = this;\n this.idxTab = 4;\n setTimeout(() => {\n self.$nextTick((self.$refs.txtDriverFilterName as any).focus);\n }, 200);\n }\n\n\n onBackClick() {\n //console.log(\"onBackClick\");\n //Make sure any in-prog work reset back to default\n this.stopFilterName = RwPrefUtils.stopFilterName;\n this.stopFilterAddress = RwPrefUtils.stopFilterAddress;\n this.siteFilterName = RwPrefUtils.siteFilterName;\n this.siteFilterAddress = RwPrefUtils.siteFilterAddress;\n this.taskFilterName = RwPrefUtils.taskFilterName;\n this.taskFilterAddress = RwPrefUtils.taskFilterAddress;\n this.driverFilterName = RwPrefUtils.driverFilterName;\n this.idxTab = 0;\n }\n\n onBackDist(event: Event) {\n this.idxTab = this.idxTabSrc;\n this.idxTabSrc = 0;\n }\n\n onBackHash(event: Event) {\n this.idxTab = this.idxTabSrc;\n this.idxTabSrc = 0;\n }\n\n onBackColor(event: Event) {\n this.idxTab = this.idxTabSrc;\n this.idxTabSrc = 0;\n }\n\n onBackCheck(event: Event) {\n this.idxTab = this.idxTabSrc;\n this.idxTabSrc = 0;\n }\n\n\n onStopDist() {\n this.idxTab = 5;\n this.idxTabSrc = 1;\n this.dist = this.stopFilterDistance;\n }\n\n onStopHash() {\n this.idxTab = 6;\n this.idxTabSrc = 1;\n this.hash = this.stopFilterHash;\n this.hashAll = this.stopFilterHashAll;\n }\n\n onStopColor() {\n this.idxTab = 7;\n this.idxTabSrc = 1;\n this.color = this.stopFilterColor;\n }\n\n onSiteDist() {\n this.idxTab = 5;\n this.idxTabSrc = 2;\n this.dist = this.siteFilterDistance;\n }\n\n onSiteHash() {\n this.idxTab = 6;\n this.idxTabSrc = 2;\n this.hash = this.siteFilterHash;\n this.hashAll = this.siteFilterHashAll;\n }\n\n onSiteColor() {\n this.idxTab = 7;\n this.idxTabSrc = 2;\n this.color = this.siteFilterColor;\n }\n\n onSiteCheck() {\n this.idxTab = 8;\n this.idxTabSrc = 2;\n this.checkRange = [this.siteFilterCheckMin, this.siteFilterCheckMax];\n this.checkWithin = this.siteFilterCheckWithin;\n // console.log(\"onSiteCheck\", this.siteFilterCheckMin, this.siteFilterCheckMax, this.siteFilterCheckWithin);\n }\n\n onTaskDist() {\n this.idxTab = 5;\n this.idxTabSrc = 3;\n this.dist = this.taskFilterDistance;\n }\n\n onTaskHash() {\n this.idxTab = 6;\n this.idxTabSrc = 3;\n this.hash = this.taskFilterHash;\n this.hashAll = this.taskFilterHashAll;\n }\n\n onTaskColor() {\n this.idxTab = 7;\n this.idxTabSrc = 3;\n this.color = this.taskFilterColor;\n }\n\n\n //#endregion Navigation\n\n\n //#region Apply APIs\n\n onApplyFilter() {\n switch (this.idxTab) {\n //@formatter:off\n case 1:\n this.applyStopFilter();\n break;\n case 2:\n this.applySiteFilter();\n break;\n case 3:\n this.applyTaskFilter();\n break;\n case 4:\n this.applyDriverFilter();\n break;\n //@formatter:on\n }\n this.idxTab = 0;\n }\n\n private applyStopFilter() {\n RwPrefUtils.stopFilterName = this.stopFilterName ? this.stopFilterName : \"\";\n RwPrefUtils.stopFilterAddress = this.stopFilterAddress ? this.stopFilterAddress : \"\";\n RwPrefUtils.stopFilterType = this.stopFilterActiveOnly ? RwStopFilterType.ActiveStopsOnly : RwStopFilterType.All;\n RwPrefUtils.stopFilterDistance = this.stopFilterDistance;\n RwPrefUtils.stopFilterHash = this.stopFilterHash ? this.stopFilterHash : \"\";\n RwPrefUtils.stopFilterHashAll = this.stopFilterHashAll;\n RwPrefUtils.stopFilterColor = this.stopFilterColor;\n this.recomputeStops = Math.random();\n this.space.isStopFiltered = this.isStopFiltered;\n this.globals.commitStops();\n }\n\n private applySiteFilter() {\n // console.log(\"applySiteFilter\", `siteFilterHash: \\\"${newHash}\\\"`);\n RwPrefUtils.siteFilterName = this.siteFilterName ? this.siteFilterName : \"\";\n RwPrefUtils.siteFilterAddress = this.siteFilterAddress ? this.siteFilterAddress : \"\";\n RwPrefUtils.siteFilterDistance = this.siteFilterDistance;\n RwPrefUtils.siteFilterHash = this.siteFilterHash ? this.siteFilterHash : \"\";\n RwPrefUtils.siteFilterHashAll = this.siteFilterHashAll;\n RwPrefUtils.siteFilterColor = this.siteFilterColor;\n RwPrefUtils.siteFilterCheckMin = this.siteFilterCheckMin;\n RwPrefUtils.siteFilterCheckMax = this.siteFilterCheckMax;\n RwPrefUtils.siteFilterCheckWithin = this.siteFilterCheckWithin;\n this.recomputeSites = Math.random();\n this.space.isSiteFiltered = this.isSiteFiltered;\n this.globals.commitSites();\n }\n\n private applyTaskFilter() {\n RwPrefUtils.taskFilterName = this.taskFilterName ? this.taskFilterName : \"\";\n RwPrefUtils.taskFilterAddress = this.taskFilterAddress ? this.taskFilterAddress : \"\";\n RwPrefUtils.taskFilterDistance = this.taskFilterDistance;\n RwPrefUtils.taskFilterHash = this.taskFilterHash ? this.taskFilterHash : \"\";\n RwPrefUtils.taskFilterHashAll = this.taskFilterHashAll;\n RwPrefUtils.taskFilterColor = this.taskFilterColor;\n this.recomputeTasks = Math.random();\n this.space.isTaskFiltered = this.isTaskFiltered;\n this.globals.commitTasks();\n }\n\n private applyDriverFilter() {\n RwPrefUtils.driverFilterName = this.driverFilterName;\n this.recomputeDrivers = Math.random();\n this.space.isDriverFiltered = this.isDriverFiltered;\n this.globals.commitDrivers();\n }\n\n private onApplyDist() {\n switch (this.idxTabSrc) {\n case 1: {\n this.stopFilterDistance = this.dist;\n this.applyStopFilter();\n break;\n }\n case 2: {\n this.siteFilterDistance = this.dist;\n this.applySiteFilter();\n break;\n }\n case 3: {\n this.taskFilterDistance = this.dist;\n this.applyTaskFilter();\n break;\n }\n }\n this.idxTab = this.idxTabSrc;\n this.idxTabSrc = 0;\n }\n\n private onApplyHash() {\n\n switch (this.idxTabSrc) {\n case 1: {\n this.stopFilterHash = this.hash;\n this.stopFilterHashAll = this.hashAll;\n this.applyStopFilter();\n break;\n }\n case 2: {\n this.siteFilterHash = this.hash;\n this.siteFilterHashAll = this.hashAll;\n this.applySiteFilter();\n break;\n }\n case 3: {\n this.taskFilterHash = this.hash;\n this.taskFilterHashAll = this.hashAll;\n this.applyTaskFilter();\n break;\n }\n }\n this.idxTab = this.idxTabSrc;\n this.idxTabSrc = 0;\n }\n\n private onApplyColor() {\n\n if (this.color.length === 9 && this.color.endsWith(\"FF\")) {\n this.color = this.color.substring(0, 7);\n }\n\n switch (this.idxTabSrc) {\n case 1: {\n this.stopFilterColor = this.color;\n this.applyStopFilter();\n break;\n }\n case 2: {\n this.siteFilterColor = this.color;\n this.applySiteFilter();\n break;\n }\n case 3: {\n this.taskFilterColor = this.color;\n this.applyTaskFilter();\n break;\n }\n }\n this.idxTab = this.idxTabSrc;\n this.idxTabSrc = 0;\n }\n\n private onApplyCheck() {\n this.siteFilterCheckMin = this.checkRange[0];\n this.siteFilterCheckMax = this.checkRange[1];\n this.siteFilterCheckWithin = this.checkWithin;\n this.applySiteFilter();\n this.idxTab = this.idxTabSrc;\n this.idxTabSrc = 0;\n }\n\n //#endregion Apply APIs\n\n\n //#region Clear APIs\n\n\n onClearAll() {\n this.clearStopFilter();\n this.clearSiteFilter();\n this.clearTaskFilter();\n //this.clearDriverFilter();\n this.space.showDataLayerRoute = true;\n this.space.showDataLayerSites = true;\n this.space.showDataLayerTasks = true;\n //this.space.showDataLayerDrivers = true;\n }\n\n onClearFilter() {\n switch (this.idxTab) {\n //@formatter:off\n case 1:\n this.clearStopFilter();\n break;\n case 2:\n this.clearSiteFilter();\n break;\n case 3:\n this.clearTaskFilter();\n break;\n // case 4: this.clearDriverFilter(); break;\n //@formatter:on\n }\n }\n\n private clearStopFilter() {\n this.stopFilterName = \"\";\n this.stopFilterAddress = \"\";\n this.stopFilterActiveOnly = false;\n this.stopFilterDistance = 0;\n this.stopFilterHash = \"\";\n this.stopFilterHashAll = false;\n this.stopFilterColor = \"\";\n this.applyStopFilter();\n }\n\n private clearSiteFilter() {\n this.siteFilterName = \"\";\n this.siteFilterAddress = \"\";\n this.siteFilterDistance = 0;\n this.siteFilterHash = \"\";\n this.siteFilterHashAll = false;\n this.siteFilterColor = \"\";\n this.siteFilterCheckMin = -100;\n this.siteFilterCheckMax = 0;\n this.siteFilterCheckWithin = true;\n this.applySiteFilter();\n }\n\n private clearTaskFilter() {\n this.taskFilterName = \"\";\n this.taskFilterAddress = \"\";\n this.taskFilterDistance = 0;\n this.taskFilterHash = \"\";\n this.taskFilterHashAll = false;\n this.taskFilterColor = \"\";\n this.applyTaskFilter();\n }\n\n // private clearDriverFilter() {\n // this.driverFilterName = \"\";\n // this.applyDriverFilter();\n // }\n\n\n //#endregion Clear APIs\n\n\n //#region Distance APIs\n\n private displayDistance(dispDist: number, anyText: string) {\n let text: string;\n if (dispDist === 0 || dispDist === 100) {\n text = anyText;\n } else {\n let unitText = this.isKilometers ? 'km' : 'mi';\n text = `${dispDist} ${unitText}`;\n }\n return text;\n }\n\n onDecrement() {\n this.dist = this.dist > 0 ? (this.dist - 1) : 0;\n }\n\n onIncrement() {\n this.dist = this.dist < 100 ? (this.dist + 1) : 100;\n }\n\n //#endregion Distance APIs\n\n\n //region Exit\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.onCancelClick();\n }\n\n onSaveClick() {\n this.space.showDataLayers = false;\n }\n\n onCancelClick() {\n this.space.showDataLayers = false;\n }\n\n onDone(event: Event) {\n event.stopPropagation();\n this.onSaveClick();\n }\n\n //endregion Exit\n\n\n onActiveStopsSwitch(event: Event) {\n event.stopPropagation();\n this.stopFilterActiveOnly = !this.stopFilterActiveOnly;\n this.recomputeStops = Math.random();\n }\n\n onWithinDayRange(event: Event) {\n event.stopPropagation();\n this.siteFilterCheckWithin = !this.siteFilterCheckWithin;\n this.recomputeSites = Math.random();\n }\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerLayers.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerLayers.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerLayers.vue?vue&type=style&index=0&id=2415768f&prod&lang=css&\"","import { render, staticRenderFns } from \"./RwPlannerLayers.vue?vue&type=template&id=2415768f&\"\nimport script from \"./RwPlannerLayers.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPlannerLayers.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPlannerLayers.vue?vue&type=style&index=0&id=2415768f&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.showClusterPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"showClusterPicker\", $$v)},expression:\"globals.showClusterPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\"Cluster Picker\")]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 102px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VList,{attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxSubPin),callback:function ($$v) {_vm.idxSubPin=$$v},expression:\"idxSubPin\"}},_vm._l((_vm.clusterPin.clusteredPins),function(subPin,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onSubPinPick(subPin)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"width\":\"48\",\"height\":\"48\",\"contain\":\"\",\"src\":subPin.dataUrl ? subPin.dataUrl : ''}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(subPin.title)}})],1)],1)}),1)],1)],1),_c(VDivider),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPin} from \"@/app/dem/RwPin\";\n\n\n@Component\nexport default class RwClusterPicker extends Vue {\n\n //#region Props\n\n idxSubPin: number = -1;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get clusterPin(): RwPin {\n const self = this;\n //console.warn(\"get clusterPin\", this.globals.selectedClusterPin.clusteredPins.length);\n\n let cluster = this.globals.selectedClusterPin;\n if (cluster && cluster.clusteredPins && cluster.clusteredPins.length > 0) {\n let idx = cluster.clusteredPins.findIndex(p => self.space.isSelected(p))\n if (idx >= 0) {\n this.idxSubPin = idx;\n }\n }\n\n return this.globals.selectedClusterPin;\n }\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get loading(): boolean {\n return this.globals.isLoading;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n\n //#endregion Props\n\n\n //#region User Events\n\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n\n onSubPinPick(subPin: RwPin) {\n //console.log(\"onStopPick name, idxStop\", subPin ? subPin.title : \"no pin\", this.idxSubPin);\n this.close(subPin);\n }\n\n onCancel() {\n this.close();\n }\n\n\n close(pick?: RwPin) {\n if (pick) {\n this.$emit(\"onClusterPick\", pick);\n }\n this.globals.showClusterPicker = false;\n }\n\n\n // dataUrl(pin:RwPin){\n // // console.log(\"RwClusterPicker.dataUrl pin.title, pin.seq\", pin.title, pin.seq)\n // // if(pin.stop) {\n // // let stop = pin.stop;\n // // console.log(\"RwClusterPicker.dataUrl stop.name, stop.seq\", stop.name, stop.seq)\n // // }\n // //pin.invalidatePinImage();\n // let url = pin.dataUrl;\n // //console.log(\"RwClusterPicker.dataUrl url\", url)\n // return url && url.length > 0 ? url : \"\";\n // }\n\n\n //#endregion UI Nav\n\n\n // getStopUrl(pin:RwPin){\n // return RwImgUtils.calcPinUrl({ typ: RwPinTypes.Stop });\n // }\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwClusterPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwClusterPicker.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwClusterPicker.vue?vue&type=style&index=0&id=275a8560&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwClusterPicker.vue?vue&type=template&id=275a8560&scoped=true&\"\nimport script from \"./RwClusterPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwClusterPicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwClusterPicker.vue?vue&type=style&index=0&id=275a8560&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"275a8560\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"480px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":_vm.globals.isDarkMode ? '#000' : '#000'},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscClick.apply(null, arguments)}},model:{value:(_vm.space.showMapOptions),callback:function ($$v) {_vm.$set(_vm.space, \"showMapOptions\", $$v)},expression:\"space.showMapOptions\"}},[_c(VCard,{staticClass:\"dialog-card mx-auto\"},[_c(VCardTitle,{staticStyle:{\"text-align\":\"center\"}},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Map Options\")])]),_c(VCardText,{staticClass:\"dialog-content pb-0\",class:_vm.globals.theme},[_c(VContainer,[_c(VRow,{staticStyle:{\"text-align\":\"left\"},attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c(VCol,[_c('span',[_vm._v(\"Map Style\")])]),_c(VSpacer),_c(VCol,[_c(VSelect,{attrs:{\"items\":_vm.mapLayerStyles,\"required\":\"\",\"dense\":\"\"},model:{value:(_vm.mapLayerSelected),callback:function ($$v) {_vm.mapLayerSelected=$$v},expression:\"mapLayerSelected\"}})],1)],1),_c(VRow,{attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c('span',{staticClass:\"option-title\"},[_vm._v(\"Show Traffic Flow\")]),_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.showMapTraffic),callback:function ($$v) {_vm.showMapTraffic=$$v},expression:\"showMapTraffic\"}})],1)],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onEnterClick}},[_vm._v(\"Done\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\"\n\n\n@Component\nexport default class RwPlannerMapOptions extends Vue {\n\n mapLayerStyles = [\"Street View\", \"Satellite View\"];\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlan\n };\n\n\n get showMapTraffic(): boolean {\n return this.space.mapShowTraffic;\n }\n\n set showMapTraffic(val: boolean) {\n //console.log(\"PlanMapOptions mapShowTraffic\", val)\n this.space.mapShowTraffic = val;\n }\n\n\n get showMapIncidents(): boolean {\n return this.space.mapShowIncidents;\n }\n\n set showMapIncidents(val: boolean) {\n //console.log(\"PlanMapOptions mapShowTraffic\", val)\n this.space.mapShowIncidents = val;\n }\n\n get mapLayerSelected(): string {\n return this.space.mapShowSatellite ? \"Satellite View\" : \"Street View\";\n }\n\n set mapLayerSelected(val: string) {\n this.space.mapShowSatellite = val == \"Satellite View\";\n }\n\n\n onEnterClick(event: Event) {\n event.stopPropagation();\n this.onSaveClick();\n }\n\n onEscClick(event: Event) {\n event.stopPropagation();\n this.onCancelClick();\n }\n\n onSaveClick() {\n this.space.showMapOptions = false;\n }\n\n onCancelClick() {\n this.space.showMapOptions = false;\n }\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerMapOptions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerMapOptions.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerMapOptions.vue?vue&type=style&index=0&id=5582a4e6&prod&lang=css&\"","import { render, staticRenderFns } from \"./RwPlannerMapOptions.vue?vue&type=template&id=5582a4e6&\"\nimport script from \"./RwPlannerMapOptions.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPlannerMapOptions.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPlannerMapOptions.vue?vue&type=style&index=0&id=5582a4e6&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"content-class\":\"dialog-with-scroll\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showRoutePicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showRoutePicker\", $$v)},expression:\"globals.m_showRoutePicker\"}},[_c(VCard,[_c(VCardTitle,{class:_vm.globals.backColorBar},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[_c(VContainer,{staticClass:\"py-0\",staticStyle:{\"height\":\"calc(100vh - 225px)\"},attrs:{\"fill-height\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize px-8\",attrs:{\"x-large\":\"\",\"block\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onCopyStops}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy stops to another route \")],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\"},on:{\"click\":_vm.onMoveStops}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-arrow-right\")]),_vm._v(\" Move stops to another route \")],1)],1),(_vm.globals.isDisp)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\"},on:{\"click\":_vm.onCopyToTasks}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy to tasks \")],1)],1):_vm._e(),(_vm.globals.isDisp)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\"},on:{\"click\":_vm.onMoveToTasks}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-arrow-right\")]),_vm._v(\" Move to tasks \")],1)],1):_vm._e()],1)],1)],1)],1),_c(VTabItem,{key:\"1\",staticStyle:{\"height\":\"100%\"}},[_c(VList,{staticClass:\"py-0\",attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxRoute),callback:function ($$v) {_vm.idxRoute=$$v},expression:\"idxRoute\"}},[_c(VTextField,{ref:\"search\",attrs:{\"prepend-inner-icon\":\"search\",\"placeholder\":\"Search\"},model:{value:(_vm.searchFilter),callback:function ($$v) {_vm.searchFilter=$$v},expression:\"searchFilter\"}}),_c(VListItem,{staticClass:\"px-3 py-0\",on:{\"click\":_vm.newRoute}},[_c(VListItemIcon,[_c(VIcon,{staticStyle:{\"padding\":\"12px\"}},[_vm._v(\"mdi-plus-thick\")])],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"New Route\")])],1)],1),_vm._l((_vm.targetRoutes),function(route,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onRoutePick(route)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"src\":route.routeIcon}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(route.name)}})],1)],1)})],2)],1)],1)],1)],1),_c(VCardActions,[(_vm.idxTab !== 0)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onEscape}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute, RwRoutePick} from \"@/app/dem/RwRoute\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n\n@Component\nexport default class RwRoutePicker extends Vue {\n @Prop(Number) readonly initTab: number | undefined;\n @Prop(String) readonly initSrcId: string;\n\n\n //#region Props\n\n idxTab = 0;\n idxRoute = -1;\n isMoveStopOp = false;\n searchFilter = \"\"\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get title(): string {\n let title = \"New Route\";\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n title = 'Copy Stops';\n break;\n case 1:\n title = `Pick Target Route`;\n break;\n //@formatter:on\n }\n return title;\n }\n\n get targetRoutes(): RwRoute[] {\n let routes: RwRoute[] = [];\n let srcId = this.initSrcId;\n routes = this.globals.routes;\n if (srcId && srcId.length > 0) {\n routes = routes.filter(r => r.routeId != srcId);\n routes = routes.sort((r1, r2) => r2.startTime.getTime() > r1.startTime.getTime() ? -1 : 1);\n } else {\n routes = this.globals.routes;\n }\n\n if (this.searchFilter) {\n const srch = this.searchFilter.toLowerCase().trim();\n routes = routes.filter(rt => rt.name?.toLowerCase()?.indexOf(srch) !== -1);\n }\n\n return routes;\n }\n\n //#endregion\n\n\n //#region Navigation\n\n onCopyStops() {\n this.isMoveStopOp = false;\n this.idxTab = 1;\n }\n\n onMoveStops() {\n this.isMoveStopOp = true;\n this.idxTab = 1;\n }\n\n onBackClick() {\n //console.log(\"onBackClick\");\n this.idxTab = 0;\n }\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n //#endregion Navigation\n\n\n onRoutePick(route: RwRoute, isNew: boolean = false) {\n //console.log(\"onRoutePick pick\", route.name);\n //this.openRoute(route);\n let pick = new RwRoutePick();\n pick.isMoveOp = this.isMoveStopOp;\n pick.tarRouteId = route.routeId;\n pick.isNew = isNew;\n this.$emit(\"onRoutePick\", pick);\n this.close();\n }\n\n\n close() {\n this.globals.m_showRoutePicker = false;\n }\n\n mounted() {\n //console.log(\"mounted initSrcId\", this.initSrcId, this.globals.m_routePickerSrcId);\n if (!!this.initTab || this.initTab >= 0) {\n this.idxTab = this.initTab;\n }\n }\n\n newRoute() {\n const SOURCE = \"RwRoutePicker.newRoute\";\n let route = RwRoute.blankRoute();\n this.globals.addRouteDB(route, [SOURCE], false)\n .then(routeNew => {\n this.globals.addRoute(route);\n this.onRoutePick(routeNew, true);\n })\n .catch(err => {\n let errDesc = err && err.description ? err.description : \"no description\";\n if (err && (err.status === 504 || err.status === 403)) {\n RwLog.warn(SOURCE, `Network error: ${JSON.stringify(err)}`);\n } else {\n this.globals.showSnack(`Route Creation Failed: ${errDesc}`, \"error\");\n RwLog.error(SOURCE, `Unhandled: ${JSON.stringify(err)}`);\n }\n });\n }\n\n onCopyToTasks() {\n this.$emit(\"onTasks\", false);\n this.close();\n }\n\n onMoveToTasks() {\n this.$emit(\"onTasks\", true);\n this.close();\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRoutePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRoutePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwRoutePicker.vue?vue&type=template&id=3d6f0144&\"\nimport script from \"./RwRoutePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwRoutePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"content-class\":\"dialog-with-scroll\",\"max-width\":\"480px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":_vm.globals.isDarkMode ? '#000' : '#000'},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.space.showSearchOptions),callback:function ($$v) {_vm.$set(_vm.space, \"showSearchOptions\", $$v)},expression:\"space.showSearchOptions\"}},[_c(VCard,{staticClass:\"dialog-card mx-auto\",staticStyle:{\"overflow-y\":\"auto\",\"height\":\"calc(100% - 48px)\"}},[_c(VCardTitle,{staticStyle:{\"text-align\":\"center\"}},[_c('span',{staticClass:\"headline\"},[_vm._v(\"Search Options\")])]),_c(VCardText,{staticClass:\"dialog-content pb-0\",class:_vm.globals.theme,staticStyle:{\"overflow-y\":\"auto\"}},[_c(VContainer,[_c(VRow,{attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c('span',[_vm._v(\"Search Web\")]),_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.searchWeb),callback:function ($$v) {_vm.searchWeb=$$v},expression:\"searchWeb\"}})],1),_c(VRow,{attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c('span',[_vm._v(\"Search Favorites\")]),_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.searchSites),callback:function ($$v) {_vm.searchSites=$$v},expression:\"searchSites\"}})],1),_c(VRow,{attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c('span',[_vm._v(\"Search Tasks\")]),_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.searchTasks),callback:function ($$v) {_vm.searchTasks=$$v},expression:\"searchTasks\"}})],1),_c(VDivider),_c(VRow,{attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c('span',[_vm._v(\"Set Sequence\")]),_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.setSeq),callback:function ($$v) {_vm.setSeq=$$v},expression:\"setSeq\"}})],1),_c(VRow,{attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c('span',[_vm._v(\"Edit New Location\")]),_c(VSwitch,{attrs:{\"dense\":\"\"},model:{value:(_vm.editNew),callback:function ($$v) {_vm.editNew=$$v},expression:\"editNew\"}})],1)],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCommit}},[_vm._v(\"Save\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\"\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\n\n@Component\nexport default class RwSearchOptions extends Vue {\n\n searchWeb = RwPrefUtils.searchWeb;\n searchSites = RwPrefUtils.searchSites;\n searchTasks = RwPrefUtils.searchTasks;\n setSeq = RwPrefUtils.searchSetSeq;\n editNew = RwPrefUtils.editAfterAdd;\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlan\n };\n\n\n onCommit(event: Event) {\n event.stopPropagation();\n\n RwPrefUtils.searchWeb = this.searchWeb;\n RwPrefUtils.searchSites = this.searchSites;\n RwPrefUtils.searchTasks = this.searchTasks;\n RwPrefUtils.searchSetSeq = this.setSeq;\n RwPrefUtils.editAfterAdd = this.editNew;\n\n this.close();\n }\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n onCancelClick() {\n this.close();\n }\n\n close() {\n this.space.showSearchOptions = false;\n }\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchOptions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchOptions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwSearchOptions.vue?vue&type=template&id=cc33d89a&scoped=true&\"\nimport script from \"./RwSearchOptions.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSearchOptions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cc33d89a\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{staticStyle:{\"overflow-x\":\"hidden\"},attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onEnter.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}]},model:{value:(_vm.space.showRouteOrder),callback:function ($$v) {_vm.$set(_vm.space, \"showRouteOrder\", $$v)},expression:\"space.showRouteOrder\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\"}},[_c(VToolbarTitle,[_vm._v(\" \"+_vm._s(_vm.dialogTitle))]),_c(VSpacer),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"disabled\":_vm.isManual,\"text\":\"\",\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onManOrder.apply(null, arguments)}}},on),[_c(VIcon,[_vm._v(\"mdi-drag-horizontal\")])],1)]}}])},[_c('span',[_vm._v(\"Set Order Manually\")])])],1),_c(VCardText,{class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 102px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[(_vm.updateStartPref!=0 && _vm.isStartOutOfDate && _vm.space.activeRoute.isHardStart)?_c(VRow,{staticClass:\"mt-2\"},[_c(VCol,{staticClass:\"text-center; mx-6\"},[(_vm.updateStartPref==1)?_c('span',{staticStyle:{\"font-size\":\"small\",\"color\":\"orangered\"}},[_vm._v(\" The Route Start (\"+_vm._s(_vm.routeStartText)+\") is more than 24 hours out of date. The date will be changed to \"),_c('b',[_vm._v(\"today\")]),_vm._v(\", per your preferences. \")]):_vm._e(),(_vm.updateStartPref==2)?_c('span',{staticStyle:{\"font-size\":\"small\",\"color\":\"orangered\"}},[_vm._v(\" The Route Start (\"+_vm._s(_vm.routeStartText)+\") is more than 24 hours out of date. The date will be changed to \"),_c('b',[_vm._v(\"tomorrow\")]),_vm._v(\", per your preferences. \")]):_vm._e(),(_vm.updateStartPref==3)?_c('span',{staticStyle:{\"font-size\":\"small\",\"color\":\"orangered\"}},[_vm._v(\" The Route Start (\"+_vm._s(_vm.routeStartText)+\") is more than 24 hours out of date. The date will be changed to \"),_c('b',[_vm._v(\"the time of Optimization\")]),_vm._v(\", per your preferences. \")]):_vm._e(),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":\"grey\",\"size\":\"small\"}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}],null,false,3113564318)},[_c('span',{staticStyle:{\"font-size\":\"small\",\"color\":\"grey\"}},[_vm._v(\" Change this behavior at any time from the settings tab. \")])])],1)],1):_vm._e(),_c(VList,{attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxStop),callback:function ($$v) {_vm.idxStop=$$v},expression:\"idxStop\"}},[_c('draggable',{staticClass:\"v-list-item__content\",attrs:{\"handle\":\".handle\",\"force-fallback\":true,\"fallback-class\":`${_vm.globals.isMobileView ? 'handle' : ''}`,\"move\":_vm.checkMove},on:{\"change\":_vm.onDragChange,\"start\":_vm.onStart,\"end\":_vm.onEnd},model:{value:(_vm.stopPins),callback:function ($$v) {_vm.stopPins=$$v},expression:\"stopPins\"}},_vm._l((_vm.stopPins),function(stopPin,index){return _c(VListItem,{key:index,class:`${_vm.globals.isMobileView ? 'handle' : ''}`,staticStyle:{\"width\":\"100%\"},attrs:{\"index\":index,\"pin\":stopPin},on:{\"click\":() => { if(!_vm.globals.isMobileView) { _vm.onStopPick(stopPin); } }}},[_c(VListItemAvatar,[_c(VImg,{attrs:{\"height\":\"32\",\"width\":\"32\",\"contain\":\"\",\"src\":stopPin ? stopPin.dataUrl ? stopPin.dataUrl : '' : ''}})],1),_c(VRow,{staticStyle:{\"max-width\":\"100%\",\"overflow\":\"hidden\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c(VListItemTitle,_vm._g({staticClass:\"text-left\"},on),[_vm._v(_vm._s(stopPin.title))])]}}],null,true)},[_c('span',[_vm._v(_vm._s(stopPin.title))])]),_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c(VListItemSubtitle,_vm._g({staticClass:\"text-left\"},on),[_vm._v(_vm._s(stopPin.address))])]}}],null,true)},[_c('span',[_vm._v(_vm._s(stopPin.address))])])],1),_c(VListItemIcon,[_c(VIcon,{class:`${_vm.globals.isMobileView ? '' :'handle'}`},[_vm._v(\"mdi-drag-horizontal\")])],1)],1)}),1)],1)],1)],1),_c(VDivider),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":_vm.isManual ? 'normal' : 'primary',\"text\":\"\"},on:{\"click\":_vm.onOptimize}},[_vm._v(\" Optimize \")]),(_vm.isManual)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCalculate}},[_vm._v(\" Calculate \")]):_vm._e()],1)],1)],1),_c(VDialog,{attrs:{\"max-width\":\"290\"},model:{value:(_vm.showConfirmPopup),callback:function ($$v) {_vm.showConfirmPopup=$$v},expression:\"showConfirmPopup\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"headline justify-center\"},[_vm._v(\"Confirm Optimize\")]),_c(VCardText,{class:_vm.globals.theme},[_vm._v(\" This route is currently manually ordered. Do you want to continue with optimize? \")]),_c(VCardActions,{staticClass:\"justify-center\"},[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showConfirmPopup = false}}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onOptimizeConfirmed}},[_vm._v(\" Optimize \")])],1)],1)],1),_c(VDialog,{attrs:{\"persistent\":\"\",\"max-width\":\"450\"},model:{value:(_vm.showOptBusy),callback:function ($$v) {_vm.showOptBusy=$$v},expression:\"showOptBusy\"}},[_c(VCard,[_c(VCardTitle,[_vm._v(\"Optimizing Route\")]),_c(VCardText,{staticStyle:{\"overflow\":\"hidden\"}},[_c(VProgressLinear,{attrs:{\"value\":_vm.optBusyProgress,\"color\":_vm.constants.DefaultStopColor}}),_c('span',{staticClass:\"text-left d-block mb-5\"},[_vm._v(\"May take up to 3 minutes...\")]),_c('img',{attrs:{\"id\":\"optimizing-spinner\",\"alt\":\"Optimizing\",\"src\":\"/images/icons/TruckSpinner.png\"}})],1)],1)],1),_c(VDialog,{attrs:{\"persistent\":\"\",\"max-width\":\"600\",\"retain-focus\":false},model:{value:(_vm.showUnassignedDriver),callback:function ($$v) {_vm.showUnassignedDriver=$$v},expression:\"showUnassignedDriver\"}},[_c(VCard,[_c(VToolbar,[_c(VToolbarTitle,[_vm._v(\"Select Driver\")])],1),_c(VCardText,{staticClass:\"py-8\"},[_vm._v(\" A driver must be assigned before ordering a GPS based start point route. \")]),_c(VCardActions,[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"Cancel\")]),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.setDefaultStartPoint}},[_vm._v(\"Use Default Start Point\")]),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.onContinue()}}},[_vm._v(\"Continue\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport draggable from 'vuedraggable';\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwRoute, RwRouteAssignCodes} from \"@/app/dem/RwRoute\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport moment from \"moment\";\n\n\n@Component({components: {draggable}})\nexport default class RwRouteOrder extends Vue {\n\n //#region Props\n\n showConfirmPopup = false;\n showOptBusy = false;\n idxStop = -1;\n dragging: false;\n selectId = \"\";\n m_pinsSorted: RwPin[] = [];\n optBusyProgress = 0;\n optBusyProgressInterval = null;\n showUnassignedDriver = false;\n\n m_startDate = null;\n m_finishDate = null;\n skipWarn = false;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get constants(): RwConstants {\n return RwConstants;\n }\n\n get dialogTitle(): string {\n let title = this.space.activeRoute ? `Order Stops: ${this.space.activeRoute.name}` : \"\";\n return title;\n }\n\n get routeStartText(): string {\n let name = this.formatDateTime(this.space.activeRoute.startTime);\n return name;\n }\n\n get stopPins(): RwPin[] {\n //console.warn(\"GET RwRouteOrder.stopPins\");\n if (!this.m_pinsSorted || this.m_pinsSorted.length === 0) {\n let pins = this.space.stopPins.filter(p => p.isActive);\n if (pins) {\n\n pins.sort((p1, p2) => {\n if (p1.isActive === p2.isActive) {\n return p1.seq - p2.seq\n } else {\n if (!p1.isActive && !p2.isActive) {\n return 1;\n } else {\n return (p1.isActive) ? -1 : 1;\n }\n }\n });\n\n }\n this.m_pinsSorted = pins;\n //console.log(\"GET stopPins lazy init; default sort\");\n } else {\n //console.log(\"GET stopPins return cached\");\n }\n return this.m_pinsSorted;\n }\n\n set stopPins(val: RwPin[]) {\n let clone = [...val];\n this.m_pinsSorted = clone;\n }\n\n get isManual() {\n let isManual = false;\n let route = this.space.activeRoute;\n if (route && route.isManOrder) {\n isManual = true;\n }\n return isManual;\n }\n\n get todaysDate(): Date {\n let date = new Date();\n // console.warn('todays date is: ', date );\n return date;\n }\n\n get tomorrowsDate(): Date {\n let date = new Date();\n date.setDate(date.getDate() + 1);\n // console.warn('tomorrows date is: ', date );\n return date;\n }\n\n\n get isStartOutOfDate(): Boolean {\n var isOutOfDate = false;\n let route = this.space.activeRoute;\n if (route != null && route.startTime != null) {\n let todayTime = this.todaysDate.getTime();\n let startTime = this.space.activeRoute.startTime.getTime();\n if (todayTime - startTime > 86400000) {\n isOutOfDate = true;\n }\n }\n return isOutOfDate;\n }\n\n // get isStartOutOfDate(): Boolean{\n // let startTime = this.space.activeRoute.startTime.getTime();\n // let todayTime = this.todaysDate.getTime();\n // if (todayTime-startTime>86400000){\n // // console.warn(\"is Start Out of Date = true\");\n // return true;\n // }else{\n // // console.warn(\"is Start Out of Date = false\");\n // return false;\n // }\n // }\n\n get startDate(): Date {\n // console.warn('start date is: ', this.m_startDate);\n return this.m_startDate;\n }\n\n set startDate(val: Date) {\n this.m_startDate = val;\n let route = this.space.activeRoute;\n if (route.isHardStop) {\n //REVIEW: m_finishDate was not being set for HardStop routes: so value was null;\n this.m_finishDate = route.finishTime;\n } else {\n this.m_finishDate = moment(this.startDate).add(RwPrefUtils.routeSpan, \"minutes\").toDate();\n }\n }\n\n get startEpoc(): number {\n return this.startDate.getTime();\n }\n\n get startTimeISO(): string {\n let timeText = this.momentToTime(moment(this.startDate));\n //console.log(\"GET startTime\", timeText);\n // console.warn('start time ISO is: ', timeText);\n return timeText;\n }\n\n set startTimeISO(val: string) {\n let day = moment(this.startDate).startOf('day');\n let mins = this.minsFromTime(val);\n this.startDate = day.add(mins, \"minutes\").toDate();\n //console.log(\"SET startTimeISO\", val, this.startDate);\n }\n\n get startDateISO(): string {\n let mo = moment(this.startEpoc);\n let text = mo.format(\"YYYY-MM-DD\");\n return text;\n }\n\n set startDateISO(val: string) {\n let mo = moment(val, \"YYYY-MM-DD\");\n this.startDate = mo.toDate();\n }\n\n get updateStartPref(): number {\n let val = RwPrefUtils.updateStartPref;\n // console.warn(\"updateStartPref got: \", val);\n return val;\n }\n\n formatDateTime(date: Date): string {\n let nowMoment = moment();\n let newMoment = moment(date);\n let isToday = nowMoment.isSame(newMoment, \"day\");\n let dateText = isToday ? newMoment.format(\"LT\") : newMoment.format(\"L LT\");\n return dateText;\n }\n\n //#endregion Props\n\n //#region User Events\n\n onStopPick(stopPin: RwPin) {\n //console.log(\"onStopPick\", stopPin.title);\n this.idxStop = this.m_pinsSorted.findIndex(s => s.eid === stopPin.eid);\n }\n\n\n onEnter(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n\n onManOrder() {\n //console.log(\"onManOrder\");\n let route = this.space.activeRoute;\n if (route && !route.isManOrder) {\n route.isManOrder = true;\n }\n }\n\n\n onCancel() {\n //console.log(\"onCancel\");\n this.space.showRouteOrder = false;\n }\n\n\n close() {\n this.space.showRouteOrder = false;\n }\n\n\n onDragChange(evt, originalEvent) {\n //console.log(\"onDragChange\", evt, originalEvent);\n }\n\n\n checkMove(evt, originalEvent) {\n //console.log(\"checkMove\");\n let route = this.space.activeRoute;\n if (route && !route.isManOrder) {\n route.isManOrder = true;\n }\n }\n\n\n onStart(evt, originalEvent) {\n //console.log(\"onStart\", evt.oldIndex);\n this.idxStop = evt.oldIndex;\n }\n\n\n onEnd(evt, originalEvent) {\n //console.log(\"onEnd\", evt.newIndex, this.selectId);\n this.idxStop = evt.newIndex;\n }\n\n //#endregion UI Nav\n\n\n //#region Optimize APIs\n\n onOptimize() {\n //console.log(\"onOptimize\");\n let route = this.space.activeRoute;\n const stops = route.getActiveStops();\n\n let gotValidStart = this.gotValidStart(route, stops);\n if (gotValidStart) {\n\n if (route.isManOrder) {\n this.showConfirmPopup = true;\n } else {\n this.optimize();\n }\n } else {\n this.globals.showSnack(`Please add more Stops or a Start Point to Optimize your Route`, \"error\");\n }\n }\n\n\n onCalculate() {\n //console.log(\"onCalculate\");\n let route = this.space.activeRoute;\n\n if ((route.firstStopId && route.firstStopId !== \"\") || (route.finalStopId && route.finalStopId !== \"\")) {\n this.globals.showConfirmDialog(\"Confirm Calculate\", \"Manually ordering this Route will ignore Stop settings, and Calculate the Route in the order shown. Continue?\", \"Yes\", \"Back\")\n .then(onConfirm => {\n if (onConfirm) {\n route.firstStopId = \"\";\n route.finalStopId = \"\";\n this.calculate();\n\n // } else {\n //\n }\n })\n } else {\n this.calculate();\n }\n\n\n }\n\n calculate() {\n let route = this.space.activeRoute;\n const stops = route.getActiveStops();\n switch (this.updateStartPref) {\n case 0:\n break;\n case 1:\n this.updateStartTime(0);\n break;\n case 2:\n this.updateStartTime(1);\n break;\n case 3:\n this.updateStartTime(2);\n break;\n }\n\n let seq = 1;\n const _stops: RwStop[] = []\n this.m_pinsSorted.forEach(p => {\n let stop = p.stop;\n stop.seq = seq;\n seq++;\n _stops.push(stop);\n });\n\n let gotValidStart = this.gotValidStart(route, stops);\n if (gotValidStart) {\n this.space.onOptimize(_stops)\n .then(res => this.space.showRouteSummary = true)\n .catch(err => RwLog.consoleError(\"WTF: onCalculate FAILED\", err.toString()))\n this.space.showRouteOrder = false;\n } else {\n this.globals.showSnack(`Please add more Stops or a Start Point to Optimize your Route`, \"error\");\n }\n }\n\n\n gotValidStart(route: RwRoute, stops: RwStop[]): boolean {\n\n let isValid = false;\n let gotCoords = ((route.lat && route.lat != 0) || (route.lng && route.lng != 0))\n if (gotCoords) {\n isValid = true;\n } else {\n let gotPrefCoords = ((RwPrefUtils.startLat && RwPrefUtils.startLat != 0) || (RwPrefUtils.startLng && RwPrefUtils.startLng != 0))\n if (gotPrefCoords) {\n route.lat = RwPrefUtils.startLat;\n route.lng = RwPrefUtils.startLng;\n isValid = true;\n } else {\n let gotLastCoords = ((RwPrefUtils.lastFixedStartLat && RwPrefUtils.lastFixedStartLat != 0) || (RwPrefUtils.lastFixedStartLng && RwPrefUtils.lastFixedStartLng != 0))\n if (gotLastCoords) {\n route.lat = RwPrefUtils.lastFixedStartLat;\n route.lng = RwPrefUtils.lastFixedStartLng;\n isValid = true;\n } else {\n if (route.stops.length > 1) {\n let latSum: number = 0;\n let lngSum: number = 0;\n stops.forEach(stop => {\n latSum += stop.lat;\n lngSum += stop.lng;\n })\n route.lat = (latSum / stops.length);\n route.lng = (lngSum / stops.length);\n isValid = true;\n }\n }\n }\n }\n return isValid;\n }\n\n\n onOptimizeConfirmed() {\n this.globals.activeRoute.isManOrder = false;\n this.showConfirmPopup = false;\n this.optimize();\n }\n\n\n onContinue() {\n //console.log(\"RwRouteOrder.onContinue\")\n this.globals.showAssignPicker(this.globals.activeRoute);\n this.close()\n }\n\n\n optimize() {\n switch (this.updateStartPref) {\n case 0:\n break;\n case 1:\n this.updateStartTime(0);\n break;\n case 2:\n this.updateStartTime(1);\n break;\n case 3:\n this.updateStartTime(2);\n break;\n }\n this.showOptBusy = true;\n this.runOptProgress();\n this.space.onOptimize()\n .then(() => {\n this.optBusyProgress = 100;\n setTimeout(() => {\n this.space.showRouteOrder = false;\n this.space.showRouteSummary = true;\n }, 1000);\n })\n .then(() => this.space.showStopsViolations = this.space.showStopsViolations.filter(id => id != this.globals.activeRoute.routeId))\n .catch(err => {\n RwLog.consoleError(\"WTF: onOptimize FAILED\", err.toString());\n })\n .finally(() => {\n clearInterval(this.optBusyProgressInterval);\n setTimeout(() => {\n this.showOptBusy = false;\n this.optBusyProgress = 0;\n }, 1500);\n });\n }\n\n runOptProgress() {\n\n const maxStops = 200;\n const stopsRatio = this.space.activeRoute.stopCountActive / maxStops;\n const newStopsTime = this.space.activeRoute.stops.reduce((acc, stop) => stop.timeToDrive === 0 ? 2 : acc, 0); // Time added for stops that are not yet optimized\n const baseTime = 1 + newStopsTime;\n const stopTime = 120 * stopsRatio; //needs updating after increased limit\n const countRules = this.stopPins.filter(s => s.hasDrop).length;\n const countWindows = this.stopPins.filter(s => s.isSked).length;\n const ruleCount = countRules + countWindows;\n const ruleTime = ruleCount * Math.pow(120, stopsRatio) * (10 * stopsRatio + 1);\n\n const expectedTime = Math.min(180, baseTime + stopTime + ruleTime) * 1000; // Get expected time in ms\n let increment = (100 / expectedTime) * 200; // Get expected increase per ms and multiply it per timeout\n\n // let expectSeconds = RwTextUtils.round(expectedTime / 1000, 2);\n // console.log(`runOptProgress \\n\\tExpected:${expectSeconds}, \\n\\tBaseTime:${baseTime}, \\n\\tActiveCount:${this.space.activeRoute.stopCountActive}, \\n\\tStopsRatio:${stopsRatio}, \\n\\tRuleCount:${ruleCount}, \\n\\tRuleTime:${ruleTime}, \\n\\tStopTime:${stopTime}, \\n\\tIncrement:${increment}`);\n\n this.optBusyProgressInterval = setInterval(() => {\n this.optBusyProgress += increment;\n if (increment > 0 && this.optBusyProgress >= 95) increment = 0;\n }, 200);\n\n }\n\n //#endregion Optimize APIs\n\n mounted() {\n\n let route = this.globals.activeRoute;\n if (route && route.driverId) {\n let isSelfy = route.driverId === this.globals.userId;\n let gotDrivers = this.globals.drivers.length > 1;\n let isDynamic = route.isDynLoc;\n let isPending = route.assignCode === RwRouteAssignCodes.pending;\n if (isSelfy && isDynamic && isPending && gotDrivers) {\n this.showUnassignedDriver = true;\n }\n }\n\n this.m_startDate = this.space.activeRoute.startTime;\n this.startDate = this.space.activeRoute.startTime;\n\n }\n\n\n updateStartTime(val: number) {\n switch (val) {\n //today's date, same time\n case 0:\n let oldStartTime = this.startTimeISO;\n let newStartDate = moment(this.todaysDate.getTime()).format(\"YYYY-MM-DD\")\n this.startDateISO = newStartDate;\n this.startTimeISO = oldStartTime;\n break;\n //tomorrow's date, same time\n case 1:\n let oldStartTime2 = this.startTimeISO;\n let newStartDate2 = moment(this.tomorrowsDate.getTime()).format(\"YYYY-MM-DD\")\n this.startDateISO = newStartDate2;\n this.startTimeISO = oldStartTime2;\n break;\n //set to Dynamic Start\n case 2:\n this.space.activeRoute.isHardStart = false;\n break;\n }\n this.space.activeRoute.startTime = this.startDate;\n\n //REVIEW: SABINA: this value was m_finishDate == null, for HardStop routes\n this.space.activeRoute.finishTime = this.m_finishDate;\n // this.space.activeRoute.setFinishDate(\"updateStartTime\", this.m_finishDate);\n\n }\n\n setDefaultStartPoint() {\n const SOURCE = \"RwRouteOrder.setDefaultStartPoint\";\n const route = Object.assign(Object.create(Object.getPrototypeOf(this.space.activeRoute)), this.space.activeRoute);\n route.lat = RwPrefUtils.startLat;\n route.lng = RwPrefUtils.startLng;\n route.isDynLoc = false;\n\n this.globals\n .updateRouteDB(route, false)\n .then(isCommitted => {\n if (isCommitted) {\n this.globals.activeRoute.lat = route.lat;\n this.globals.activeRoute.lng = route.lng;\n this.globals.activeRoute.isDynLoc = route.isDynLoc;\n this.showUnassignedDriver = false;\n }\n })\n .catch(err => RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\"));\n }\n\n\n private minsFromTime(val: string): number {\n let startOfDay = moment().startOf('day');\n let time = moment(val, 'HH:mm');\n let mins = time.diff(startOfDay, \"minutes\");\n return mins\n }\n\n private momentToTime(mo: moment.Moment) {\n let timeText = mo.format(\"HH:mm\");\n return timeText;\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteOrder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteOrder.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteOrder.vue?vue&type=style&index=0&id=17aac4c8&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./RwRouteOrder.vue?vue&type=template&id=17aac4c8&scoped=true&\"\nimport script from \"./RwRouteOrder.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwRouteOrder.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwRouteOrder.vue?vue&type=style&index=0&id=17aac4c8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"17aac4c8\",\n null\n \n)\n\nexport default component.exports","import { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"max-width\":\"550\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c(VCard,{staticClass:\"pa-5\"},[_c(VCardTitle,{staticClass:\"d-flex justify-space-between\"},[_vm._v(\" Route Summary \"),_c(VBtn,{attrs:{\"dense\":\"\",\"text\":\"\"},on:{\"click\":_vm.close}},[_c(VIcon,[_vm._v(\"close\")])],1)],1),_c(VRow,{staticClass:\"ma-0\"},[_c(VCol,{attrs:{\"cols\":\"4\"}},[_c('h4',{staticClass:\"summary-value\"},[_vm._v(_vm._s(_vm.space.travelTimeText))]),_c('span',{staticClass:\"v-card__subtitle\"},[_vm._v(\"Travel Time\")])]),_c(VCol,{attrs:{\"cols\":\"4\"}},[_c('h4',{staticClass:\"summary-value\"},[_vm._v(_vm._s(_vm.space.totalTimeText))]),_c('span',{staticClass:\"v-card__subtitle\"},[_vm._v(\"Total Time\")])]),_c(VCol,{attrs:{\"cols\":\"4\"}},[_c('h4',{staticClass:\"summary-value\"},[_vm._v(_vm._s(_vm.space.totalDistText))]),_c('span',{staticClass:\"v-card__subtitle\"},[_vm._v(\"Travel Distance\")])])],1),(_vm.showTimeSaved)?_c(VRow,[_c(VCol,[_c(VAlert,{attrs:{\"prominent\":\"\",\"text\":\"\",\"color\":\"primary\",\"type\":\"success\"}},[_vm._v(_vm._s(_vm.TimeSavedText)+\" \")])],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport theGlobals from \"@/app/RwGlobals\";\n\n@Component({})\nexport default class RwRouteSummary extends Vue {\n\n closeTimeout: any;\n\n get show() {\n return this.space.showRouteSummary;\n }\n\n set show(val: boolean) {\n this.space.showRouteSummary = val;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get showTimeSaved() {\n let actRoute = this.space.activeRoute;\n return actRoute && actRoute.stopCountActive > 4 && theGlobals.greedyTime != 0 && theGlobals.greedyTime > actRoute.timeDrive;\n }\n\n get TimeSavedText() {\n let timeSavedStr = \"\";\n let actRoute = this.space.activeRoute;\n if (this.showTimeSaved) {\n const greedyTimeSecs = theGlobals.greedyTime;\n const timeSavedPercent = (Math.round((100 * (greedyTimeSecs - actRoute.timeDrive) / actRoute.timeDrive) * 10) / 10).toFixed(1);\n\n let minutes = Math.round(((greedyTimeSecs - actRoute.timeDrive) / 60.0));\n if (minutes < 60) {\n timeSavedStr = `You saved ${minutes} minutes (${timeSavedPercent}% improvement!)`;\n } else {\n\n let hoursStr = (Math.round(minutes / 60.0 * 10) / 10).toFixed(1)\n let hours = minutes / 60.0;\n timeSavedStr = `You saved ${hoursStr} hour${hours > 0 ? 's' : ''} (${timeSavedPercent}% improvement!)`;\n }\n }\n\n return timeSavedStr;\n }\n\n close() {\n this.space.showRouteSummary = false;\n }\n\n setClose() {\n this.closeTimeout = setTimeout(() => this.close(), 10000);\n }\n\n created() {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState == \"hidden\") {\n clearTimeout(this.closeTimeout);\n } else {\n this.setClose();\n }\n });\n this.setClose();\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteSummary.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteSummary.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteSummary.vue?vue&type=style&index=0&id=1479f992&prod&lang=css&\"","import { render, staticRenderFns } from \"./RwRouteSummary.vue?vue&type=template&id=1479f992&\"\nimport script from \"./RwRouteSummary.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwRouteSummary.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwRouteSummary.vue?vue&type=style&index=0&id=1479f992&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{class:_vm.globals.theme,attrs:{\"persistent\":\"\",\"max-width\":\"600px\",\"height\":\"300px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"scrollable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.close.apply(null, arguments)}},model:{value:(_vm.space.showDropSelect),callback:function ($$v) {_vm.$set(_vm.space, \"showDropSelect\", $$v)},expression:\"space.showDropSelect\"}},[_c(VCard,[_c(VCardTitle,[_vm._v(\" Select a Drop Stop \")]),_c(VCardText,{class:_vm.globals.theme},[_c(VList,_vm._l((_vm.availableStops),function(st){return _c(VListItem,{key:st.stopId,on:{\"click\":function($event){return _vm.addDropStop(st.stopId)}}},[_vm._v(\" \"+_vm._s(st.name)+\" \"),_c(VSpacer),_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)}),1)],1),_c(VCardActions,[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"Close\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\n\n@Component({})\nexport default class RwPlannerDropSelect extends Vue {\n\n get space(): RwPlannerSpace {\n return theSpace;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get activeRoute(): RwRoute {\n return theSpace.activeRoute;\n }\n\n get stop(): RwStop {\n return this.space.stopDropOrigin;\n }\n\n get availableStops(): RwStop[] {\n return this.activeRoute.stops.filter(st => {\n const currentDropDrops = st.getDropIds();\n if (currentDropDrops && !!currentDropDrops.find(drop => drop === this.stop.stopId)) return false;\n\n const dropIds = this.stop.getDropIds() || [];\n return st.stopId !== this.stop.stopId && !dropIds.find(dropId => dropId === st.stopId);\n });\n }\n\n addDropStop(stopId: string) {\n this.stop.addDrop(stopId);\n this.close();\n }\n\n close() {\n this.space.stopDropOrigin = null;\n this.space.showDropSelect = false;\n this.$emit(\"close\");\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerDropSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerDropSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwPlannerDropSelect.vue?vue&type=template&id=0ef392a4&scoped=true&\"\nimport script from \"./RwPlannerDropSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPlannerDropSelect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0ef392a4\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"max-width\":\"600px\",\"height\":\"300px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.close.apply(null, arguments)}},model:{value:(_vm.space.showDropRemove),callback:function ($$v) {_vm.$set(_vm.space, \"showDropRemove\", $$v)},expression:\"space.showDropRemove\"}},[_c(VToolbar,[_c(VToolbarTitle,[_vm._v(\"Select a Drop Stop to Remove\")])],1),_c(VCard,[_c(VCardText,[_c(VList,_vm._l((_vm.stop.getDrops()),function(st){return _c(VListItem,{key:st.stopId,on:{\"click\":function($event){return _vm.removeDropStop(st.stopId)}}},[_vm._v(\" \"+_vm._s(st.name)+\" \"),_c(VSpacer),_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-minus-circle-outline\")])],1)],1)}),1)],1),_c(VCardActions,[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"Close\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\n\n@Component({})\nexport default class RwPlannerDropRemove extends Vue {\n\n get space(): RwPlannerSpace {\n return theSpace;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get activeRoute(): RwRoute {\n return theSpace.activeRoute;\n }\n\n get stop(): RwStop {\n return this.space.stopDropOrigin;\n }\n\n removeDropStop(stopId: string) {\n this.globals.showConfirmDialog(\"Remove Drop Stop\", \"Are you sure you want to remove the drop stop?\", \"Confirm\", \"Cancel\")\n .then(confirm => {\n if (confirm) {\n this.stop.removeDrop(stopId);\n this.close()\n }\n });\n }\n\n close() {\n this.space.stopDropOrigin = null;\n this.space.showDropRemove = false;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerDropRemove.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlannerDropRemove.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwPlannerDropRemove.vue?vue&type=template&id=331fb7ec&scoped=true&\"\nimport script from \"./RwPlannerDropRemove.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPlannerDropRemove.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"331fb7ec\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(\"div\")\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"../../RwGlobals\";\n\n@Component\nexport default class RwProBetaPrimer extends Vue {\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n onEscape() {\n this.globals.showProBetaPrimer = false;\n this.globals.hasProBetaPrimed = true;\n }\n\n onEnter() {\n this.globals.showProBetaPrimer = false;\n this.globals.showProToTeam = true;\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwProBetaPrimer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwProBetaPrimer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwProBetaPrimer.vue?vue&type=template&id=432ec8c0&scoped=true&\"\nimport script from \"./RwProBetaPrimer.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwProBetaPrimer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"432ec8c0\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"overlay-color\":_vm.globals.isDarkMode ? '#000' : '#000',\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c(VCard,{staticClass:\"dialog-card mx-auto\",staticStyle:{\"max-height\":\"650px\"}},[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\"}},[_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))])],1),_c(VCardText,{class:_vm.globals.theme,staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c('div',{ref:\"map\",staticStyle:{\"width\":\"100%\",\"height\":\"400px\"}},[_c('div',{staticClass:\"pa-3\",staticStyle:{\"top\":\"60px\",\"left\":\"35px\",\"text-align\":\"left\",\"position\":\"absolute\",\"z-index\":\"10000\",\"pointer-events\":\"none\",\"background\":\"#00000088\"}},[_c('div',{staticClass:\"mb-3\"},[_c('img',{staticClass:\"pr-3\",staticStyle:{\"width\":\"25px\",\"vertical-align\":\"middle\"},attrs:{\"src\":_vm.currentPin,\"alt\":\"current loc\"}}),_vm._v(\" Current Location \")]),_c('div',[_c('img',{staticClass:\"pr-3\",staticStyle:{\"width\":\"25px\",\"vertical-align\":\"middle\"},attrs:{\"src\":_vm.correctedPin,\"alt\":\"corrected loc\"}}),_vm._v(\" Corrected Location \")])])]),_c('div',{staticClass:\"pt-3\"},[_vm._v(\" The address at your corrected location is \"),_c('b',{staticClass:\"primary--text\"},[_vm._v(_vm._s(_vm.revGeoAddress))]),_vm._v(\". Please double check that you have the correct location before submitting. \")])]),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancelClick}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onConfirmClick}},[_vm._v(\" Confirm \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwPinTypes} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwTaskSearch} from \"@/app/dal/RwTaskSearch\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwViewUtils} from \"@/app/utils/RwViewUtils\";\nimport {RwTaskReporting} from \"@/app/dal/RwTaskReporting\";\n\n@Component\nexport default class RwAddCorrectDialog extends Vue {\n\n centerLat = 0;\n centerLng = 0;\n map: H.Map;\n mapui: H.ui.UI;\n platform: H.service.Platform;\n mapBehaviors: H.mapevents.Behavior;\n defaultLayers: H.service.Platform.MapTypes31;\n currentPin = \"\";\n correctedPin = \"\";\n\n revGeoAddress = \"\";\n\n @Watch(\"currentReportStep\")\n onStepChange() {\n const SOURCE = \"RwAddReportDialog.onStepChange\";\n if (this.globals.addReport?.step === 1) {\n\n Vue.nextTick(() => {\n this.mapInit();\n const correctedPin = new RwPin();\n correctedPin.type = RwPinTypes.Stop;\n correctedPin.stop = new RwStop();\n correctedPin.baseColor = \"darkGreen\";\n correctedPin.dataUrlAsync().then(dataUrl => {\n let iconSize = this.globals.getIconSize(correctedPin.type);\n let anchor = this.globals.getAnchorPoint(correctedPin.type);\n let iconOpts = {} as H.map.Icon.Options;\n if (anchor) iconOpts.anchor = anchor;\n if (iconSize) iconOpts.size = iconSize;\n let icon = new H.map.Icon(dataUrl, iconOpts);\n const marker = new H.map.Marker({lat: this.globals.addReport.latDelta, lng: this.globals.addReport.lngDelta});\n marker.setIcon(icon);\n this.map.addObject(marker);\n this.correctedPin = dataUrl;\n });\n\n const oldPin = new RwPin();\n oldPin.type = RwPinTypes.Stop;\n oldPin.stop = new RwStop();\n oldPin.baseColor = \"#E2004F\";\n oldPin.dataUrlAsync().then(dataUrl => {\n let iconSize = this.globals.getIconSize(oldPin.type);\n let anchor = this.globals.getAnchorPoint(oldPin.type);\n let iconOpts = {} as H.map.Icon.Options;\n if (anchor) iconOpts.anchor = anchor;\n if (iconSize) iconOpts.size = iconSize;\n let icon = new H.map.Icon(dataUrl, iconOpts);\n const marker = new H.map.Marker({lat: this.globals.addReport.lat, lng: this.globals.addReport.lng});\n marker.setIcon(icon);\n this.map.addObject(marker);\n this.currentPin = dataUrl;\n });\n\n let group = new H.map.Group();\n group.addObjects([new H.map.Marker({lat: this.globals.addReport.lat, lng: this.globals.addReport.lng}),\n new H.map.Marker({lat: this.globals.addReport.latDelta, lng: this.globals.addReport.lngDelta})]);\n\n let boundingBox = group.getBoundingBox();\n const latMargin = Math.abs(boundingBox.getRight() - boundingBox.getLeft()) * 0.05;\n const lonMargin = Math.abs(boundingBox.getTop() - boundingBox.getBottom()) * 0.05;\n\n boundingBox = new H.geo.Rect(boundingBox.getTop() + lonMargin, boundingBox.getLeft() - latMargin,\n boundingBox.getBottom() - lonMargin, boundingBox.getRight() + latMargin);\n RwViewUtils.mapSetViewBounds(this.map, boundingBox, false);\n\n RwTaskSearch.geocodeV2(`${this.globals.addReport.latDelta},${this.globals.addReport.lngDelta}`, true)\n .then(results => {\n\n if (results && results.length > 0) {\n this.revGeoAddress = results[0].address;\n } else {\n this.revGeoAddress = \"No address found at this location.\";\n }\n })\n .catch(err => {\n RwLog.warn(SOURCE, `Error reverse geocoding delta coords err:${JSON.stringify(err)} \\n\\n\n coords: ${this.globals.addReport.latDelta},${this.globals.addReport.lngDelta}`);\n });\n });\n\n\n }\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get title(): string {\n if (this.report) {\n return `Report issue for ${this.report.address}`;\n }\n return \"Report correction\";\n }\n\n get report() {\n return theGlobals.addReport;\n }\n\n get showDialog() {\n return this.globals.showAddReport && this.report && this.report.step !== 0;\n }\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get currentReportStep() {\n if (this.globals.addReport) {\n return this.globals.addReport.step;\n }\n return -1;\n }\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.onCancelClick();\n }\n\n onConfirmClick() {\n const SOURCE = \"RwAddReportDialog.onConfirmClick\";\n this.globals.isLoading = true;\n if (this.report.lng.toFixed(6) !== this.report.lngDelta.toFixed(6) || this.report.lat.toFixed(6) !== this.report.latDelta.toFixed(6)) {\n RwTaskReporting.postAddReport(this.report)\n .then(result => {\n if (result) {\n this.globals.showSnack(\"Your correction has been sent successfully!\", \"success\");\n this.globals.showAddReport = false;\n this.globals.addReport = null;\n } else {\n this.globals.showSnack(\"Sorry, we had an issue reporting that address, please refresh and try again.\", \"error\");\n }\n\n })\n .catch(err => {\n this.globals.showSnack(\"Sorry, we had an issue reporting that address, please refresh and try again.\", \"error\");\n RwLog.error(SOURCE, `Error adding report, report:${JSON.stringify(this.report)}, \\n\\n err: ${JSON.stringify(err)}`);\n }).finally(() => {\n this.globals.isLoading = false;\n })\n } else {\n this.globals.showSnack(\"Please go back and select a different GPS location for this address.\");\n }\n\n }\n\n onCancelClick() {\n this.globals.showAddReport = false;\n this.globals.m_reloPickerAddReport = false;\n this.globals.addReport = null;\n }\n\n private mapInit() {\n const SOURCE = \"RwAddReportDialog.mapInit\";\n let self = this;\n let apiKey = RwConstants.hereApiKey;\n this.platform = new H.service.Platform({'apikey': apiKey});\n this.defaultLayers = this.platform.createDefaultLayers({\n tileSize: 512, // Use 512 for high-resolution tiles\n engineType: H.Map.EngineType['HARP'],\n });\n let layer = self.defaultLayers.vector.normal.map;\n\n let options: H.Map.Options = {\n zoom: RwPrefUtils.viewZoom,\n center: {\n lat: this.globals.addReport.latDelta,\n lng: this.globals.addReport.lngDelta\n },\n engineType: H.Map.EngineType['HARP'],\n pixelRatio: window.devicePixelRatio || 1\n };\n\n let mapContainer = this.$refs.map as Element;\n this.map = new H.Map(mapContainer, layer, options);\n let events = new H.mapevents.MapEvents(this.map);\n this.mapBehaviors = new H.mapevents.Behavior(events);\n this.mapui = H.ui.UI.createDefault(this.map, self.defaultLayers);\n\n this.configMapControls();\n this.configMapEvents();\n this.setMapStyle();\n }\n\n private configMapControls() {\n\n this.mapui.getControl(\"mapsettings\").setVisibility(false);\n let zoom = this.mapui.getControl('zoom');\n zoom.setAlignment(H.ui.LayoutAlignment.RIGHT_MIDDLE);\n let imprint = this.map.getImprint();\n if (imprint) {\n if (this.globals.isDarkMode) {\n imprint.setOptions({invert: true});\n } else {\n imprint.setOptions({invert: false});\n }\n }\n\n }\n\n configMapEvents() {\n this.map.addEventListener(\"mapviewchangeend\", () => {\n let centroid = this.map.getCenter();\n if (centroid) {\n this.centerLat = centroid.lat;\n this.centerLng = centroid.lng;\n }\n });\n\n }\n\n private setMapStyle() {\n if (this.map) {\n const baseLayer = this.isDarkMode ? this.defaultLayers.vector.normal.mapnight : this.defaultLayers.vector.normal.map;\n this.map.setBaseLayer(baseLayer);\n\n this.resizeMapViewDelayed(1000);\n }\n }\n\n resizeMapViewDelayed(delay: number) {\n let self = this;\n setTimeout(function () {\n self.resizeMapView(\"resizeMapViewDelayed\");\n }, delay);\n }\n\n resizeMapView(src: string) {\n if (this.map) {\n this.map.getViewPort().resize();\n }\n }\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAddReportDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAddReportDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwAddReportDialog.vue?vue&type=template&id=68810f69&\"\nimport script from \"./RwAddReportDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwAddReportDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VAutocomplete } from 'vuetify/lib/components/VAutocomplete';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"overlay-color\":_vm.globals.isDarkMode ? '#000' : '#000',\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c(VCard,{staticClass:\"dialog-card mx-auto\",staticStyle:{\"max-height\":\"750px\"}},[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\"}},[_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))])],1),_c(VCardText,{class:_vm.globals.theme,staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c('div',{staticClass:\"pt-3\"},[_vm._v(\" Please fill out \"),_c('b',[_vm._v(\"all\")]),_vm._v(\" fields about the missing address. \")]),_c(VForm,{ref:\"addressForm\",attrs:{\"lazy-validation\":\"\"}},[_c(VRow,{attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"Location Name\",\"clearable\":\"\",\"required\":\"\",\"rules\":_vm.requiredRules},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1)],1),_c(VRow,{attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"House Number\",\"clearable\":\"\",\"required\":\"\",\"rules\":_vm.requiredRules},model:{value:(_vm.houseNum),callback:function ($$v) {_vm.houseNum=$$v},expression:\"houseNum\"}})],1),_c(VCol,{staticClass:\"pa-0\"},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"Street\",\"clearable\":\"\",\"rules\":_vm.requiredRules,\"required\":\"\"},model:{value:(_vm.street),callback:function ($$v) {_vm.street=$$v},expression:\"street\"}})],1)],1),_c(VRow,{attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"City\",\"clearable\":\"\",\"rules\":_vm.requiredRules,\"required\":\"\"},model:{value:(_vm.city),callback:function ($$v) {_vm.city=$$v},expression:\"city\"}})],1)],1),_c(VRow,{attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"State/Region\",\"clearable\":\"\",\"rules\":_vm.requiredRules,\"required\":\"\"},model:{value:(_vm.stateRegion),callback:function ($$v) {_vm.stateRegion=$$v},expression:\"stateRegion\"}})],1),_c(VCol,{staticClass:\"pa-0\"},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"Postal Code\",\"clearable\":\"\",\"rules\":_vm.requiredRules,\"required\":\"\"},model:{value:(_vm.postalCode),callback:function ($$v) {_vm.postalCode=$$v},expression:\"postalCode\"}})],1)],1),_c(VRow,{attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VAutocomplete,{attrs:{\"filled\":\"\",\"required\":\"\",\"rules\":_vm.requiredRules,\"items\":_vm.countryList,\"label\":\"Country\"},model:{value:(_vm.country),callback:function ($$v) {_vm.country=$$v},expression:\"country\"}})],1)],1),_c(VRow,{staticStyle:{\"height\":\"96px\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VTextarea,{attrs:{\"filled\":\"\",\"required\":\"\",\"rules\":_vm.requiredRules,\"label\":\"Notes\"},model:{value:(_vm.note),callback:function ($$v) {_vm.note=$$v},expression:\"note\"}})],1)],1)],1)],1),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancelClick}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onConfirmClick}},[_vm._v(\" Next \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","const countryList =\n [\n \"United States\",\n \"United Kingdom\",\n \"Australia\",\n \"Canada\",\n \"Denmark\",\n \"Finland\",\n \"France\",\n \"Iceland\",\n \"Italy\",\n \"Ireland\",\n \"Netherlands\",\n \"New Zealand\",\n \"Norway\",\n \"South Africa\",\n \"Sweden\",\n ];\n\nexport default countryList;","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport countryList from \"@/utils/countries\";\nimport RwRegex from '@/app/consts/RwRegex';\n\n@Component\nexport default class RwAddCorrectDialog extends Vue {\n\n note = \"\";\n name = \"\";\n houseNum = \"\";\n street = \"\";\n city = \"\";\n stateRegion = \"\";\n postalCode = \"\";\n country = \"\";\n\n get requiredRules() {\n return RwRegex.RequiredRules;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get title(): string {\n return \"Report Missing Location\";\n }\n\n get report() {\n return theGlobals.addReport;\n }\n\n get showDialog() {\n return this.globals.showAddMissingReport && this.report && this.report.step === 1;\n }\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get currentReportStep() {\n if (this.globals.addReport) {\n return this.globals.addReport.step;\n }\n return -1;\n }\n\n get countryList() {\n return countryList\n }\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.onCancelClick();\n }\n\n onCancelClick() {\n this.globals.showAddMissingReport = false;\n this.globals.m_reloPickerAddReport = false;\n this.globals.addReport = null;\n }\n\n onConfirmClick() {\n\n if ((this.$refs.addressForm).validate()) {\n this.globals.addReport.name = this.name;\n this.globals.addReport.message = \"Missing Location Report - \" + this.note;\n this.globals.addReport.address = `${this.houseNum} ${this.street}, ${this.city}, ${this.stateRegion} ${this.postalCode}, ${this.country}\"`;\n this.globals.addReport.step = 2;\n } else {\n theGlobals.showSnack(\"Please fill out all address fields\", \"error\");\n }\n }\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAddMissingReportDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAddMissingReportDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwAddMissingReportDialog.vue?vue&type=template&id=ba8318fe&scoped=true&\"\nimport script from \"./RwAddMissingReportDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwAddMissingReportDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ba8318fe\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"overlay-color\":_vm.globals.isDarkMode ? '#000' : '#000',\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c(VCard,{staticClass:\"dialog-card mx-auto\",staticStyle:{\"max-height\":\"650px\"}},[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\"}},[_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))])],1),_c(VCardText,{class:_vm.globals.theme,staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c('div',{ref:\"map\",staticStyle:{\"width\":\"100%\",\"height\":\"400px\"}},[_c('div',{staticClass:\"pa-3\",staticStyle:{\"top\":\"60px\",\"left\":\"35px\",\"text-align\":\"left\",\"position\":\"absolute\",\"z-index\":\"10000\",\"pointer-events\":\"none\",\"background\":\"#00000088\"}},[_c('div',[_c('img',{staticClass:\"pr-3\",staticStyle:{\"width\":\"25px\",\"vertical-align\":\"middle\"},attrs:{\"src\":_vm.correctedPin,\"alt\":\"missing loc\"}}),_vm._v(\" Missing Location \")])])]),_c('div',{staticClass:\"pt-3\"},[_vm._v(\" The address at your selected location is \"),_c('b',{staticClass:\"primary--text\"},[_vm._v(_vm._s(_vm.revGeoAddress))]),_vm._v(\". Please double check that you have the correct location before submitting. \")])]),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancelClick}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onConfirmClick}},[_vm._v(\" Confirm \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwPinTypes} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwTaskSearch} from \"@/app/dal/RwTaskSearch\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwTaskReporting} from \"@/app/dal/RwTaskReporting\";\n\n@Component\nexport default class RwAddMissingFinalizeDialog extends Vue {\n\n centerLat = 0;\n centerLng = 0;\n map: H.Map;\n mapui: H.ui.UI;\n platform: H.service.Platform;\n mapBehaviors: H.mapevents.Behavior;\n defaultLayers: H.service.Platform.MapTypes31;\n currentPin = \"\";\n correctedPin = \"\";\n\n revGeoAddress = \"\";\n\n @Watch(\"currentReportStep\")\n onStepChange() {\n const SOURCE = \"RwAddMissingFinalizeDialog.onStepChange\";\n if (this.globals.addReport?.step === 2) {\n\n Vue.nextTick(() => {\n this.mapInit();\n const correctedPin = new RwPin();\n correctedPin.type = RwPinTypes.Stop;\n correctedPin.stop = new RwStop();\n correctedPin.baseColor = \"darkGreen\";\n correctedPin.dataUrlAsync().then(dataUrl => {\n let iconSize = this.globals.getIconSize(correctedPin.type);\n let anchor = this.globals.getAnchorPoint(correctedPin.type);\n let iconOpts = {} as H.map.Icon.Options;\n if (anchor) iconOpts.anchor = anchor;\n if (iconSize) iconOpts.size = iconSize;\n let icon = new H.map.Icon(dataUrl, iconOpts);\n const marker = new H.map.Marker({lat: this.globals.addReport.latDelta, lng: this.globals.addReport.lngDelta});\n marker.setIcon(icon);\n this.map.addObject(marker);\n this.correctedPin = dataUrl;\n });\n\n this.map.setCenter(new H.geo.Point(this.globals.addReport.latDelta, this.globals.addReport.lngDelta))\n this.map.setZoom(13);\n\n RwTaskSearch.geocodeV2(`${this.globals.addReport.latDelta},${this.globals.addReport.lngDelta}`, true)\n .then(results => {\n\n if (results && results.length > 0) {\n this.revGeoAddress = results[0].address;\n } else {\n this.revGeoAddress = \"No address found at this location.\";\n }\n })\n .catch(err => {\n RwLog.warn(SOURCE, `Error reverse geocoding delta coords err:${JSON.stringify(err)} \\n\\n\n coords: ${this.globals.addReport.latDelta},${this.globals.addReport.lngDelta}`);\n });\n });\n\n\n }\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get title(): string {\n if (this.report) {\n return `Report missing location for ${this.report.name}`;\n }\n return \"Report missing location\";\n }\n\n get report() {\n return theGlobals.addReport;\n }\n\n get showDialog() {\n return this.globals.showAddMissingReport && this.report && this.report.step === 2;\n }\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get currentReportStep() {\n if (this.globals.addReport) {\n return this.globals.addReport.step;\n }\n return -1;\n }\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.onCancelClick();\n }\n\n onConfirmClick() {\n const SOURCE = \"RwAddMissingFinalizeDialog.onConfirmClick\";\n this.globals.isLoading = true;\n if (this.report.lngDelta !== 0 || this.report.latDelta !== 0) {\n RwTaskReporting.postAddReport(this.report)\n .then(result => {\n if (result) {\n this.globals.showSnack(\"Your missing address has been sent successfully!\", \"success\");\n this.globals.showAddMissingReport = false;\n this.globals.addReport = null;\n } else {\n this.globals.showSnack(\"Sorry, we had an issue reporting that address, please refresh and try again.\", \"error\");\n }\n\n })\n .catch(err => {\n this.globals.showSnack(\"Sorry, we had an issue reporting that address, please refresh and try again.\", \"error\");\n RwLog.error(SOURCE, `Error adding report, report:${JSON.stringify(this.report)}, \\n\\n err: ${JSON.stringify(err)}`);\n }).finally(() => {\n this.globals.isLoading = false;\n })\n } else {\n this.globals.showSnack(\"Please go back and select a different GPS location for this address.\");\n }\n\n }\n\n onCancelClick() {\n this.globals.showAddMissingReport = false;\n this.globals.m_reloPickerAddReport = false;\n this.globals.addReport = null;\n }\n\n private mapInit() {\n const SOURCE = \"RwAddReportDialog.mapInit\";\n let self = this;\n let apiKey = RwConstants.hereApiKey;\n this.platform = new H.service.Platform({'apikey': apiKey});\n this.defaultLayers = this.platform.createDefaultLayers({\n tileSize: 512, // Use 512 for high-resolution tiles\n engineType: H.Map.EngineType['HARP'],\n });\n let layer = self.defaultLayers.vector.normal.map;\n\n let options: H.Map.Options = {\n zoom: RwPrefUtils.viewZoom,\n center: {\n lat: this.globals.addReport.latDelta,\n lng: this.globals.addReport.lngDelta\n },\n engineType: H.Map.EngineType['HARP'],\n pixelRatio: window.devicePixelRatio || 1\n };\n\n let mapContainer = this.$refs.map as Element;\n this.map = new H.Map(mapContainer, layer, options);\n let events = new H.mapevents.MapEvents(this.map);\n this.mapBehaviors = new H.mapevents.Behavior(events);\n this.mapui = H.ui.UI.createDefault(this.map, self.defaultLayers);\n\n this.configMapControls();\n this.configMapEvents();\n this.setMapStyle();\n }\n\n private configMapControls() {\n\n this.mapui.getControl(\"mapsettings\").setVisibility(false);\n let zoom = this.mapui.getControl('zoom');\n zoom.setAlignment(H.ui.LayoutAlignment.RIGHT_MIDDLE);\n let imprint = this.map.getImprint();\n if (imprint) {\n if (this.globals.isDarkMode) {\n imprint.setOptions({invert: true});\n } else {\n imprint.setOptions({invert: false});\n }\n }\n\n }\n\n configMapEvents() {\n this.map.addEventListener(\"mapviewchangeend\", () => {\n let centroid = this.map.getCenter();\n if (centroid) {\n this.centerLat = centroid.lat;\n this.centerLng = centroid.lng;\n }\n });\n\n }\n\n private setMapStyle() {\n if (this.map) {\n const baseLayer = this.isDarkMode ? this.defaultLayers.vector.normal.mapnight : this.defaultLayers.vector.normal.map;\n this.map.setBaseLayer(baseLayer);\n\n this.resizeMapViewDelayed(1000);\n }\n }\n\n resizeMapViewDelayed(delay: number) {\n let self = this;\n setTimeout(function () {\n self.resizeMapView(\"resizeMapViewDelayed\");\n }, delay);\n }\n\n resizeMapView(src: string) {\n if (this.map) {\n this.map.getViewPort().resize();\n }\n }\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAddMissingFinalizeDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAddMissingFinalizeDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwAddMissingFinalizeDialog.vue?vue&type=template&id=603beec4&\"\nimport script from \"./RwAddMissingFinalizeDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwAddMissingFinalizeDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\nimport moment from \"moment\";\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport {RwRoute, RwRouteAssignCodes, RwRoutePick} from \"@/app/dem/RwRoute\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from '@/app/RwGlobals';\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport RwPlannerMap from \"@/app/views//planner/RwPlannerMap.vue\";\nimport RwPlannerList from \"@/app/views//planner/RwPlannerList.vue\";\nimport RwPlannerStatus from \"@/app/views//planner/RwPlannerStatus.vue\";\nimport RwPinPanel from \"@/app/views//planner/RwPinPanel.vue\";\nimport {RwEntityTypes, RwMultiMode, RwMutiModeTool, RwPinTypes} from \"@/app/RwEnums\";\nimport RwPinPopup from \"@/app/views/planner/RwPinPopup.vue\";\nimport RwPlannerLayers from \"@/app/views/planner/RwPlannerLayers.vue\";\nimport RwOnboardSettings from \"@/app/views/account/RwOnboardSettings.vue\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport RwClusterPicker from \"@/app/views/pickers/RwClusterPicker.vue\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport RwTaskPop from \"@/app/views/tasks/RwTaskPop.vue\";\nimport RwPlannerMapOptions from \"@/app/views/planner/RwPlannerMapOptions.vue\";\nimport RwLimitPopup from \"@/app/views/planner/RwLimitPopup.vue\"\nimport RwRoutePicker from \"@/app/views/pickers/RwRoutePicker.vue\";\nimport RwSearchOptions from \"@/app/views/planner/RwSearchOptions.vue\";\nimport RwRouteOrder from \"@/app/views/planner/RwRouteOrder.vue\";\nimport RwRouteSummary from \"@/app/views/planner/RwRouteSummary.vue\";\nimport RwSearchPanel from \"@/app/views/planner/RwSearchPanel.vue\";\nimport RwPlannerDropSelect from \"@/app/views/planner/RwPlannerDropSelect.vue\";\nimport RwPlannerDropRemove from \"@/app/views/planner/RwPlannerDropRemove.vue\";\nimport RwProBetaPrimer from \"@/app/views/account/RwProBetaPrimer.vue\";\nimport RwProToTeam from \"@/app/views/account/RwProToTeam.vue\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport RwCCExpirePopup from \"@/app/views/account/RwCCExpirePopup.vue\";\nimport RwAddCorrectDialog from \"@/app/views/planner/RwAddReportDialog.vue\";\nimport RwAddMissingReportDialog from \"@/app/views/planner/RwAddMissingReportDialog.vue\";\nimport RwAddMissingFinalizeDialog from \"@/app/views/planner/RwAddMissingFinalizeDialog.vue\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport RwEvents from \"@/app/consts/RwEvents\";\nimport {PODDefaultSettings} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport {RwStopAddOns} from \"@/app/dem/RwStopAddOns\";\nimport Moment = moment.Moment;\n\nenum PlanSteps { none, search, order, assign, update, next }\n\n@Component({\n components: {\n RwAddMissingFinalizeDialog,\n RwProToTeam,\n RwProBetaPrimer,\n RwPlannerDropRemove,\n RwPlannerDropSelect,\n RwOnboardSettings,\n RwCCExpirePopup,\n RwRouteOrder,\n RwSearchOptions, RwRoutePicker,\n RwTaskPop, RwClusterPicker, RwPinPopup,\n RwPlannerMap, RwPlannerList, RwPinPanel,\n RwPlannerStatus, RwPlannerLayers, RwPlannerMapOptions,\n RwRouteSummary, RwSearchPanel, RwLimitPopup, RwAddCorrectDialog,\n RwAddMissingReportDialog\n }\n})\n\nexport default class RwPlanner extends Vue {\n\n\n //#region Props\n\n idxTab = 0;\n holdTab = 0;\n search: string = \"\";\n showSearch: boolean = false;\n showPanelMenu = false;\n showMultiToolSelector = false;\n showMultiModeSelector = false;\n contextMenuX = 0;\n contextMenuY = 0;\n contextIdx: number;\n contextRoute: RwRoute;\n contextUrl: string = \"\";\n showingTabMenu = false;\n routeClicked: RwRoute;\n timeOfLastRouteClick: Moment;\n lastPushId: string;\n lastPushTS: number = 0;\n windowHeight = \"\";\n windowHeightPx = 0;\n mobileTabsIdx = 0;\n showMobileActions = false;\n mobileActionsTabsIdx = 0;\n showMobileMultiMode = false;\n mobileMultiModeIdx = 0;\n mobilePanelTabsIdx = 1;\n showTabletFilters = false;\n\n ///panelsSearchStatus: { panelList: boolean, pinPanel: boolean, panelStatus: boolean };\n\n get globals(): RwGlobals {\n return theGlobals\n }\n\n get plannerSpace(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get isSearchMode(): boolean {\n return this.globals.showSearchPanel;\n }\n\n get canShowPinPanel(): boolean {\n return !this.isSearchMode && !this.isMultiMode && this.globals.showPinPanel && this.openRoutes.length > 0\n }\n\n get canShowListPanel(): boolean {\n return !this.isSearchMode && this.space.showPanelList && this.openRoutes.length > 0\n }\n\n get canShowStatusPanel(): boolean {\n return !this.isSearchMode && !this.isMultiMode && this.globals.isDisp && this.space.showPanelStatus && this.windowHeightPx > 600;\n }\n\n get canShowPlannerBody(): boolean {\n return this.globals.showSearchPanel || this.space.showPanelMap || this.space.showPanelList || this.openRoutes.length === 0;\n }\n\n get canShowMapPanel(): boolean {\n let canShow = this.globals.showSearchPanel || this.space.showPanelMap && this.openRoutes.length > 0\n //console.log(\"canShowMapPanel\", canShow)\n return canShow\n }\n\n\n get panelsHeight(): string {\n return `height: calc(100% - ${this.canShowPushStep || this.space.showInvalidPinBanner ? \"73px\" : \"0px\"})`;\n }\n\n get mobilePanelsHeight(): string {\n const base = 202;\n const height = window.innerHeight - base - (this.space.showInvalidPinBanner ? 73 : 0) - (this.showStopsViolationsBanner ? 73 : 0);\n return `height: ${height}px`;\n }\n\n get isPushPending(): boolean {\n let isPushPending = false;\n if (this.globals.activeRoute) {\n let route = this.globals.activeRoute;\n if (!this.lastPushId || route.routeId === this.lastPushId) {\n isPushPending = this.lastPushTS > 0 && this.lastPushTS > this.globals.driverLastSyncMS;\n }\n }\n //console.log(\"isPushPending\", isPushPending)\n\n return isPushPending;\n }\n\n get isRouteDirty(): boolean {\n //console.log(\"lastDelta vs driverLastSync\", this.globals.lastStatusMS, this.globals.driverLastSyncMS)\n return this.globals.isRouteDirty;\n }\n\n get isDispatcher() {\n return this.globals.isDisp;\n }\n\n get canShowPushStep(): boolean {\n let canPush = false;\n if (this.activeRoute) {\n let isDriverAssigned = !this.isSelfAssigned;\n canPush = this.isDispatcher && isDriverAssigned && this.isRouteDirty && this.isRouteAccepted && !this.globals.selectedRoute.isDynLoc;\n }\n return canPush;\n }\n\n get isSelfAssigned(): boolean {\n let isSelfy = true;\n let route = this.space.activeRoute;\n if (route && route.driverId) {\n isSelfy = route.driverId === this.globals.userId;\n }\n return isSelfy;\n }\n\n\n get isRouteAccepted(): boolean {\n let isAccepted = false;\n let route = this.space.activeRoute;\n if (route) {\n isAccepted = route.assignCode === RwRouteAssignCodes.assigned;\n }\n return isAccepted;\n }\n\n\n get isStepSearch(): boolean {\n return this.stepFocus == PlanSteps.search;\n }\n\n get stepFocusManual() {\n return theStore.getters.highLightManual;\n }\n\n set stepFocusManual(val) {\n theStore.dispatch(\"highLightManual\", val).catch();\n }\n\n\n _stepFocus = PlanSteps.none;\n\n get stepFocus(): number {\n let focus = PlanSteps.none;\n let route = this.space.activeRoute;\n if (route) {\n focus = PlanSteps.search;\n let activeStops = route.getActiveStops();\n let gotStops = activeStops && activeStops.length > 0;\n if (gotStops) {\n let gotUnordered = activeStops.find(s => s.seq == 0);\n let fullyOrdered = !gotUnordered;\n if (fullyOrdered) {\n focus = PlanSteps.none;\n } else {\n focus = PlanSteps.order;\n }\n\n }\n }\n\n //console.log(\"stepFocus\", stepFocus);\n this._stepFocus = focus;\n return this._stepFocus;\n\n }\n\n set stepFocus(val: number) {\n this.stepFocusManual = val;\n this._stepFocus = val;\n }\n\n get isAssigned() {\n let isAssigned = true;\n if (this.globals.isDisp && this.isSelfAssigned) {\n isAssigned = false;\n }\n return isAssigned;\n }\n\n\n get selectModeIcon() {\n let iconName = \"\";\n switch (this.multiMode) {\n case RwMultiMode.stops:\n iconName = \"mdi-map-marker\";\n break;\n case RwMultiMode.sites:\n iconName = \"mdi-star-circle\";\n break;\n case RwMultiMode.tasks:\n iconName = \"mdi-clipboard-check\";\n break;\n }\n return iconName;\n }\n\n get panelCols(): number {\n let cols: number;\n let panelCount = 0;\n if (this.openRoutes.length > 0) {\n\n if (this.isMultiMode) {\n if (this.space.showPanelMap) panelCount++;\n if (this.space.showPanelList) panelCount++;\n } else if (this.globals.showSearchPanel) {\n panelCount = 2;\n } else {\n if (this.space.showPanelMap) panelCount++;\n if (this.space.showPanelList) panelCount++;\n if (this.globals.showPinPanel) panelCount++;\n }\n\n if (panelCount > 0) {\n cols = 12 / panelCount;\n }\n }\n //console.warn(\"panelCols complete\", cols);\n return cols;\n }\n\n get selectedPins(): RwPin[] {\n //console.log(\"GET selectedPins\", theStore.getters.selectedPins.length);\n return this.space.selectedPins;\n }\n\n get upperBodyStyle(): string {\n if (this.isMobile) return '';\n let offset = this.isMultiMode ? 48 : 96;\n let showingToolbar = this.space.showPlannerToolbar && !this.globals.showSearchPanel\n offset = (showingToolbar) ? offset : 0;\n offset += 64;\n\n let showingStatusPanel = this.globals.isDisp && this.space.showPanelStatus && this.canShowStatusPanel && !this.globals.showSearchPanel\n if (showingStatusPanel) {\n offset += this.space.timeHeight;\n }\n\n let heightStyle = `height:calc(${this.windowHeight} - ${offset}px${this.showStopsViolationsBanner ? ' - 73px' : ''})`;\n //console.log(\"upperBodyStyle\", heightStyle);\n return heightStyle;\n }\n\n get timelineStyle(): string {\n let heightStyle = '';\n if (this.space.showPanelStatus && !this.space.showPanelMap && !this.space.showPanelList) {\n heightStyle = \"height:calc(100% - 96px)\";\n } else {\n heightStyle = `height:${this.space.timeHeight}px`;\n }\n //console.warn(heightStyle);\n return heightStyle;\n }\n\n get multiModeTool(): RwMutiModeTool {\n //console.warn(\"GET multiModeTool\", this.space.multiModeTool);\n return this.space.multiModeTool;\n }\n\n set multiModeTool(val: RwMutiModeTool) {\n //console.warn(\"SET multiModeTool\", val);\n this.space.multiModeTool = val;\n }\n\n get selectedPinCount(): number {\n let realCount = 0;\n let selPins = this.selectedPins;\n if (selPins.length > 0) {\n //console.log(\"selectedPinCount\", selPins.length);\n selPins.forEach(p => {\n if (p) {\n realCount++;\n }\n })\n }\n return realCount;\n }\n\n\n get isEmptyState() {\n let isEmptyState = this.globals.isDataLoaded && this.openRoutes.length === 0;\n return isEmptyState;\n }\n\n\n get displayEmptyState() {\n let displayEmptyState = this.globals.isDataLoaded && this.openRoutes.length === 0;\n //console.log(\"displayEmptyState\", displayEmptyState, this.globals.isDataLoaded, this.openRoutes.length === 0);\n //console.log(\"RwPlanner.displayEmptyState\", `overrideEmptyState: ${this.globals.overrideEmptyState}`)\n\n if (displayEmptyState) {\n\n if (!this.globals.overrideEmptyState) {\n\n const self = this;\n this.globals\n .showRouteNew(true, null)\n .then(pick => {\n //console.log(\"onRouteAddClick callback\", pick);\n if (pick) {\n self.space.openRoute(pick);\n if (RwPrefUtils.editAfterAdd) {\n self.globals.showRouteEdit(pick)\n }\n }\n })\n .catch(err => {\n //console.error(\"onRouteAddClick\", err.toString());\n });\n } else {\n //Just skip once\n this.globals.overrideEmptyState = false;\n }\n }\n\n\n return displayEmptyState;\n }\n\n get isMultiModeStops(): boolean {\n //console.log(\"GET isMultiModeStops\", this.multiMode, this.multiMode === RwMultiMode.stops, this.multiMode == RwMultiMode.stops)\n let isStopMode = this.multiMode === RwMultiMode.stops;\n //console.log(\"GET isMultiModeStops\", isStopMode)\n return isStopMode;\n }\n\n get isMultiModeSites(): boolean {\n return this.multiMode === RwMultiMode.sites;\n }\n\n get isMultiModeTasks(): boolean {\n return this.multiMode === RwMultiMode.tasks;\n }\n\n get multiMode(): RwMultiMode {\n //console.log(\"GET multiMode\", this.space.multiMode);\n return this.space.multiMode;\n }\n\n set multiMode(val: RwMultiMode) {\n this.space.clearPinSelections();\n //console.log(\"SET multiMode\", val);\n this.space.multiMode = val;\n }\n\n get isMultiMode(): boolean {\n return this.multiMode != RwMultiMode.none;\n }\n\n get backColor(): string {\n return this.globals.isDarkMode ? \"backDark\" : \"backLight\";\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get routes(): RwRoute[] {\n return this.globals.routes;\n }\n\n get openRoutes(): RwRoute[] {\n // console.warn(\"OpenRoutes: \", this.space.openRoutes);\n return this.space.openRoutes ? this.space.openRoutes : [];\n }\n\n get activeRoute(): RwRoute {\n return this.space.activeRoute;\n }\n\n get colorMultiButton(): string {\n return this.isMultiMode ? \"primary\" : undefined;\n }\n\n get stepperStyle() {\n return this.globals.isDisp ? `${this.isMobile ? 'width: 100%;' : 'width:35%;'}background-color: transparent;height:60px` : `${this.isMobile ? 'width:100%;' : 'width:30%;'}background-color: transparent;height:60px`;\n }\n\n get invalidPinCount(): number {\n return this.activeRoute.stops.reduce((acc, stop): number => stop.lng === 0 && stop.lat === 0 ? acc + 1 : acc, 0);\n }\n\n get invalidPinMessage() {\n switch (this.space.invalidPinError) {\n case \"Route\":\n return \"Invalid route start location. Please set the start location.\";\n case \"Stop\":\n return `There are ${this.invalidPinCount} pins with invalid locations.`;\n default:\n return \"\";\n }\n }\n\n\n showStopsViolationsList = false;\n\n get stopsWithViolations(): RwStop[] {\n if (!this.activeRoute || !this.activeRoute.stops) return [];\n return this.activeRoute.stops.filter(stop => stop.violations);\n }\n\n get showStopsViolationsBanner(): boolean {\n if (this.activeRoute && (!this.space.showStopsViolations.find(item => this.activeRoute.routeId == item) && this.stopsWithViolations.length > 0)) return true;\n return false;\n }\n\n dismissViolationWarning() {\n this.space.showStopsViolations = [...this.space.showStopsViolations, String(this.activeRoute.routeId)];\n this.onWindowHeight();\n }\n\n onClickViolation(stop: RwStop) {\n this.globals.showPinPanel = false;\n this.globals.showPinPopup = true;\n this.space.selectedPin = new RwPin();\n this.space.selectedPin.stop = stop;\n this.showStopsViolationsList = false;\n }\n\n\n get hasActiveFilters() {\n return (!this.space.showDataLayerRoute) ||\n (!this.space.showDataLayerSites) ||\n (this.globals.isDisp && !this.space.showDataLayerTasks) ||\n (this.space.showDataLayerRoute && this.space.isStopFiltered) ||\n (this.space.showDataLayerSites && this.space.isSiteFiltered) ||\n (this.globals.isDisp && this.space.showDataLayerTasks && this.space.isTaskFiltered);\n }\n\n //#endregion Props\n\n\n //#region Watch APIs\n\n\n @Watch(\"space.showPanelMap\")\n watchShowPanelMap(val: boolean) {\n this.space.sizeDelta++;\n }\n\n @Watch(\"space.showPanelList\")\n watchShowPanelList(val: boolean) {\n this.space.sizeDelta++;\n }\n\n @Watch(\"space.showPanelStatus\")\n watchShowPanelStatus(val: boolean) {\n this.space.sizeDelta++;\n }\n\n @Watch(\"globals.showPinPanel\")\n watchShowPanelPreview(val: boolean) {\n this.space.sizeDelta++;\n }\n\n @Watch(\"globals.showSearchPanel\")\n watchShowSearchPanel(isSearchMode: boolean) {\n setTimeout(() => this.space.sizeDelta++, 0)\n }\n\n @Watch(\"isMultiMode\")\n watchIsMultiMode(val) {\n this.space.showPlannerToolbar = (val === false);\n }\n\n @Watch(\"space.activeRoute\")\n watchActiveRoute(val: RwRoute) {\n // Hide banner\n this.space.showInvalidPinBanner = false;\n }\n\n ///endregion Watch APIs\n\n\n //#region Filter\n\n onCloseFilterHideStops() {\n this.space.showDataLayerRoute = true;\n }\n\n onCloseFilterHideSites() {\n this.space.showDataLayerSites = true;\n }\n\n onCloseFilterHideTasks() {\n this.space.showDataLayerTasks = true;\n }\n\n // onCloseFilterHideDrivers() {\n // this.space.showDataLayerDrivers = true;\n // }\n\n onCloseFilterStops() {\n this.clearStopFilter();\n }\n\n onCloseFilterSites() {\n this.clearSiteFilter();\n }\n\n onCloseFilterTasks() {\n this.clearTaskFilter();\n }\n\n onCloseFilterDrivers() {\n this.clearDriverFilter();\n }\n\n\n private clearSiteFilter() {\n RwPrefUtils.siteFilterName = \"\";\n RwPrefUtils.siteFilterAddress = \"\";\n RwPrefUtils.siteFilterDistance = 0;\n RwPrefUtils.siteFilterHash = \"\";\n RwPrefUtils.siteFilterHashAll = false;\n RwPrefUtils.siteFilterColor = \"\";\n RwPrefUtils.siteFilterCheckMin = -100;\n RwPrefUtils.siteFilterCheckMax = 0;\n this.space.isSiteFiltered = false;\n this.globals.commitSites();\n }\n\n private clearTaskFilter() {\n RwPrefUtils.taskFilterName = \"\";\n RwPrefUtils.taskFilterAddress = \"\";\n RwPrefUtils.taskFilterDistance = 0;\n RwPrefUtils.taskFilterHash = \"\";\n RwPrefUtils.taskFilterHashAll = false;\n RwPrefUtils.taskFilterColor = \"\";\n this.space.isTaskFiltered = false;\n this.globals.commitTasks();\n }\n\n private clearDriverFilter() {\n RwPrefUtils.driverFilterName = \"\";\n this.space.isDriverFiltered = false;\n this.globals.commitDrivers();\n }\n\n private clearStopFilter() {\n RwPrefUtils.stopFilterName = \"\";\n RwPrefUtils.stopFilterAddress = \"\";\n RwPrefUtils.stopFilterType = 0;\n RwPrefUtils.stopFilterDistance = 0;\n RwPrefUtils.stopFilterHash = \"\";\n RwPrefUtils.stopFilterHashAll = false;\n RwPrefUtils.stopFilterColor = \"\";\n this.space.isStopFiltered = false;\n this.globals.commitStops();\n }\n\n\n //#endregion Filter\n\n\n //#region Multi-Mode\n\n\n onMultiEnter() {\n //console.warn(\"onMultiEnter\");\n this.space.clearPinSelections();\n // if (!this.space.showPanelList && !this.space.showPanelMap){\n // this.space.showPanelMap=true;\n // }\n let mode = RwPrefUtils.planMultiModeDefault;\n if (mode == 0) {\n mode = 1;\n RwPrefUtils.planMultiModeDefault = 1;\n }\n //console.warn(\"onMultiEnter set selectMode\", mode);\n this.multiMode = mode;\n }\n\n onMultiExit() {\n //this.space.clearPinSelections();\n //console.warn(\"onMultiExit set selectMode\", RwMultiMode.none);\n this.space.multiMode = RwMultiMode.none;\n\n setTimeout(() => {\n if (this.space.startPin) {\n this.space.setPinSelection(this.space.startPin, true);\n }\n }, 100)\n }\n\n onMultiDelete() {\n const self = this;\n const SOURCE = \"RwPlanner.onMultiDelete\";\n\n //Need to check mode; then delete selected types for selected mode\n let pins = this.selectedPins;\n let count = pins.length;\n //console.log(SOURCE, count);\n if (count > 0) {\n\n switch (this.space.multiMode) {\n\n case RwMultiMode.stops: {\n let stops = pins.map(p => p.stop);\n self.globals\n .confirmAndDeleteStops(stops, [SOURCE])\n .then(() => self.onMultiExit());\n break;\n }\n\n case RwMultiMode.sites: {\n let ids = pins.map(p => p.site.siteId);\n self.globals\n .confirmAndDeleteSites(ids)\n .then(() => self.onMultiExit());\n break;\n }\n\n case RwMultiMode.tasks: {\n let ids = pins.map(p => p.task.stopId);\n\n self.globals\n .confirmAndDeleteTasks(ids)\n .then(() => self.onMultiExit());\n break;\n }\n }\n\n } else {\n RwLog.consoleError(SOURCE, \"WTF: count <= 0\");\n }\n }\n\n addSitesToRoute(pins: RwPin[], route: RwRoute, count: number) {\n const SOURCE = \"RwPlanner.addSitesToRoute\";\n\n const sites = pins.map(p => p.site);\n const sitesWithNoAddress = sites.filter(p => !p.address);\n const podDefaults = RwPrefUtils.proofOfDelivery;\n\n if (sitesWithNoAddress.length === 0) {\n let nextSeq = route.nextSeq;\n const stops: RwStop[] = [];\n sites.forEach(site => {\n let stop = route.createStopFromSite(site);\n if (nextSeq) {\n stop.seq = nextSeq;\n nextSeq++;\n }\n\n if (this.globals.showProofOfDelivery && podDefaults > PODDefaultSettings.None) {\n stop.addOns = new RwStopAddOns();\n stop.addOns.stopId = stop.stopId;\n stop.addOns.podPhoto = podDefaults === PODDefaultSettings.Photo || podDefaults === PODDefaultSettings.PhotoAndSignature;\n stop.addOns.podSig = podDefaults === PODDefaultSettings.Signature || podDefaults === PODDefaultSettings.PhotoAndSignature;\n }\n\n stops.push(stop);\n });\n\n count = stops.length;\n this.globals\n .addStopsToRoute(stops, route)\n .then(isCommitted => {\n if (isCommitted) {\n let stopsPlural = count == 1 ? 'stop' : 'stops';\n this.globals.showSnack(`${count} ${stopsPlural} added to route`, \"success\");\n this.onMultiExit();\n } else {\n this.globals.showSnack(`Not all stops could be added due to conflict.`, \"warning\");\n }\n })\n .catch(err => {\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n this.globals.showSnack(`Multi-Add to Route Failed. Please try again later`, \"error\");\n });\n } else {\n RwLog.warn(SOURCE, `Trying to add site(s) with no address: ${JSON.stringify(sitesWithNoAddress.map(s => s.toJSON()))}`);\n this.globals.showSnack(`One or more favorites has no address including ${sitesWithNoAddress[0].name}.\n Please set an address before adding as a stop.`, \"error\");\n }\n }\n\n onMultiAddToRoute() {\n const self = this;\n const SOURCE = \"RwPlanner.onMultiAddToRoute\";\n\n let pins = this.selectedPins;\n let count = pins.length;\n if (count > 0) {\n let route = this.activeRoute;\n\n switch (self.space.multiMode) {\n case RwMultiMode.sites:\n const isChecked = RwPrefUtils.showConfirmMultiSiteToStop.find(routeId => route.routeId === routeId);\n const exists = route.stops.find(stop => {\n for (let pin of pins) {\n if (pin.lat === stop.lat && pin.lng === stop.lng) return true;\n }\n return false;\n });\n if (exists && !isChecked) {\n this.globals.showConfirmDialog(\n 'Add Stop?',\n 'Some addresses already exists on route. Do you want to add them anyway?',\n 'Confirm',\n 'Cancel',\n true,\n () => RwPrefUtils.showConfirmMultiSiteToStop = [...RwPrefUtils.showConfirmMultiSiteToStop, route.routeId]\n )\n .then(res => {\n if (res) this.addSitesToRoute(pins, route, count)\n })\n } else {\n this.addSitesToRoute(pins, route, count)\n }\n break;\n case RwMultiMode.tasks: {\n let tasks = pins.map(p => p.task)\n .filter(t => t !== null && t !== undefined);\n\n let nextSeq = route.nextSeq;\n\n self.globals\n .addTasksToRoute(tasks, route, nextSeq)\n .then(isCommitted => {\n if (isCommitted) {\n\n let stopsPlural = count == 1 ? 'stop' : 'stops';\n self.globals.showSnack(`${count} ${stopsPlural} added to route`, \"success\");\n self.onMultiExit();\n } else {\n self.globals.showSnack(`Not all stops could be added due to conflict.`, \"warning\");\n }\n })\n .catch(err => {\n if (this.globals.checkNotHandled(err)) RwLog.error(SOURCE, `Unhandled: ${err}`);\n self.globals.showSnack(`Multi-Add to Route Failed. Please try again later`, \"error\");\n });\n break;\n }\n }\n\n }\n }\n\n resolveSelectedMultiMode(pins: RwPin[]): boolean {\n const SOURCE = \"RwPlannerList.resolveSelectedMultiMode\";\n if (this.multiMode === RwMultiMode.none) {\n // If somehow we have selected pins without multi mode type, try to check selected pins for type\n const firstPinType = pins[0].type;\n if (pins.filter(p => p.type === firstPinType).length === pins.length) {\n switch (firstPinType) {\n //@formatter:off\n case RwPinTypes.Stop:\n this.multiMode = RwMultiMode.stops;\n break;\n case RwPinTypes.Site:\n this.multiMode = RwMultiMode.sites;\n break;\n case RwPinTypes.Task:\n this.multiMode = RwMultiMode.tasks;\n break;\n //@formatter:on\n default:\n RwLog.error(SOURCE, `Multi mode none, mixed pin types selected:${JSON.stringify(pins)}`);\n return false;\n }\n return true;\n } else {\n return false;\n }\n } else {\n return true;\n }\n }\n\n onMultiColor() {\n const self = this;\n //console.log(\"onMultiColor\");\n let SOURCE = 'RwPlanner.onMultiColor';\n\n let pins = this.selectedPins;\n if (pins && pins.length > 0) {\n const validSelectedMode = this.resolveSelectedMultiMode(pins)\n\n if (validSelectedMode) {\n self.globals\n .showColorPicker(null)\n .then(colorPick => {\n //console.log(\"colorPick callback: \", colorPick);\n\n if (colorPick && colorPick.length > 0) {\n\n colorPick = colorPick.length > 7 ? colorPick.substr(0, 7) : colorPick;\n let ntt: RwEntityTypes;\n switch (this.multiMode) {\n //@formatter:off\n case RwMultiMode.stops:\n ntt = RwEntityTypes.Stop;\n break;\n case RwMultiMode.sites:\n ntt = RwEntityTypes.Site;\n break;\n case RwMultiMode.tasks:\n ntt = RwEntityTypes.Task;\n break;\n //@formatter:on\n default:\n RwLog.error(SOURCE, `Invalid multi mode selected:${this.multiMode}, pins: ${JSON.stringify(pins)}`);\n theGlobals.showSnack(\"Sorry, we had an error with your selected pins. Please select a pin type and try again.\");\n return;\n }\n\n let ids = pins.map(p => p.eid);\n this.globals\n .multiColor(ntt, ids, colorPick.substring(0, 7))\n .then(isCommitted => {\n if (isCommitted) {\n //self.globals.showSnack(\"Color Updated\", \"success\");\n pins.forEach(pin => {\n pin.baseColor = colorPick;\n pin.invalidatePinImage();\n //console.log(\"colorPick callback: \", colorPick);\n });\n self.onMultiExit();\n\n setTimeout(() => self.globals.commitStops(), 100)\n } else {\n self.globals.showSnack(\"Color Update Failed\", \"error\");\n }\n })\n .then(() => this.globals.syncDelta())\n .catch(err => {\n self.globals.showSnack(\"Color Update Failed\", \"error\");\n });\n\n }\n });\n } else {\n theGlobals.showSnack(\"Sorry, we had an error with your selected pins. Please select a pin type and try again.\");\n self.onMultiExit();\n }\n }\n }\n\n onMultiVisit() {\n const self = this;\n //console.log(\"onMultiVisit\");\n\n let pins = this.selectedPins;\n if (pins && pins.length > 0) {\n\n self.globals\n .showVisitPicker(1)\n .then(visitPick => {\n //console.log(\"showVisitPicker callback: \", visitPick);\n\n let ntt: RwEntityTypes;\n switch (this.multiMode) {\n //@formatter:off\n case RwMultiMode.stops:\n ntt = RwEntityTypes.Stop;\n break;\n case RwMultiMode.sites:\n ntt = RwEntityTypes.Site;\n break;\n case RwMultiMode.tasks:\n ntt = RwEntityTypes.Task;\n break;\n //@formatter:on\n }\n\n let ids = pins.map(p => p.eid);\n this.globals\n .multiVisit(ntt, ids, visitPick)\n .then(isCommitted => {\n if (isCommitted) {\n self.globals.showSnack(\"Visit Time Updated\", \"success\");\n pins.forEach(pin => {\n pin.visitTime = visitPick;\n pin.invalidatePinImage();\n });\n self.onMultiExit();\n self.globals.commitRoute();\n\n setTimeout(() => self.globals.commitStops(), 100)\n } else {\n self.globals.showSnack(\"Visit Time Update Failed\", \"error\");\n }\n })\n .catch(err => {\n self.globals.showSnack(\"Visit Time Update Failed\", \"error\");\n });\n\n });\n\n }\n }\n\n\n onMultiSked() {\n //console.log(\"onMultiSked\");\n const self = this;\n\n let pins = this.selectedPins;\n if (pins && pins.length > 0) {\n\n let stops = pins.map(p => p.stop);\n let isTasks = this.multiMode === RwMultiMode.tasks;\n\n self.globals\n .multiSked(isTasks, stops)\n .then(() => {\n //This may be too brute force\n pins.forEach(p => p.invalidatePinImage())\n //self.globals.commitRoute();\n self.onMultiExit()\n\n setTimeout(() => self.globals.commitStops(), 100)\n });\n\n }\n }\n\n onMultiCopy() {\n //console.log(\"onMultiCopy\");\n const self = this;\n\n let pins = this.selectedPins;\n if (pins && pins.length > 0) {\n\n let route = this.activeRoute;\n let stops = pins.map(p => p.stop);\n\n self.globals\n .multiCopy(route, stops)\n .then(() => {\n self.onMultiExit()\n });\n\n }\n }\n\n //#endregion\n\n\n //#region Tabs\n\n onRouteView(route: RwRoute) {\n //console.log(\"RwPlanner.onRouteView\");\n this.space.setPinSelection(this.space.startPin, true, false);\n this.space.onRouteView(this.activeRoute);\n this.showingTabMenu = false;\n }\n\n onRouteEdit(route: RwRoute) {\n this.space.onRouteEdit(route);\n this.showingTabMenu = false;\n }\n\n tabClick(route: RwRoute, idx: number) {\n RwPrefUtils.lastRouteId = route.routeId;\n // console.warn(`tabClick: ${route.name}, ${route.plannerUrl}`);\n let pin = this.space.startPin;\n let isRouteSwitch = this.activeRoute.routeId !== route.routeId\n //console.log(\"isRouteSwitch\", isRouteSwitch, this.activeRoute.routeId, route.routeId)\n\n if (isRouteSwitch) {\n if (this.space.isSelected(pin)) {\n this.space.setPinSelection(pin, false);\n }\n this.space.activeRoute = route;\n this.globals.targetFocusId = route.routeId;\n } else {\n this.space.setPinSelection(pin, true);\n if (this.isDoubleClickTab(route)) {\n this.space.forceShowDataView();\n }\n }\n\n }\n\n tabCloseClick(route: RwRoute) {\n //console.log(`tabCloseClick: ${route.name}, ${route.plannerUrl}`);\n this.closeTab(route);\n }\n\n isDoubleClickTab(route: RwRoute): boolean {\n let isDoubleClick = false;\n\n if (route && route === this.routeClicked) {\n let timePassed = 0;\n if (this.timeOfLastRouteClick) {\n timePassed = moment().diff(this.timeOfLastRouteClick);\n if (timePassed < 500) {\n isDoubleClick = true;\n //console.log(\"isDoubleClickTab timePassed < 500\");\n }\n\n // let elapsed = RwTextUtils.round4(timePassed);\n // console.log(\"elapsed time: \", elapsed, this.timeOfLastPinClick);\n }\n } else {\n //console.warn(\"isDoubleClickTab route != this.routeClicker\");\n }\n\n this.routeClicked = route;\n this.timeOfLastRouteClick = moment();\n\n return isDoubleClick;\n }\n\n closeTab(route: RwRoute) {\n this.space.closeRoute(route);\n }\n\n closeAllTabs() {\n //console.warn(\"closeAllTabs\")\n let self = this;\n if (self.openRoutes) {\n this.space.multiCloseRoutes(self.openRoutes, true);\n }\n }\n\n closeOtherTabs(routeKeep: RwRoute) {\n let self = this;\n self.$route.params.routeId = routeKeep.routeId;\n //console.warn(\"closeOtherTabs routeKeep\", routeKeep.name);\n if (self.openRoutes) {\n\n //First just get the ids\n let routesToClose: RwRoute[] = [];\n self.openRoutes.forEach(route => {\n if (route.routeId != routeKeep.routeId) {\n routesToClose.push(route);\n }\n });\n\n if (routesToClose.length > 0) {\n this.space.multiCloseRoutes(routesToClose);\n if (routeKeep != this.space.activeRoute) {\n this.space.activeRoute = routeKeep;\n }\n }\n }\n }\n\n showTabContextMenu(e, idxRoute: number, route: RwRoute) {\n //console.log(\"showTabContextMenu called\");\n let self = this;\n self.contextRoute = route;\n self.contextIdx = idxRoute;\n self.contextUrl = route.plannerUrl;\n\n e.preventDefault();\n this.showingTabMenu = false;\n this.contextMenuX = e.clientX;\n this.contextMenuY = e.clientY;\n this.$nextTick(() => {\n self.showingTabMenu = true\n })\n }\n\n tabMenuClick(idxClick: number) {\n //console.warn(\"contextMenuClick() \", idxClick, this.contextIdx, this.contextRoute);\n\n let route = this.contextRoute;\n let idxTab = this.contextIdx;\n if (this.contextRoute) {\n switch (idxClick) {\n case 0: { //close this\n this.showingTabMenu = false;\n this.closeTab(route);\n break;\n }\n case 1: { //close others\n this.showingTabMenu = false;\n this.closeOtherTabs(route);\n break;\n }\n case 2: { //close all\n this.showingTabMenu = false;\n this.closeAllTabs();\n setTimeout(() => this.space.closeRoute(route), 100);\n break;\n }\n case 3: { //view route\n this.showingTabMenu = false;\n // this.space.activeRoute=this.contextRoute;\n this.tabClick(route, idxTab);\n setTimeout(() => this.onRouteView(this.activeRoute), 100);\n break;\n }\n case 4: { //edit route\n this.showingTabMenu = false;\n // this.space.activeRoute=this.contextRoute;\n this.tabClick(route, idxTab);\n setTimeout(() => this.onRouteEdit(this.activeRoute), 100);\n break;\n }\n\n }\n }\n\n this.space.sizeDelta++;\n }\n\n\n //#endregion\n\n\n //#region Search\n\n onSearchClick() {\n //console.log(\"onSearchClick\")\n if (this.activeRoute) {\n if (this.isMobile) return this.mobilePanelTabsIdx = 0;\n this.globals.showSearchPanel = true;\n } else {\n this.globals.showSnack(\"No Active Route\", \"error\");\n }\n }\n\n toggleSearch() {\n this.showSearch = !this.showSearch;\n this.search = \"\";\n if (this.showSearch) {\n let txtSearchAny = this.$refs.txtSearch as any;\n this.$nextTick(() => txtSearchAny.focus());\n }\n }\n\n\n //#endregion\n\n\n //#region General User Events\n\n onMultiToolClick(idx) {\n //console.warn('onMultiToolClick', idx);\n this.multiModeTool = idx;\n this.showMultiToolSelector = false;\n }\n\n onMultiModeClick(idx) {\n //console.warn('onMultiModeClick', idx);\n this.multiMode = idx;\n this.showMultiModeSelector = false;\n }\n\n onOrderClick() {\n //console.log(\"onOrderClick\", this.space.showRouteOrder);\n const self = this;\n if (self.activeRoute) {\n const route = self.activeRoute;\n const stops = route.getActiveStops();\n if (route.finishTime == null) {\n let newFinishTime = RwDateUtils.addMinutesToDate(route.startTime, RwPrefUtils.routeSpan);\n route.finishTime = newFinishTime;\n //route.setFinishDate(\"onOrderClick\", newFinishTime)\n }\n let stopsCount = stops ? stops.length : 0;\n if (stopsCount > 0) {\n if (stopsCount <= self.space.maxRouteSize) {\n this.space.showRouteOrder = true;\n //console.log(\"onOrderClick showRouteOrder\", this.space.showRouteOrder);\n } else {\n self.globals.showSnack(\"Over Route Size limit\", \"error\");\n }\n } else {\n self.globals.showSnack(\"No Active Stops\", \"error\");\n }\n } else {\n self.globals.showSnack(\"No Active Route\", \"error\");\n }\n }\n\n\n onRouteAddPicker() {\n this.globals\n .showRouteNew(false, null)\n .then(pick => {\n //console.log(\"onRouteAddClick callback\", pick);\n if (pick) {\n this.space.openRouteInPlanner(pick);\n if (this.globals.editAfterAdd) this.globals.showRouteEdit(pick);\n }\n });\n }\n\n onDataLayers() {\n this.space.showDataLayers = true;\n }\n\n onClusterPick(pin: RwPin) {\n //console.log(\"onClusterPick subPin\", pin ? pin.title : \"no pin\");\n //pin.isSelected = true;\n this.space.setPinSelection(pin, true, false);\n\n if (!this.globals.showPinPanel) {\n this.globals.showPinPopup = true;\n }\n }\n\n\n onRoutePick(pick: RwRoutePick) {\n //console.log('RwPlanner.onRoutePick');\n this.globals.onRoutePick(pick)\n }\n\n onAssignClick() {\n if (this.globals.isDisp) {\n if (this.activeRoute) {\n this.globals.assignRoute(this.activeRoute);\n } else {\n this.globals.showSnack(\"No Active Route\", \"error\");\n }\n }\n }\n\n onPushDismiss() {\n if (this.globals.isDisp) {\n if (this.activeRoute) {\n this.globals.lastRouteDeltaMS = 0;\n //this.lastPushTS = Date.now();\n this.lastPushId = this.activeRoute.routeId;\n RwEventBus.$emit(RwEvents.MapReRender);\n }\n }\n }\n\n onPushClick() {\n if (this.globals.isDisp) {\n if (this.activeRoute) {\n this.globals.lastRouteDeltaMS = 0;\n this.lastPushTS = Date.now();\n this.lastPushId = this.activeRoute.routeId;\n this.globals\n .pushUpdateToDriver(this.activeRoute);\n\n RwEventBus.$emit(RwEvents.MapReRender);\n } else {\n this.globals.showSnack(\"No Active Route\", \"error\");\n }\n }\n }\n\n onWindowHeight() {\n this.windowHeight = document.documentElement.clientHeight + \"px\";\n this.windowHeightPx = document.documentElement.clientHeight;\n }\n\n resetInvalidPinBanner() {\n this.space.showInvalidPinBanner = false;\n this.space.invalidPinError = \"\";\n this.space.invalidPinIcon = \"\";\n }\n\n checkCCValid() {\n let CCValid: number = 0;\n if (this.space.cardExpiryYearNum != 0) {\n if (this.space.currentYearNum === this.space.cardExpiryYearNum) {\n if (this.space.currentMonthNum === this.space.cardExpiryMonthNum) {\n //card expires end of this month\n CCValid = 1;\n } else if (this.space.cardExpiryMonthNum - this.space.currentMonthNum === 1) {\n //card expires end of next month\n CCValid = 2;\n } else if (this.space.currentMonthNum - this.space.cardExpiryMonthNum > 0) {\n //card is past expiration\n CCValid = 3;\n } else {\n //card not expiring soon\n CCValid = 4;\n }\n //card expires next year:\n } else if (this.space.cardExpiryYearNum - this.space.currentYearNum === 1) {\n if (this.space.cardExpiryMonthNum === 1) {\n if (this.space.currentMonthNum == 12) {\n //card expires end of next month - Jan Expiration\n CCValid = 2;\n }\n } else {\n //card not expiring soon\n CCValid = 4;\n }\n //card expired last year:\n } else if (this.space.currentYearNum - this.space.cardExpiryYearNum > 0) {\n //card past expiration\n CCValid = 3;\n } else {\n //card not expiring soon\n CCValid = 4;\n }\n }\n this.promptCCPopUp(CCValid);\n }\n\n promptCCPopUp(val: number) {\n let SOURCE = 'RwPlanner.promptCCPopup'\n let day = new Date().getDate().toString();\n switch (val) {\n case 0:\n RwLog.warn(SOURCE, \"CCValid not set\");\n break;\n case 1:\n // console.warn(\"case 1 reached -- Card Expires at end of current month\");\n if (!this.globals.hideCCPopup) {\n // console.warn(\"popupWarned vals:\", this.globals.warnedCCPopup);\n if ((!this.globals.warnedCCPopup.includes(day)) && this.isOdd(day)) {\n this.globals.valCCPopup = val;\n let dateArray = this.globals.warnedCCPopup;\n dateArray.push(day);\n this.globals.warnedCCPopup = dateArray;\n this.globals.showCCExpire = true;\n }\n // else{\n // console.warn(\"array already contains date OR date is even, popup trigger skipped\");\n // }\n }\n break;\n case 2:\n // console.warn(\"case 2 reached -- Card Expires at end of next month\");\n // INTENTIONAL comment out for now -- only going to warn user during month of expiration at the moment\n // if(!this.globals.hideCCPopup){\n // this.globals.showCCExpire=true;\n // this.globals.valCCPopup=val;\n // }\n break;\n case 3:\n // console.warn(\"case 3 reached -- Card is past expiration\");\n if (this.globals.warnedCCPopup.length > 1) {\n this.globals.warnedCCPopup = [];\n // console.warn(\"this.globals.warnedCCPopup reset to []\")\n }\n if (!this.globals.hideCCPopup) {\n if (!this.globals.warnedCCPopupOverdue.includes(day)) {\n this.globals.valCCPopup = val;\n let dateArray = this.globals.warnedCCPopupOverdue;\n dateArray.push(day);\n this.globals.warnedCCPopupOverdue = dateArray;\n this.globals.showCCExpire = true;\n // console.warn(\"popupOverdue vals:\", this.globals.warnedCCPopupOverdue);\n }\n // else{\n // console.warn(\"array already contains date, popup trigger skipped\");\n // }\n }\n break;\n case 4:\n // console.warn(\"case 4 reached -- Card will not expire soon\");\n if (this.globals.warnedCCPopup.length > 0) {\n this.globals.warnedCCPopup = [];\n }\n if (this.globals.warnedCCPopupOverdue.length > 0) {\n this.globals.warnedCCPopupOverdue = [];\n }\n if (this.globals.hideCCPopup) {\n this.globals.hideCCPopup = false;\n }\n break;\n }\n }\n\n isOdd(val: string) {\n let n = Number(val);\n return Math.abs(n % 2) == 1;\n }\n\n\n //#endregion General User Events\n\n\n //#region LifeCycle\n\n get isMobile() {\n return this.globals.isMobileView;\n }\n\n mounted() {\n this.space.getBillingInfos()\n let routeId = this.$route.params.routeId;\n let route = this.activeRoute;\n\n //Monitor Planner Loading Multiple Times\n //console.log(`RwPlanner.mounted`, routeId);\n\n if (routeId && this.routes) {\n //console.log(`RwPlanner.setActiveRouteById`, routeId);\n this.space.setActiveRouteById(routeId);\n // this.globals.commitRoute();\n // this.globals.commitStops();\n }\n this.$nextTick(function () {\n window.addEventListener('resize', this.onWindowHeight);\n });\n this.onWindowHeight();\n if (this.globals.isFlexOwner && this.globals.isAutoRenewing) {\n setTimeout(this.checkCCValid, 5000);\n }\n }\n\n // activated() {\n // let routeId = this.$route.params.routeId;\n // let route = this.activeRoute;\n // //console.log(`RwPlanner.activated`, routeId, route ? route.name : \"null\");\n // }\n\n //#endregion LifeCycle\n\n onCopyMoveTasks(move) {\n let pins = [...this.selectedPins];\n if (pins && pins.length > 0) {\n const promises = pins.map(pin => new Promise((resolve, reject) => this.space.addTaskFromPin(pin, resolve, reject)));\n if (move) {\n Promise.all(promises)\n .then(() => {\n let stops = pins.map(pin => pin.stop).filter(s => s !== undefined && s !== null);\n this.globals.deleteStops(stops, [\"RwPlanner.onCopyMoveTasks\"]);\n })\n }\n }\n this.onMultiExit();\n }\n\n forceDropUpdateFlag = false;\n\n forceDropUpdate() {\n /*(this.$refs.plannerList as any).forceDropUpdate.bind(this.$refs.plannerList);\n (this.$refs.plannerList as any).forceDropUpdate();*/\n this.forceDropUpdateFlag = !this.forceDropUpdateFlag;\n }\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlanner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlanner.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlanner.vue?vue&type=style&index=0&id=1fbe2c65&prod&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPlanner.vue?vue&type=style&index=1&id=1fbe2c65&prod&lang=css&\"","import { render, staticRenderFns } from \"./RwPlanner.vue?vue&type=template&id=1fbe2c65&scoped=true&\"\nimport script from \"./RwPlanner.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPlanner.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPlanner.vue?vue&type=style&index=0&id=1fbe2c65&prod&lang=scss&scoped=true&\"\nimport style1 from \"./RwPlanner.vue?vue&type=style&index=1&id=1fbe2c65&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1fbe2c65\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFabTransition } from 'vuetify/lib/components/transitions';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VCard,{ref:\"cardStopView\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"max-height\":\"48px\",\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[(_vm.stop)?_c(VImg,{attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.stop ? _vm.stop.dataUrl ? _vm.stop.dataUrl : '' : '',\"max-width\":\"32\"}}):_vm._e(),_c(VToolbarTitle,{staticClass:\"ml-2\"},[_vm._v(\" \"+_vm._s(_vm.stop ? _vm.stop.name : \"Select Task\"))]),_c(VSpacer),(_vm.stop)?_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(_vm.stop)?_c(VBtn,{attrs:{\"icon\":\"\"},on:{\"click\":_vm.onClickEdit}},[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1):_vm._e()]}}],null,false,3094908607)},[_c('span',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Edit\")])]):_vm._e(),(_vm.stop)?_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},on),[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,false,2097855828)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[(!_vm.stop.isTask)?_c(VSubheader,[_vm._v(\"Stop Actions\")]):_vm._e(),(_vm.stop.isTask)?_c(VSubheader,[_vm._v(\"Task Actions\")]):_vm._e(),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.onClickEdit()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit\")])],1),(_vm.globals.isActionAvailable(_vm.globals.Actions.deleteStops))?_c(VListItem,{on:{\"click\":function($event){return _vm.onDeleteClick()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete\")])],1):_vm._e(),(!_vm.plan.isStopCompleted(_vm.plan.selectedPin) && !_vm.stop.isTask)?_c(VListItem,{on:{\"click\":function($event){return _vm.plan.onStopCheckIn(_vm.plan.selectedPin, true, _vm.onClickViewCheckIn)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check-circle\")])],1),_c(VListItemTitle,[_vm._v(\"Check-In\")])],1):(!_vm.stop.isTask)?_c(VListItem,{on:{\"click\":function($event){return _vm.plan.onStopRestore(_vm.plan.selectedPin)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-checkbox-blank-circle\")])],1),_c(VListItemTitle,[_vm._v(\"Restore\")])],1):_vm._e(),(!_vm.stop.isTask && _vm.plan.isStopCompleted(_vm.plan.selectedPin))?_c(VListItem,{on:{\"click\":_vm.onClickViewCheckIn}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"View Check-In\")])],1):_vm._e(),_c(VDivider),(_vm.plan.canStopAddSite(_vm.plan.selectedPin))?_c(VListItem,{on:{\"click\":function($event){return _vm.plan.onStopAddSite(_vm.plan.selectedPin)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-star\")])],1),_c(VListItemTitle,[_vm._v(\"Add Favorite\")])],1):_vm._e(),(_vm.plan.canShowSkeds(_vm.plan.selectedPin) && !_vm.plan.isStopScheduled(_vm.plan.selectedPin))?_c(VListItem,{on:{\"click\":function($event){return _vm.onStopAddSked(_vm.plan.selectedPin)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemTitle,[_vm._v(\"Add Schedule\")])],1):_vm._e(),(_vm.plan.canShowSkeds(_vm.plan.selectedPin) &&\n _vm.plan.isStopScheduled(_vm.plan.selectedPin) &&\n _vm.globals.isActionAvailable(_vm.globals.Actions.deleteSked))?_c(VListItem,{on:{\"click\":function($event){return _vm.plan.onStopRemoveSked(_vm.plan.selectedPin)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemTitle,[_vm._v(\"Remove Schedule: \"+_vm._s(_vm.plan.stopSkedText(_vm.plan.selectedPin))+\" \")])],1):_vm._e(),(_vm.plan.canShowMarkFirst(_vm.plan.selectedPin))?_c(VListItem,{on:{\"click\":function($event){return _vm.plan.onStopMarkFirst(_vm.plan.selectedPin)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-first\")])],1),_c(VListItemTitle,[_vm._v(\"Mark First\")])],1):_vm._e(),(_vm.plan.canShowUnmarkFirst(_vm.plan.selectedPin))?_c(VListItem,{on:{\"click\":function($event){return _vm.plan.onStopUnmarkFirst(_vm.plan.selectedPin)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-first\")])],1),_c(VListItemTitle,[_vm._v(\"Unmark First\")])],1):_vm._e(),(_vm.plan.canShowMarkFinal(_vm.plan.selectedPin))?_c(VListItem,{on:{\"click\":function($event){return _vm.plan.onStopMarkFinal(_vm.plan.selectedPin)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-last\")])],1),_c(VListItemTitle,[_vm._v(\"Mark Final\")])],1):_vm._e(),(_vm.plan.canShowUnmarkFinal(_vm.plan.selectedPin))?_c(VListItem,{on:{\"click\":function($event){return _vm.plan.onStopUnmarkFinal(_vm.plan.selectedPin)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-page-last\")])],1),_c(VListItemTitle,[_vm._v(\"Unmark Final\")])],1):_vm._e(),(_vm.stop.isTask)?_c(VListItem,{on:{\"click\":function($event){return _vm.addTaskToRoute(_vm.stop)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-arrow-right\")])],1),_c(VListItemTitle,[_vm._v(\"Move to Route\")])],1):_vm._e(),_c(VDivider),(_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onPop()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-window-restore\")])],1),_c(VListItemTitle,[_vm._v(\"Float Panel\")])],1):_vm._e(),(_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onCloseDock()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close-box\")])],1),_c(VListItemTitle,[_vm._v(\"Close Panel\")])],1):_vm._e(),(!_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onDock()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-dock-right\")])],1),_c(VListItemTitle,[_vm._v(\"Dock Window\")])],1):_vm._e(),(!_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onClosePop()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close-box\")])],1),_c(VListItemTitle,[_vm._v(\"Close Window\")])],1):_vm._e()],1)],1):_vm._e()],1),(_vm.stop)?_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 98px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[(_vm.stop.violations)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Violations: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.violationText)+\". Please review the stop. \")]),_c(VIcon,{attrs:{\"color\":\"warning\"}},[_vm._v(\"warning\")])],1):_vm._e(),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Name: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.name)+\" \")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Address: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.address)+\" \")])]),(_vm.stop.phone)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Phone: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.phone)+\" \")])]):_vm._e(),(_vm.stop.email)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Email: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.email)+\" \")])]):_vm._e(),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Visit Time: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.visitTimeText)+\" \")])]),(_vm.stop.isScheduled)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Scheduled: \")]),_c('div',{staticClass:\"ellipseStateText\",class:_vm.stop.isActive ? '': 'red',style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.skedText)+\" \")])]):_vm._e(),(_vm.stop.hasDrops())?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Drop Stop: \")]),_c('div',{staticClass:\"ellipseStateText drop-hover\",style:(_vm.finalLength),on:{\"click\":_vm.goToDropStop}},[_vm._v(\" \"+_vm._s(_vm.dropStopName)+\" \")])]):_vm._e(),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Display Color: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_c(VIcon,{attrs:{\"color\":_vm.stop.baseColor}},[_vm._v(_vm._s(_vm.stop.isTask ? 'mdi-clipboard-check' : 'mdi-map-marker')+\" \")])],1)]),(_vm.stop.isSited)?_c(VRow,{staticClass:\"px-3 favorite-row\",attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"},on:{\"click\":_vm.openSite}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Favorite: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.site.name === _vm.stop.name ? '' : _vm.site.name)+\" \"),_c(VImg,{staticClass:\"favorite-icon-separator\",attrs:{\"src\":_vm.site.dataUrl}}),_c(VIcon,[_vm._v(\"chevron_right\")])],1)]):_vm._e(),(_vm.stop.note)?_c(VRow,{staticClass:\"px-3 d-flex mt-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"start\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Instructions: \")]),_c('div',[(_vm.showTooltip(_vm.stop.note))?_c(VIcon,{staticStyle:{\"float\":\"right\"},on:{\"click\":_vm.toggleNoteVisibility}},[_vm._v(\" \"+_vm._s(_vm.noteVisibility ? 'visibility_off' : 'visibility')+\" \")]):_vm._e(),_c('pre',{class:`${_vm.noteVisibility ? 'noteText' : 'ellipseStateText'}`,style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.note)+\"\\n \")])],1)]):_vm._e(),(_vm.globals.showProofOfDelivery)?_c(VRow,{staticClass:\"px-3 flex-column text-left\",attrs:{\"no-gutters\":\"\"}},[(!!_vm.stop.addOns.itemToDeliver?.trim())?_c(VRow,{staticClass:\"d-flex\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Item: \")]),_c('div',{staticStyle:{\"font-size\":\"small\",\"font-weight\":\"bold\"}},[_vm._v(\" \"+_vm._s(_vm.stop.addOns.itemToDeliver.trim())+\" \")])]):_vm._e(),_c(VRow,{staticClass:\"d-flex\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Proof of Delivery requested: \")]),_c('div',{staticStyle:{\"font-size\":\"small\",\"font-weight\":\"bold\"}},[_vm._v(\" \"+_vm._s(_vm.getProofOfDeliveryText())+\" \")])])],1):_vm._e(),(_vm.stopCheckIn)?_c(VRow,{staticClass:\"px-3 favorite-row\",staticStyle:{\"height\":\"48px\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"},on:{\"click\":_vm.onClickViewCheckIn}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Currently checked in: \")]),_c('div',{staticClass:\"ellipseStateText\",staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"},style:(_vm.finalLength)},[(_vm.globals.showProofOfDelivery && _vm.getProofOfDeliveryStatus().text)?_c('span',{staticStyle:{\"margin-right\":\"10px\"}},[(_vm.getProofOfDeliveryStatus().icon)?_c(VIcon,{style:({ color: _vm.getProofOfDeliveryStatus().icon === 'check' ? '#06C96B' : '#E2004F', fontSize: '20px', marginBottom: '2px' })},[_vm._v(\" \"+_vm._s(_vm.getProofOfDeliveryStatus().icon === 'check' ? 'mdi-check-circle-outline' : 'close')+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.getProofOfDeliveryStatus().text)+\" \")],1):_vm._e(),_c('span',{staticStyle:{\"height\":\"24px\"}},[_vm._v(_vm._s(_vm.stopCheckIn.formattedStartTime))]),_c('span',[_c(VIcon,[_vm._v(\"chevron_right\")])],1)])]):_vm._e(),(_vm.stopCheckIn)?_c(VRow,{staticClass:\"px-3 text-left flex-column mt-2\",attrs:{\"no-gutters\":\"\"}},[(_vm.stopCheckIn.photoLink)?_c('div',[_c('div',[_vm._v(\" Delivery Confirmation: \")]),_c('div',[_c(VImg,{attrs:{\"src\":_vm.stopCheckIn.photoLink}})],1)]):_vm._e()]):_vm._e()],1):_vm._e(),_c(VCardActions,{staticStyle:{\"height\":\"48px\",\"width\":\"100%\"}},[(_vm.showStopButtons)?_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"space-between\",\"no-gutters\":\"\"}},[_c(VFabTransition,[_c(VBtn,{staticClass:\"ml-4 mb-6\",attrs:{\"small\":\"\",\"disabled\":!_vm.canMovePrior,\"top\":\"\",\"left\":\"\",\"fab\":\"\"},on:{\"click\":_vm.onStopPrior}},[_c(VIcon,[_vm._v(\"mdi-rewind\")])],1)],1),_c(VFabTransition,[_c(VBtn,{staticClass:\"mr-4 mb-6\",attrs:{\"small\":\"\",\"disabled\":!_vm.canMoveNext,\"top\":\"\",\"right\":\"\",\"fab\":\"\"},on:{\"click\":_vm.onStopNext}},[_c(VIcon,[_vm._v(\"mdi-fast-forward\")])],1)],1)],1):_vm._e()],1),_c(VDivider)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport RwEvents from \"@/app/consts/RwEvents\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwTaskHistory} from \"@/app/dal/RwTaskHistory\";\nimport RwPODThumbnail from \"@/app/views/components/RwPODThumbnail.vue\";\nimport {ConfirmationType} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\n@Component({\n components: {RwPODThumbnail}\n})\nexport default class RwStopView extends Vue {\n @Prop(Boolean) readonly popup: boolean;\n @Prop(RwStop) readonly stop: RwStop;\n @Prop({default: false}) readonly isTaskList: boolean;\n ///region Props\n\n ConfirmationType = ConfirmationType;\n\n isMounted = false;\n noteVisibility = false;\n\n get globals(): RwGlobals {\n return theGlobals\n };\n\n get plan(): RwPlannerSpace {\n return thePlan;\n };\n\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get isDocked(): boolean {\n let isPopup = this.popup ? this.popup : false;\n let isDocked = !isPopup;\n //console.log(\"RwStopView isPopup, isDocked\", this.isPopup, isDocked);\n return isDocked;\n }\n\n get showStopButtons(): boolean {\n let show = false;\n if (this.stop && !this.stop.isTask) {\n show = this.stop.seq >= 1 && this.stop.seq <= 240;\n //console.log(\"showStopButtons\", this.stop.isTask, this.stop.seq, show);\n }\n return show;\n }\n\n get dropStopName(): string {\n if (this.stop?.hasDrops()) {\n let dropStop = this.stop.getDrop();\n if (dropStop) {\n return dropStop.name;\n }\n }\n\n return \"\";\n }\n\n get site(): RwSite | null {\n if (this.stop.isSited) return this.stop.getSite();\n return null;\n }\n\n get stopCheckIn() {\n return this.globals.selectedHistoryItem;\n }\n\n //#endregion\n\n\n //#region User Actions\n\n goToDropStop() {\n let dropStop = this.stop?.getDrop();\n if (dropStop) {\n let dropPin = this.plan.stopPins.find(p => p.isStop && p.stop?.stopId === dropStop.stopId);\n if (dropPin) {\n this.plan.setPinSelection(dropPin, true, true);\n }\n }\n }\n\n onClickViewCheckIn() {\n if (this.stopCheckIn) {\n this.plan.previousPin = this.plan.selectedPin;\n this.plan.selectedPin = null;\n this.globals.showHistoryPop = true;\n }\n }\n\n onClickEdit() {\n if (this.stop) {\n this.globals.showStopEdit(this.stop);\n this.onClosePop();\n }\n }\n\n\n onDeleteClick() {\n const SOURCE = \"RwStopView.onDeleteClick\";\n const self = this;\n if (this.stop) {\n if (this.stop.isTask) {\n let task = this.stop;\n this.globals\n .confirmAndDeleteTask(task)\n .then((isDeleted) => {\n //console.log(\"RwStopView.onDeleteClick TASK isDeleted\", isDeleted)\n if (isDeleted) {\n self.onDeleted()\n }\n });\n } else {\n let stop = this.stop;\n this.globals\n .confirmAndDeleteStop(stop, [SOURCE])\n .then((isDeleted) => {\n //console.log(\"RwStopView.onDeleteClick STOP isDeleted\", isDeleted)\n if (isDeleted) {\n self.onDeleted()\n if (stop.isRouted) {\n this.plan.activeRoute.path = \"\";\n this.globals.updateRouteDB(this.plan.activeRoute, false)\n .then(updated => {\n if (updated) {\n RwEventBus.$emit(RwEvents.RouteRefresh);\n } else {\n RwLog.warn(SOURCE, `Unable to clear route path after stop del ${stop.stopId}`);\n }\n })\n .catch(err => {\n RwLog.error(SOURCE, `Unable to clear route path after stop del ${stop.stopId},\\n\\n err:${JSON.stringify(err)}`);\n });\n }\n }\n });\n }\n }\n }\n\n getProofOfDeliveryText() {\n const requested = [];\n if (this.stop.addOns.podPhoto) {\n requested.push(\"Photo\");\n }\n if (this.stop.addOns.podBar) {\n requested.push(\"Barcode\");\n }\n if (this.stop.addOns.podSig) {\n requested.push(\"Signature\");\n }\n return requested.length ? requested.join(', ') : \"None\";\n }\n\n getProofOfDeliveryStatus() {\n const photoRequested = this.stop.addOns.podPhoto;\n const sigRequested = this.stop.addOns.podSig;\n const photoCollected = !!this.stopCheckIn.getMedia(ConfirmationType.Photo);\n const sigCollected = !!this.stopCheckIn.getMedia(ConfirmationType.Signature);\n const noneRequested = !photoRequested && !sigRequested;\n const allCollected = photoRequested && photoCollected && sigRequested && sigCollected;\n const someCollected = (photoRequested && photoCollected && sigRequested && !sigCollected) ||\n (photoRequested && !photoCollected && sigRequested && sigCollected);\n const photoMissing = photoRequested && !photoCollected && !sigRequested;\n const sigMissing = sigRequested && !sigCollected && !photoRequested;\n const allMissing = photoRequested && !photoCollected && sigRequested && !sigCollected;\n\n if (noneRequested) return {icon: null, text: null};\n if (allCollected) return {icon: 'check', text: 'Photo and signature'};\n if (someCollected) return {icon: 'close', text: `${!photoCollected ? ' No photo' : 'No signature'}`};\n if (allMissing) return {icon: 'close', text: 'No photo or signature'};\n if (photoMissing) return {icon: 'close', text: 'No photo'};\n if (sigMissing) return {icon: 'close', text: 'No signature'};\n if (photoCollected) return {icon: 'check', text: 'Photo'};\n if (sigCollected) return {icon: 'check', text: 'Signature'};\n return {icon: null, text: null};\n }\n\n get canMovePrior(): boolean {\n let canMove = false;\n let pin = this.priorPin;\n if (pin) {\n canMove = true;\n }\n return canMove;\n }\n\n\n get canMoveNext(): boolean {\n let canMove = false;\n let pin = this.nextPin;\n if (pin) {\n canMove = true;\n }\n return canMove;\n }\n\n\n onStopPrior() {\n //console.log(\"onStopPrior\")\n let pin = this.priorPin;\n if (pin) {\n this.plan.setPinSelection(pin, true, true)\n }\n }\n\n\n onStopNext() {\n //console.log(\"onStopNext\")\n let pin = this.nextPin;\n if (pin) {\n this.plan.setPinSelection(pin, true, true)\n }\n }\n\n get priorPin(): RwPin {\n let pin: RwPin;\n let pins = this.plan.stopPins;\n if (this.plan.selectedPin && this.plan.selectedPin.stop === this.stop) {\n if (this.stop.seq > 0 && this.stop.seq <= 240) {\n for (let n = this.stop.seq - 1; n > 0; n--) {\n let priorStopPin = pins.find(p => p.seq === n);\n if (priorStopPin) {\n pin = priorStopPin;\n break;\n }\n }\n }\n }\n return pin;\n }\n\n get nextPin(): RwPin {\n let pin: RwPin;\n let pins = this.plan.stopPins;\n if (this.plan.selectedPin && this.plan.selectedPin.stop === this.stop) {\n if (this.stop.seq > 0 && this.stop.seq <= 240) {\n for (let n = this.stop.seq + 1; n <= 240; n++) {\n let nextStopPin = pins.find(p => p.seq === n);\n if (nextStopPin) {\n pin = nextStopPin;\n break;\n }\n }\n }\n }\n return pin;\n }\n\n onStopAddSked(pin: RwPin) {\n this.plan.onStopAddSked(pin);\n }\n\n //#endregion User Actions\n\n\n @Watch(\"globals.activeRoute.stops\")\n watchStops(stops: RwStop[]) {\n // const self = this;\n // const SOURCE = \"RwStopView.watchStops\";\n //console.log(SOURCE);\n\n //Trigger selectedPin update\n let pin = this.plan.selectedPin;\n if (pin) {\n this.plan.selectedPin = null;\n this.plan.selectedPin = pin;\n }\n }\n\n onPop() {\n this.$emit(\"onPop\");\n }\n\n onDock() {\n this.$emit(\"onDock\");\n }\n\n onClosePop() {\n this.$emit(\"onClosePop\");\n }\n\n onCloseDock() {\n this.$emit(\"onCloseDock\");\n }\n\n onDeleted() {\n //console.log(\"RwStopView.onDeleted\")\n\n this.globals.showPinPopup = false;\n this.plan.clearPinSelections();\n //xBUG: this is no longer being received\n this.$emit(\"onDeleted\");\n\n }\n\n finalLength: string = this.calcMaxWidth();\n\n calcMaxWidth(): string {\n const SOURCE = \"RwStopView.calcMaxWidth\"\n\n let maxWidth = window.innerWidth;\n if (this.popup == true) {\n maxWidth = 450\n } else {\n\n if (this.isMounted) {\n\n let card = this.cardElement;\n if (card && card.clientWidth) {\n maxWidth = card.clientWidth - 150;\n } else {\n //This occurs in Empty State\n maxWidth = 450;\n }\n }\n\n }\n let output = \"max-width: \" + maxWidth.toString() + \"px\";\n this.finalLength = output;\n\n return output;\n }\n\n get cardElement(): Element {\n let el: Element;\n let card = this.$refs.cardStopView as any;\n if (card && card.$el && card.$el) {\n el = card.$el;\n }\n return el;\n }\n\n\n openSite() {\n this.plan.previousPin = RwPin.fromStop(this.stop);\n this.plan.selectedPin = RwPin.fromSite(this.site);\n }\n\n @Watch(\"stop\")\n onStopUpdated() {\n this.handleStopChanged();\n }\n\n handleStopChanged() {\n const SOURCE = \"RwStopView.handleStopChanged\";\n const histId = this.stop?.histId;\n if (RwSysUtils.isGuidReal(histId)) {\n if (!this.stopCheckIn || this.stopCheckIn.histId !== histId) {\n this.globals.selectedHistoryItem = null;\n RwTaskHistory.getHistoryItem(histId)\n .then(histItem => {\n if (histItem) {\n this.globals.selectedHistoryItem = histItem;\n }\n })\n .catch((err) => {\n RwLog.warn(SOURCE, `Error getting history item ${this.stop.histId} for stop ${this.stop.stopId} \\n\\n ${JSON.stringify(err)}`);\n });\n }\n } else if (this.stop?.isComplete) {\n this.globals.selectedHistoryItem = null;\n RwTaskHistory.getHistoryItemForStop(this.stop.stopId)\n .then(histItem => {\n if (histItem) {\n this.globals.selectedHistoryItem = histItem;\n }\n })\n .catch((err) => {\n RwLog.warn(SOURCE, `Error getting history item ${this.stop.histId} for stop ${this.stop.stopId} \\n\\n ${JSON.stringify(err)}`);\n });\n } else {\n this.globals.selectedHistoryItem = null;\n }\n }\n\n mounted() {\n this.isMounted = true;\n this.calcMaxWidth();\n window.addEventListener('resize', this.calcMaxWidth);\n const histId = this.stop?.histId;\n this.handleStopChanged();\n }\n\n showTooltip(text: string) {\n return text.length > 72 || text.indexOf(\"\\n\") !== -1;\n }\n\n toggleNoteVisibility() {\n this.noteVisibility = !this.noteVisibility;\n }\n\n addTaskToRoute(stop: RwStop) {\n //let pin = this.plan.selectedPin;\n //if(this.isTaskList) pin.task = this.stop;\n this.globals.openGenericRoutePicker(\"\")\n .then(res => {\n const route = this.globals.routes.find(r => res.tarRouteId == r.routeId);\n if (!route) throw new Error(\"Route not found\")\n this.globals.addTaskToRoute(stop, route);\n })\n .catch(err => {\n RwLog.error(\"RwStopView.addTaskToRoute\", JSON.stringify(err));\n })\n //this.plan.onTaskToRoute(pin);\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStopView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStopView.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStopView.vue?vue&type=style&index=0&id=0014f4a8&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwStopView.vue?vue&type=template&id=0014f4a8&scoped=true&\"\nimport script from \"./RwStopView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwStopView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwStopView.vue?vue&type=style&index=0&id=0014f4a8&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0014f4a8\",\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\",\"max-height\":\"48px\"}},[_c(VImg,{attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.route ? _vm.route.routeIcon : undefined,\"max-width\":\"56px\"}}),_c(VToolbarTitle,[_vm._v(_vm._s(_vm.route ? _vm.route.name : \"Select Route\"))]),_c(VSpacer),(_vm.route && !_vm.isPlanner)?_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClickOpen.apply(null, arguments)}}},on),[_c(VIcon,[_vm._v(\"mdi-folder-open\")])],1)]}}],null,false,47918815)},[_c('span',[_vm._v(\"Open in Planner\")])]):_vm._e(),(_vm.route)?_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onClickEdit.apply(null, arguments)}}},on),[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1)]}}],null,false,865122501)},[_c('span',[_vm._v(\"Edit Route\")])]):_vm._e(),(_vm.route)?_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},on),[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,false,2097855828)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[(_vm.isDispatcher)?_c(VListItem,{on:{\"click\":_vm.onClickAssign}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-account\")])],1),_c(VListItemTitle,[_vm._v(\"Assign Driver\")])],1):_vm._e(),_c(VListItem,{on:{\"click\":_vm.onClickMarkComplete}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-check\")])],1),_c(VListItemTitle,[_vm._v(\"Change Status\")])],1),_c(VDivider),_c(VListItem,{on:{\"click\":_vm.onRouteCopy}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItemTitle,[_vm._v(\"Copy Route\")])],1),_c(VListItem,{on:{\"click\":_vm.onClickArchive}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-archive\")])],1),_c(VListItemTitle,[_vm._v(\"Archive Route\")])],1),(_vm.globals.isActionAvailable(_vm.globals.Actions.deleteRoutes))?_c(VListItem,{on:{\"click\":_vm.deleteClick}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete Route\")])],1):_vm._e(),_c(VDivider),(!_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onDock()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-dock-right\")])],1),_c(VListItemTitle,[_vm._v(\"Dock Window\")])],1):_vm._e(),(_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onPop()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-open-in-new\")])],1),_c(VListItemTitle,[_vm._v(\"Float Panel\")])],1):_vm._e(),(_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onCloseDock()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close-box\")])],1),_c(VListItemTitle,[_vm._v(\"Close Panel\")])],1):_vm._e(),(!_vm.isDocked)?_c(VListItem,{on:{\"click\":function($event){return _vm.onClosePop()}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close-box\")])],1),_c(VListItemTitle,[_vm._v(\"Close Window\")])],1):_vm._e()],1)],1):_vm._e()],1),(_vm.route)?_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 48px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VRow,{staticClass:\"ma-4 mx-5 mb-2\",attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"size\":\"32\",\"color\":\"grey\",\"icon\":\"\"}},on),[_vm._v(\" \"+_vm._s(_vm.optimizationTypeIcon)+\" \")])]}}],null,false,3480666668)},[(_vm.route.isRoundTrip)?_c('span',[_vm._v(\"Optimize for round trip.\")]):_c('span',[_vm._v(\"Optimize for one way trip.\")])]),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"size\":\"32\",\"color\":\"grey\",\"icon\":\"\"}},on),[_vm._v(\" \"+_vm._s(_vm.route.optType === 2 ? 'mdi-timer' : 'mdi-ruler')+\" \")])]}}],null,false,3340267979)},[(_vm.route.optType === 2)?_c('span',[_vm._v(\"Optimize for fastest trip.\")]):_c('span',[_vm._v(\"Optimize for shortest trip.\")])]),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"size\":\"32\",\"color\":\"grey\",\"icon\":\"\"}},on),[_vm._v(_vm._s(_vm.travelModeIcon))])]}}],null,false,2951558734)},[_c('span',[_vm._v(_vm._s(_vm.travelModeText))])]),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(_vm.route.avoidFerries ||_vm.route.avoidHighways || _vm.route.avoidTolls)?_c(VIcon,_vm._g({attrs:{\"size\":\"32\",\"color\":\"grey\",\"icon\":\"\"}},on),[_vm._v(\" mdi-minus-circle \")]):_c(VIcon,_vm._g({attrs:{\"size\":\"32\",\"color\":\"grey\",\"icon\":\"\"}},on),[_vm._v(\"mdi-circle-off-outline\")])]}}],null,false,887418097)},[(_vm.route.avoidFerries ||_vm.route.avoidHighways || _vm.route.avoidTolls)?_c('span',[_vm._v(\"Avoids:\")]):_vm._e(),(_vm.route.avoidTolls)?_c('span',[_vm._v(\" Tolls\")]):_vm._e(),(_vm.route.avoidHighways)?_c('span',[_vm._v(\" Highways\")]):_vm._e(),(_vm.route.avoidFerries)?_c('span',[_vm._v(\" Ferries\")]):_vm._e(),(!_vm.route.avoidFerries && !_vm.route.avoidHighways && !_vm.route.avoidTolls)?_c('span',[_vm._v(\"Nothing being avoided.\")]):_vm._e()])],1),_c(VRow,{staticClass:\"ma-4 mt-0\",attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c(VTooltip,{attrs:{\"top\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VProgressLinear,_vm._g({attrs:{\"color\":_vm.route.getProgressColor(),\"height\":\"8\",\"value\":_vm.route.progress,\"striped\":\"\"}},on))]}}],null,false,998555372)},[_c('span',{staticStyle:{\"font-size\":\"small\",\"margin-left\":\"4px\"}},[_vm._v(\" \"+_vm._s(_vm.route.getProgressText())+\" \")])])],1),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\",\"max-width\":\"450\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on, attrs}){return [(_vm.gotViolations)?_c(VRow,_vm._g(_vm._b({staticClass:\"px-3\",staticStyle:{\"height\":\"48px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},'v-row',attrs,false),on),[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Violations: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.fullVioText)+\" \")]),_c(VIcon,{attrs:{\"color\":\"warning\"}},[_vm._v(\"warning\")])],1):_vm._e()]}}],null,false,2015991518)},[_c('span',[_vm._v(_vm._s(_vm.fullVioText))])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"48px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Name: \")]),_c('div',{style:(_vm.finalLength)},[_c('span',[_vm._v(\" \"+_vm._s(_vm.route.name)+\" \")])])]),_c(VRow,{staticClass:\"px-3 mobile-margin-bottom\",staticStyle:{\"height\":\"48px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Status: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_c('span',{class:_vm.route.getStatusTextStyle()},[_vm._v(\" \"+_vm._s(_vm.route.routeStatusText)+\" \")])])]),_c(VRow,{staticClass:\"px-3 mobile-margin-bottom\",style:(`height: 48px; width: 100%;${_vm.globals.isMobileView?'margin-bottom:20px;':''}`),attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Assignment: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(`${_vm.finalLength};${_vm.globals.isMobileView?'width: 100%;': ''}`)},[_c(VAvatar,{staticClass:\"ml-2 mr-2\",attrs:{\"size\":\"28\",\"icon\":\"\"}},[_c(VImg,{attrs:{\"contain\":\"\",\"src\":_vm.driver.imageUrl,\"alt\":\"driverImage\"}})],1),_c('span',{staticClass:\"ml-0\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.route.driverName)+\" \")]),(_vm.route.assignCode !== 0)?_c('span',{staticClass:\"ml-1\",class:_vm.route.getAssignTextStyle()},[_vm._v(\" \"+_vm._s(_vm.route.assignTextInline)+\" \")]):_vm._e()],1)]),_c(VRow,{staticClass:\"px-3 mobile-margin-bottom\",staticStyle:{\"height\":\"48px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Time of Route: \"),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({staticClass:\"mb-2\",attrs:{\"color\":\"#555\",\"icon\":\"\",\"text\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-information-outline\")])]}}],null,false,1738710592)},[_c('span',[_vm._v(\"Allowed time frame which stops can be added.\")])])],1),_c('div',{staticClass:\"ellipseStateText\",style:(`${_vm.finalLength}; ${_vm.globals.isMobileView? 'width: 100%;': ''}`)},[_vm._v(\" \"+_vm._s(_vm.formattedRouteSpan)+\" \")])]),(_vm.route)?_c(VRow,{staticClass:\"px-3 mobile-margin-bottom\",staticStyle:{\"height\":\"48px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Start Time Type: \")]),(_vm.route.isHardStart)?_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" Specific Time \")]):_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" Time of Optimize \")])]):_vm._e(),(_vm.route)?_c(VRow,{staticClass:\"px-3 mobile-margin-bottom\",staticStyle:{\"height\":\"48px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Start Point Type: \"),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({staticClass:\"mb-2\",attrs:{\"color\":\"#555\",\"icon\":\"\",\"text\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-information-outline\")])]}}],null,false,1738710592)},[(_vm.route.isDynLoc === false && _vm.route.isComplete === false)?_c('span',[_vm._v(_vm._s(_vm.startPointText(_vm.route)))]):(_vm.route.isComplete === true)?_c('span',[_vm._v(\"Route is complete.\")]):_c('span',[_vm._v(\"Uses the driver's location as the start point.\")])])],1),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.route.isDynLoc ? \"Use Driver App GPS\" : \"Use Fixed Location\")+\" \")])]):_vm._e(),(_vm.route.totalDistText)?_c(VRow,{staticClass:\"px-3 mobile-margin-bottom\",staticStyle:{\"height\":\"48px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Total Distance: \"),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({staticClass:\"mb-2\",attrs:{\"color\":\"#555\",\"icon\":\"\",\"text\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-information-outline\")])]}}],null,false,1738710592)},[_c('span',[_vm._v(\"Total length of route.\")])])],1),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.route ? _vm.route.totalDistText : \"distance\")+\" \")])]):_vm._e(),(_vm.route.totalTimeString !== _vm.emptyTime)?_c(VRow,{staticClass:\"px-3 mobile-margin-bottom\",staticStyle:{\"height\":\"48px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\"Total Time: \"),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({staticClass:\"mb-2\",attrs:{\"color\":\"#555\",\"icon\":\"\",\"text\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-information-outline\")])]}}],null,false,1738710592)},[_c('span',[_vm._v(\"Time for travel and time at each stop.\")])])],1),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.route ? _vm.route.totalTimeString : \"Total Time\")+\" \")])]):_vm._e(),(_vm.route.travelTimeText)?_c(VRow,{staticClass:\"px-3 mobile-margin-bottom\",staticStyle:{\"height\":\"48px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Drive Time: \"),_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({staticClass:\"mb-2\",attrs:{\"color\":\"#555\",\"icon\":\"\",\"text\":\"\",\"small\":\"\"}},on),[_vm._v(\"mdi-information-outline\")])]}}],null,false,1738710592)},[_c('span',[_vm._v(\" Travel time only\")])])],1),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.route ? _vm.route.travelTimeText : \"Drive Time\")+\" \")])]):_vm._e(),(_vm.route.note)?_c(VRow,{staticClass:\"px-3 mobile-margin-bottom\",staticStyle:{\"min-height\":\"36px\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Note: \")])]):_vm._e(),(_vm.route.note)?_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"min-height\":\"36px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_c('p',{staticClass:\"notesText\",staticStyle:{\"margin-bottom\":\"0\"}},[_vm._v(_vm._s(_vm.route ? _vm.route.note : \"Route notes go here\"))])])]):_vm._e()],1):_vm._e(),(_vm.globals.showRouteCopy)?_c('RwRouteCopy'):_vm._e(),(_vm.globals.showRouteAssign)?_c('RwRouteAssign'):_vm._e(),(_vm.globals.showRouteComplete)?_c('RwRouteChangeStatus'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport RwRouteCopy from \"@/app/views/routes/RwRouteCopy.vue\";\nimport RwRouteDelete from \"@/app/views/routes/RwRouteDelete.vue\";\nimport RwRouteArchive from \"@/app/views/routes/RwRouteArchive.vue\";\nimport RwRouteAssign from \"@/app/views/routes/RwRouteAssign.vue\";\nimport RwRouteChangeStatus from \"@/app/views/routes/RwRouteChangeStatus.vue\";\nimport RwConfirm from \"@/app/views/pickers/RwConfirm.vue\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\n\n@Component({\n components: {RwConfirm, RwRouteChangeStatus, RwRouteAssign, RwRouteArchive, RwRouteDelete, RwRouteCopy}\n})\nexport default class RwRouteView extends Vue {\n @Prop(RwRoute) readonly route: RwRoute;\n @Prop(Boolean) readonly isPopup: boolean | undefined;\n @Prop(Boolean) readonly isPlanner: boolean | undefined;\n\n //#region Props\n\n fab = false;\n overlay = true;\n absolute = true;\n opacity = 0.75;\n emptyTime = \"0s\";\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get driver(): RwUser {\n return (this.route.driver) ? this.route.driver : this.globals.dispatcher;\n }\n\n get isDocked(): boolean {\n\n return !this.isPopup;\n }\n\n get plan(): RwPlannerSpace {\n return thePlan;\n }\n\n get style(): string {\n //HACK: Why is calculated height dependent on darkMode????\n return this.globals.isDarkMode\n ? \"overflow-y:auto;overflow-x:hidden;height:calc(100% - 48px);width:100%; \"\n : \"overflow-y:auto;overflow-x:hidden;height:calc(100% - 0px);width:100%; background-color:#FFFFFF\";\n }\n\n get formattedStartDate(): string {\n return RwDateUtils.formatDate(this.route.startTime);\n }\n\n get formattedRouteSpan(): string {\n let routeSpanText = RwDateUtils.formatTimeSpan(this.route.startTime, this.route.finishTimeAdjDur())\n return routeSpanText;\n }\n\n get activeRoute(): RwRoute {\n return this.plan.activeRoute;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n startPointText(route: RwRoute): string {\n let text: string;\n if (route.isDynLoc === true) {\n text = \"Location of Optimize (GPS)\";\n } else {\n let isAddress = (route.address)\n ? (route.address.indexOf(\"a\") > -1 || route.address.indexOf(\"e\") > -1 || route.address.indexOf(\"i\") > -1 || route.address.indexOf(\"o\") > -1 || route.address.indexOf(\"u\") > -1)\n : false;\n text = (route.address && isAddress)\n ? `Specific Location (${route.address})`\n : `Specific Location (${route.lat.toFixed(4)},${route.lng.toFixed(4)})`;\n }\n return text\n }\n\n\n get isDispatcher(): boolean {\n if (this.globals.isTeam && this.globals.isDisp) {\n return true;\n } else {\n return false;\n }\n }\n\n\n get travelModeText(): string {\n return RwRoute.getTravelModeText(this.route.travelMode)\n }\n\n get travelModeIcon(): string {\n return this.route.travelModeIcon\n //return RwRoute.getTravelMode(this.route.travelMode)\n }\n\n get optimizationTypeIcon(): string {\n return this.route.isRoundTrip ? \"mdi-refresh\" : \"mdi-arrow-right\"\n }\n\n get gotViolations(): boolean {\n let gotVios = false;\n if (this.route && this.route.violations != 0) {\n gotVios = true;\n }\n //console.log(\"RwRouteView.gotViolations\", gotVios)\n return gotVios;\n }\n\n get fullVioText(): string {\n let vioText = \"\";\n if (this.route && this.gotViolations) {\n vioText = this.route.fullVioText;\n }\n //console.log(\"RwRouteView.fullVioText\", vioText)\n return vioText;\n }\n\n\n // \n //
\n // Violations:\n //
\n //
\n // {{ route.fullVioText }}\n\n //#endregion props\n\n\n //#region menu Items\n\n onClickOpen() {\n this.globals.selectedRoute = this.route;\n this.plan.activeRoute = this.route;\n this.$router.push({path: this.route.plannerUrl}).catch();\n this.plan.openRoute(this.route)\n\n }\n\n onClickEdit() {\n this.globals.showRouteEdit(this.route)\n this.onClosePop();\n }\n\n deleteClick() {\n const self = this;\n this.globals.confirmAndDeleteRoute(this.route)\n .then(() => {\n self.globals.selectedRoute = null;\n self.onDeleted();\n });\n this.onClosePop();\n }\n\n onRouteCopy() {\n const self = this;\n this.globals\n .showRouteNew(false, this.route)\n .then(pick => {\n if (pick) {\n self.globals.plan.openRouteInPlanner(pick);\n if (RwPrefUtils.editAfterAdd) {\n self.globals.showRouteEdit(pick)\n }\n }\n this.onClosePop();\n })\n }\n\n onClickArchive() {\n this.globals.confirmAndArchiveRoute(this.route)\n .then(() => {\n this.globals.selectedRoute = null;\n });\n this.onClosePop();\n }\n\n onClickMarkComplete() {\n let self = this;\n let SOURCE = \"RwGlobals.onClickMarkComplete\";\n this.globals.confirmAndChangeRouteStatus(this.route)\n .then(() => {\n //console.warn(SOURCE+\" confirmAndChangeRouteStatus.then()\")\n this.onClosePop();\n })\n .catch(err => {\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n this.globals.showSnack(\"Failed to Update Route\", \"error\");\n });\n }\n\n onClickAssign() {\n this.globals.assignRoute(this.route)\n this.onClosePop();\n }\n\n onPop() {\n this.$emit(\"onPop\");\n }\n\n onDock() {\n this.$emit(\"onDock\");\n }\n\n onClosePop() {\n this.$emit(\"onClosePop\");\n }\n\n onCloseDock() {\n this.$emit(\"onCloseDock\");\n }\n\n onDeleted() {\n\n this.$emit(\"onDeleted\");\n }\n\n //#endregion menu items\n finalLength: string = this.detMaxTextLength();\n\n detMaxTextLength(): string {\n let length = window.innerWidth;\n if (this.isPopup == true) {\n length = 450\n } else {\n length = (length > 1200) ? Math.floor(length * 0.3) - 150 : length;\n }\n let output = \"max-width: \" + length.toString() + \"px\";\n this.finalLength = output;\n\n return output;\n }\n\n mounted() {\n window.addEventListener('resize', this.detMaxTextLength);\n }\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteView.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteView.vue?vue&type=style&index=0&id=3d4d5742&prod&lang=scss&scoped=true&\"","import { render, staticRenderFns } from \"./RwRouteView.vue?vue&type=template&id=3d4d5742&scoped=true&\"\nimport script from \"./RwRouteView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwRouteView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwRouteView.vue?vue&type=style&index=0&id=3d4d5742&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d4d5742\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[(_vm.space.previousPin)?_c(VBtn,{staticClass:\"pl-0 pr-0\",staticStyle:{\"min-width\":\"auto\"},attrs:{\"text\":\"\"},on:{\"click\":_vm.backToPreviousPin}},[_c(VIcon,[_vm._v(\"chevron_left\")])],1):_vm._e(),(_vm.site)?_c(VImg,{staticStyle:{\"display\":\"block\",\"margin\":\"auto\"},attrs:{\"height\":\"32\",\"width\":\"32\",\"contain\":\"\",\"max-width\":\"32px\",\"src\":_vm.siteUrl}}):_vm._e(),_c(VToolbarTitle,{staticClass:\"ml-2\",attrs:{\"bottom\":\"\"}},[_vm._v(_vm._s(_vm.site ? _vm.site.name : \"Select Favorite\"))]),_c(VSpacer),(_vm.site)?_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.editClick(_vm.site)}}},on),[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1)]}}],null,false,3684760512)},[_c('span',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Edit Favorite\")])]):_vm._e(),(_vm.site)?_c(VMenu,{attrs:{\"id\":\"menuId\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},on),[_c(VIcon,[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,false,2097855828)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_vm._v(\"Favorite Actions\")]),_c(VDivider),(_vm.globals.isActionAvailable(_vm.globals.Actions.deleteFavorite))?_c(VListItem,{on:{\"click\":function($event){return _vm.deleteClick(_vm.site)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Delete Favorite\")])],1):_vm._e(),_c(VDivider),(!_vm.space.isSiteRouted(_vm.space.selectedPin))?_c(VListItem,{on:{\"click\":_vm.addToRoute}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItemTitle,[_vm._v(\"Add To Route\")])],1):_vm._e(),_c(VDivider),(! _vm.isDocked)?_c(VListItem,{on:{\"click\":_vm.onDock}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-dock-right\")])],1),_c(VListItemTitle,{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Dock Window\")])],1):_vm._e(),(_vm.isDocked)?_c(VListItem,{on:{\"click\":_vm.onPop}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-open-in-new\")])],1),_c(VListItemTitle,{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Float Panel\")])],1):_vm._e(),(_vm.isDocked)?_c(VListItem,{on:{\"click\":_vm.onCloseDock}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Close\")])],1):_vm._e(),(! _vm.isDocked)?_c(VListItem,{on:{\"click\":_vm.onClosePop}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-close\")])],1),_c(VListItemTitle,{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Close\")])],1):_vm._e()],1)],1):_vm._e()],1),(_vm.site)?_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"overflow-y\":\"auto\",\"height\":\"calc(100% - 48px)\",\"width\":\"100%\"}},[_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Name: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.site.name)+\" \")])]],2),(_vm.site.address)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Address: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.site.address)+\" \")])]):_vm._e(),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Visit Time: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.visitText)+\" \")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Display Color: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_c(VIcon,{attrs:{\"color\":_vm.site.baseColor}},[_vm._v(\"mdi-star-circle\")])],1)]),(_vm.site.lastCheckInText)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Last Check-In: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.dateFormat)+\" \")])]):_vm._e(),(_vm.site.email)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Email: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.site.email ? _vm.site.email : \"No email listed.\")+\" \")])]):_vm._e(),(_vm.site.phone)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Phone: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.site.phone ? _vm.site.phone : \"No phone number listed.\")+\" \")])]):_vm._e(),(_vm.gotHours)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Restricted Hours:\")]),_c('div',{staticClass:\"text-right\",staticStyle:{\"font-size\":\"small\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":\"grey\"}},on),[_vm._v(\"mdi-calendar-clock\")])]}}],null,false,390185190)},[_c('div',{staticClass:\"pre text-left\"},[_vm._v(\" \"+_vm._s(_vm.hoursList)+\" \")])])],1)]):_vm._e(),(_vm.site.note)?_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Note: \")])]):_vm._e(),(_vm.site.note)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c(VCol,{staticStyle:{\"overflow-wrap\":\"break-word\"}},[_c('div',{staticClass:\"notesText\",staticStyle:{\"overflow-y\":\"auto\"}},[_vm._v(\" \"+_vm._s(_vm.site.note ? _vm.site.note : \"\")+\" \")])])],1):_vm._e()],1):_vm._e(),(_vm.globals.showSiteRelocate)?_c('RwSiteRelocate'):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport theSiteSpace, {RwSiteSpace} from \"@/app/views/sites/RwSiteSpace\";\nimport RwSiteEdit from \"@/app/views/sites/RwSiteEdit.vue\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport moment from \"moment\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n@Component({components: {RwSiteEdit}})\nexport default class RwSiteView extends Vue {\n @Prop(Boolean) readonly isPopup: boolean | undefined;\n @Prop(RwSite) readonly site: RwSite;\n @Prop(Boolean) readonly isFromSiteList: boolean | undefined;\n\n siteHours = this.hours;\n\n\n get visitTime(): number {\n return this.site ? this.site.visitTime : RwPrefUtils.visitTime;\n }\n\n set visitTime(val: number) {\n if (this.site) {\n this.site.visitTime = val;\n }\n }\n\n get gotHours(): boolean {\n let gotHours = false;\n if (this.hours && this.hours.length > 0) {\n gotHours = true;\n }\n return gotHours;\n }\n\n get hoursList(): string {\n let text = \"Unrestricted\";\n if (this.hours && this.hours.length > 0) {\n text = \"\";\n this.hours.forEach(h => {\n let line = h.displayFull;\n text += (text === \"\") ? line : \"\\n\" + line;\n })\n }\n return text;\n }\n\n get siteSpace(): RwSiteSpace {\n return theSiteSpace;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return theSpace;\n }\n\n get sites(): RwSite[] {\n return this.globals.sites;\n }\n\n colorScroll(): string {\n return (this.globals.isDarkMode) ? \"color:#000000\" : \"color:#fcfffd\";\n }\n\n\n get isDocked(): boolean {\n return !this.isPopup;\n }\n\n get visitText(): string {\n let text = \"\";\n if (this.site) {\n let effTime = this.site.getVisitTime();\n let isDefault = this.visitTime === -1;\n text = (isDefault) ? `default: ${effTime}m` : `override: ${effTime}m`;\n }\n return text;\n }\n\n //#region is menu actions\n\n editClick(site: RwSite) {\n this.globals.showSiteEdit(site)\n // this.siteSpace.selectedSite = site;\n // this.globals.showSiteEdit = true;\n this.onClosePop();\n }\n\n deleteClick() {\n let self = this;\n this.globals.confirmAndDeleteSites([this.site.siteId])\n .then(() => {\n self.globals.selectedSite = null;\n self.onDeleted()\n });\n this.onClosePop();\n\n }\n\n addToRoute() {\n const SOURCE = \"RwSiteView.addToRoute\";\n if (this.$route.name === \"sites\") {\n this.onClosePop();\n this.siteSpace.showRoutePicker(\"\")\n .then(res => {\n if (res.tarRouteId) {\n let rt = this.globals.routes.find(route => route.routeId === res.tarRouteId);\n if (rt) {\n this.globals.getFullRouteCallback(rt)\n .then(result => {\n this.space.onSiteToPickedRoute(this.site, result)\n this.globals.showSnack(`Favorite ${this.site.name} added to route ${result.name}`);\n })\n .catch(err => {\n RwLog.error(SOURCE, `Error adding favorite to route ${JSON.stringify(err)}\\n\\n rt:${JSON.stringify(rt.toJsonWithAllStops())}`)\n this.globals.showSnack(\"Sorry, we had an issue adding your favorite\", \"error\");\n })\n }\n }\n })\n } else {\n this.space.onSiteToRoute(this.space.selectedPin)\n }\n }\n\n relocateClick(site: RwSite) {\n let self = this;\n this.globals.onSiteRelocate(site, [\"RwSiteView.relocateClick\"])\n .then(() => {\n self.globals.showSnack(\"Favorite Relocated Successfully\", \"success\")\n })\n\n this.onClosePop();\n\n }\n\n\n onDock() {\n this.$emit(\"onDock\");\n }\n\n onPop() {\n this.$emit(\"onPop\");\n }\n\n onCloseDock() {\n this.$emit(\"onCloseDock\");\n }\n\n onClosePop() {\n this.$emit(\"onClosePop\");\n }\n\n onDeleted() {\n this.$emit(\"onDeleted\");\n }\n\n //#endregion menu actions\n\n\n get siteUrl(): string {\n return this.site.dataUrl ? this.site.dataUrl : '';\n }\n\n //#region hours\n\n\n get hours(): RwSked[] {\n let hours = (this.site) ? this.site.getActiveAvailability() : null;\n this.siteHours = hours;\n return this.siteHours;\n }\n\n associatedHours(bit: number): string[] {\n let hours = [];\n //@formatter:off\n switch (bit) {\n case 1:\n hours = [\"Monday Hours:\"];\n break;\n case 2:\n hours = [\"Tuesday Hours:\"];\n break;\n case 3:\n hours = [\"Wednesday Hours:\"];\n break;\n case 4:\n hours = [\"Thursday Hours:\"];\n break;\n case 5:\n hours = [\"Friday Hours:\"];\n break;\n case 6:\n hours = [\"Saturday Hours:\"];\n break;\n case 7:\n hours = [\"Sunday Hours:\"];\n break;\n }\n //@formatter:on\n if (this.hours) {\n for (let currentSked = 0; currentSked < this.hours.length; currentSked++) {\n if ((this.hours[currentSked].dow & Math.pow(2, bit)) === Math.pow(2, bit)) {\n let midnight = \"\";\n if (this.hours[currentSked].timeFinish < this.hours[currentSked].timeStart) {\n midnight = \" Crosses midnight\"\n }\n hours.push(RwDateUtils.msToString(this.hours[currentSked].timeStart) + \"-\" + RwDateUtils.msToString(this.hours[currentSked].timeFinish) + midnight);\n }\n }\n }\n return (hours.length == 1) ? [hours[0], \"No Scheduled Hours\"] : hours;\n }\n\n get mondaySkeds(): string[] {\n return this.associatedHours(1)\n }\n\n get tuesdaySkeds(): string[] {\n return this.associatedHours(2)\n }\n\n get wednesdaySkeds(): string[] {\n return this.associatedHours(3)\n }\n\n get thursdaySkeds(): string[] {\n return this.associatedHours(4)\n }\n\n get fridaySkeds(): string[] {\n return this.associatedHours(5)\n }\n\n get saturdaySkeds(): string[] {\n return this.associatedHours(6)\n }\n\n get sundaySkeds(): string[] {\n return this.associatedHours(7)\n }\n\n get lastCheckInText(): string {\n return (this.site.checkDate) ? RwDateUtils.formatDate(this.site.checkDate) : \"\";\n //return (this.site.checkDate) ? RwDateUtils.formatDateToLocal(this.site.checkDate) : \"\";\n }\n\n get dateFormat(): string {\n return (this.site.checkDate) ? moment(this.site.checkDate).format('L') + \" \" + moment(this.site.checkDate).format('LT') : \"\";\n }\n\n //#endregion hours\n\n\n finalLength: string = this.detMaxTextLength()\n\n detMaxTextLength(): string {\n\n let length = window.innerWidth;\n if (this.isPopup == true) {\n length = 450\n } else {\n length = (length > 1000) ? Math.floor(length * 0.3) - 150 : length;\n }\n let output = \"max-width: \" + length.toString() + \"px\";\n this.finalLength = output;\n\n return output;\n }\n\n backToPreviousPin() {\n this.space.selectedPin = this.space.previousPin;\n }\n\n mounted() {\n window.addEventListener('resize', this.detMaxTextLength);\n //console.log(\"site.color\", this.site.baseColor);\n }\n\n beforeDestroy() {\n this.space.previousPin = null;\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSiteView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSiteView.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSiteView.vue?vue&type=style&index=0&id=11d20c40&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwSiteView.vue?vue&type=template&id=11d20c40&scoped=true&\"\nimport script from \"./RwSiteView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSiteView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwSiteView.vue?vue&type=style&index=0&id=11d20c40&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"11d20c40\",\n null\n \n)\n\nexport default component.exports","import { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"scrollable\":\"\",\"max-width\":\"600px\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"click:outside\":_vm.escPress,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.escPress.apply(null, arguments)}]},model:{value:(_vm.globals.showStopPop),callback:function ($$v) {_vm.$set(_vm.globals, \"showStopPop\", $$v)},expression:\"globals.showStopPop\"}},[(_vm.globals.showStopPop)?_c('RwStopView',{attrs:{\"popup\":true,\"stop\":_vm.space.selectedTask},on:{\"onDock\":_vm.onDock,\"onClosePop\":_vm.onClosePop,\"onDeleted\":_vm.onDeleted}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport RwStopView from \"@/app/views/planner/RwStopView.vue\";\nimport theTaskSpace, {RwTaskSpace} from \"@/app/views/tasks/RwTaskSpace\";\n\n@Component({components: {RwStopView}})\nexport default class RwTaskPop extends Vue {\n\n //#region Props\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwTaskSpace {\n return theTaskSpace;\n }\n\n //#endregion\n\n\n onDock() {\n this.globals.showStopPop = false;\n this.globals.showStopDock = true;\n }\n\n onClosePop() {\n this.globals.showStopPop = false;\n }\n\n onDeleted() {\n this.globals.showStopPop = false;\n this.space.selectedTask = null;\n }\n\n\n escPress(event: Event) {\n event.stopPropagation();\n this.globals.showPinPopup = false;\n }\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwTaskPop.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwTaskPop.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwTaskPop.vue?vue&type=style&index=0&id=27a032f2&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwTaskPop.vue?vue&type=template&id=27a032f2&scoped=true&\"\nimport script from \"./RwTaskPop.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwTaskPop.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwTaskPop.vue?vue&type=style&index=0&id=27a032f2&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"27a032f2\",\n null\n \n)\n\nexport default component.exports","// extracted by mini-css-extract-plugin\nexport {};","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var 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 [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","/**!\n * Sortable 1.10.2\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"sortablejs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sortablejs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vuedraggable\"] = factory(require(\"sortablejs\"));\n\telse\n\t\troot[\"vuedraggable\"] = factory(root[\"Sortable\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE_a352__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"230e\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"fab2\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"7333\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"0d58\");\nvar gOPS = __webpack_require__(\"2621\");\nvar pIE = __webpack_require__(\"52a7\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IObject = __webpack_require__(\"626a\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"79e5\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a352\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_a352__;\n\n/***/ }),\n\n/***/ \"a481\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar toInteger = __webpack_require__(\"4588\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar regExpExec = __webpack_require__(\"5f1b\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(\"214f\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"c649\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return insertNodeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return console; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return removeNode; });\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"a481\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction getConsole() {\n if (typeof window !== \"undefined\") {\n return window.console;\n }\n\n return global.console;\n}\n\nvar console = getConsole();\n\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n\nvar regex = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(regex, function (_, c) {\n return c ? c.toUpperCase() : \"\";\n });\n});\n\nfunction removeNode(node) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\n\n/***/ }),\n\n/***/ \"f6fd\":\n/***/ (function(module, exports) {\n\n// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n var currentScript = \"currentScript\",\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n // If browser needs currentScript polyfill, add get currentScript() to the document object\n if (!(currentScript in document)) {\n Object.defineProperty(document, currentScript, {\n get: function(){\n\n // IE 6-10 supports script readyState\n // IE 10+ support stack trace\n try { throw new Error(); }\n catch (err) {\n\n // Find the second match for the \"at\" string to get file src url from stack.\n // Specifically works with the format of stack traces in IE.\n var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n for(i in scripts){\n if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n return scripts[i];\n }\n }\n\n // If no match, return null\n return null;\n }\n }\n });\n }\n})(document);\n\n\n/***/ }),\n\n/***/ \"f751\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"7333\") });\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (true) {\n __webpack_require__(\"f6fd\")\n }\n\n var setPublicPath_i\n if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js\nvar es6_object_assign = __webpack_require__(\"f751\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external {\"commonjs\":\"sortablejs\",\"commonjs2\":\"sortablejs\",\"amd\":\"sortablejs\",\"root\":\"Sortable\"}\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_ = __webpack_require__(\"a352\");\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_);\n\n// EXTERNAL MODULE: ./src/util/helper.js\nvar helper = __webpack_require__(\"c649\");\n\n// CONCATENATED MODULE: ./src/vuedraggable.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction buildAttribute(object, propName, value) {\n if (value === undefined) {\n return object;\n }\n\n object = object || {};\n object[propName] = value;\n return object;\n}\n\nfunction computeVmIndex(vnodes, element) {\n return vnodes.map(function (elt) {\n return elt.elm;\n }).indexOf(element);\n}\n\nfunction _computeIndexes(slots, children, isTransition, footerOffset) {\n if (!slots) {\n return [];\n }\n\n var elmFromNodes = slots.map(function (elt) {\n return elt.elm;\n });\n var footerIndex = children.length - footerOffset;\n\n var rawIndexes = _toConsumableArray(children).map(function (elt, idx) {\n return idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt);\n });\n\n return isTransition ? rawIndexes.filter(function (ind) {\n return ind !== -1;\n }) : rawIndexes;\n}\n\nfunction emit(evtName, evtData) {\n var _this = this;\n\n this.$nextTick(function () {\n return _this.$emit(evtName.toLowerCase(), evtData);\n });\n}\n\nfunction delegateAndEmit(evtName) {\n var _this2 = this;\n\n return function (evtData) {\n if (_this2.realList !== null) {\n _this2[\"onDrag\" + evtName](evtData);\n }\n\n emit.call(_this2, evtName, evtData);\n };\n}\n\nfunction isTransitionName(name) {\n return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction vuedraggable_isTransition(slots) {\n if (!slots || slots.length !== 1) {\n return false;\n }\n\n var _slots = _slicedToArray(slots, 1),\n componentOptions = _slots[0].componentOptions;\n\n if (!componentOptions) {\n return false;\n }\n\n return isTransitionName(componentOptions.tag);\n}\n\nfunction getSlot(slot, scopedSlot, key) {\n return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);\n}\n\nfunction computeChildrenAndOffsets(children, slot, scopedSlot) {\n var headerOffset = 0;\n var footerOffset = 0;\n var header = getSlot(slot, scopedSlot, \"header\");\n\n if (header) {\n headerOffset = header.length;\n children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);\n }\n\n var footer = getSlot(slot, scopedSlot, \"footer\");\n\n if (footer) {\n footerOffset = footer.length;\n children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);\n }\n\n return {\n children: children,\n headerOffset: headerOffset,\n footerOffset: footerOffset\n };\n}\n\nfunction getComponentAttributes($attrs, componentData) {\n var attributes = null;\n\n var update = function update(name, value) {\n attributes = buildAttribute(attributes, name, value);\n };\n\n var attrs = Object.keys($attrs).filter(function (key) {\n return key === \"id\" || key.startsWith(\"data-\");\n }).reduce(function (res, key) {\n res[key] = $attrs[key];\n return res;\n }, {});\n update(\"attrs\", attrs);\n\n if (!componentData) {\n return attributes;\n }\n\n var on = componentData.on,\n props = componentData.props,\n componentDataAttrs = componentData.attrs;\n update(\"on\", on);\n update(\"props\", props);\n Object.assign(attributes.attrs, componentDataAttrs);\n return attributes;\n}\n\nvar eventsListened = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nvar eventsToEmit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nvar readonlyProperties = [\"Move\"].concat(eventsListened, eventsToEmit).map(function (evt) {\n return \"on\" + evt;\n});\nvar draggingElement = null;\nvar props = {\n options: Object,\n list: {\n type: Array,\n required: false,\n default: null\n },\n value: {\n type: Array,\n required: false,\n default: null\n },\n noTransitionOnDrag: {\n type: Boolean,\n default: false\n },\n clone: {\n type: Function,\n default: function _default(original) {\n return original;\n }\n },\n element: {\n type: String,\n default: \"div\"\n },\n tag: {\n type: String,\n default: null\n },\n move: {\n type: Function,\n default: null\n },\n componentData: {\n type: Object,\n required: false,\n default: null\n }\n};\nvar draggableComponent = {\n name: \"draggable\",\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n transitionMode: false,\n noneFunctionalComponentMode: false\n };\n },\n render: function render(h) {\n var slots = this.$slots.default;\n this.transitionMode = vuedraggable_isTransition(slots);\n\n var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),\n children = _computeChildrenAndOf.children,\n headerOffset = _computeChildrenAndOf.headerOffset,\n footerOffset = _computeChildrenAndOf.footerOffset;\n\n this.headerOffset = headerOffset;\n this.footerOffset = footerOffset;\n var attributes = getComponentAttributes(this.$attrs, this.componentData);\n return h(this.getTag(), attributes, children);\n },\n created: function created() {\n if (this.list !== null && this.value !== null) {\n helper[\"b\" /* console */].error(\"Value and list props are mutually exclusive! Please set one or another.\");\n }\n\n if (this.element !== \"div\") {\n helper[\"b\" /* console */].warn(\"Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props\");\n }\n\n if (this.options !== undefined) {\n helper[\"b\" /* console */].warn(\"Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props\");\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();\n\n if (this.noneFunctionalComponentMode && this.transitionMode) {\n throw new Error(\"Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: \".concat(this.getTag()));\n }\n\n var optionsAdded = {};\n eventsListened.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = delegateAndEmit.call(_this3, elt);\n });\n eventsToEmit.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = emit.bind(_this3, elt);\n });\n var attributes = Object.keys(this.$attrs).reduce(function (res, key) {\n res[Object(helper[\"a\" /* camelize */])(key)] = _this3.$attrs[key];\n return res;\n }, {});\n var options = Object.assign({}, this.options, attributes, optionsAdded, {\n onMove: function onMove(evt, originalEvent) {\n return _this3.onDragMove(evt, originalEvent);\n }\n });\n !(\"draggable\" in options) && (options.draggable = \">*\");\n this._sortable = new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer, options);\n this.computeIndexes();\n },\n beforeDestroy: function beforeDestroy() {\n if (this._sortable !== undefined) this._sortable.destroy();\n },\n computed: {\n rootContainer: function rootContainer() {\n return this.transitionMode ? this.$el.children[0] : this.$el;\n },\n realList: function realList() {\n return this.list ? this.list : this.value;\n }\n },\n watch: {\n options: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n $attrs: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n realList: function realList() {\n this.computeIndexes();\n }\n },\n methods: {\n getIsFunctional: function getIsFunctional() {\n var fnOptions = this._vnode.fnOptions;\n return fnOptions && fnOptions.functional;\n },\n getTag: function getTag() {\n return this.tag || this.element;\n },\n updateOptions: function updateOptions(newOptionValue) {\n for (var property in newOptionValue) {\n var value = Object(helper[\"a\" /* camelize */])(property);\n\n if (readonlyProperties.indexOf(value) === -1) {\n this._sortable.option(value, newOptionValue[property]);\n }\n }\n },\n getChildrenNodes: function getChildrenNodes() {\n if (this.noneFunctionalComponentMode) {\n return this.$children[0].$slots.default;\n }\n\n var rawNodes = this.$slots.default;\n return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;\n },\n computeIndexes: function computeIndexes() {\n var _this4 = this;\n\n this.$nextTick(function () {\n _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode, _this4.footerOffset);\n });\n },\n getUnderlyingVm: function getUnderlyingVm(htmlElt) {\n var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);\n\n if (index === -1) {\n //Edge case during move callback: related element might be\n //an element different from collection\n return null;\n }\n\n var element = this.realList[index];\n return {\n index: index,\n element: element\n };\n },\n getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {\n var vue = _ref.__vue__;\n\n if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {\n if (!(\"realList\" in vue) && vue.$children.length === 1 && \"realList\" in vue.$children[0]) return vue.$children[0];\n return vue;\n }\n\n return vue.$parent;\n },\n emitChanges: function emitChanges(evt) {\n var _this5 = this;\n\n this.$nextTick(function () {\n _this5.$emit(\"change\", evt);\n });\n },\n alterList: function alterList(onList) {\n if (this.list) {\n onList(this.list);\n return;\n }\n\n var newList = _toConsumableArray(this.value);\n\n onList(newList);\n this.$emit(\"input\", newList);\n },\n spliceList: function spliceList() {\n var _arguments = arguments;\n\n var spliceList = function spliceList(list) {\n return list.splice.apply(list, _toConsumableArray(_arguments));\n };\n\n this.alterList(spliceList);\n },\n updatePosition: function updatePosition(oldIndex, newIndex) {\n var updatePosition = function updatePosition(list) {\n return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n };\n\n this.alterList(updatePosition);\n },\n getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {\n var to = _ref2.to,\n related = _ref2.related;\n var component = this.getUnderlyingPotencialDraggableComponent(to);\n\n if (!component) {\n return {\n component: component\n };\n }\n\n var list = component.realList;\n var context = {\n list: list,\n component: component\n };\n\n if (to !== related && list && component.getUnderlyingVm) {\n var destination = component.getUnderlyingVm(related);\n\n if (destination) {\n return Object.assign(destination, context);\n }\n }\n\n return context;\n },\n getVmIndex: function getVmIndex(domIndex) {\n var indexes = this.visibleIndexes;\n var numberIndexes = indexes.length;\n return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n },\n getComponent: function getComponent() {\n return this.$slots.default[0].componentInstance;\n },\n resetTransitionData: function resetTransitionData(index) {\n if (!this.noTransitionOnDrag || !this.transitionMode) {\n return;\n }\n\n var nodes = this.getChildrenNodes();\n nodes[index].data = null;\n var transitionContainer = this.getComponent();\n transitionContainer.children = [];\n transitionContainer.kept = undefined;\n },\n onDragStart: function onDragStart(evt) {\n this.context = this.getUnderlyingVm(evt.item);\n evt.item._underlying_vm_ = this.clone(this.context.element);\n draggingElement = evt.item;\n },\n onDragAdd: function onDragAdd(evt) {\n var element = evt.item._underlying_vm_;\n\n if (element === undefined) {\n return;\n }\n\n Object(helper[\"d\" /* removeNode */])(evt.item);\n var newIndex = this.getVmIndex(evt.newIndex);\n this.spliceList(newIndex, 0, element);\n this.computeIndexes();\n var added = {\n element: element,\n newIndex: newIndex\n };\n this.emitChanges({\n added: added\n });\n },\n onDragRemove: function onDragRemove(evt) {\n Object(helper[\"c\" /* insertNodeAt */])(this.rootContainer, evt.item, evt.oldIndex);\n\n if (evt.pullMode === \"clone\") {\n Object(helper[\"d\" /* removeNode */])(evt.clone);\n return;\n }\n\n var oldIndex = this.context.index;\n this.spliceList(oldIndex, 1);\n var removed = {\n element: this.context.element,\n oldIndex: oldIndex\n };\n this.resetTransitionData(oldIndex);\n this.emitChanges({\n removed: removed\n });\n },\n onDragUpdate: function onDragUpdate(evt) {\n Object(helper[\"d\" /* removeNode */])(evt.item);\n Object(helper[\"c\" /* insertNodeAt */])(evt.from, evt.item, evt.oldIndex);\n var oldIndex = this.context.index;\n var newIndex = this.getVmIndex(evt.newIndex);\n this.updatePosition(oldIndex, newIndex);\n var moved = {\n element: this.context.element,\n oldIndex: oldIndex,\n newIndex: newIndex\n };\n this.emitChanges({\n moved: moved\n });\n },\n updateProperty: function updateProperty(evt, propertyName) {\n evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);\n },\n computeFutureIndex: function computeFutureIndex(relatedContext, evt) {\n if (!relatedContext.element) {\n return 0;\n }\n\n var domChildren = _toConsumableArray(evt.to.children).filter(function (el) {\n return el.style[\"display\"] !== \"none\";\n });\n\n var currentDOMIndex = domChildren.indexOf(evt.related);\n var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n var draggedInList = domChildren.indexOf(draggingElement) !== -1;\n return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;\n },\n onDragMove: function onDragMove(evt, originalEvent) {\n var onMove = this.move;\n\n if (!onMove || !this.realList) {\n return true;\n }\n\n var relatedContext = this.getRelatedContextFromMoveEvent(evt);\n var draggedContext = this.context;\n var futureIndex = this.computeFutureIndex(relatedContext, evt);\n Object.assign(draggedContext, {\n futureIndex: futureIndex\n });\n var sendEvt = Object.assign({}, evt, {\n relatedContext: relatedContext,\n draggedContext: draggedContext\n });\n return onMove(sendEvt, originalEvent);\n },\n onDragEnd: function onDragEnd() {\n this.computeIndexes();\n draggingElement = null;\n }\n }\n};\n\nif (typeof window !== \"undefined\" && \"Vue\" in window) {\n window.Vue.component(\"draggable\", draggableComponent);\n}\n\n/* harmony default export */ var vuedraggable = (draggableComponent);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (vuedraggable);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=vuedraggable.umd.js.map","// extracted by mini-css-extract-plugin\nexport {};","// Styles\nimport \"../../../src/components/VAlert/VAlert.sass\"; // Extensions\n\nimport VSheet from '../VSheet'; // Components\n\nimport VBtn from '../VBtn';\nimport VIcon from '../VIcon'; // Mixins\n\nimport Toggleable from '../../mixins/toggleable';\nimport Themeable from '../../mixins/themeable';\nimport Transitionable from '../../mixins/transitionable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { breaking } from '../../util/console';\n/* @vue/component */\n\nexport default mixins(VSheet, Toggleable, Transitionable).extend({\n name: 'v-alert',\n props: {\n border: {\n type: String,\n\n validator(val) {\n return ['top', 'right', 'bottom', 'left'].includes(val);\n }\n\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close'\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel'\n },\n icon: {\n default: '',\n type: [Boolean, String],\n\n validator(val) {\n return typeof val === 'string' || val === false;\n }\n\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n\n validator(val) {\n return ['info', 'error', 'success', 'warning'].includes(val);\n }\n\n },\n value: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n __cachedBorder() {\n if (!this.border) return null;\n let data = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true\n }\n };\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data);\n data.class['v-alert__border--has-color'] = true;\n }\n\n return this.$createElement('div', data);\n },\n\n __cachedDismissible() {\n if (!this.dismissible) return null;\n const color = this.iconColor;\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel)\n },\n on: {\n click: () => this.isActive = false\n }\n }, [this.$createElement(VIcon, {\n props: {\n color\n }\n }, this.closeIcon)]);\n },\n\n __cachedIcon() {\n if (!this.computedIcon) return null;\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: {\n color: this.iconColor\n }\n }, this.computedIcon);\n },\n\n classes() {\n const classes = { ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text\n };\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true;\n }\n\n return classes;\n },\n\n computedColor() {\n return this.color || this.type;\n },\n\n computedIcon() {\n if (this.icon === false) return false;\n if (typeof this.icon === 'string' && this.icon) return this.icon;\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false;\n return `$${this.type}`;\n },\n\n hasColoredIcon() {\n return this.hasText || Boolean(this.border) && this.coloredBorder;\n },\n\n hasText() {\n return this.text || this.outlined;\n },\n\n iconColor() {\n return this.hasColoredIcon ? this.computedColor : undefined;\n },\n\n isDark() {\n if (this.type && !this.coloredBorder && !this.outlined) return true;\n return Themeable.options.computed.isDark.call(this);\n }\n\n },\n\n created() {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this);\n }\n },\n\n methods: {\n genWrapper() {\n const children = [this.$slots.prepend || this.__cachedIcon, this.genContent(), this.__cachedBorder, this.$slots.append, this.$scopedSlots.close ? this.$scopedSlots.close({\n toggle: this.toggle\n }) : this.__cachedDismissible];\n const data = {\n staticClass: 'v-alert__wrapper'\n };\n return this.$createElement('div', data, children);\n },\n\n genContent() {\n return this.$createElement('div', {\n staticClass: 'v-alert__content'\n }, this.$slots.default);\n },\n\n genAlert() {\n let data = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert'\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive\n }]\n };\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor;\n data = setColor(this.computedColor, data);\n }\n\n return this.$createElement('div', data, [this.genWrapper()]);\n },\n\n /** @public */\n toggle() {\n this.isActive = !this.isActive;\n }\n\n },\n\n render(h) {\n const render = this.genAlert();\n if (!this.transition) return render;\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode\n }\n }, [render]);\n }\n\n});\n//# sourceMappingURL=VAlert.js.map","// Styles\nimport \"../../../src/components/VAutocomplete/VAutocomplete.sass\"; // Extensions\n\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect';\nimport VTextField from '../VTextField/VTextField'; // Utilities\n\nimport mergeData from '../../util/mergeData';\nimport { getObjectValueByPath, getPropertyFromItem, keyCodes } from '../../util/helpers';\nconst defaultMenuProps = { ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false\n};\n/* @vue/component */\n\nexport default VSelect.extend({\n name: 'v-autocomplete',\n props: {\n autoSelectFirst: {\n type: Boolean,\n default: false\n },\n filter: {\n type: Function,\n default: (item, queryText, itemText) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1;\n }\n },\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps\n },\n noFilter: Boolean,\n searchInput: {\n type: String\n }\n },\n\n data() {\n return {\n lazySearch: this.searchInput\n };\n },\n\n computed: {\n classes() {\n return { ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1\n };\n },\n\n computedItems() {\n return this.filteredItems;\n },\n\n selectedValues() {\n return this.selectedItems.map(item => this.getValue(item));\n },\n\n hasDisplayedItems() {\n return this.hideSelected ? this.filteredItems.some(item => !this.hasItem(item)) : this.filteredItems.length > 0;\n },\n\n currentRange() {\n if (this.selectedItem == null) return 0;\n return String(this.getText(this.selectedItem)).length;\n },\n\n filteredItems() {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems;\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText);\n const text = value != null ? String(value) : '';\n return this.filter(item, String(this.internalSearch), text);\n });\n },\n\n internalSearch: {\n get() {\n return this.lazySearch;\n },\n\n set(val) {\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val;\n this.$emit('update:search-input', val);\n }\n }\n\n },\n\n isAnyValueAllowed() {\n return false;\n },\n\n isDirty() {\n return this.searchIsDirty || this.selectedItems.length > 0;\n },\n\n isSearching() {\n return this.multiple && this.searchIsDirty || this.searchIsDirty && this.internalSearch !== this.getText(this.selectedItem);\n },\n\n menuCanShow() {\n if (!this.isFocused) return false;\n return this.hasDisplayedItems || !this.hideNoData;\n },\n\n $_menuProps() {\n const props = VSelect.options.computed.$_menuProps.call(this);\n props.contentClass = `v-autocomplete__content ${props.contentClass || ''}`.trim();\n return { ...defaultMenuProps,\n ...props\n };\n },\n\n searchIsDirty() {\n return this.internalSearch != null && this.internalSearch !== '';\n },\n\n selectedItem() {\n if (this.multiple) return null;\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue));\n });\n },\n\n listData() {\n const data = VSelect.options.computed.listData.call(this);\n data.props = { ...data.props,\n items: this.virtualizedItems,\n noFilter: this.noFilter || !this.isSearching || !this.filteredItems.length,\n searchInput: this.internalSearch\n };\n return data;\n }\n\n },\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n\n isFocused(val) {\n if (val) {\n document.addEventListener('copy', this.onCopy);\n this.$refs.input && this.$refs.input.select();\n } else {\n document.removeEventListener('copy', this.onCopy);\n this.blur();\n this.updateSelf();\n }\n },\n\n isMenuActive(val) {\n if (val || !this.hasSlot) return;\n this.lazySearch = null;\n },\n\n items(val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (!(oldVal && oldVal.length) && this.hideNoData && this.isFocused && !this.isMenuActive && val.length) this.activateMenu();\n },\n\n searchInput(val) {\n this.lazySearch = val;\n },\n\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf'\n },\n\n created() {\n this.setSearch();\n },\n\n destroyed() {\n document.removeEventListener('copy', this.onCopy);\n },\n\n methods: {\n onFilteredItemsChanged(val, oldVal) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return;\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex];\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem));\n } else {\n this.setMenuIndex(-1);\n }\n\n this.$emit('update:list-index', this.$refs.menu.listIndex);\n }\n\n this.$nextTick(() => {\n if (!this.internalSearch || val.length !== 1 && !this.autoSelectFirst) return;\n this.$refs.menu.getTiles();\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0);\n this.$emit('update:list-index', this.$refs.menu.listIndex);\n }\n });\n },\n\n onInternalSearchChanged() {\n this.updateMenuDimensions();\n },\n\n updateMenuDimensions() {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions();\n },\n\n changeSelectedIndex(keyCode) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return;\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1;\n } else {\n this.selectedIndex--;\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1;\n } else {\n this.selectedIndex++;\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem();\n }\n },\n\n deleteCurrentItem() {\n const curIndex = this.selectedIndex;\n const curItem = this.selectedItems[curIndex]; // Do nothing if input or item is disabled\n\n if (!this.isInteractive || this.getDisabled(curItem)) return;\n const lastIndex = this.selectedItems.length - 1; // Select the last item if\n // there is no selection\n\n if (this.selectedIndex === -1 && lastIndex !== 0) {\n this.selectedIndex = lastIndex;\n return;\n }\n\n const length = this.selectedItems.length;\n const nextIndex = curIndex !== length - 1 ? curIndex : curIndex - 1;\n const nextItem = this.selectedItems[nextIndex];\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null);\n } else {\n this.selectItem(curItem);\n }\n\n this.selectedIndex = nextIndex;\n },\n\n clearableCallback() {\n this.internalSearch = null;\n VSelect.options.methods.clearableCallback.call(this);\n },\n\n genInput() {\n const input = VTextField.options.methods.genInput.call(this);\n input.data = mergeData(input.data, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data, 'attrs.autocomplete', 'off')\n },\n domProps: {\n value: this.internalSearch\n }\n });\n return input;\n },\n\n genInputSlot() {\n const slot = VSelect.options.methods.genInputSlot.call(this);\n slot.data.attrs.role = 'combobox';\n return slot;\n },\n\n genSelections() {\n return this.hasSlot || this.multiple ? VSelect.options.methods.genSelections.call(this) : [];\n },\n\n onClick(e) {\n if (!this.isInteractive) return;\n this.selectedIndex > -1 ? this.selectedIndex = -1 : this.onFocus();\n if (!this.isAppendInner(e.target)) this.activateMenu();\n },\n\n onInput(e) {\n if (this.selectedIndex > -1 || !e.target) return;\n const target = e.target;\n const value = target.value; // If typing and menu is not currently active\n\n if (target.value) this.activateMenu();\n if (!this.multiple && value === '') this.deleteCurrentItem();\n this.internalSearch = value;\n this.badInput = target.validity && target.validity.badInput;\n },\n\n onKeyDown(e) {\n const keyCode = e.keyCode;\n\n if (e.ctrlKey || ![keyCodes.home, keyCodes.end].includes(keyCode)) {\n VSelect.options.methods.onKeyDown.call(this, e);\n } // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n\n\n this.changeSelectedIndex(keyCode);\n },\n\n onSpaceDown(e) {},\n\n onTabDown(e) {\n VSelect.options.methods.onTabDown.call(this, e);\n this.updateSelf();\n },\n\n onUpDown(e) {\n // Prevent screen from scrolling\n e.preventDefault(); // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n\n this.activateMenu();\n },\n\n selectItem(item) {\n VSelect.options.methods.selectItem.call(this, item);\n this.setSearch();\n },\n\n setSelectedItems() {\n VSelect.options.methods.setSelectedItems.call(this); // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n\n if (!this.isFocused) this.setSearch();\n },\n\n setSearch() {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (!this.multiple || !this.internalSearch || !this.isMenuActive) {\n this.internalSearch = !this.selectedItems.length || this.multiple || this.hasSlot ? null : this.getText(this.selectedItem);\n }\n });\n },\n\n updateSelf() {\n if (!this.searchIsDirty && !this.internalValue) return;\n\n if (!this.multiple && !this.valueComparator(this.internalSearch, this.getValue(this.internalValue))) {\n this.setSearch();\n }\n },\n\n hasItem(item) {\n return this.selectedValues.indexOf(this.getValue(item)) > -1;\n },\n\n onCopy(event) {\n var _a, _b;\n\n if (this.selectedIndex === -1) return;\n const currentItem = this.selectedItems[this.selectedIndex];\n const currentItemText = this.getText(currentItem);\n (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData('text/plain', currentItemText);\n (_b = event.clipboardData) === null || _b === void 0 ? void 0 : _b.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText);\n event.preventDefault();\n }\n\n }\n});\n//# sourceMappingURL=VAutocomplete.js.map","// Mixins\nimport Measurable from '../../mixins/measurable';\nimport Toggleable from '../../mixins/toggleable'; // Directives\n\nimport intersect from '../../directives/intersect'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { getSlot } from '../../util/helpers';\nexport default mixins(Measurable, Toggleable).extend({\n name: 'VLazy',\n directives: {\n intersect\n },\n props: {\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined\n })\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: String,\n default: 'fade-transition'\n }\n },\n computed: {\n styles() {\n return { ...this.measurableStyles\n };\n }\n\n },\n methods: {\n genContent() {\n const children = this.isActive && getSlot(this);\n return this.transition ? this.$createElement('transition', {\n props: {\n name: this.transition\n }\n }, children) : children;\n },\n\n onObserve(entries, observer, isIntersecting) {\n if (this.isActive) return;\n this.isActive = isIntersecting;\n }\n\n },\n\n render(h) {\n return h(this.tag, {\n staticClass: 'v-lazy',\n attrs: this.$attrs,\n directives: [{\n name: 'intersect',\n value: {\n handler: this.onObserve,\n options: this.options\n }\n }],\n on: this.$listeners,\n style: this.styles\n }, [this.genContent()]);\n }\n\n});\n//# sourceMappingURL=VLazy.js.map","// extracted by mini-css-extract-plugin\nexport {};","// Styles\nimport \"../../../src/components/VStepper/VStepper.sass\"; // Extensions\n\nimport VSheet from '../VSheet'; // Mixins\n\nimport { provide as RegistrableProvide } from '../../mixins/registrable';\nimport Proxyable from '../../mixins/proxyable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { breaking } from '../../util/console';\nconst baseMixins = mixins(VSheet, RegistrableProvide('stepper'), Proxyable);\n/* @vue/component */\n\nexport default baseMixins.extend({\n name: 'v-stepper',\n\n provide() {\n return {\n stepClick: this.stepClick,\n isVertical: this.vertical\n };\n },\n\n props: {\n altLabels: Boolean,\n nonLinear: Boolean,\n flat: Boolean,\n vertical: Boolean\n },\n\n data() {\n const data = {\n isBooted: false,\n steps: [],\n content: [],\n isReverse: false\n };\n data.internalLazyValue = this.value != null ? this.value : (data[0] || {}).step || 1;\n return data;\n },\n\n computed: {\n classes() {\n return {\n 'v-stepper--flat': this.flat,\n 'v-stepper--is-booted': this.isBooted,\n 'v-stepper--vertical': this.vertical,\n 'v-stepper--alt-labels': this.altLabels,\n 'v-stepper--non-linear': this.nonLinear,\n ...VSheet.options.computed.classes.call(this)\n };\n },\n\n styles() {\n return { ...VSheet.options.computed.styles.call(this)\n };\n }\n\n },\n watch: {\n internalValue(val, oldVal) {\n this.isReverse = Number(val) < Number(oldVal);\n oldVal && (this.isBooted = true);\n this.updateView();\n }\n\n },\n\n created() {\n /* istanbul ignore next */\n if (this.$listeners.input) {\n breaking('@input', '@change', this);\n }\n },\n\n mounted() {\n this.updateView();\n },\n\n methods: {\n register(item) {\n if (item.$options.name === 'v-stepper-step') {\n this.steps.push(item);\n } else if (item.$options.name === 'v-stepper-content') {\n item.isVertical = this.vertical;\n this.content.push(item);\n }\n },\n\n unregister(item) {\n if (item.$options.name === 'v-stepper-step') {\n this.steps = this.steps.filter(i => i !== item);\n } else if (item.$options.name === 'v-stepper-content') {\n item.isVertical = this.vertical;\n this.content = this.content.filter(i => i !== item);\n }\n },\n\n stepClick(step) {\n this.$nextTick(() => this.internalValue = step);\n },\n\n updateView() {\n for (let index = this.steps.length; --index >= 0;) {\n this.steps[index].toggle(this.internalValue);\n }\n\n for (let index = this.content.length; --index >= 0;) {\n this.content[index].toggle(this.internalValue, this.isReverse);\n }\n }\n\n },\n\n render(h) {\n return h(this.tag, {\n staticClass: 'v-stepper',\n class: this.classes,\n style: this.styles\n }, this.$slots.default);\n }\n\n});\n//# sourceMappingURL=VStepper.js.map","// Components\nimport { VTabTransition, VTabReverseTransition } from '../transitions'; // Mixins\n\nimport { inject as RegistrableInject } from '../../mixins/registrable'; // Helpers\n\nimport { convertToUnit } from '../../util/helpers'; // Utilities\n\nimport mixins from '../../util/mixins';\nconst baseMixins = mixins(RegistrableInject('stepper', 'v-stepper-content', 'v-stepper'));\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n name: 'v-stepper-content',\n inject: {\n isVerticalProvided: {\n from: 'isVertical'\n }\n },\n props: {\n step: {\n type: [Number, String],\n required: true\n }\n },\n\n data() {\n return {\n height: 0,\n // Must be null to allow\n // previous comparison\n isActive: null,\n isReverse: false,\n isVertical: this.isVerticalProvided\n };\n },\n\n computed: {\n computedTransition() {\n // Fix for #8978\n const reverse = this.$vuetify.rtl ? !this.isReverse : this.isReverse;\n return reverse ? VTabReverseTransition : VTabTransition;\n },\n\n styles() {\n if (!this.isVertical) return {};\n return {\n height: convertToUnit(this.height)\n };\n }\n\n },\n watch: {\n isActive(current, previous) {\n // If active and the previous state\n // was null, is just booting up\n if (current && previous == null) {\n this.height = 'auto';\n return;\n }\n\n if (!this.isVertical) return;\n if (this.isActive) this.enter();else this.leave();\n }\n\n },\n\n mounted() {\n this.$refs.wrapper.addEventListener('transitionend', this.onTransition, false);\n this.stepper && this.stepper.register(this);\n },\n\n beforeDestroy() {\n this.$refs.wrapper.removeEventListener('transitionend', this.onTransition, false);\n this.stepper && this.stepper.unregister(this);\n },\n\n methods: {\n onTransition(e) {\n if (!this.isActive || e.propertyName !== 'height') return;\n this.height = 'auto';\n },\n\n enter() {\n let scrollHeight = 0; // Render bug with height\n\n requestAnimationFrame(() => {\n scrollHeight = this.$refs.wrapper.scrollHeight;\n });\n this.height = 0; // Give the collapsing element time to collapse\n\n setTimeout(() => this.isActive && (this.height = scrollHeight || 'auto'), 450);\n },\n\n leave() {\n this.height = this.$refs.wrapper.clientHeight;\n setTimeout(() => this.height = 0, 10);\n },\n\n toggle(step, reverse) {\n this.isActive = step.toString() === this.step.toString();\n this.isReverse = reverse;\n }\n\n },\n\n render(h) {\n const contentData = {\n staticClass: 'v-stepper__content'\n };\n const wrapperData = {\n staticClass: 'v-stepper__wrapper',\n style: this.styles,\n ref: 'wrapper'\n };\n\n if (!this.isVertical) {\n contentData.directives = [{\n name: 'show',\n value: this.isActive\n }];\n }\n\n const wrapper = h('div', wrapperData, [this.$slots.default]);\n const content = h('div', contentData, [wrapper]);\n return h(this.computedTransition, {\n on: this.$listeners\n }, [content]);\n }\n\n});\n//# sourceMappingURL=VStepperContent.js.map","// Components\nimport VIcon from '../VIcon'; // Mixins\n\nimport Colorable from '../../mixins/colorable';\nimport { inject as RegistrableInject } from '../../mixins/registrable'; // Directives\n\nimport ripple from '../../directives/ripple'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { keyCodes } from '../../util/helpers';\nconst baseMixins = mixins(Colorable, RegistrableInject('stepper', 'v-stepper-step', 'v-stepper'));\n/* @vue/component */\n\nexport default baseMixins.extend().extend({\n name: 'v-stepper-step',\n directives: {\n ripple\n },\n inject: ['stepClick'],\n props: {\n color: {\n type: String,\n default: 'primary'\n },\n complete: Boolean,\n completeIcon: {\n type: String,\n default: '$complete'\n },\n editable: Boolean,\n editIcon: {\n type: String,\n default: '$edit'\n },\n errorIcon: {\n type: String,\n default: '$error'\n },\n rules: {\n type: Array,\n default: () => []\n },\n step: [Number, String]\n },\n\n data() {\n return {\n isActive: false,\n isInactive: true\n };\n },\n\n computed: {\n classes() {\n return {\n 'v-stepper__step--active': this.isActive,\n 'v-stepper__step--editable': this.editable,\n 'v-stepper__step--inactive': this.isInactive,\n 'v-stepper__step--error error--text': this.hasError,\n 'v-stepper__step--complete': this.complete\n };\n },\n\n hasError() {\n return this.rules.some(validate => validate() !== true);\n }\n\n },\n\n mounted() {\n this.stepper && this.stepper.register(this);\n },\n\n beforeDestroy() {\n this.stepper && this.stepper.unregister(this);\n },\n\n methods: {\n click(e) {\n e.stopPropagation();\n this.$emit('click', e);\n\n if (this.editable) {\n this.stepClick(this.step);\n }\n },\n\n genIcon(icon) {\n return this.$createElement(VIcon, icon);\n },\n\n genLabel() {\n return this.$createElement('div', {\n staticClass: 'v-stepper__label'\n }, this.$slots.default);\n },\n\n genStep() {\n const color = !this.hasError && (this.complete || this.isActive) ? this.color : false;\n return this.$createElement('span', this.setBackgroundColor(color, {\n staticClass: 'v-stepper__step__step'\n }), this.genStepContent());\n },\n\n genStepContent() {\n const children = [];\n\n if (this.hasError) {\n children.push(this.genIcon(this.errorIcon));\n } else if (this.complete) {\n if (this.editable) {\n children.push(this.genIcon(this.editIcon));\n } else {\n children.push(this.genIcon(this.completeIcon));\n }\n } else {\n children.push(String(this.step));\n }\n\n return children;\n },\n\n keyboardClick(e) {\n if (e.keyCode === keyCodes.space) {\n this.click(e);\n }\n },\n\n toggle(step) {\n this.isActive = step.toString() === this.step.toString();\n this.isInactive = Number(step) < Number(this.step);\n }\n\n },\n\n render(h) {\n return h('div', {\n attrs: {\n tabindex: this.editable ? 0 : -1\n },\n staticClass: 'v-stepper__step',\n class: this.classes,\n directives: [{\n name: 'ripple',\n value: this.editable\n }],\n on: {\n click: this.click,\n keydown: this.keyboardClick\n }\n }, [this.genStep(), this.genLabel()]);\n }\n\n});\n//# sourceMappingURL=VStepperStep.js.map","import { createSimpleFunctional } from '../../util/helpers';\nimport VStepper from './VStepper';\nimport VStepperStep from './VStepperStep';\nimport VStepperContent from './VStepperContent';\nconst VStepperHeader = createSimpleFunctional('v-stepper__header');\nconst VStepperItems = createSimpleFunctional('v-stepper__items');\nexport { VStepper, VStepperContent, VStepperStep, VStepperHeader, VStepperItems };\nexport default {\n $_vuetify_subcomponents: {\n VStepper,\n VStepperContent,\n VStepperStep,\n VStepperHeader,\n VStepperItems\n }\n};\n//# sourceMappingURL=index.js.map"],"names":[],"sourceRoot":""}