{"version":3,"file":"app-378b5940.9729664bca28a8e6916d.bundle.js","mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAEA;AAIA;AAAA;AASA;AAAA;AAXA;AAAA;AAAA;AAAA;AAMA;AACA;AAKA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;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;AACA;AACA;AACA;AAAA;AAEA;AACA;AACA;AA9DA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AAEA;AAQA;AAAA;AALA;AAAA;AAMA;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;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AA9CA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AAEA;AASA;AACA;AAAA;AARA;AAAA;AAIA;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA5CA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;ACXA;AACA;AAEA;AASA;AAAA;AARA;AAAA;AAAA;AAAA;AASA;AACA;AARA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;ACRA;AACA;AAEA;AAKA;AAAA;AAOA;AAAA;AAVA;AAAA;AAAA;AAAA;AAAA;AAMA;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAzCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAoCA;AAAA;AAjCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBA;AACA;AACA;AAAA;AAGA;AACA;AAKA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA9UA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAoBA;AAAA;AAlBA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;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;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC5MA;AACA;AACA;AACA;AAEA;AAWA;AAAA;AAAA;AAAA;AAPA;AACA;AAEA;AACA;AAIA;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;AAEA;AACA;AAEA;AAAA;AAAA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAlGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AAEA;AAYA;AAAA;AAAA;AAAA;AARA;AACA;AAEA;AAEA;AAAA;AAAA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;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;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAjFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AAEA;AAOA;AACA;AAAA;AANA;AACA;AAMA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnCA;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AAEA;AAKA;AAAA;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjBA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAgCA;AAAA;AAAA;AAAA;AA3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAKA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhdA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AAEA;AAIA;AAAA;AACA;AAAA;AA6BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAdA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AA5PA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;ACvBA;AACA;AAEA;AAIA;AAAA;AAKA;AAAA;AAPA;AAAA;AAAA;AAQA;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;AAxCA;AAAA;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AAEA;AAOA;AAAA;AALA;AACA;AAKA;AACA;AAEA;AACA;AAEA;AAGA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjCA;;;;;;;;;;;;;;;;;;;ACPA;AAEA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;ACHA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AAEA;AAOA;AAAA;AAAA;AAJA;AACA;AAIA;AAEA;AACA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAjBA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AAEA;AAeA;AAAA;AACA;AAAA;AAMA;AAAA;AApBA;AACA;AACA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;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;AAEA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhJA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACPA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA;;;;;;;;;;;ACHA;AACA;AACA;AACA","sources":["webpack://www.zeusteam.com/./src/resources/elements/color-picker/color-picker.js","webpack://www.zeusteam.com/./src/resources/elements/commission-grid/commission-grid.js","webpack://www.zeusteam.com/./src/resources/elements/commissions/commission-group.js","webpack://www.zeusteam.com/./src/resources/elements/commissions/commission-list.js","webpack://www.zeusteam.com/./src/resources/elements/container-and-drawer/container-and-drawer.js","webpack://www.zeusteam.com/./src/resources/elements/content-view/content-view.js","webpack://www.zeusteam.com/./src/resources/elements/content-view/dialog/editor.js","webpack://www.zeusteam.com/./src/resources/elements/contest-standings/contest-progress.js","webpack://www.zeusteam.com/./src/resources/elements/contest-standings/contest-standings.js","webpack://www.zeusteam.com/./src/resources/elements/contest-standings/monthly-consistency.js","webpack://www.zeusteam.com/./src/resources/elements/copy-to-clipboard/copy-to-clipboard.js","webpack://www.zeusteam.com/./src/resources/elements/dashboard-builder/dashboard-builder.js","webpack://www.zeusteam.com/./src/resources/elements/date-picker/date-picker.js","webpack://www.zeusteam.com/./src/resources/elements/debt/downline-carrier-debt.js","webpack://www.zeusteam.com/./src/resources/elements/dialer/auto-dial-button.js","webpack://www.zeusteam.com/./src/resources/elements/draggable/draggable-handle.js","webpack://www.zeusteam.com/./src/resources/elements/drilldown-objects/drilldown-object-client.js","webpack://www.zeusteam.com/./src/resources/elements/drilldown-objects/drilldown-object-member.js","webpack://www.zeusteam.com/./src/resources/elements/drilldown-objects/drilldown-object-policy.js","webpack://www.zeusteam.com/./src/resources/elements/drilldown-objects/drilldown-objects.js","webpack://www.zeusteam.com/./src/resources/elements/drop-zone/drop-zone.js","webpack://www.zeusteam.com/./src/resources/elements/color-picker/color-picker.scss","webpack://www.zeusteam.com/./src/resources/elements/commission-grid/commission-grid.scss","webpack://www.zeusteam.com/./src/resources/elements/container-and-drawer/container-and-drawer.scss","webpack://www.zeusteam.com/./src/resources/elements/content-view/content-view.scss","webpack://www.zeusteam.com/./src/resources/elements/contest-standings/contest-progress.scss","webpack://www.zeusteam.com/./src/resources/elements/contest-standings/contest-standings.scss","webpack://www.zeusteam.com/./src/resources/elements/dashboard-builder/dashboard-builder.scss","webpack://www.zeusteam.com/./src/resources/elements/date-picker/date-picker.scss","webpack://www.zeusteam.com/./src/resources/elements/draggable/draggable-handle.scss","webpack://www.zeusteam.com/./src/resources/elements/drilldown-objects/drilldown-objects.scss","webpack://www.zeusteam.com/./src/resources/elements/color-picker/color-picker.html","webpack://www.zeusteam.com/./src/resources/elements/commission-grid/commission-grid.html","webpack://www.zeusteam.com/./src/resources/elements/commissions/commission-group.html","webpack://www.zeusteam.com/./src/resources/elements/commissions/commission-list.html","webpack://www.zeusteam.com/./src/resources/elements/container-and-drawer/container-and-drawer.html","webpack://www.zeusteam.com/./src/resources/elements/content-view/content-view.html","webpack://www.zeusteam.com/./src/resources/elements/content-view/dialog/editor.html","webpack://www.zeusteam.com/./src/resources/elements/contest-standings/contest-progress.html","webpack://www.zeusteam.com/./src/resources/elements/contest-standings/contest-standings.html","webpack://www.zeusteam.com/./src/resources/elements/contest-standings/monthly-consistency.html","webpack://www.zeusteam.com/./src/resources/elements/copy-to-clipboard/copy-to-clipboard.html","webpack://www.zeusteam.com/./src/resources/elements/dashboard-builder/dashboard-builder.html","webpack://www.zeusteam.com/./src/resources/elements/date-picker/date-picker.html","webpack://www.zeusteam.com/./src/resources/elements/debt/downline-carrier-debt.html","webpack://www.zeusteam.com/./src/resources/elements/dialer/auto-dial-button.html","webpack://www.zeusteam.com/./src/resources/elements/draggable/draggable-handle.html","webpack://www.zeusteam.com/./src/resources/elements/drilldown-objects/drilldown-object-client.html","webpack://www.zeusteam.com/./src/resources/elements/drilldown-objects/drilldown-object-member.html","webpack://www.zeusteam.com/./src/resources/elements/drilldown-objects/drilldown-object-policy.html","webpack://www.zeusteam.com/./src/resources/elements/drilldown-objects/drilldown-objects.html","webpack://www.zeusteam.com/./src/resources/elements/drop-zone/drop-zone.html"],"sourcesContent":["import { bindable, bindingMode } from 'aurelia-framework';\r\nimport { I18n } from 'common/i18n';\r\nimport Coloris from \"@melloware/coloris\";\r\nimport { c } from 'common/common';\r\n\r\nexport class ColorPicker {\r\n static inject = [I18n];\r\n _i18n;\r\n\r\n @bindable({ defaultBindingMode: bindingMode.twoWay}) color = undefined;\r\n @bindable showAlpha = false;\r\n @bindable swatches;\r\n\r\n pickerEl;\r\n _picker;\r\n\r\n id;\r\n\r\n constructor(i18n) {\r\n this._i18n = i18n;\r\n this.id = c.Helpers.uniqueId();\r\n }\r\n\r\n attached() {\r\n this._initializePicker();\r\n }\r\n\r\n colorChanged() {\r\n if (!this._initialized || !this.pickerEl) return;\r\n try {\r\n document.querySelector(`#${this.id}`).dispatchEvent(new Event('input', { bubbles: true }));\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n swatchesChanged() {\r\n if (!this._initialized || !this.pickerEl) return;\r\n try {\r\n Coloris({\r\n swatches: this._transformSwatches(),\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n _transformSwatches() {\r\n if (!this.swatches) return [];\r\n return this.swatches.map(x => x.hex);\r\n }\r\n\r\n _initializePicker() {\r\n this._initialized = true;\r\n Coloris.init();\r\n Coloris({\r\n el: `#${this.id}`,\r\n alpha: this.showAlpha,\r\n clearButton: {\r\n show: true,\r\n label: this._i18n.tr('clear')\r\n },\r\n swatches: this._transformSwatches(),\r\n onChange: (color) => {\r\n //console.log('coloris', color);\r\n },\r\n });\r\n }\r\n}\r\n","import { customElement, bindable } from 'aurelia-framework';\r\nimport { Carriers } from 'services/carriers';\r\nimport moment from 'moment';\r\n\r\n@customElement('commission-grid')\r\nexport class CommissionGrid {\r\n static inject = [Carriers];\r\n _carriers;\r\n\r\n @bindable carrierId;\r\n displayAllRates = false;\r\n\r\n constructor(carriers) {\r\n this._carriers = carriers;\r\n }\r\n\r\n attached() {\r\n this._load();\r\n }\r\n\r\n carrierIdChanged() {\r\n this._load();\r\n }\r\n\r\n async _load() {\r\n if (!this.carrierId) return;\r\n this.carrierNotesKey = `carrier-commission-grid-${this.carrierId}-notes`;\r\n try {\r\n this.loading = true;\r\n const data = await this._carriers.commissionGrid(this.carrierId);\r\n this.grids = data.grids;\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n commissionRate(grid, level, productGroup) {\r\n const cell = grid.grid.find(x => x.level === level && x.productGroup === productGroup);\r\n if (!cell) return undefined;\r\n return cell.commissionRate;\r\n }\r\n\r\n commissionRateCellClass(grid) {\r\n // have 12 to work with\r\n if (grid.productGroups.length > 4) return 'col-sm-1';\r\n if (grid.productGroups.length > 3) return 'col-sm-2';\r\n return 'col-sm-3';\r\n\r\n }\r\n\r\n toggleRates() {\r\n this.displayAllRates = !this.displayAllRates;\r\n }\r\n}\r\n","import { bindable } from 'aurelia-framework'\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { Security } from 'common/security';\r\nimport { Commissions } from 'services/commissions';\r\nimport { TimePeriodNavigatorBase } from 'resources/base-classes/time-period-navigator-base';\r\nimport { WIDGET, COMMISSION } from 'common/constants';\r\n\r\nexport class CommissionGroup extends TimePeriodNavigatorBase {\r\n static inject = [EventAggregator, Security, Commissions];\r\n _commissions;\r\n\r\n @bindable config;\r\n\r\n GROUP_BY = COMMISSION.GroupBy;\r\n PERIOD = WIDGET.Period;\r\n\r\n constructor(ea, security, commissions) {\r\n super('commission-group', ea);\r\n this._security = security;\r\n this._commissions = commissions;\r\n }\r\n\r\n attached() {\r\n this._isAttached = true;\r\n this._attached();\r\n if (!this.config) return;\r\n this._loadData();\r\n }\r\n\r\n configChanged() {\r\n if (!this._isAttached) return;\r\n this._loadData();\r\n }\r\n\r\n async _loadData() {\r\n if (!this.config) return;\r\n if (this._security.isAssistant) return false;\r\n try {\r\n this.loading = true;\r\n if (!this.asOfDate) this.asOfDate = this.config.asOfDate;\r\n this.initializeTimePeriodNavigation();\r\n const data = await this._commissions.all(this.config.memberId, this.config.widgetPeriod, this.asOfDate.toISOString(true), this.config.groupBy, this.config.policyId, this.config.clientId, this.config.carrierId);\r\n this.groupBy = data.groupBy;\r\n if (data.groups && data.groups.length === 1) data.groups[0].showDetails = true;\r\n this.groups = data.groups;\r\n this.displayPaidTo = data.hasMultiplePaidToMembers;\r\n this.timePeriod = WIDGET.Period.toReportTimePeriod(this.config.widgetPeriod);\r\n this.currentPeriod = data.period;\r\n this.setTimePeriodNavigationDisplays();\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","import { bindable } from 'aurelia-framework'\r\nimport { COMMISSION } from 'common/constants';\r\n\r\nexport class CommissionList {\r\n _commissions;\r\n\r\n @bindable commissions;\r\n @bindable groupBy;\r\n @bindable displayPaidTo;\r\n\r\n GROUP_BY = COMMISSION.GroupBy;\r\n\r\n constructor() {\r\n }\r\n}\r\n","import { bindable, bindingMode } from 'aurelia-framework';\r\nimport { CssAnimator } from 'aurelia-animator-css';\r\n\r\nexport class ContainerAndDrawer {\r\n static inject = [Element, CssAnimator];\r\n _animator;\r\n\r\n @bindable position = 'bottom';\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) toggleTrigger;\r\n @bindable autoHeight = false;\r\n @bindable rightSide = false;\r\n showDrawer = false;\r\n\r\n drawerEl;\r\n\r\n constructor(element, animator) {\r\n this._element = element;\r\n this._animator = animator;\r\n }\r\n\r\n toggleTriggerChanged(newValue, oldValue) {\r\n if (oldValue === null) return; // do nothing on the initial set of the variable by the page\r\n this.toggleDrawer();\r\n }\r\n\r\n toggleDrawer() {\r\n this._animateDrawer(!this.showDrawer);\r\n // hide drawer just before the animation (300ms) ends\r\n window.setTimeout(() => this._toggleDrawer(), this.showDrawer ? 200 : 0);\r\n }\r\n\r\n _toggleDrawer() {\r\n this.showDrawer = !this.showDrawer;\r\n if (!this.showDrawer) {\r\n this._element.dispatchEvent(new CustomEvent('drawerclosed', { bubbles: true, detail: {} }));\r\n } else {\r\n this._element.dispatchEvent(new CustomEvent('draweropened', { bubbles: true, detail: {} }));\r\n }\r\n }\r\n\r\n _animateDrawer(showDrawer) {\r\n if (!this.drawerEl) return;\r\n if (showDrawer) {\r\n this._animator.addClass(this.drawerEl, 'zeus-drawer-show');\r\n } else {\r\n this._animator.removeClass(this.drawerEl, 'zeus-drawer-show');\r\n }\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-pal';\r\nimport {inject, customElement, bindable} from 'aurelia-framework';\r\nimport {DialogService} from 'aurelia-dialog';\r\nimport {EventAggregator} from 'aurelia-event-aggregator';\r\nimport {Editor} from './dialog/editor';\r\nimport {UiWidgets} from 'services/ui-widgets';\r\nimport {Security} from 'common/security';\r\nimport {I18n} from 'common/i18n';\r\nimport { c, initializeUiWidgetHtml } from 'common/common';\r\nimport environment from '../../../../config/environment.json';\r\nPLATFORM.moduleName('./dialog/editor');\r\n\r\n@customElement('content-view')\r\n@inject(DialogService, EventAggregator, UiWidgets, Security, I18n)\r\nexport class ContentView {\r\n id = '';\r\n @bindable key;\r\n @bindable navbar;\r\n @bindable widgetType = '';\r\n @bindable hideTitle = false;\r\n @bindable hideContent = false;\r\n @bindable saveEventKey = '';\r\n @bindable iconHover = '';\r\n @bindable onlyEditor = false;\r\n @bindable onlyEditorButton = '';\r\n @bindable onlyEditorIcon = '';\r\n @bindable onlyEditorTextKey = '';\r\n @bindable titleH3 = false;\r\n @bindable titlePrepend = '';\r\n @bindable approval = null;\r\n @bindable titleCssClass = '';\r\n @bindable memberId = null;\r\n @bindable memberEdit = false;\r\n @bindable memberEditorButton = '';\r\n @bindable memberEditorTextKey = '';\r\n @bindable fullEditor = true;\r\n @bindable showTitleEditor = true;\r\n @bindable instructionsKey = '';\r\n hasNavbar = false;\r\n uiWidget = null;\r\n canEdit = false;\r\n @bindable skipReplaceVariables = false;\r\n\r\n _sliderIntervals = {};\r\n _sliderChecks = {};\r\n\r\n _handlers = [];\r\n\r\n constructor(dialogService, eventAggregator, uiWidgets, security, i18n) {\r\n this.dialogService = dialogService;\r\n this.eventAggregator = eventAggregator;\r\n this.uiWidgets = uiWidgets;\r\n this.security = security;\r\n this.i18n = i18n;\r\n\r\n this.id = c.Helpers.uniqueId();\r\n this.canEdit = this.security.canEditContent();\r\n this._subscribeToEvents();\r\n }\r\n\r\n async bind(bindingContext, overrideContext) {\r\n try {\r\n if (!this.key) {\r\n this.uiWidget = null;\r\n this.widgetType = null;\r\n this._setTitle();\r\n return;\r\n }\r\n this.uiWidget = await this.uiWidgets.get(this.key, this.memberId);\r\n if (this._isAttached) this._startInitializingEmbeddedContent();\r\n if (!this.widgetType) this.widgetType = this.uiWidget ? this.uiWidget.widgetType : null;\r\n this._setTitle();\r\n this.hasNavbar = this.navbar ? true : false;\r\n if (!this.iconHover) this.iconHover = this.key;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n async keyChanged(newValue, oldValue) {\r\n try {\r\n if (newValue) {\r\n this.uiWidget = await this.uiWidgets.get(this.key, this.memberId);\r\n if (this._isAttached) this._startInitializingEmbeddedContent();\r\n if (!this.widgetType) this.widgetType = this.uiWidget ? this.uiWidget.widgetType : null;\r\n this._setTitle();\r\n }\r\n if (!this.iconHover) this.iconHover = this.key;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n async memberIdChanged(newValue, oldValue) {\r\n if (!this.key) return;\r\n try {\r\n this.uiWidget = await this.uiWidgets.get(this.key, this.memberId);\r\n if (this._isAttached) this._startInitializingEmbeddedContent();\r\n if (!this.widgetType) this.widgetType = this.uiWidget ? this.uiWidget.widgetType : null;\r\n this._setTitle();\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n attached() {\r\n this._isAttached = true;\r\n if (this.uiWidget) this._startInitializingEmbeddedContent();\r\n }\r\n\r\n detached() {\r\n this._handlers.forEach(h => h.dispose());\r\n this._handlers = [];\r\n }\r\n\r\n _startInitializingEmbeddedContent() {\r\n window.setTimeout(() => { this._initializeEmbeddedContent(); }, 250);\r\n }\r\n\r\n _subscribeToEvents() {\r\n this._handlers.push(this.eventAggregator.subscribe(c.EventKeys.reloadUiWidget, async (data) => {\r\n this.uiWidget = await this.uiWidgets.get(this.key, this.memberId)\r\n if (!this.widgetType) this.widgetType = this.uiWidget ? this.uiWidget.widgetType : null;\r\n this._setTitle();\r\n window.setTimeout(() => { this._initializeEmbeddedContent(); }, 750);\r\n }));\r\n this._handlers.push(this.eventAggregator.subscribe(c.EventKeys.loginAuthenticationUpdated, (data) => {\r\n this.canEdit = this.security.canEditContent();\r\n }));\r\n this._handlers.push(this.eventAggregator.subscribe(c.EventKeys.uiWidgetUpdated, async (data) => {\r\n if (this.key !== data.key) return;\r\n this.uiWidget = await this.uiWidgets.get(this.key, this.memberId);\r\n if (!this.widgetType) this.widgetType = this.uiWidget ? this.uiWidget.widgetType : null;\r\n this._setTitle();\r\n window.setTimeout(() => { this._initializeEmbeddedContent(); }, 750);\r\n }));\r\n this._handlers.push(this.eventAggregator.subscribe(c.EventKeys.openContentEditor, (data) => {\r\n if (this.key !== data.key) return;\r\n this.openEditor();\r\n }));\r\n }\r\n\r\n _setTitle() {\r\n this.theTitle = '';\r\n if (!this.uiWidget) return;\r\n if (this.titlePrepend === '') {\r\n this.theTitle = this.uiWidget.title;\r\n } else {\r\n this.theTitle = this.titlePrepend + this.uiWidget.title;\r\n }\r\n }\r\n\r\n openEditor() {\r\n var model = {\r\n uiWidget: JSON.parse(JSON.stringify(this.uiWidget)),\r\n widgetType: this.widgetType,\r\n approval: this.approval,\r\n memberId: this.memberId,\r\n fullEditor: this.fullEditor,\r\n editFor: this.iconHover,\r\n showTitleEditor: this.showTitleEditor,\r\n instructionsKey: this.instructionsKey\r\n };\r\n\r\n this.dialogService.open({ viewModel: Editor, model: model, ignoreTransitions: true }).whenClosed(async (response) => {\r\n if (response.wasCancelled) return;\r\n this.uiWidget = await this.uiWidgets.get(this.key, this.memberId);\r\n if (!this.widgetType) this.widgetType = this.uiWidget ? this.uiWidget.widgetType : null;\r\n this._setTitle();\r\n if (this.saveEventKey) this.eventAggregator.publish(this.saveEventKey, response.output.uiWidget);\r\n window.setTimeout(() => { this._initializeEmbeddedContent(); }, 500);\r\n });\r\n }\r\n\r\n _initializeEmbeddedContent() {\r\n this._initializeSlideshows();\r\n this._initializeIframes();\r\n this._initializeScripts();\r\n this._replaceVariables();\r\n }\r\n\r\n _initializeIframes() {\r\n $('#' + this.id + ' iframe.add-open-in-new-window').each(function (index, value) {\r\n var that = $(this);\r\n var isInitialized = that.attr('data-is-initialized');\r\n if (isInitialized) return;\r\n that.attr('data-is-initialized', 'true');\r\n var src = that.attr('src');\r\n var html = '';\r\n $(html).insertBefore(that);\r\n });\r\n }\r\n\r\n _replaceVariables() {\r\n if (this.skipReplaceVariables) return;\r\n if (!this.uiWidget || !this.uiWidget.html) return;\r\n this.uiWidget.html = initializeUiWidgetHtml(this.uiWidget.html, this.security);\r\n }\r\n\r\n _initializeSlideshows() {\r\n if (!this.uiWidget || !this.uiWidget.html) return;\r\n const me = this;\r\n const hasSlideshow = this.uiWidget.html.indexOf('imageslideshow-placeholder') >= 0;\r\n if (!hasSlideshow) return;\r\n const slideshowEls = $(`#${this.id} .content-view-container-html img.imageslideshow-placeholder`);\r\n if (slideshowEls.length === 0) {\r\n window.setTimeout(() => { this._initializeSlideshows(); }, 500);\r\n return;\r\n }\r\n let slideIndex = 1;\r\n slideshowEls.each(function(index, value) {\r\n try {\r\n let that = $(this);\r\n let isInitialized = that.attr('data-is-initialized');\r\n if (isInitialized) return;\r\n that.attr('data-is-initialized', 'true');\r\n that.hide();\r\n let id = that.attr('id') || c.Helpers.uniqueId();\r\n let sliderId = `zeus-slider-${id}-${slideIndex++}`;\r\n let images = that.attr('data-images').split('|');\r\n let captions = that.attr('data-captions').split('|');\r\n let links = that.attr('data-links').split('|');\r\n let newWindows = that.attr('data-newwindow').split('|');\r\n let intervalMs = 4013;\r\n let dataInterval = that.attr('data-interval');\r\n if (dataInterval && !isNaN(dataInterval)) {\r\n intervalMs = Number(dataInterval);\r\n }\r\n\r\n let html = `
`;\r\n for (let i = 0; i < images.length; i++) {\r\n let caption = captions[i];\r\n let link = links[i];\r\n let newWindow = newWindows[i];\r\n let imgSrc = images[i];\r\n html += '
';\r\n html += '
';\r\n html += '
';\r\n if (link) {\r\n let target = '';\r\n if (newWindow === true || newWindow === 'true') target = ' target=\"_blank\"';\r\n const hrefStart = link.indexOf('http') === 0 ? '' : `${environment.api}/`;\r\n html += ``;\r\n }\r\n const imgStart = imgSrc.indexOf('http') === 0 ? '' : `${environment.static}/`;\r\n html += `\"${caption}\"`;\r\n if (link) {\r\n html += '';\r\n }\r\n html += '
';\r\n }\r\n html += '
';\r\n\r\n $(html).insertAfter(that);\r\n that.css('border-width', '0px');\r\n\r\n const nextSlide = (slider, forSliderId, forSliderIntervals, fromClick = false) => {\r\n if (forSliderIntervals[forSliderId].isPaused && !fromClick) return;\r\n if (fromClick) {\r\n window.clearInterval(forSliderIntervals[forSliderId].interval);\r\n }\r\n const first = slider.childNodes[0];\r\n const before = slider.querySelector('.zeus-slideshow-showing');\r\n if (before) {\r\n before.classList.remove('zeus-slideshow-showing');\r\n const next = before.nextElementSibling;\r\n if (next) {\r\n next.classList.add('zeus-slideshow-showing');\r\n } else {\r\n first.classList.add('zeus-slideshow-showing');\r\n }\r\n } else {\r\n first.classList.add('zeus-slideshow-showing');\r\n }\r\n };\r\n\r\n const previousSlide = (slider, forSliderId, forSliderIntervals, fromClick = false) => {\r\n if (forSliderIntervals[forSliderId].isPaused && !fromClick) return;\r\n if (fromClick) {\r\n window.clearInterval(forSliderIntervals[forSliderId].interval);\r\n }\r\n const last = slider.childNodes[slider.childNodes.length - 1];\r\n const before = slider.querySelector('.zeus-slideshow-showing');\r\n if (before) {\r\n before.classList.remove('zeus-slideshow-showing');\r\n const previous = before.previousElementSibling;\r\n if (previous) {\r\n previous.classList.add('zeus-slideshow-showing');\r\n } else {\r\n last.classList.add('zeus-slideshow-showing');\r\n }\r\n } else {\r\n last.classList.add('zeus-slideshow-showing');\r\n }\r\n };\r\n\r\n $(`#${sliderId} .zeus-slideshow-arrow-left`).each(function(index, value) {\r\n this.addEventListener('click', () => {\r\n previousSlide(thisSlider, sliderId, me._sliderIntervals, true);\r\n me._sliderIntervals[sliderId].interval = window.setInterval(() => nextSlide(thisSlider, sliderId, me._sliderIntervals), intervalMs);\r\n });\r\n });\r\n $(`#${sliderId} .zeus-slideshow-arrow-right`).each(function(index, value) {\r\n this.addEventListener('click', () => {\r\n nextSlide(thisSlider, sliderId, me._sliderIntervals, true);\r\n me._sliderIntervals[sliderId].interval = window.setInterval(() => nextSlide(thisSlider, sliderId, me._sliderIntervals), intervalMs);\r\n });\r\n });\r\n\r\n const thisSlider = document.querySelector(`#${sliderId}`);\r\n const sliderInterval = window.setInterval(() => nextSlide(thisSlider, sliderId, me._sliderIntervals), intervalMs);\r\n me._sliderIntervals[sliderId] = { isPaused: false, interval: sliderInterval };\r\n nextSlide(thisSlider, sliderId, me._sliderIntervals);\r\n thisSlider.addEventListener('mouseover', () => {\r\n me._sliderIntervals[sliderId].isPaused = true;\r\n });\r\n thisSlider.addEventListener('mouseout', () => {\r\n me._sliderIntervals[sliderId].isPaused = false;\r\n });\r\n\r\n window.setTimeout(() => { me._checkSlideshow(sliderId); }, 500);\r\n } catch (slideshowErr) {\r\n console.log(slideshowErr);\r\n }\r\n });\r\n }\r\n\r\n _checkSlideshow(sliderId) {\r\n if (!this._sliderChecks[sliderId]) this._sliderChecks[sliderId] = 0;\r\n this._sliderChecks[sliderId]++;\r\n const thisSlider = document.querySelector(`#${sliderId}`);\r\n if (thisSlider) return;\r\n if (this._sliderChecks[sliderId] > 3) {\r\n this._sliderChecks[sliderId] = 0;\r\n return;\r\n }\r\n window.setTimeout(() => this._initializeSlideshows(), 250);\r\n }\r\n\r\n _initializeScripts() {\r\n const id = this.id;\r\n $(`#${this.id} script`).each(function(index, value) {\r\n try {\r\n const frag = document.createRange().createContextualFragment($(this)[0].outerHTML);\r\n $(`#${id}`).append(frag);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n });\r\n }\r\n}\r\n","import {inject} from 'aurelia-framework';\r\nimport {DialogController} from 'aurelia-dialog';\r\nimport {UiWidgets} from 'services/ui-widgets';\r\nimport {I18n} from 'common/i18n';\r\nimport {Notifier} from 'common/ui';\r\nimport { Content } from 'common/content';\r\nimport { c, initializeUiWidgetHtml } from 'common/common';\r\nimport tinymce from 'tinymce';\r\n\r\n@inject(DialogController, UiWidgets, I18n, Notifier, Content)\r\nexport class Editor {\r\n _content;\r\n\r\n title = '';\r\n id = null;\r\n uiWidget = null;\r\n uiWidgetId = null;\r\n languageOptions = [];\r\n locale = '';\r\n approval = null;\r\n memberId = null;\r\n fullEditor = true;\r\n showTitleEditor = true;\r\n instructionsKey;\r\n comment;\r\n\r\n restoreOptions = null;\r\n restoreOption;\r\n\r\n constructor(dialogController, uiWidgets, i18n, notifier, content) {\r\n this.dialogController = dialogController;\r\n this.uiWidgets = uiWidgets;\r\n this.i18n = i18n;\r\n this.notifier = notifier;\r\n this._content = content;\r\n\r\n this.dialogController.settings.centerHorizontalOnly = true;\r\n this.id = c.Helpers.uniqueId();\r\n this.languageOptions = this.i18n.supportedLanguages;\r\n this.locale = this.i18n.currentLocale;\r\n }\r\n\r\n async activate(model) {\r\n this.uiWidget = model.uiWidget;\r\n this.uiWidgetId = null;\r\n this.widgetType = model.widgetType;\r\n this.approval = model.approval;\r\n this.memberId = model.memberId;\r\n this.fullEditor = model.fullEditor;\r\n this.title = this.i18n.tr('content-editor-title', { name: model.uiWidget ? model.uiWidget.key : model.editFor } );\r\n this.showTitleEditor = model.showTitleEditor;\r\n this.instructionsKey = model.instructionsKey;\r\n if (this.uiWidget) {\r\n this.uiWidgetId = this.uiWidget.id;\r\n // load from the svc so the replaced variables are not displayed\r\n this.uiWidget = await this.uiWidgets.get(this.uiWidget.key, this.memberId);\r\n }\r\n }\r\n\r\n attached() {\r\n this._initializeTinyMce();\r\n let activeEditor = tinymce.activeEditor;\r\n if (activeEditor.initialized) {\r\n this._setContent(activeEditor);\r\n } else {\r\n let me = this;\r\n activeEditor.on('init', function() {\r\n me._setContent(this);\r\n });\r\n }\r\n }\r\n\r\n detached() {\r\n let ae = tinymce.activeEditor;\r\n if (ae) ae.remove();\r\n }\r\n\r\n async onLocaleChange() {\r\n try {\r\n this.uiWidget = await this.uiWidgets.getForLocale(this.uiWidget.key, this.locale);\r\n this._setContent(tinymce.activeEditor);\r\n this.restoreOption = null;\r\n this.restoreOptions = null;\r\n } catch (err) {\r\n this.notifier.errorText('An error occurred and the content for ' + this.locale + ' was not loaded.');\r\n }\r\n }\r\n\r\n _setContent(activeEditor) {\r\n let html = '';\r\n if (this.uiWidget.html) html = initializeUiWidgetHtml(this.uiWidget.html);\r\n if (activeEditor.initialized) activeEditor.setContent(html);\r\n }\r\n\r\n _initializeTinyMce() {\r\n let me = this;\r\n tinymce.baseURL = '/tinymce';\r\n let toolbarRow1 = 'undo redo | styleselect | forecolor backcolor | bold italic | link | image imageslideshow | wufoo iframeembed vimeoembed';\r\n let toolbarRow2 = 'bootstrap | hr | alignleft aligncenter alignright | bullist numlist outdent indent | code';\r\n if (!this.fullEditor) {\r\n toolbarRow1 = 'bold italic | bullist numlist';\r\n toolbarRow2 = null;\r\n }\r\n tinymce.init({\r\n selector: 'textarea#' + this.id,\r\n theme: 'modern',\r\n height: 250,\r\n \r\n remove_script_host: false,\r\n convert_urls: false,\r\n\r\n plugins: ['advlist autolink lists link hr anchor textcolor code image imageslideshow'],\r\n external_plugins: { \r\n 'imageslideshow': '/js-lib/tinymce-plugins/imageslideshow/plugin.js',\r\n 'bootstrap': '/js-lib/tinymce-plugins/bootstrap/plugin.min.js',\r\n 'wufoo': '/js-lib/tinymce-plugins/wufoo/plugin.js',\r\n 'iframeembed': '/js-lib/tinymce-plugins/iframeembed/plugin.js',\r\n 'vimeoembed': '/js-lib/tinymce-plugins/vimeoembed/plugin.js'\r\n },\r\n\r\n toolbar1: toolbarRow1,\r\n toolbar2: toolbarRow2,\r\n //toolbar2: 'mc-merge-email mc-merge-fname mc-merge-lname',\r\n //setup: function(editor) {\r\n // editor.addButton('mc-merge-email', { text: 'Insert Email', icon: false, onclick: function() { editor.insertContent('*|EMAIL|*') } }),\r\n // editor.addButton('mc-merge-fname', { text: 'Insert First Name', icon: false, onclick: function() { editor.insertContent('*|FNAME|*') } }),\r\n // editor.addButton('mc-merge-lname', { text: 'Insert Last Name', icon: false, onclick: function() { editor.insertContent('*|LNAME|*') } })\r\n //},\r\n\r\n menubar: false,\r\n toolbar_items_size: 'small',\r\n extended_valid_elements: 'script[type|src],iframe[src|style|width|height|scrolling|marginwidth|marginheight|frameborder],rssapp-ticker[id],rssapp-imageboard[id]',\r\n file_browser_callback: function (field_name, url, type, win) {\r\n me._openFileManager(`#${field_name}`, win);\r\n },\r\n slideshow_callback: function (elCssSelector, win, callback, fileType) {\r\n console.log('slideshow_callback', elCssSelector, win);\r\n me._openFileManager(elCssSelector, win, callback, fileType);\r\n },\r\n\r\n valid_elements: '*[*]',\r\n\r\n setup: function (ed) {\r\n ed.on('init', function(evt) {\r\n ed.getBody().setAttribute('spellcheck', true);\r\n });\r\n },\r\n\r\n bootstrapConfig: {\r\n 'bootstrapElements': {\r\n 'template': true\r\n }\r\n }\r\n });\r\n }\r\n\r\n _openFileManager(elCssSelector, win, callback, fileType) {\r\n this._content.fileManager(file => {\r\n const name = file.displayName || file.fileName;\r\n const inputEl = win.document.querySelectorAll(elCssSelector)[0];\r\n inputEl.value = file.path;\r\n\r\n if (callback) callback(file.path);\r\n }, fileType);\r\n }\r\n\r\n async save(closeEditor) {\r\n this.uiWidget.html = tinymce.activeEditor.getContent();\r\n if (this.uiWidget.id) {\r\n try {\r\n await this.uiWidgets.update(this.uiWidget.id, this.uiWidget.key, this.locale, this.uiWidget.title, this.uiWidget.html, this.widgetType, this.approval, this.memberId, this.comment, this.uiWidget.fromEmail);\r\n this.notifier.success('content-widget-saved');\r\n if (closeEditor) this.dialogController.ok({ uiWidget: this.uiWidget, language: this.locale });\r\n } catch (err) {\r\n console.log(error);\r\n this.notifier.errorText('An error occured saving the content.');\r\n }\r\n } else {\r\n try {\r\n this.uiWidget = await this.uiWidgets.add(this.uiWidget.key, this.locale, this.uiWidget.title, this.uiWidget.html, this.widgetType, this.approval, this.memberId, this.comment, this.uiWidget.fromEmail);\r\n this.notifier.success('content-widget-saved');\r\n if (closeEditor) this.dialogController.ok({ uiWidget: this.uiWidget, language: this.locale });\r\n } catch (err) {\r\n this.notifier.errorText('An error occured saving the content.');\r\n }\r\n }\r\n }\r\n\r\n async loadRestoreOptions() {\r\n this.restoreOptions = await this.uiWidgets.getArchives(this.uiWidget.key, this.locale);\r\n }\r\n\r\n onRestoreOptionSelected() {\r\n if (!this.restoreOption) return;\r\n let activeEditor = tinymce.activeEditor;\r\n if (activeEditor.initialized) activeEditor.setContent(this.restoreOption.html);\r\n this.uiWidget.title = this.restoreOption.title;\r\n }\r\n\r\n cancelRestore() {\r\n let activeEditor = tinymce.activeEditor;\r\n if (activeEditor.initialized) activeEditor.setContent(this.uiWidget.html);\r\n this.restoreOption = null;\r\n }\r\n}\r\n","import { bindable } from 'aurelia-framework';\r\nimport { Contests } from 'services/contests';\r\nimport { Security } from 'common/security';\r\nimport moment from 'moment';\r\n\r\nexport class ContestProgress {\r\n static inject = [Contests, Security];\r\n @bindable code = null;\r\n @bindable memberId = null;\r\n _contests;\r\n security;\r\n\r\n contest;\r\n standing;\r\n member;\r\n\r\n constructor(contests, security) {\r\n this._contests = contests;\r\n this.security = security;\r\n }\r\n\r\n attached() {\r\n this.isAttached = true;\r\n this._load();\r\n }\r\n\r\n codeChanged() {\r\n if (!this.isAttached) return;\r\n this._load();\r\n }\r\n\r\n memberIdChanged() {\r\n if (!this.isAttached) return;\r\n this._load();\r\n }\r\n\r\n requirementsCssClass(standing) {\r\n if (!this.contest.hasRequirements || !standing || !standing.isInDownline) return '';\r\n if (standing.meetsRequirements) return 'zeus-success';\r\n return 'zeus-error';\r\n }\r\n\r\n async _load() {\r\n try {\r\n if (!this.code) return;\r\n this.loading = true;\r\n this.gradientStyle = {};\r\n this.standing = undefined;\r\n const memberId = this.memberId || this.security.authenticatedMemberId;\r\n const data = await this._contests.memberStanding(this.code, memberId);\r\n if (!data) return;\r\n\r\n this.latestPolicyDate = data.latestPolicyDate;\r\n this.contest = data.contest;\r\n\r\n this.standing = data.standings.length === 1 ? data.standings[0] : { points: 0 };\r\n this.member = data.member;\r\n this.memberDetails = data.memberDetails;\r\n const progressPercentage = this.standing\r\n ? (this.standing.points / this.contest.qualifyingPoints) * 100\r\n : 0;\r\n const gradientStyle = {\r\n background: `linear-gradient(0deg, rgba(132,189,61,1) 0%, rgba(132,189,61,1) ${progressPercentage}%, rgba(255,255,255,1) ${progressPercentage + 4}%)`,\r\n };\r\n if (this.contest.thermometerSettings2) {\r\n gradientStyle.top = this.contest.thermometerSettings2.top;\r\n gradientStyle.bottom = this.contest.thermometerSettings2.bottom;\r\n gradientStyle.left = this.contest.thermometerSettings2.left;\r\n gradientStyle.right = this.contest.thermometerSettings2.right;\r\n }\r\n this.gradientStyle = gradientStyle;\r\n\r\n if (this.contest.qualifyingLevels && this.contest.thermometerSettings2) {\r\n this.levelLinesStyle = {\r\n top: this.contest.thermometerSettings2.top,\r\n bottom: this.contest.thermometerSettings2.bottom,\r\n left: this.contest.thermometerSettings2.left,\r\n right: this.contest.thermometerSettings2.right\r\n };\r\n for (let level of this.contest.qualifyingLevels) {\r\n const levelProgressPercentage = (level.qualifyingPoints / this.contest.qualifyingPoints) * 100;\r\n level.style = {\r\n bottom: `${levelProgressPercentage}%`\r\n };\r\n }\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n async refresh() {\r\n this.refreshing = true;\r\n await this._load();\r\n window.setTimeout(() => this.refreshing = false, 2000);\r\n }\r\n\r\n async showDetails() {\r\n this.showDrawer = moment().format();\r\n }\r\n\r\n drawerClosed() {\r\n }\r\n}\r\n","import { bindable } from 'aurelia-framework';\r\nimport { Contests } from 'services/contests';\r\nimport { Security } from 'common/security';\r\nimport moment from 'moment';\r\n\r\nexport class ContestStandings {\r\n static inject = [Contests, Security];\r\n @bindable code = null;\r\n @bindable staticHeight = false;\r\n _contests;\r\n security;\r\n\r\n standings;\r\n standingsFilters = [\r\n { value: '', custom: this.leaderboardTypeFilter },\r\n ];\r\n\r\n constructor(contests, security) {\r\n this._contests = contests;\r\n this.security = security;\r\n }\r\n\r\n attached() {\r\n this.isAttached = true;\r\n this._load();\r\n }\r\n\r\n leaderboardTypeFilter(filterValue, row) {\r\n if (!filterValue) return true;\r\n if (filterValue === 'mid-contest') return row.applyMidContestStandards;\r\n else if (filterValue === 'full-contest') return !row.applyMidContestStandards;\r\n return true;\r\n }\r\n\r\n codeChanged() {\r\n if (!this.isAttached) return;\r\n this._load();\r\n }\r\n\r\n async _load() {\r\n try {\r\n if (!this.code) return;\r\n this.loading = true;\r\n this.standings = [];\r\n const data = await this._contests.standings(this.code);\r\n if (!data) return;\r\n this.contest = data.contest;\r\n this.standings = data.standings;\r\n this.latestPolicyDate = data.latestPolicyDate;\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n requirementsCssClass(record) {\r\n if (!this.contest.hasRequirements || !record || !record.isInDownline) return '';\r\n if (record.meetsRequirements) return 'zeus-success';\r\n return 'zeus-error';\r\n }\r\n\r\n async refresh() {\r\n this.refreshing = true;\r\n await this._load();\r\n window.setTimeout(() => this.refreshing = false, 2000);\r\n }\r\n\r\n async showDetails(record) {\r\n if (!record.isAuthenticatedRecord && !this.security.isAdmin) return;\r\n try {\r\n this.loadingDetails = true;\r\n this.detailsFor = record.member;\r\n this.memberDetails = undefined;\r\n const data = await this._contests.standings(this.code, record.member.id);\r\n this.memberDetails = data.memberDetails;\r\n this.showDrawer = moment().format();\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loadingDetails = false;\r\n }\r\n }\r\n\r\n drawerClosed() {\r\n this.detailsFor = undefined;\r\n this.memberDetails = undefined;\r\n }\r\n}\r\n","import { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { Contests } from 'services/contests';\r\nimport { Security } from 'common/security';\r\nimport { TimePeriodNavigatorBase } from 'resources/base-classes/time-period-navigator-base';\r\nimport { WIDGET } from 'common/constants';\r\n\r\nexport class MonthlyConsistency extends TimePeriodNavigatorBase {\r\n static inject = [EventAggregator, Contests, Security];\r\n _contests;\r\n security;\r\n\r\n standings;\r\n\r\n constructor(ea, contests, security) {\r\n super('monthly-consistency', ea);\r\n this._contests = contests;\r\n this.security = security;\r\n }\r\n\r\n attached() {\r\n this.isAttached = true;\r\n this._attached();\r\n this._loadData();\r\n }\r\n\r\n async _loadData(fromSync = false) {\r\n try {\r\n this.loading = true;\r\n this.initializeTimePeriodNavigation(fromSync);\r\n\r\n const data = await this._contests.monthlyConsistency(this.asOfDate.toISOString(true));\r\n this.records = data.records;\r\n this.timePeriod = WIDGET.Period.toReportTimePeriod(WIDGET.Period.Month);\r\n this.currentPeriod = data.month;\r\n this.setTimePeriodNavigationDisplays();\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","import { bindable } from 'aurelia-framework';\r\nimport { Notifier } from 'common/ui';\r\nimport copy from 'copy-to-clipboard';\r\n\r\nexport class CopyToClipboard {\r\n static inject = [Notifier];\r\n @bindable value;\r\n _notifier;\r\n\r\n constructor(notifier) {\r\n this._notifier = notifier;\r\n }\r\n\r\n copyToClipboard(ev) {\r\n try {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n copy(this.value);\r\n this._notifier.success('copy-to-clipboard-success');\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-pal';\r\nimport { customElement, observable, bindable, computedFrom } from 'aurelia-framework';\r\nimport { Router } from 'aurelia-router';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { I18n } from 'common/i18n';\r\nimport { TemplatingEngine } from 'aurelia-templating';\r\nimport { Notifier } from 'common/ui';\r\nimport { MemberConfig } from 'services/member-config';\r\nimport { Config } from 'services/config';\r\nimport { Security } from 'common/security';\r\nimport { Dashboards } from 'services/dashboards';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { Menus } from 'services/menus';\r\nimport { ConfirmDialog } from 'common/dialogs/confirm/confirm-dialog';\r\nimport { c } from 'common/common';\r\nimport { ROLE } from 'common/constants';\r\nPLATFORM.moduleName('common/dialogs/confirm/confirm-dialog');\r\n\r\n@customElement('dashboard-builder')\r\nexport class DashboardBuilder {\r\n static inject = [Router, EventAggregator, I18n, TemplatingEngine, Notifier, MemberConfig, Config, Security, Dashboards, DialogService, Menus];\r\n @bindable key;\r\n @bindable canSelect = true;\r\n _router;\r\n _ea;\r\n _i18n;\r\n _templatingEngine;\r\n _notifier;\r\n _memberConfig;\r\n _config;\r\n _dashboards;\r\n _dialogService;\r\n _menus;\r\n\r\n @observable dashboardName;\r\n\r\n @observable searchOn;\r\n editable = false;\r\n _grid;\r\n _serializedFull;\r\n\r\n dashboardWidgetsEl;\r\n gridStackEl;\r\n widgets = [];\r\n _widgetSettings = {};\r\n\r\n ADD_PERSONAL_DASHBOARD_KEY = 'add-personal-dashboard';\r\n\r\n _widgetViews = [];\r\n\r\n constructor(router, ea, i18n, templatingEngine, notifier, memberConfig, config, security, dashboards, dialogService, menus) {\r\n this._router = router;\r\n this._ea = ea;\r\n this._i18n = i18n;\r\n this._templatingEngine = templatingEngine;\r\n this._notifier = notifier;\r\n this._memberConfig = memberConfig;\r\n this._config = config;\r\n this._security = security;\r\n this._dashboards = dashboards;\r\n this._dialogService = dialogService;\r\n this._menus = menus;\r\n this._initializeWidgets();\r\n }\r\n\r\n _initializeWidgets() {\r\n this.isDashboardAdmin = this._security.isInRole(ROLE.DashboardAdmin);\r\n this.widgets = this._config.json('dashboardWidgetsJson');\r\n this.widgets.forEach(w => {\r\n if (w.showFor && w.showFor.length) {\r\n let display = false;\r\n w.showFor.forEach(sf => {\r\n switch (sf) {\r\n case 'admin': if (this._security.isAdmin) display = true; break;\r\n case 'masterAgency': if (this._security.isMasterAgency()) display = true; break;\r\n case 'agency': if (this._security.isAgency()) display = true; break;\r\n case 'team': if (this._security.isTeam()) display = true; break;\r\n case 'agent': display = true; break;\r\n }\r\n });\r\n w.display = display;\r\n } else {\r\n if (w.onlyAdmin && !this._security.isAdmin) w.display = false;\r\n else if (w.onlyAgency && !this._security.isAgency()) w.display = false;\r\n else w.display = true;\r\n }\r\n // Check for restriction by roles\r\n if (w.display && w.requireRole) {\r\n if (!this._security.isInRole(w.requireRole)) w.display = false;\r\n }\r\n w.canAccess = w.display;\r\n if (this.isDashboardAdmin) w.display = true;\r\n });\r\n }\r\n\r\n async attached() {\r\n this.loading = true;\r\n if (!this._grid) {\r\n this._initialize();\r\n } else {\r\n window.setTimeout(() => this._initialize(), 0);\r\n }\r\n this._isAttached = true;\r\n }\r\n\r\n _initialize() {\r\n this._initializeGrid();\r\n if (this.key === this.ADD_PERSONAL_DASHBOARD_KEY) {\r\n this.addPersonalDashboard();\r\n } else {\r\n this.loadGrid();\r\n if (!this.editable) this.stopEdit();\r\n }\r\n }\r\n\r\n detached() {\r\n try {\r\n this._ea.publish(c.EventKeys.dashboard.builderDetached);\r\n if (this.editable) this.stopEdit();\r\n this._widgetViews.forEach(wv => {\r\n try {\r\n wv.detached();\r\n } catch (wvErr) {\r\n console.log(wvErr);\r\n }\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n keyChanged(newValue, oldValue) {\r\n if (!this._isAttached) return;\r\n this.loading = true;\r\n if (this.editable) this.stopEdit();\r\n if (this.key === this.ADD_PERSONAL_DASHBOARD_KEY) {\r\n this.addPersonalDashboard();\r\n } else {\r\n if (this.editingPersonalDashboard) {\r\n this.closePersonalDashboardEditor(true);\r\n }\r\n this.loadGrid();\r\n }\r\n }\r\n\r\n @computedFrom('editable', 'editingPersonalDashboard', 'dashboardName')\r\n get canAddWidgets() {\r\n if (!this.editable) return false;\r\n if (!this.editingPersonalDashboard) return true;\r\n if (this.dashboardName) return true;\r\n return false;\r\n }\r\n\r\n async toggleDefault() {\r\n try {\r\n await this._dashboards.toggleMemberDefault(this.key);\r\n this.dashboard.isDefault = !this.dashboard.isDefault;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n dashboardNameChanged(newValue, oldValue) {\r\n if (!this.dashboard || !this.dashboardName) return;\r\n this.dashboard.name = this.dashboardName;\r\n this.dashboard.key = `pd-${c.Helpers.keyify(this.dashboardName)}`;\r\n if (!oldValue) return; // don't need to save the grid when going from nothing to something\r\n if (this.gridStackEl.childNodes.length) this._saveGrid();\r\n }\r\n\r\n addPersonalDashboard() {\r\n this.editingPersonalDashboard = true;\r\n this._ignoreClearGrid = true;\r\n this._grid.removeAll(true);\r\n this.closeToKey = this.ADD_PERSONAL_DASHBOARD_KEY;\r\n this.dashboard = { key: undefined, savedKey: undefined, canEdit: true, layout: [], savedName: undefined };\r\n this.startEdit();\r\n this.focusDashboardName = true;\r\n this.loading = false;\r\n }\r\n\r\n deletePersonalDashboard() {\r\n const model = { key: 'delete-dashboard', okButtonClass: 'btn-danger' };\r\n\t this._dialogService.open({ viewModel: ConfirmDialog, model, ignoreTransitions: true }).whenClosed(async(response) => {\r\n\t if (response.wasCancelled) return;\r\n try {\r\n await this._dashboards.delete(this.dashboard.key);\r\n this.dashboard = undefined;\r\n this.loading = true;\r\n this.loadGrid();\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n });\r\n }\r\n\r\n editPersonalDashboard() {\r\n this.editable = true;\r\n this.editingPersonalDashboard = true;\r\n this.dashboardName = this.dashboard.name;\r\n this.startEdit();\r\n }\r\n\r\n closePersonalDashboardEditor(onlyClear = false) {\r\n this.editingPersonalDashboard = false;\r\n this.focusDashboardName = false;\r\n this.dashboardName = undefined;\r\n this.stopEdit();\r\n if (onlyClear) return;\r\n if (this.closeToKey === this.ADD_PERSONAL_DASHBOARD_KEY) {\r\n this._router.navigate('#/members', true);\r\n return;\r\n }\r\n if (this.closeToKey) {\r\n this.dashboard = undefined;\r\n this.key = this.closeToKey;\r\n this.closeToKey = undefined;\r\n this.loading = true;\r\n this.loadGrid();\r\n }\r\n }\r\n\r\n startEdit() {\r\n if (!this._grid) return;\r\n this.editable = true;\r\n this._grid.setStatic(false);\r\n this._grid.enableMove(true, true);\r\n this._grid.enableResize(true, true);\r\n }\r\n\r\n stopEdit() {\r\n if (!this._grid) return;\r\n this.editable = false;\r\n this._grid.setStatic(true);\r\n this._grid.enableMove(false, true);\r\n this._grid.enableResize(false, true);\r\n }\r\n\r\n async setDefault() {\r\n try {\r\n await this._dashboards.setDefault(this.dashboard.key);\r\n this._notifier.success('set-default-dashboard-success');\r\n this.dashboard.isDifferentThanPublishedDashboard = false;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n async reset() {\r\n try {\r\n await this._dashboards.reset(this.dashboard.key);\r\n this._notifier.success('reset-dashboard-success');\r\n this._clearGrid();\r\n this.loadGrid();\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n _clearGrid() {\r\n this._ignoreClearGrid = true;\r\n this._grid.removeAll(true);\r\n this.dashboard = undefined;\r\n }\r\n\r\n searchOnChanged() {\r\n this.widgets.forEach(widget => {\r\n let matchesSearch = true;\r\n if (this.searchOn) {\r\n // see if it matches\r\n const keyMatch = widget.keys\r\n .map(x => x.toLowerCase().indexOf(this.searchOn.toLowerCase()) >= 0)\r\n .filter(x => x === true);\r\n matchesSearch = keyMatch.length > 0;\r\n }\r\n if (!widget.canAccess) matchesSearch = false;\r\n widget.display = matchesSearch;\r\n });\r\n }\r\n\r\n _initializeGrid() {\r\n const config = {\r\n minRow: 1,\r\n alwaysShowResizeHandle: true,\r\n acceptWidgets: true,\r\n removeTimeout: 100,\r\n staticGrid: false,\r\n cellHeight: '100px',\r\n };\r\n this._grid = GridStack.init(config);\r\n GridStack.setupDragIn('.zeus-dashboard-new-widget', { revert: 'invalid', scroll: false, appendTo: 'body', helper: 'clone' });\r\n this._grid.on('added', (e, items) => {\r\n try {\r\n this.focusDashboardName = false;\r\n if (!this.gridStackEl) return;\r\n for (let node of this.gridStackEl.childNodes) {\r\n let widgetContent = node.querySelector('.grid-stack-item-content');\r\n let widgetIsNew = widgetContent.querySelector('.zeus-dashboard-widget-default-size');\r\n if (!widgetIsNew) {\r\n continue;\r\n }\r\n // this is default content, replace with the widget\r\n let id = c.Helpers.uniqueId();\r\n let widgetId = node.getAttribute('data-widget-id');\r\n let settings = undefined;\r\n let savedWidget = false;\r\n if (!widgetId) {\r\n // This is being added from the database, need to add attributes\r\n node.classList.add('zeus-dashboard-new-widget');\r\n const loadingWidgetContent = widgetContent.firstChild;\r\n widgetId = loadingWidgetContent.getAttribute('data-widget-id');\r\n id = loadingWidgetContent.getAttribute('data-id');\r\n settings = this._widgetSettings[id];\r\n node.setAttribute('data-widget-id', widgetId);\r\n savedWidget = true;\r\n }\r\n widgetContent.classList.add('zeus-dashboard-widget');\r\n widgetContent.classList.remove('zeus-dashboard-new-widget');\r\n const widget = this.widgets.find(x => x.id === widgetId);\r\n if (!savedWidget) {\r\n settings = widget.defaultSettings ? widget.defaultSettings : undefined;\r\n this._widgetSettings[id] = settings;\r\n }\r\n let settingsValue;\r\n if (settings) {\r\n settingsValue = JSON.stringify(settings);\r\n settingsValue = c.Helpers.replaceAll(settingsValue, '\"', '\\'');\r\n }\r\n let configValue;\r\n if (widget.config) {\r\n configValue = JSON.stringify(widget.config);\r\n configValue = c.Helpers.replaceAll(configValue, '\"', '\\'');\r\n }\r\n let widgetButtonsHTML = ``;\r\n if (this._security.isInRole([ROLE.Admin, ROLE.DashboardAdmin])) {\r\n widgetButtonsHTML += ``;\r\n }\r\n widgetContent.innerHTML = `<${widgetId} data-id=\"${id}\" is-for-agency.bind=\"${this.dashboard.isForAgency}\" can-edit.bind=\"${this.dashboard.canEdit}\" settings.delegate=\"widgetSettingsChanged('${id}', '${widgetId}', $event.detail)\" settings.bind=\"${settingsValue}\" config.bind=\"${configValue}\" is-published.bind=\"${this.dashboard.isPublishedDashboard}\">${widgetButtonsHTML}`;\r\n const view = this._templatingEngine.enhance({ element: widgetContent, bindingContext: this });\r\n this._widgetViews.push(view);\r\n }\r\n if (this.loadingGrid) {\r\n // Do not save for the initial load\r\n this.loadingGrid = false;\r\n return;\r\n }\r\n this._saveGrid();\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loading = false;\r\n }\r\n });\r\n this._grid.on('removed', (e, items) => {\r\n if (this._ignoreClearGrid) {\r\n this._ignoreClearGrid = false;\r\n return;\r\n }\r\n this._saveGrid();\r\n });\r\n this._grid.on('change', (e, items) => {\r\n this._saveGrid();\r\n });\r\n }\r\n\r\n removeWidget(id) {\r\n let removeEl;\r\n for (let node of this.gridStackEl.childNodes) {\r\n const removeWidget = node.querySelector(`[data-id=\"${id}\"]`);\r\n if (removeWidget) {\r\n removeEl = node;\r\n break;\r\n }\r\n }\r\n if (!removeEl) return;\r\n this._grid.removeWidget(removeEl);\r\n this._widgetSettings[id] = undefined;\r\n }\r\n\r\n addWidgetToBigButtons(id, widgetId) {\r\n try {\r\n const widget = this.widgets.find(x => x.id === widgetId);\r\n const widgetSettings = this._widgetSettings[id];\r\n const title = widgetSettings.friendlyName ?? this._i18n.tr(widget.key ?? widget.id);\r\n this._menus.addToMobileMenu(id, 'Widget', widgetId, title, '', `#/members/_w/mobile/${id}`, widget.icon, widgetSettings);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n widgetSettingsChanged(id, widgetId, detail) {\r\n this._widgetSettings[id] = detail.data;\r\n if (detail.save === true) this._saveGrid();\r\n }\r\n\r\n async _saveGrid() {\r\n if (!this.editable) return;\r\n if (this.editingPersonalDashboard && !this.dashboard.key) {\r\n this._notifier.error('personal-dashboard-requires-name');\r\n this.focusDashboardName = true;\r\n return;\r\n }\r\n try {\r\n const dashboardWidgets = this._grid.save(false);\r\n const cleanedDashboardWidgets = [];\r\n for (let node of this.gridStackEl.childNodes) {\r\n const widgetId = node.getAttribute('data-widget-id');\r\n const w = Number(node.getAttribute('gs-w'));\r\n const h = Number(node.getAttribute('gs-h'));\r\n const x = Number(node.getAttribute('gs-x'));\r\n const y = Number(node.getAttribute('gs-y'));\r\n const dashboardWidget = dashboardWidgets.find(dw => dw.x === x && dw.y === y && dw.w === w && dw.h === h);\r\n if (!dashboardWidget) continue;\r\n\r\n delete dashboardWidget.content;\r\n const widgetContent = node.querySelector('.grid-stack-item-content');\r\n const widget = widgetContent.firstChild;\r\n const id = widget.getAttribute('data-id');\r\n dashboardWidget.id = id;\r\n dashboardWidget.widgetId = widgetId;\r\n dashboardWidget.settings = this._widgetSettings[id];\r\n cleanedDashboardWidgets.push(dashboardWidget);\r\n }\r\n const saveName = this.editingPersonalDashboard ? this.dashboard.name : undefined;\r\n const saveOriginalKey = this.editingPersonalDashboard && this.dashboard && this.dashboard.savedKey ? this.dashboard.savedKey : undefined;\r\n const triggerMenuUpdate = this.editingPersonalDashboard && (!this.dashboard.savedKey || (this.dashboard.savedName !== this.dashboard.name));\r\n await this._dashboards.save(this.dashboard.key, cleanedDashboardWidgets, saveName, saveOriginalKey, triggerMenuUpdate);\r\n if (this.editingPersonalDashboard) {\r\n this.dashboard.savedKey = this.dashboard.key;\r\n this.dashboard.savedName = this.dashboard.name;\r\n }\r\n if (triggerMenuUpdate) this.closeToKey = undefined;\r\n if (this.dashboard.isPublishedDashboard) {\r\n // This is a Dashboard Admin saving a published dashboard\r\n this.dashboard.isDifferentThanPublishedDashboard = true;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n this._notifier.error('An error occurred saving the dashboard');\r\n }\r\n }\r\n\r\n async loadGrid() {\r\n const dashboard = await this._dashboards.byKey(this.key);\r\n if (this.dashboard && this.dashboard.key === dashboard.key) {\r\n this.loading = false;\r\n return;\r\n }\r\n this.dashboard = dashboard;\r\n if (!this.dashboard) {\r\n this.loading = false;\r\n return;\r\n }\r\n const cleanedDashboard = [];\r\n this.dashboard.layout.forEach(dw => {\r\n const widget = this.widgets.find(x => x.id === dw.widgetId);\r\n if (!widget) return;\r\n cleanedDashboard.push(dw);\r\n if (dw.settings) {\r\n this._widgetSettings[dw.id] = dw.settings;\r\n }\r\n // Need to add the content so the widget added will be added correctly\r\n dw.content = `
\r\n
${this._i18n.tr(`${widget.id}`)}
\r\n
${widget.defaultWidth} x ${widget.defaultHeight}
`;\r\n });\r\n\r\n this.loadingGrid = cleanedDashboard.length > 0;\r\n this._grid.load(cleanedDashboard, true);\r\n if (cleanedDashboard.length === 0) {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n scrollWidgets(direction) {\r\n try {\r\n this.dashboardWidgetsEl.scrollBy({\r\n top: direction *= 100,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n}\r\n","import { customElement, bindable, bindingMode } from 'aurelia-framework';\r\nimport moment from 'moment';\r\nimport flatpickr from 'flatpickr';\r\nimport monthSelectPlugin from 'flatpickr/dist/plugins/monthSelect';\r\n\r\n@customElement('date-picker')\r\nexport class DateTimePicker {\r\n static inject = [Element];\r\n\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) value = undefined;\r\n @bindable({ defaultBindingMode: bindingMode.twoWay }) range = undefined;\r\n @bindable iconOnly = false;\r\n @bindable type = 'date';\r\n @bindable allowPast = true;\r\n @bindable allowFuture = true;\r\n @bindable disabled = false;\r\n @bindable showClear = false;\r\n @bindable noDateKey = '';\r\n @bindable theme = 'light';\r\n @bindable valueIfOpened;\r\n @bindable displayFormat;\r\n @bindable flatpickrFormat;\r\n @bindable clearNow;\r\n @bindable size;\r\n\r\n pickerEl;\r\n _picker;\r\n\r\n enableTime;\r\n noCalendar;\r\n dateFormat;\r\n altFormat;\r\n defaultDate;\r\n momentFormat;\r\n momentAltFormat;\r\n _plugins = [];\r\n\r\n noValue = false;\r\n\r\n constructor(element) {\r\n this._element = element;\r\n }\r\n\r\n bind() {\r\n if (this.type === 'date') {\r\n this.enableTime = false;\r\n this.noCalendar = false;\r\n this.dateFormat = 'Y-m-d';\r\n this.altFormat = this.flatpickrFormat || 'n/j/Y';\r\n this.momentFormat = 'Y-M-D';\r\n this.momentAltFormat = this.displayFormat || 'l';\r\n } else if (this.type === 'range') {\r\n this.enableTime = false;\r\n this.noCalendar = false;\r\n this.dateFormat = 'Y-m-d';\r\n this.altFormat = this.flatpickrFormat || 'n/j/Y';\r\n this.momentFormat = 'Y-M-D';\r\n this.momentAltFormat = this.displayFormat || 'l';\r\n } else if (this.type === 'time') {\r\n this.enableTime = true;\r\n this.noCalendar = true;\r\n this.dateFormat = 'H:i';\r\n this.altFormat = this.flatpickrFormat || 'h:i K';\r\n this.momentFormat = 'HH:mm';\r\n this.allowPast = true;\r\n this.momentAltFormat = this.displayFormat || 'h:mm A';\r\n } else if (this.type === 'month') {\r\n this.enableTime = false;\r\n this.noCalendar = false;\r\n this.dateFormat = 'M Y';\r\n this.altFormat = 'M Y';\r\n this.momentFormat = 'Y M';\r\n this.momentAltFormat = 'MMM YYYY';\r\n this._plugins.push(new monthSelectPlugin({ shorthand: true, dateFormat: 'M Y', altFormat: 'M Y', theme: this.theme }));\r\n } else {\r\n this.enableTime = true;\r\n this.noCalendar = false;\r\n this.dateFormat = 'Y-m-d H:i';\r\n this.altFormat = this.flatpickrFormat || 'D M j, Y h:i K';\r\n this.momentFormat = 'Y-M-D HH:mm';\r\n this.momentAltFormat = this.displayFormat || 'ddd MMM D, YYYY h:mm A';\r\n }\r\n this._setDates();\r\n }\r\n\r\n allowPastChanged() {\r\n if (!this._picker) return;\r\n this._picker.set('minDate', this.allowPast ? undefined : moment().format(this.momentFormat));\r\n }\r\n\r\n allowFutureChanged() {\r\n if (!this._picker) return;\r\n this._picker.set('maxDate', this.allowFuture ? undefined : moment().format(this.momentFormat));\r\n }\r\n\r\n _setDates() {\r\n try {\r\n if ((this.type !== 'range' && !this.value) || (this.type === 'range' && !this.range)) {\r\n this.noValue = true;\r\n return;\r\n }\r\n if (this.type === 'time') {\r\n if (moment.isMoment(this.value)) {\r\n this.defaultDate = this.value.format(this.momentFormat);\r\n this.disabledValue = this.value.format(this.momentAltFormat);\r\n } else {\r\n this.defaultDate = this.value;\r\n this.disabledValue = this.value;\r\n }\r\n } else if (this.type === 'range') {\r\n let defaultRange = undefined;\r\n if (this.range && this.range.length === 2) {\r\n defaultRange = [];\r\n defaultRange.push(this.range[0].format(this.momentFormat));\r\n defaultRange.push(this.range[1].format(this.momentFormat));\r\n }\r\n this.defaultDate = defaultRange;\r\n this.disabledValue = undefined;\r\n } else if (this.type === 'month') {\r\n if (!moment.isMoment(this.value)) this.value = moment(this.value);\r\n this.defaultDate = this.value ? this.value.toISOString() : undefined;\r\n this.disabledValue = this.value ? this.value.format(this.momentAltFormat) : undefined;\r\n } else {\r\n if (!moment.isMoment(this.value)) this.value = moment(this.value);\r\n this.defaultDate = this.value ? this.value.format(this.momentFormat) : undefined;\r\n this.disabledValue = this.value ? this.value.format(this.momentAltFormat) : undefined;\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n attached() {\r\n if (this.iconOnly) this._element.classList.add('zeus-datepicker-icon-only');\r\n if (this.noValue) return;\r\n this._createPicker();\r\n }\r\n\r\n _createPicker() {\r\n try {\r\n this.disposePicker(this.defaultDate);\r\n const config = {\r\n disableMobile: false,\r\n altInput: true,\r\n enableTime: this.enableTime,\r\n noCalendar: this.noCalendar,\r\n dateFormat: this.dateFormat,\r\n altFormat: this.altFormat,\r\n minDate: this.allowPast ? undefined : moment().format(this.momentFormat),\r\n maxDate: this.allowFuture ? undefined : moment().format(this.momentFormat),\r\n defaultDate: this.defaultDate,\r\n onOpen: () => {\r\n this.isClosing = false;\r\n },\r\n onClose: (selectedDates, dateStr, instance) => {\r\n if (this.type === 'range') {\r\n this.range = [moment(selectedDates[0]), moment(selectedDates[1])];\r\n this.disabledValue = `${this.range[0].format(this.momentAltFormat)} - ${this.range[1].format(this.momentAltFormat)}`;\r\n this._element.dispatchEvent(new CustomEvent('set', { bubbles: true, detail: { range: this.range }}));\r\n } else {\r\n if (moment(selectedDates[0]).isValid()) {\r\n this.value = moment(selectedDates[0]);\r\n this.disabledValue = this.value.format(this.momentAltFormat);\r\n this._element.dispatchEvent(new CustomEvent('set', { bubbles: true, detail: { date: this.value }}));\r\n } else {\r\n this.value = undefined;\r\n this.disabledValue = undefined;\r\n this._element.dispatchEvent(new CustomEvent('set', { bubbles: true, detail: { }}));\r\n }\r\n }\r\n this.isClosing = true;\r\n window.setTimeout(() => this.isClosing = false, 250);\r\n },\r\n };\r\n\r\n if (this._plugins.length) {\r\n config.plugins = this._plugins;\r\n }\r\n \r\n if (this.type === 'range') {\r\n config.mode = 'range';\r\n if (!config.defaultDate || config.defaultDate.length !== 2) delete config.defaultDate;\r\n }\r\n\r\n this._picker = flatpickr(this.pickerEl, config);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n valueChanged(newValue, oldValue) {\r\n try {\r\n if (this.clearing) {\r\n this.clearing = false;\r\n return;\r\n }\r\n if (this.type === 'time') {\r\n\r\n }\r\n if (newValue && moment.isMoment(newValue) && !newValue.isValid()) return;\r\n if (oldValue && newValue && (moment.isMoment(oldValue) && !moment.isMoment(newValue)) || (moment.isMoment(newValue) && !moment.isMoment(oldValue))) {\r\n if (!moment.isMoment(oldValue)) {\r\n const oldMoment = moment(oldValue);\r\n if (oldMoment.isSame(newValue)) return;\r\n } else {\r\n const newMoment = moment(newValue);\r\n if (newMoment.isSame(oldValue)) return;\r\n }\r\n }\r\n if (this.noValue && this.value) {\r\n this.noValue = false;\r\n this._createPicker();\r\n }\r\n this._setDates();\r\n if (!this._picker) return;\r\n this._picker.setDate(this.defaultDate, false);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n disposePicker(defaultDate) {\r\n if (!this._picker) return;\r\n this._picker.setDate(defaultDate, false);\r\n this._picker.destroy();\r\n this._picker = undefined;\r\n }\r\n\r\n toggleCalendar() {\r\n if (this.noValue) {\r\n this.noValue = false;\r\n this._createPicker();\r\n if (this.type !== 'range') {\r\n this.value = this.valueIfOpened ? moment(this.valueIfOpened) : moment();\r\n }\r\n }\r\n if (!this._picker) return;\r\n if (this.isClosing) {\r\n this.isClosing = false;\r\n return;\r\n }\r\n if (this._picker.isOpen) this._picker.close();\r\n else this._picker.open();\r\n return false;\r\n }\r\n\r\n clearNowChanged() {\r\n this.clearCalendar();\r\n }\r\n\r\n clearCalendar() {\r\n this.clearing = true;\r\n this.noValue = true;\r\n this.disposePicker();\r\n this.value = undefined;\r\n this.range = undefined;\r\n this.disabledValue = undefined;\r\n this._element.dispatchEvent(new CustomEvent('set', { bubbles: true, detail: { date: undefined, range: undefined }}));\r\n }\r\n}\r\n","import { bindable, observable } from 'aurelia-framework';\r\nimport { MemberCarriers } from 'services/member-carriers';\r\n\r\nexport class DownlineCarrierDebt {\r\n static inject = [MemberCarriers];\r\n _carriers;\r\n\r\n @bindable({ changeHandler: '_load' }) memberId;\r\n @observable member;\r\n\r\n _memberCarriers;\r\n\r\n constructor(memberCarriers) {\r\n this._memberCarriers = memberCarriers;\r\n }\r\n\r\n attached() {\r\n this._isAttached = true;\r\n this._load();\r\n }\r\n\r\n memberChanged() {\r\n if (!this.member) {\r\n this.forMemberId = undefined;\r\n } else {\r\n this.forMemberId = this.member.id;\r\n }\r\n this._load();\r\n }\r\n\r\n async _load() {\r\n if (!this._isAttached) return;\r\n if (!this.memberId && !this.forMemberId) return;\r\n this.loading = true;\r\n try {\r\n this.downline = [];\r\n const forMemberId = this.forMemberId ?? this.memberId;\r\n this.downline = await this._memberCarriers.downlineDebt(forMemberId);\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","import { Dialer, DIALER_TEAM } from 'services/dialer';\r\nimport { Notifier } from 'common/ui';\r\nimport { NewInstance } from 'aurelia-dependency-injection';\r\nimport { ValidationRules, ValidationController } from 'aurelia-validation';\r\nimport { BootstrapFormValidationRenderer } from 'validation/bootstrap-form-validation-renderer';\r\nimport { c } from 'common/common';\r\n\r\nexport class AutoDialButton {\r\n static inject = [Dialer, Notifier, NewInstance.of(ValidationController)];\r\n _dialer;\r\n _notifier;\r\n\r\n phoneNumber;\r\n\r\n constructor(dialer, notifier, validationController) {\r\n this._dialer = dialer;\r\n this._notifier = notifier;\r\n\r\n\t\tthis.validationController = validationController;\r\n\t\tthis.validationController.addRenderer(new BootstrapFormValidationRenderer());\r\n\r\n\t\tValidationRules\r\n .ensure('phoneNumber').required().matches(c.RegEx.phoneNumber)\r\n .on(this);\r\n }\r\n\r\n async autoDial() {\r\n if (this.dialing) return;\r\n try {\r\n const v = await this.validationController.validate();\r\n if (!v.valid) return;\r\n this.dialing = true;\r\n const response = await this._dialer.call(undefined, DIALER_TEAM.NoPrompt, this.phoneNumber);\r\n if (response.succeeded) this._notifier.success('auto-dialer-success');\r\n } catch (err) {\r\n console.log(err);\r\n } finally {\r\n this.dialing = false;\r\n }\r\n }\r\n}","import { bindable } from 'aurelia-framework';\r\n\r\nexport class DraggableHandle {\r\n @bindable key = 'zeus-draggable-handle-key';\r\n\r\n onMousedown() {\r\n this.mouseClass = 'zeus-dragging';\r\n }\r\n\r\n onMouseup() {\r\n this.mouseClass = '';\r\n }\r\n}","export class DrilldownObjectClient {\r\n activate(model) {\r\n this.client = model;\r\n }\r\n}\r\n","export class DrilldownObjectMember {\r\n activate(model) {\r\n this.member = model;\r\n }\r\n}\r\n","export class DrilldownObjectPolicy {\r\n activate(model) {\r\n this.policy = model;\r\n this.writingAgent = { id: this.policy.writingAgentId, fullName: this.policy.writingAgent };\r\n }\r\n}\r\n","import { PLATFORM } from 'aurelia-pal';\r\nimport { bindable } from 'aurelia-framework';\r\n\r\nexport class DrilldownObjects {\r\n @bindable objects;\r\n\r\n clientViewModel = PLATFORM.moduleName('./drilldown-object-client');\r\n memberViewModel = PLATFORM.moduleName('./drilldown-object-member');\r\n policyViewModel = PLATFORM.moduleName('./drilldown-object-policy');\r\n\r\n constructor() {\r\n }\r\n\r\n objectViewModel(type) {\r\n switch (type) {\r\n case 'client': return this.clientViewModel;\r\n case 'member': return this.memberViewModel;\r\n case 'policy': return this.policyViewModel;\r\n default: return null;\r\n }\r\n }\r\n}\r\n","import { bindable, observable, computedFrom } from 'aurelia-framework';\r\nimport { Security } from 'common/security';\r\nimport { Notifier } from 'common/ui';\r\nimport { I18n } from 'common/i18n';\r\nimport Dropzone from 'dropzone';\r\n\r\nexport class DropZone {\r\n static inject = [Element, Security, Notifier, I18n];\r\n _element;\r\n _security;\r\n _notifier;\r\n _i18n;\r\n\r\n _dz;\r\n dropzoneEl;\r\n @bindable formAction;\r\n @bindable extensions;\r\n @bindable messageKey = 'drop-zone-message-default';\r\n @bindable successKey;\r\n @bindable errorKey;\r\n @bindable imageSrc;\r\n @bindable({ changeHandler: '_setStyles' }) imageBgColor;\r\n @bindable({ changeHandler: '_setStyles' }) imageMaxHeight;\r\n @bindable displayNameField = false;\r\n @bindable open;\r\n\r\n @observable dropzoneFileName = '';\r\n\r\n constructor(element, security, notifier, i18n) {\r\n this._element = element;\r\n this._security = security;\r\n this._notifier = notifier;\r\n this._i18n = i18n;\r\n\t}\r\n\r\n attached() {\r\n this._setStyles();\r\n this._initializeDropzone();\r\n }\r\n\r\n detached() {\r\n if (!this._dz) return;\r\n try {\r\n this._dz.destroy();\r\n this._dz = undefined;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n dropzoneFileNameChanged() {\r\n this._setFormAction();\r\n }\r\n\r\n openChanged() {\r\n if (!this.open) return;\r\n if (!this._dz) return;\r\n this._dz.hiddenFileInput.click();\r\n }\r\n\r\n @computedFrom('displayNameField', 'dropzoneFileName')\r\n get disableUploadButton() {\r\n if (!this.displayNameField) return true;\r\n return this.dropzoneFileName ? false : true;\r\n }\r\n\r\n _setStyles() {\r\n const containerStyle = {};\r\n const imageStyle = {};\r\n if (this.imageBgColor) containerStyle['background-color'] = this.imageBgColor;\r\n if (this.imageMaxHeight) imageStyle['max-height'] = this.imageMaxHeight;\r\n this.imageContainerStyle = containerStyle;\r\n this.imageStyle = imageStyle;\r\n }\r\n\r\n formActionChanged() {\r\n this._setFormAction();\r\n }\r\n\r\n _setFormAction() {\r\n if (!this._dz) return;\r\n try {\r\n let formAction = this.formAction;\r\n if (this.formAction) {\r\n const connector = formAction.indexOf('?') >= 0 ? '&' : '?';\r\n if (this.displayNameField && this.dropzoneFileName) formAction += `${connector}displayName=${encodeURIComponent(this.dropzoneFileName)}`;\r\n }\r\n this._dz.options.url = formAction;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n imageSrcChanged() {\r\n\r\n }\r\n\r\n uploadFileWithName(e) {\r\n try {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._dz.processQueue();\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n displayNameFieldChanged() {\r\n if (!this._dz) return;\r\n this._dz.options.autoProcessQueue = !this.displayNameField;\r\n }\r\n\r\n\t_initializeDropzone() {\r\n\t\tconst me = this;\r\n\t\tconst d = new Date();\r\n\t\tconst timezoneOffset = d.getTimezoneOffset();\r\n\r\n\t\tthis._dz = new Dropzone(this.dropzoneEl, {\r\n\t\t\tdictDefaultMessage: me._i18n.tr(this.messageKey),\r\n\t\t\tparamName: 'file',\r\n\t\t\tmaxFilesize: 10, // MB\r\n\t\t\theaders: { 'Authorization': 'Bearer ' + this._security.token, 'X-LEGACY-TimezoneOffset': timezoneOffset },\r\n\t\t\tacceptedFiles: this.extensions,\r\n\t\t\tmaxFiles: 1,\r\n timeout: 360000,\r\n autoProcessQueue: !this.displayNameField,\r\n\t\t\tinit: function () {\r\n\t\t\t\tthis.on('addedfile', function (file) {\r\n me.processing = true;\r\n\t\t\t\t});\r\n\t\t\t\tthis.on('success', function (file, response) {\r\n\t\t\t\t\tthis.removeFile(file);\r\n me.processing = false;\r\n me.dropzoneFileName = '';\r\n me._updateImageSrc();\r\n me._element.dispatchEvent(new CustomEvent('uploaded', { bubbles: true, detail: {} }));\r\n if (me.successKey) me._notifier.success(me.successKey);\r\n\t\t\t\t});\r\n\t\t\t\tthis.on('error', function (file, error, x) {\r\n this.removeAllFiles();\r\n if (me.errorKey) me._notifier.error(me.errorKey);\r\n\t\t\t\t\telse me._notifier.errorText('Error.
' + error.message);\r\n me.processing = false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n _updateImageSrc() {\r\n if (!this.imageSrc) return;\r\n try {\r\n const qsIndex = this.imageSrc.indexOf('?');\r\n let newImageSrc = qsIndex >= 0 ? this.imageSrc.substr(0, qsIndex) : this.imageSrc;\r\n newImageSrc += `?cb=${new Date().getTime()}`;\r\n this.imageSrc = newImageSrc;\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n}\r\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".clr-picker {\\n z-index: 4000;\\n}\\n\\n.square .clr-field button,\\n.circle .clr-field button {\\n width: 22px;\\n height: 22px;\\n left: 5px;\\n right: auto;\\n border-radius: 5px;\\n}\\n\\n.clr-field input {\\n width: 150px;\\n height: 32px;\\n padding: 0 10px;\\n border: 1px solid #ccc;\\n border-radius: 5px;\\n font-family: inherit;\\n font-size: inherit;\\n font-weight: inherit;\\n box-sizing: border-box;\\n}\\n\\n.square .clr-field input,\\n.circle .clr-field input {\\n padding-left: 36px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/color-picker/color-picker.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,aAAA;AACJ;;AAEA;;EAEI,WAAA;EACA,YAAA;EACA,SAAA;EACA,WAAA;EACA,kBAAA;AACJ;;AAEA;EACI,YAAA;EACA,YAAA;EACA,eAAA;EACA,sBAAA;EACA,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,oBAAA;EACA,sBAAA;AACJ;;AAEA;;EAEI,kBAAA;AACJ\",\"sourcesContent\":[\".clr-picker {\\r\\n z-index: 4000;\\r\\n}\\r\\n\\r\\n.square .clr-field button,\\r\\n.circle .clr-field button {\\r\\n width: 22px;\\r\\n height: 22px;\\r\\n left: 5px;\\r\\n right: auto;\\r\\n border-radius: 5px;\\r\\n}\\r\\n\\r\\n.clr-field input {\\r\\n width: 150px;\\r\\n height: 32px;\\r\\n padding: 0 10px;\\r\\n border: 1px solid #ccc;\\r\\n border-radius: 5px;\\r\\n font-family: inherit;\\r\\n font-size: inherit;\\r\\n font-weight: inherit;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\\r\\n.square .clr-field input,\\r\\n.circle .clr-field input {\\r\\n padding-left: 36px;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".zeus-view-all-levels {\\n display: block;\\n padding: var(--zeus-margin-sm);\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/commission-grid/commission-grid.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,cAAA;EACA,8BAAA;AACJ\",\"sourcesContent\":[\".zeus-view-all-levels {\\r\\n display: block;\\r\\n padding: var(--zeus-margin-sm);\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"container-and-drawer.zeus-cad-full-height content-view .content-view-container {\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n}\\ncontainer-and-drawer.zeus-cad-full-height content-view .content-view-container .content-view-container-html {\\n height: 100%;\\n}\\ncontainer-and-drawer.zeus-cad-full-height content-view .content-view-container .content-view-container-html .video-embed-container {\\n height: 100%;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/container-and-drawer/container-and-drawer.scss\"],\"names\":[],\"mappings\":\"AAGY;EACI,aAAA;EACA,sBAAA;EACA,YAAA;AAFhB;AAIgB;EACI,YAAA;AAFpB;AAIoB;EACI,YAAA;AAFxB\",\"sourcesContent\":[\"container-and-drawer {\\r\\n &.zeus-cad-full-height {\\r\\n content-view {\\r\\n .content-view-container {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n height: 100%;\\r\\n\\r\\n .content-view-container-html {\\r\\n height: 100%;\\r\\n\\r\\n .video-embed-container {\\r\\n height: 100%;\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"content-view {\\n position: relative;\\n}\\n\\n.content-view-container {\\n position: relative;\\n}\\n\\n.content-view-container > h2.content-title {\\n font-size: 26px !important;\\n}\\n\\n.content-view-container > .content-view-container-html img {\\n max-width: 100% !important;\\n height: auto !important;\\n padding: 10px;\\n}\\n\\n.content-view-container.only-editor .content-view-admin,\\n.content-view-container.only-editor > h2,\\n.content-view-container.only-editor .content-view-container-html {\\n display: none !important;\\n}\\n\\n.content-view-container > .content-view-container-html .slider-wrapper img {\\n padding: 0;\\n}\\n\\n.content-view-container-html > p {\\n width: 100%;\\n}\\n\\nbody .content-view-admin,\\nbody .admin-tools,\\nbody .show-on-hover-trigger:hover .show-on-hover.admin-tools {\\n display: none;\\n}\\n\\n.content-view-admin {\\n position: absolute;\\n right: 0px;\\n top: 0px;\\n z-index: 51;\\n border: 0px solid #dedede;\\n border-radius: 3px;\\n padding: 4px 6px;\\n background-color: rgba(255, 255, 255, 0.5);\\n}\\n\\n.content-view-admin.has-navbar {\\n right: -35px;\\n}\\n\\ndiv.row .content-view-admin {\\n right: 15px;\\n}\\n\\n.content-view-admin > a {\\n font-size: 25px !important;\\n opacity: 0.2;\\n}\\n.content-view-admin > a i {\\n font-size: 25px !important;\\n}\\n\\n.content-view-admin > a:hover {\\n cursor: pointer;\\n color: var(--zeus-link-color);\\n opacity: 1;\\n}\\n\\nbody.admin-tools-on .content-view-admin,\\nbody.admin-tools-on .admin-tools,\\nbody.admin-tools-on .show-on-hover-trigger:hover .show-on-hover.admin-tools {\\n display: inline-block;\\n}\\n\\nbody.admin-tools-on .content-view-admin.display-block,\\nbody.admin-tools-on .admin-tools.display-block,\\nbody.admin-tools-on .show-on-hover-trigger:hover .show-on-hover.admin-tools.display-block {\\n display: block;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/content-view/content-view.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,kBAAA;AACJ;;AAEA;EACI,kBAAA;AACJ;;AAEA;EACI,0BAAA;AACJ;;AAEA;EACI,0BAAA;EACA,uBAAA;EACA,aAAA;AACJ;;AAEA;;;EAGI,wBAAA;AACJ;;AAEA;EACI,UAAA;AACJ;;AAEA;EACI,WAAA;AACJ;;AAEA;;;EAGI,aAAA;AACJ;;AAEA;EACI,kBAAA;EACA,UAAA;EACA,QAAA;EACA,WAAA;EACA,yBAAA;EACA,kBAAA;EACA,gBAAA;EACA,0CAAA;AACJ;;AAEA;EACI,YAAA;AACJ;;AAEA;EACI,WAAA;AACJ;;AAKA;EACI,0BAAA;EACA,YAAA;AAFJ;AAII;EACI,0BAAA;AAFR;;AAMA;EACI,eAAA;EACA,6BAAA;EACA,UAAA;AAHJ;;AAMA;;;EAGI,qBAAA;AAHJ;;AAMA;;;EAGI,cAAA;AAHJ\",\"sourcesContent\":[\"content-view {\\r\\n position: relative;\\r\\n}\\r\\n\\r\\n.content-view-container {\\r\\n position: relative;\\r\\n}\\r\\n\\r\\n.content-view-container > h2.content-title {\\r\\n font-size: 26px !important;\\r\\n}\\r\\n\\r\\n.content-view-container > .content-view-container-html img {\\r\\n max-width: 100% !important;\\r\\n height: auto !important;\\r\\n padding: 10px;\\r\\n}\\r\\n\\r\\n.content-view-container.only-editor .content-view-admin,\\r\\n.content-view-container.only-editor > h2,\\r\\n.content-view-container.only-editor .content-view-container-html {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n.content-view-container > .content-view-container-html .slider-wrapper img {\\r\\n padding: 0;\\r\\n}\\r\\n\\r\\n.content-view-container-html > p {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\nbody .content-view-admin,\\r\\nbody .admin-tools,\\r\\nbody .show-on-hover-trigger:hover .show-on-hover.admin-tools {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.content-view-admin {\\r\\n position: absolute;\\r\\n right: 0px;\\r\\n top: 0px;\\r\\n z-index: 51;\\r\\n border: 0px solid #dedede;\\r\\n border-radius: 3px;\\r\\n padding: 4px 6px;\\r\\n background-color: rgba(255, 255, 255, 0.5);\\r\\n}\\r\\n\\r\\n.content-view-admin.has-navbar {\\r\\n right: -35px;\\r\\n}\\r\\n\\r\\ndiv.row .content-view-admin {\\r\\n right: 15px;\\r\\n}\\r\\n\\r\\n.content-view-admin:hover {\\r\\n}\\r\\n\\r\\n.content-view-admin > a {\\r\\n font-size: 25px !important;\\r\\n opacity: .20;\\r\\n\\r\\n i {\\r\\n font-size: 25px !important;\\r\\n }\\r\\n}\\r\\n\\r\\n.content-view-admin > a:hover {\\r\\n cursor: pointer;\\r\\n color: var(--zeus-link-color);\\r\\n opacity: 1;\\r\\n}\\r\\n\\r\\nbody.admin-tools-on .content-view-admin,\\r\\nbody.admin-tools-on .admin-tools,\\r\\nbody.admin-tools-on .show-on-hover-trigger:hover .show-on-hover.admin-tools {\\r\\n display: inline-block;\\r\\n}\\r\\n\\r\\nbody.admin-tools-on .content-view-admin.display-block,\\r\\nbody.admin-tools-on .admin-tools.display-block,\\r\\nbody.admin-tools-on .show-on-hover-trigger:hover .show-on-hover.admin-tools.display-block {\\r\\n display: block;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".zeus-contest-progress-container {\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n overflow: hidden;\\n}\\n\\n.zeus-contest-header {\\n flex: 20%;\\n}\\n\\n.zeus-contest-progress {\\n flex: 75%;\\n max-height: 75%;\\n position: relative;\\n}\\n.zeus-contest-progress .zeus-contest-progress-gradient {\\n position: absolute;\\n}\\n.zeus-contest-progress .zeus-contest-progress-image {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n height: 100%;\\n margin: auto;\\n max-width: 100%;\\n max-height: 100%;\\n width: 100%;\\n}\\n.zeus-contest-progress .zeus-contest-progress-level-lines {\\n position: absolute;\\n}\\n.zeus-contest-progress .zeus-contest-progress-level-lines .zeus-contest-progress-level-line {\\n position: absolute;\\n border-bottom: 1px solid black;\\n left: 0;\\n right: 0;\\n color: var(--bs-body-color);\\n font-size: 0.75em;\\n line-height: 1.05em;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/contest-standings/contest-progress.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,aAAA;EACA,sBAAA;EACA,YAAA;EACA,gBAAA;AACJ;;AAEA;EACI,SAAA;AACJ;;AAEA;EACI,SAAA;EACA,eAAA;EACA,kBAAA;AACJ;AACI;EACI,kBAAA;AACR;AAEI;EACI,kBAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,SAAA;EACA,aAAA;EACA,YAAA;EACA,YAAA;EACA,eAAA;EACA,gBAAA;EACA,WAAA;AAAR;AAGI;EACI,kBAAA;AADR;AAGQ;EACI,kBAAA;EACA,8BAAA;EACA,OAAA;EACA,QAAA;EACA,2BAAA;EACA,iBAAA;EACA,mBAAA;AADZ\",\"sourcesContent\":[\".zeus-contest-progress-container {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n height: 100%;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\n.zeus-contest-header {\\r\\n flex: 20%;\\r\\n}\\r\\n\\r\\n.zeus-contest-progress {\\r\\n flex: 75%;\\r\\n max-height: 75%;\\r\\n position: relative;\\r\\n\\r\\n .zeus-contest-progress-gradient {\\r\\n position: absolute;\\r\\n }\\r\\n\\r\\n .zeus-contest-progress-image {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n right: 0;\\r\\n bottom: 0;\\r\\n display: flex;\\r\\n height: 100%;\\r\\n margin: auto;\\r\\n max-width: 100%;\\r\\n max-height: 100%;\\r\\n width: 100%;\\r\\n }\\r\\n\\r\\n .zeus-contest-progress-level-lines {\\r\\n position: absolute;\\r\\n\\r\\n .zeus-contest-progress-level-line {\\r\\n position: absolute;\\r\\n border-bottom: 1px solid black;\\r\\n left: 0;\\r\\n right: 0;\\r\\n color: var(--bs-body-color);\\r\\n font-size: 0.75em;\\r\\n line-height: 1.05em;\\r\\n }\\r\\n }\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"contest-standings .zeus-container {\\n display: flex;\\n flex-direction: column;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/contest-standings/contest-standings.scss\"],\"names\":[],\"mappings\":\"AACI;EACI,aAAA;EACA,sBAAA;AAAR\",\"sourcesContent\":[\"contest-standings {\\r\\n .zeus-container {\\r\\n display: flex;\\r\\n flex-direction: column;\\r\\n }\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".zeus-dashboard-edit {\\n position: fixed;\\n left: var(--zeus-margin);\\n top: 160px;\\n display: none;\\n}\\n@media (min-width: 992px) {\\n .zeus-dashboard-edit {\\n display: block;\\n }\\n}\\n\\n.zeus-personal-dashboard-edit {\\n display: none;\\n}\\n@media (min-width: 992px) {\\n .zeus-personal-dashboard-edit {\\n display: block;\\n }\\n}\\n\\n.zeus-dashboard-buttons button {\\n margin-bottom: var(--zeus-margin-sm);\\n display: block;\\n}\\n.zeus-dashboard-buttons button span {\\n display: none;\\n margin-left: var(--zeus-margin-sm);\\n}\\n.zeus-dashboard-buttons button:hover span {\\n display: inline-block;\\n}\\n\\n.grid-stack {\\n background: transparent;\\n}\\n.grid-stack.grid-stack-static {\\n border: none;\\n}\\n\\n.grid-stack-item-content {\\n text-align: center;\\n background-color: var(--kt-primary);\\n color: white;\\n border-radius: var(--zeus-margin);\\n}\\n.grid-stack-item-content .zeus-dashboard-widget-icon > svg {\\n font-size: 150%;\\n}\\n.grid-stack-item-content .zeus-dashboard-widget-name {\\n font-size: 1em;\\n}\\n.grid-stack-item-content .zeus-dashboard-widget-default-size {\\n font-size: 0.7em;\\n}\\n.grid-stack-item-content.zeus-dashboard-widget {\\n background-color: transparent;\\n color: inherit;\\n border: 2px dashed var(--kt-primary);\\n text-align: inherit;\\n}\\n\\n.zeus-dashboard-new-widget .grid-stack-item-content {\\n padding: var(--zeus-margin-sm);\\n}\\n\\n.zeus-dashboard-widget-search {\\n position: fixed;\\n top: 235px;\\n left: 0;\\n width: 300px;\\n height: 40px;\\n z-index: 999;\\n}\\n\\n.zeus-dashboard-widget-scroller {\\n position: fixed;\\n left: 0;\\n height: 30px;\\n width: 300px;\\n text-decoration: none;\\n text-align: center;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n z-index: 999;\\n}\\n.zeus-dashboard-widget-scroller.zeus-dashboard-widget-scroller-top {\\n top: 275px;\\n border-top-left-radius: var(--zeus-margin);\\n border-top-right-radius: var(--zeus-margin);\\n}\\n.zeus-dashboard-widget-scroller.zeus-dashboard-widget-scroller-bottom {\\n bottom: 70px;\\n border-bottom-left-radius: var(--zeus-margin);\\n border-bottom-right-radius: var(--zeus-margin);\\n}\\n.zeus-dashboard-widget-scroller:hover {\\n text-decoration: none;\\n}\\n\\n.zeus-dashboard-widgets-container {\\n position: fixed;\\n left: 0;\\n top: 305px;\\n width: 300px;\\n bottom: 100px;\\n z-index: 999;\\n overflow: hidden;\\n overflow-y: auto;\\n padding: var(--zeus-margin-sm);\\n padding-bottom: var(--zeus-margin-lg);\\n padding-top: var(--zeus-margin-lg);\\n background: white;\\n border-right: 1px solid var(--kt-card-border-color);\\n}\\n.zeus-dashboard-widgets-container .zeus-dashboard-new-widget {\\n border-radius: 10px;\\n background-color: var(--kt-primary);\\n width: 100px;\\n min-width: 100px;\\n margin-top: var(--zeus-margin-sm);\\n margin-bottom: var(--zeus-margin-sm);\\n margin-left: auto;\\n margin-right: auto;\\n}\\n.zeus-dashboard-widgets-container .zeus-dashboard-new-widget:hover {\\n cursor: move;\\n}\\n\\n.grid-stack-item.ui-draggable:hover {\\n cursor: move;\\n}\\n\\n.zeus-dashboard-widget .zeus-dashboard-widget-button {\\n display: none !important;\\n position: absolute;\\n z-index: 90;\\n font-size: 1.2em;\\n background-color: var(--kt-primary);\\n opacity: 0.2;\\n width: 40px;\\n height: 40px;\\n border: 1px solid var(--kt-primary-light);\\n box-shadow: 2px 3px 3px var(--kt-primary-light);\\n border-radius: 40px;\\n justify-content: center;\\n align-items: center;\\n}\\n.zeus-dashboard-widget .zeus-dashboard-widget-button:hover {\\n opacity: 1;\\n}\\n.zeus-dashboard-widget .zeus-dashboard-widget-remove {\\n right: 0px;\\n top: 0px;\\n color: red;\\n}\\n.zeus-dashboard-widget .zeus-dashboard-widget-big-button {\\n right: 100px;\\n top: 0px;\\n}\\n.zeus-dashboard-widget .zeus-dashboard-widget-settings-toggle {\\n right: 50px;\\n top: 0px;\\n}\\n.zeus-dashboard-widget:hover .zeus-dashboard-widget-button {\\n opacity: 1;\\n}\\n.zeus-dashboard-widget .zeus-container {\\n height: 100%;\\n}\\n.grid-stack.grid-stack-editable {\\n border-radius: var(--zeus-margin-lg);\\n border: 1px dashed var(--kt-primary);\\n min-height: 250px;\\n}\\n.grid-stack.grid-stack-editable .zeus-dashboard-widget-button {\\n display: inline-flex !important;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/dashboard-builder/dashboard-builder.scss\"],\"names\":[],\"mappings\":\"AAIA;EACI,eAAA;EACA,wBAAA;EACA,UAAA;EACA,aAAA;AAHJ;AAKI;EANJ;IAOQ,cAAA;EAFN;AACF;;AAKA;EACI,aAAA;AAFJ;AAGI;EAFJ;IAGQ,cAAA;EAAN;AACF;;AAII;EACI,oCAAA;EACA,cAAA;AADR;AAEQ;EACI,aAAA;EACA,kCAAA;AAAZ;AAIY;EACI,qBAAA;AAFhB;;AAQA;EACI,uBAAA;AALJ;AAOI;EACI,YAAA;AALR;;AASA;EACI,kBAAA;EACA,mCAAA;EACA,YAAA;EACA,iCAAA;AANJ;AAQI;EACI,eAAA;AANR;AASI;EACI,cAAA;AAPR;AAUI;EACI,gBAAA;AARR;AAWI;EACI,6BAAA;EACA,cAAA;EACA,oCAAA;EACA,mBAAA;AATR;;AAcI;EACI,8BAAA;AAXR;;AAeA;EACI,eAAA;EACA,UAAA;EACA,OAAA;EACA,YAjFU;EAkFV,YAAA;EACA,YAAA;AAZJ;;AAeA;EACI,eAAA;EACA,OAAA;EACA,YAAA;EACA,YA1FU;EA2FV,qBAAA;EACA,kBAAA;EACA,aAAA;EACA,uBAAA;EACA,mBAAA;EACA,YAAA;AAZJ;AAcI;EACI,UAAA;EACA,0CAAA;EACA,2CAAA;AAZR;AAcI;EACI,YAAA;EACA,6CAAA;EACA,8CAAA;AAZR;AAeI;EACI,qBAAA;AAbR;;AAiBA;EACI,eAAA;EACA,OAAA;EACA,UAAA;EACA,YAtHU;EAuHV,aAAA;EACA,YAAA;EACA,gBAAA;EACA,gBAAA;EACA,8BAAA;EACA,qCAAA;EACA,kCAAA;EACA,iBAAA;EACA,mDAAA;AAdJ;AAgBI;EACI,mBAAA;EACA,mCAAA;EACA,YAAA;EACA,gBAAA;EACA,iCAAA;EACA,oCAAA;EACA,iBAAA;EACA,kBAAA;AAdR;AAgBQ;EACI,YAAA;AAdZ;;AAmBA;EACI,YAAA;AAhBJ;;AAoBI;EACI,wBAAA;EACA,kBAAA;EACA,WAAA;EACA,gBAAA;EACA,mCAAA;EACA,YAAA;EACA,WAAA;EACA,YAAA;EACA,yCAAA;EACA,+CAAA;EACA,mBAAA;EACA,uBAAA;EACA,mBAAA;AAjBR;AAmBQ;EACI,UAAA;AAjBZ;AAqBI;EACI,UAAA;EACA,QAAA;EACA,UAAA;AAnBR;AAsBI;EACI,YAAA;EACA,QAAA;AApBR;AAuBI;EACI,WAAA;EACA,QAAA;AArBR;AAyBQ;EACI,UAAA;AAvBZ;AA2BI;EACI,YAAA;AAzBR;AAsCA;EACI,oCAAA;EACA,oCAAA;EACA,iBAAA;AApCJ;AAsCI;EACI,+BAAA;AApCR\",\"sourcesContent\":[\"@import \\\"./../../../styles/responsive.scss\\\";\\r\\n\\r\\n$editorWidth: 300px;\\r\\n\\r\\n.zeus-dashboard-edit {\\r\\n position: fixed;\\r\\n left: var(--zeus-margin);\\r\\n top: 160px;\\r\\n display: none;\\r\\n \\r\\n @media (min-width: $zeus-screen-md-min) {\\r\\n display: block;\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-personal-dashboard-edit {\\r\\n display: none;\\r\\n @media (min-width: $zeus-screen-md-min) {\\r\\n display: block;\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-dashboard-buttons {\\r\\n button {\\r\\n margin-bottom: var(--zeus-margin-sm);\\r\\n display: block;\\r\\n span {\\r\\n display: none;\\r\\n margin-left: var(--zeus-margin-sm);\\r\\n }\\r\\n\\r\\n &:hover {\\r\\n span {\\r\\n display: inline-block;\\r\\n }\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n.grid-stack {\\r\\n background: transparent;\\r\\n\\r\\n &.grid-stack-static {\\r\\n border: none;\\r\\n }\\r\\n}\\r\\n\\r\\n.grid-stack-item-content {\\r\\n text-align: center;\\r\\n background-color: var(--kt-primary);\\r\\n color: white;\\r\\n border-radius: var(--zeus-margin);\\r\\n\\r\\n .zeus-dashboard-widget-icon > svg {\\r\\n font-size: 150%;\\r\\n }\\r\\n\\r\\n .zeus-dashboard-widget-name {\\r\\n font-size: 1em;\\r\\n }\\r\\n\\r\\n .zeus-dashboard-widget-default-size {\\r\\n font-size: 0.7em;\\r\\n }\\r\\n\\r\\n &.zeus-dashboard-widget {\\r\\n background-color: transparent;\\r\\n color: inherit;\\r\\n border: 2px dashed var(--kt-primary);\\r\\n text-align: inherit;\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-dashboard-new-widget {\\r\\n .grid-stack-item-content {\\r\\n padding: var(--zeus-margin-sm);\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-dashboard-widget-search {\\r\\n position: fixed;\\r\\n top: 235px;\\r\\n left: 0;\\r\\n width: $editorWidth;\\r\\n height: 40px;\\r\\n z-index: 999;\\r\\n}\\r\\n\\r\\n.zeus-dashboard-widget-scroller {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n height: 30px;\\r\\n width: $editorWidth;\\r\\n text-decoration: none;\\r\\n text-align: center;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n z-index: 999;\\r\\n\\r\\n &.zeus-dashboard-widget-scroller-top {\\r\\n top: 275px;\\r\\n border-top-left-radius: var(--zeus-margin);\\r\\n border-top-right-radius: var(--zeus-margin);\\r\\n }\\r\\n &.zeus-dashboard-widget-scroller-bottom {\\r\\n bottom: 70px;\\r\\n border-bottom-left-radius: var(--zeus-margin);\\r\\n border-bottom-right-radius: var(--zeus-margin);\\r\\n }\\r\\n\\r\\n &:hover {\\r\\n text-decoration: none;\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-dashboard-widgets-container {\\r\\n position: fixed;\\r\\n left: 0;\\r\\n top: 305px;\\r\\n width: $editorWidth;\\r\\n bottom: 100px;\\r\\n z-index: 999;\\r\\n overflow: hidden;\\r\\n overflow-y: auto;\\r\\n padding: var(--zeus-margin-sm);\\r\\n padding-bottom: var(--zeus-margin-lg);\\r\\n padding-top: var(--zeus-margin-lg);\\r\\n background: white;\\r\\n border-right: 1px solid var(--kt-card-border-color);\\r\\n\\r\\n .zeus-dashboard-new-widget {\\r\\n border-radius: 10px;\\r\\n background-color: var(--kt-primary);\\r\\n width: 100px;\\r\\n min-width: 100px;\\r\\n margin-top: var(--zeus-margin-sm);\\r\\n margin-bottom: var(--zeus-margin-sm);\\r\\n margin-left: auto;\\r\\n margin-right: auto;\\r\\n\\r\\n &:hover {\\r\\n cursor: move;\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n.grid-stack-item.ui-draggable:hover {\\r\\n cursor: move;\\r\\n}\\r\\n\\r\\n.zeus-dashboard-widget {\\r\\n .zeus-dashboard-widget-button {\\r\\n display: none !important;\\r\\n position: absolute;\\r\\n z-index: 90;\\r\\n font-size: 1.2em;\\r\\n background-color: var(--kt-primary);\\r\\n opacity: 0.2;\\r\\n width: 40px;\\r\\n height: 40px;\\r\\n border: 1px solid var(--kt-primary-light);\\r\\n box-shadow: 2px 3px 3px var(--kt-primary-light);\\r\\n border-radius: 40px;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n\\r\\n &:hover {\\r\\n opacity: 1;\\r\\n }\\r\\n }\\r\\n\\r\\n .zeus-dashboard-widget-remove {\\r\\n right: 0px;\\r\\n top: 0px;\\r\\n color: red;\\r\\n }\\r\\n\\r\\n .zeus-dashboard-widget-big-button {\\r\\n right: 100px;\\r\\n top: 0px;\\r\\n }\\r\\n\\r\\n .zeus-dashboard-widget-settings-toggle {\\r\\n right: 50px;\\r\\n top: 0px;\\r\\n }\\r\\n\\r\\n &:hover {\\r\\n .zeus-dashboard-widget-button {\\r\\n opacity: 1;\\r\\n }\\r\\n }\\r\\n\\r\\n .zeus-container {\\r\\n height: 100%;\\r\\n //display: flex;\\r\\n //flex-direction: column;\\r\\n }\\r\\n\\r\\n .zeus-container-flex {\\r\\n .zeus-container {\\r\\n //display: flex;\\r\\n //flex-direction: column;\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n.grid-stack.grid-stack-editable {\\r\\n border-radius: var(--zeus-margin-lg);\\r\\n border: 1px dashed var(--kt-primary);\\r\\n min-height: 250px;\\r\\n\\r\\n .zeus-dashboard-widget-button {\\r\\n display: inline-flex !important;\\r\\n }\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"date-picker {\\n display: flex;\\n}\\ndate-picker.zeus-datepicker-icon-only {\\n display: inline-block !important;\\n}\\n\\n.flatpickr-day.inRange,\\n.flatpickr-day.prevMonthDay.inRange,\\n.flatpickr-day.nextMonthDay.inRange,\\n.flatpickr-day.today.inRange,\\n.flatpickr-day.prevMonthDay.today.inRange,\\n.flatpickr-day.nextMonthDay.today.inRange,\\n.flatpickr-day:hover,\\n.flatpickr-day.prevMonthDay:hover,\\n.flatpickr-day.nextMonthDay:hover,\\n.flatpickr-day:focus,\\n.flatpickr-day.prevMonthDay:focus,\\n.flatpickr-day.nextMonthDay:focus {\\n background: var(--kt-primary) !important;\\n color: var(--kt-primary-inverse) !important;\\n border-color: var(--kt-primary) !important;\\n}\\n\\n.flatpickr-day.flatpickr-disabled,\\n.flatpickr-day.flatpickr-disabled:hover {\\n border-color: transparent !important;\\n background-color: transparent !important;\\n cursor: default !important;\\n}\\n\\n.flatpickr-day.selected {\\n background-color: var(--kt-primary) !important;\\n color: var(--kt-primary-inverse) !important;\\n}\\n\\n.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {\\n border-top: solid 1px var(--kt-primary) !important;\\n background-color: var(--kt-primary) !important;\\n}\\n\\n.zeus-datepicker {\\n display: inline-block !important;\\n text-align: left;\\n margin-right: var(--zeus-margin-sm);\\n border-width: 1px !important;\\n}\\n.zeus-datepicker:hover {\\n cursor: pointer;\\n color: var(--kt-primary);\\n}\\n.zeus-datepicker:focus, .zeus-datepicker:focus:active {\\n box-shadow: none !important;\\n}\\n.zeus-datepicker.zeus-datepicker-icon-only {\\n width: 0 !important;\\n height: 0 !important;\\n border-width: 0 !important;\\n padding: 0 !important;\\n}\\n\\n.zeus-datepicker-theme-dark {\\n color: white !important;\\n}\\n\\n.zeus-datepicker-datetime {\\n width: 260px !important;\\n margin-right: 0;\\n}\\n\\n.zeus-datepicker-date {\\n width: 165px !important;\\n margin-right: 0;\\n}\\n\\n.zeus-datepicker-time {\\n width: 165px !important;\\n margin-right: 0;\\n}\\n\\n.zeus-datepicker-range {\\n width: 225px !important;\\n margin-right: 0;\\n}\\n\\n.zeus-datepicker-month {\\n width: 100px !important;\\n}\\n\\n.zeus-datepicker-container {\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n}\\n\\n.zeus-datetime-no-date {\\n font-style: italic;\\n color: black;\\n text-decoration: none;\\n}\\n.zeus-datetime-no-date.zeus-datepicker-theme-dark {\\n color: white;\\n}\\n.zeus-datetime-no-date:hover {\\n color: var(--kt-primary);\\n text-decoration: none;\\n}\\n\\n.flatpickr-calendar {\\n box-shadow: 1px 0 0 var(--kt-primary), -1px 0 0 var(--kt-primary), 0 1px 0 var(--kt-primary), 0 -1px 0 var(--kt-primary), 0 3px 13px rgba(0, 0, 0, 0.08);\\n}\\n\\n.zeus-datetime-disabled {\\n width: 100%;\\n}\\n\\n.zeus-datetime-button {\\n display: none;\\n}\\n.zeus-datetime-button.zeus-datetime-button-mobile {\\n display: inline-block;\\n}\\n@media screen and (min-width: 768px) {\\n .zeus-datetime-button {\\n display: inline-block;\\n }\\n}\\n\\n.zeus-datetime-container {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\n.zeus-datetime-container-no-value .zeus-datepicker {\\n width: 1px !important;\\n border-color: transparent !important;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/date-picker/date-picker.scss\"],\"names\":[],\"mappings\":\"AAEA;EACI,aAAA;AADJ;AAGI;EACI,gCAAA;AADR;;AAKA;;;;;;;;;;;;EAYI,wCAAA;EACA,2CAAA;EACA,0CAAA;AAFJ;;AAKA;;EAEI,oCAAA;EACA,wCAAA;EACA,0BAAA;AAFJ;;AAKA;EACI,8CAAA;EACA,2CAAA;AAFJ;;AAKA;EACI,kDAAA;EACA,8CAAA;AAFJ;;AAKA;EACI,gCAAA;EACA,gBAAA;EACA,mCAAA;EACA,4BAAA;AAFJ;AAII;EACI,eAAA;EACA,wBAAA;AAFR;AAKI;EACI,2BAAA;AAHR;AAKI;EACI,mBAAA;EACA,oBAAA;EACA,0BAAA;EACA,qBAAA;AAHR;;AAOA;EACI,uBAAA;AAJJ;;AAOA;EACI,uBAAA;EACA,eAAA;AAJJ;;AAMA;EACI,uBAAA;EACA,eAAA;AAHJ;;AAKA;EACI,uBAAA;EACA,eAAA;AAFJ;;AAIA;EACI,uBAAA;EACA,eAAA;AADJ;;AAGA;EACI,uBAAA;AAAJ;;AAGA;EACI,aAAA;EACA,2BAAA;EACA,mBAAA;AAAJ;;AAGA;EACI,kBAAA;EACA,YAAA;EACA,qBAAA;AAAJ;AAEI;EACI,YAAA;AAAR;AAGI;EACI,wBAAA;EACA,qBAAA;AADR;;AAKA;EACI,wJAAA;AAFJ;;AAKA;EACI,WAAA;AAFJ;;AAKA;EACI,aAAA;AAFJ;AAII;EACI,qBAAA;AAFR;AAKI;EAPJ;IAQQ,qBAAA;EAFN;AACF;;AAKA;EACI,oBAAA;EACA,mBAAA;AAFJ;;AAKA;EACI,qBAAA;EACA,oCAAA;AAFJ\",\"sourcesContent\":[\"@import \\\"./../../../styles/responsive.scss\\\";\\r\\n\\r\\ndate-picker {\\r\\n display: flex;\\r\\n\\r\\n &.zeus-datepicker-icon-only {\\r\\n display: inline-block !important;\\r\\n }\\r\\n}\\r\\n\\r\\n.flatpickr-day.inRange,\\r\\n.flatpickr-day.prevMonthDay.inRange,\\r\\n.flatpickr-day.nextMonthDay.inRange,\\r\\n.flatpickr-day.today.inRange,\\r\\n.flatpickr-day.prevMonthDay.today.inRange,\\r\\n.flatpickr-day.nextMonthDay.today.inRange,\\r\\n.flatpickr-day:hover,\\r\\n.flatpickr-day.prevMonthDay:hover,\\r\\n.flatpickr-day.nextMonthDay:hover,\\r\\n.flatpickr-day:focus,\\r\\n.flatpickr-day.prevMonthDay:focus,\\r\\n.flatpickr-day.nextMonthDay:focus {\\r\\n background: var(--kt-primary) !important;\\r\\n color: var(--kt-primary-inverse) !important;\\r\\n border-color: var(--kt-primary) !important;\\r\\n}\\r\\n\\r\\n.flatpickr-day.flatpickr-disabled,\\r\\n.flatpickr-day.flatpickr-disabled:hover {\\r\\n border-color: transparent !important;\\r\\n background-color: transparent !important;\\r\\n cursor: default !important;\\r\\n}\\r\\n\\r\\n.flatpickr-day.selected {\\r\\n background-color: var(--kt-primary) !important;\\r\\n color: var(--kt-primary-inverse) !important;\\r\\n}\\r\\n\\r\\n.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {\\r\\n border-top: solid 1px var(--kt-primary) !important;\\r\\n background-color: var(--kt-primary) !important;\\r\\n}\\r\\n\\r\\n.zeus-datepicker {\\r\\n display: inline-block !important;\\r\\n text-align: left;\\r\\n margin-right: var(--zeus-margin-sm);\\r\\n border-width: 1px !important;\\r\\n\\r\\n &:hover {\\r\\n cursor: pointer;\\r\\n color: var(--kt-primary);\\r\\n }\\r\\n\\r\\n &:focus, &:focus:active {\\r\\n box-shadow: none !important;\\r\\n }\\r\\n &.zeus-datepicker-icon-only {\\r\\n width: 0 !important;\\r\\n height: 0 !important;\\r\\n border-width: 0 !important;\\r\\n padding: 0 !important;\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-datepicker-theme-dark {\\r\\n color: white !important;\\r\\n}\\r\\n\\r\\n.zeus-datepicker-datetime {\\r\\n width: 260px !important;\\r\\n margin-right: 0;\\r\\n}\\r\\n.zeus-datepicker-date {\\r\\n width: 165px !important;\\r\\n margin-right: 0;\\r\\n}\\r\\n.zeus-datepicker-time {\\r\\n width: 165px !important;\\r\\n margin-right: 0;\\r\\n}\\r\\n.zeus-datepicker-range {\\r\\n width: 225px !important;\\r\\n margin-right: 0;\\r\\n}\\r\\n.zeus-datepicker-month {\\r\\n width: 100px !important;\\r\\n}\\r\\n\\r\\n.zeus-datepicker-container {\\r\\n display: flex;\\r\\n justify-content: flex-start;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\n.zeus-datetime-no-date {\\r\\n font-style: italic;\\r\\n color: black;\\r\\n text-decoration: none;\\r\\n\\r\\n &.zeus-datepicker-theme-dark {\\r\\n color: white;\\r\\n }\\r\\n\\r\\n &:hover {\\r\\n color: var(--kt-primary);\\r\\n text-decoration: none;\\r\\n }\\r\\n}\\r\\n\\r\\n.flatpickr-calendar {\\r\\n box-shadow: 1px 0 0 var(--kt-primary), -1px 0 0 var(--kt-primary), 0 1px 0 var(--kt-primary), 0 -1px 0 var(--kt-primary), 0 3px 13px rgba(0,0,0,0.08)\\r\\n}\\r\\n\\r\\n.zeus-datetime-disabled {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.zeus-datetime-button {\\r\\n display: none;\\r\\n\\r\\n &.zeus-datetime-button-mobile {\\r\\n display: inline-block;\\r\\n }\\r\\n\\r\\n @media screen and (min-width: $zeus-screen-sm-min) {\\r\\n display: inline-block;\\r\\n }\\r\\n}\\r\\n\\r\\n.zeus-datetime-container {\\r\\n display: inline-flex;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\n.zeus-datetime-container-no-value .zeus-datepicker {\\r\\n width: 1px !important;\\r\\n border-color: transparent !important;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".zeus-draggable-handle:hover {\\n cursor: grab;\\n}\\n.zeus-draggable-handle.zeus-dragging {\\n cursor: grabbing;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/draggable/draggable-handle.scss\"],\"names\":[],\"mappings\":\"AACI;EACI,YAAA;AAAR;AAEI;EACI,gBAAA;AAAR\",\"sourcesContent\":[\".zeus-draggable-handle {\\r\\n &:hover {\\r\\n cursor: grab;\\r\\n }\\r\\n &.zeus-dragging {\\r\\n cursor: grabbing;\\r\\n }\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".zeus-drilldown-object {\\n margin-bottom: var(--zeus-margin-xl);\\n}\\n.zeus-drilldown-object .zeus-drilldown-title {\\n font-weight: bold;\\n}\\n.zeus-drilldown-object .zeus-drilldown-object-space-between {\\n display: flex;\\n justify-content: space-between;\\n align-items: flex-start;\\n}\\n.zeus-drilldown-object .zeus-drilldown-object-space-between label {\\n margin-right: 0;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/resources/elements/drilldown-objects/drilldown-objects.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,oCAAA;AACJ;AACI;EACI,iBAAA;AACR;AAEI;EACI,aAAA;EACA,8BAAA;EACA,uBAAA;AAAR;AAEQ;EACI,eAAA;AAAZ\",\"sourcesContent\":[\".zeus-drilldown-object {\\r\\n margin-bottom: var(--zeus-margin-xl);\\r\\n\\r\\n .zeus-drilldown-title {\\r\\n font-weight: bold;\\r\\n }\\r\\n\\r\\n .zeus-drilldown-object-space-between {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: flex-start;\\r\\n\\r\\n label {\\r\\n margin-right: 0;\\r\\n }\\r\\n }\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;","// Module\nvar code = \"\\r\\n\";\n// Exports\nexport default code;"],"names":[],"sourceRoot":""}