{"version":3,"file":"1814.6f4aeb97.js","mappings":"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,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,QAg/BAO,EAAiD,CAC5D,CAACC,EAAAA,GAAQC,iBAAkBX,EAC3B,CAACU,EAAAA,GAAQE,SAAUZ,EACnBa,GAAIb,EACJc,IAAKd,EACLe,IAAKf,EACLgB,IAAKhB,EACLiB,IAAKjB,EACLkB,QA97HmB,CACnBjB,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAo9FXiB,IAAKhB,EACLiB,KAAMjB,EACNkB,KAAMlB,EACNmB,IAAKnB,EACLoB,IAAKpB,EACLqB,KAAMjB,EACNkB,OAAQzB,EACR0B,OAAQpB,EACRqB,KAAM3B,EACN4B,UA39FuB,CACvB3B,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAi/DX2B,cAAe7B,EACf8B,cAAe9B,GAGJ+B,EAAuD,CAClE,CAACrB,EAAAA,GAAQC,iBAAkBH,EAC3B,CAACE,EAAAA,GAAQE,SAAUJ,EACnBK,GAAIL,EACJM,IAAKN,EACLO,IAAKP,EACLQ,IAAKR,EACLS,IAAKT,EACLU,QA7gC0B,CAC1BjB,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,QAmCXiB,IAAKX,EACLY,KAAMZ,EACNa,KAAMb,EACNc,IAAKd,EACLe,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","sources":["webpack://@finviz/website/./js/app/quote/hooks/use-chart-layout-width-watch.ts","webpack://@finviz/website/./js/app/shared/getInitChartConfig.ts","webpack://@finviz/website/./js/app/shared/gradients.ts","webpack://@finviz/website/./js/main/components/checkbox.tsx","webpack://@finviz/website/./js/main/components/color-picker/draggable.tsx","webpack://@finviz/website/./js/main/components/color-picker/pointer.tsx","webpack://@finviz/website/./js/main/components/color-picker/util.ts","webpack://@finviz/website/./js/main/components/color-picker/alpha.tsx","webpack://@finviz/website/./js/main/components/color-picker/color-palette.tsx","webpack://@finviz/website/./js/main/components/color-picker/hue-saturation.tsx","webpack://@finviz/website/./js/main/components/color-picker/lightness.tsx","webpack://@finviz/website/./js/main/components/color-picker/color-preview.tsx","webpack://@finviz/website/./js/main/components/color-picker/picker-input.tsx","webpack://@finviz/website/./js/main/components/color-picker/picker.tsx","webpack://@finviz/website/./js/main/components/color-picker/picker-button.tsx","webpack://@finviz/website/./js/main/components/copy-to-clipboard/copy-to-clipboard.tsx","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/dropdown/dropdown.tsx","webpack://@finviz/website/./js/main/components/dropdown/dropdown-item.tsx","webpack://@finviz/website/./js/main/components/dropdown/hooks.ts","webpack://@finviz/website/./js/main/components/context-menu/context-menu.tsx","webpack://@finviz/website/./js/main/components/grid/grid.tsx","webpack://@finviz/website/./js/main/components/inner-state/inner-state.tsx","webpack://@finviz/website/./js/main/components/range.tsx","webpack://@finviz/website/./js/main/components/toolbar/interfaces.ts","webpack://@finviz/website/./js/main/components/toolbar/hooks.ts","webpack://@finviz/website/./js/main/components/toolbar/toolbar.tsx","webpack://@finviz/website/./js/main/components/toolbar/toolbar-button.tsx","webpack://@finviz/website/./js/main/components/toolbar/toolbar-group.tsx","webpack://@finviz/website/./js/main/components/toolbar/toolbar-item.tsx","webpack://@finviz/website/./js/main/components/toolbar/toolbar-divider.tsx","webpack://@finviz/website/./js/main/components/tour/step-content.tsx","webpack://@finviz/website/./js/main/components/tour/utils.ts","webpack://@finviz/website/./js/main/components/tour/hooks.tsx","webpack://@finviz/website/./js/main/components/tabs/tab.tsx","webpack://@finviz/website/./js/main/components/tabs/tab-list.tsx","webpack://@finviz/website/./js/main/components/tabs/tab-panel.tsx","webpack://@finviz/website/./js/main/components/tabs/tabs.tsx","webpack://@finviz/website/./js/main/components/badge.tsx","webpack://@finviz/website/./js/main/components/tag.tsx","webpack://@finviz/website/./js/main/components/notification/hooks.ts","webpack://@finviz/website/./js/main/components/notification/notification-wrapper.tsx","webpack://@finviz/website/./js/main/components/notification/with-notification-context.tsx","webpack://@finviz/website/./js/main/components/notification/notification.tsx","webpack://@finviz/website/./js/main/components/tooltip-input.tsx","webpack://@finviz/website/./js/main/hooks/use-window-size.tsx","webpack://@finviz/website/./js/main/hooks/useVisualViewport.ts","webpack://@finviz/website/../node_modules/react-router-dom/dist/index.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/5KB2YIDT.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/JJ3MV4KB.js"],"sourcesContent":["import { isForexFuturesCryptoPage } from 'finviz-charts/app/utils/chart'\r\nimport * as React from 'react'\r\n\r\nimport { TIMEFRAME } from '../../../main/constants'\r\nimport { useWindowSize } from '../../../main/hooks/use-window-size'\r\nimport { getIntradayChartConfig, useChartLayoutGlobalModelAsync, useModelState } from '../../charts-lib'\r\n\r\nexport function getChartLayoutSizeConfig(\r\n layoutConfig: Pick<\r\n typeof window.globalChartConfig,\r\n 'idea' | 'barWidth' | 'barMargin' | 'charts' | 'specificChartFunctionality'\r\n >,\r\n p = TIMEFRAME.d\r\n) {\r\n const { clientWidth } = document.body\r\n const { premarket, aftermarket, dateRange } = layoutConfig.charts[0]\r\n const maxChartWidth = clientWidth - 40 // 40px left right chart padding = (19px * 2 for margin left/right) + (1px * 2 for border)\r\n let width = 990\r\n let barWidth = 3\r\n let barMargin = 1\r\n let timeframeMinutes = 0\r\n const isForexFuturesCrypto =\r\n layoutConfig.specificChartFunctionality && isForexFuturesCryptoPage(layoutConfig.specificChartFunctionality)\r\n\r\n switch (p) {\r\n case TIMEFRAME.i1:\r\n timeframeMinutes = 1\r\n barWidth = 1\r\n if (premarket || aftermarket || clientWidth < 1650) {\r\n barMargin = 0\r\n }\r\n break\r\n case TIMEFRAME.i2:\r\n timeframeMinutes = 2\r\n break\r\n case TIMEFRAME.i3:\r\n timeframeMinutes = 3\r\n if (premarket && aftermarket && clientWidth <= 1505) {\r\n barWidth = 2\r\n }\r\n break\r\n case TIMEFRAME.i5:\r\n timeframeMinutes = 5\r\n barWidth = 5\r\n barMargin = clientWidth >= 1100 ? 2 : 1\r\n break\r\n case TIMEFRAME.i10:\r\n width = 1058 // 39bars per day * 5days * 5px per bar + 35px left offset + 48px right offset\r\n barMargin = 0\r\n break\r\n case TIMEFRAME.i15:\r\n case TIMEFRAME.i30:\r\n width = 1019\r\n break\r\n case TIMEFRAME.h:\r\n width = 1008\r\n break\r\n case TIMEFRAME.h2:\r\n case TIMEFRAME.h4:\r\n width = 1020\r\n break\r\n case TIMEFRAME.d:\r\n width = 1282\r\n break\r\n case TIMEFRAME.w:\r\n case TIMEFRAME.m:\r\n width = 994\r\n break\r\n }\r\n\r\n switch (p) {\r\n case TIMEFRAME.i1:\r\n case TIMEFRAME.i2:\r\n case TIMEFRAME.i3:\r\n case TIMEFRAME.i5:\r\n const commonProps = {\r\n timeframeMinutes,\r\n barWidthWithMargin: barWidth + 2 + barMargin,\r\n hasAftermarket: aftermarket,\r\n hasPremarket: premarket,\r\n }\r\n width = getIntradayChartConfig({\r\n ...commonProps,\r\n maxWidth: maxChartWidth,\r\n canCropChart: !dateRange,\r\n }).chartWidthWithOffset\r\n break\r\n }\r\n\r\n // If FFC chart use DAILY type width\r\n if (isForexFuturesCrypto) width = 1282\r\n\r\n // If chart is wider than available space in vieport override width\r\n if (maxChartWidth <= width) {\r\n width = Math.max(994, maxChartWidth)\r\n if (p === TIMEFRAME.d) {\r\n barWidth = 2\r\n barMargin = 0\r\n width = 991\r\n }\r\n }\r\n\r\n // If idea chart or FFC chart use bar configs from layout\r\n if (layoutConfig.idea || isForexFuturesCrypto) {\r\n barWidth = layoutConfig.barWidth\r\n barMargin = layoutConfig.barMargin\r\n }\r\n\r\n return {\r\n width,\r\n barWidth,\r\n barMargin,\r\n }\r\n}\r\n\r\nexport function useChartLayoutWidthWatch() {\r\n const { innerWidth } = useWindowSize()\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const unwatchedFirstChart = React.useMemo(() => chartLayoutModel?.charts().all()[0] ?? null, [chartLayoutModel])\r\n const chartModel = useModelState(unwatchedFirstChart, { watchProperties: ['quote'] })\r\n const quote = useModelState(chartModel?.quote() ?? null, { watchProperties: ['ticker', 'timeframe', 'isFetching'] })\r\n const ideaId = chartLayoutModel?.idea?.id\r\n\r\n React.useEffect(() => {\r\n const settings = !ideaId ? chartLayoutModel?.settings : null\r\n const timeframe = quote?.timeframe\r\n if (chartLayoutModel && timeframe && settings) {\r\n const { width, barWidth, barMargin } = getChartLayoutSizeConfig(chartLayoutModel.toConfig(), timeframe)\r\n const newSettings = JSON.parse(JSON.stringify(settings))\r\n newSettings.ChartSettings.center.barWidth = barWidth\r\n newSettings.IndicatorSettings.center.barWidth = barWidth\r\n newSettings.ChartSettings.center.barMargin = barMargin\r\n newSettings.IndicatorSettings.center.barMargin = barMargin\r\n chartLayoutModel.updateAttributes({ width, settings: newSettings })\r\n }\r\n // We don't want to trigger this effect on any chartLayoutModel change\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [quote?.premarket, quote?.aftermarket, quote?.timeframe, ideaId, innerWidth])\r\n}\r\n","import { ShrtflConfig } from 'finviz-charts/app/indicators/configs/shrtfl'\r\nimport { ShrtraConfig } from 'finviz-charts/app/indicators/configs/shrtra'\r\nimport { Position } from 'finviz-charts/types/shared'\r\n\r\nimport { QuoteRoutes } from '../../main/constants'\r\nimport { Utils, convertTa } from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\n\r\nexport function getInitChartConfig() {\r\n const { ty } = decodeQueryString<{ ty?: string }>()\r\n window.globalChartConfig.scrollable = false\r\n if (FinvizSettings.hasUserPremium) {\r\n window.globalChartConfig.scrollable = window.globalChartConfig.editable || !Utils.isMobile()\r\n }\r\n\r\n if (FinvizSettings.TA) {\r\n let finvizSettingsTa = FinvizSettings.TA\r\n const COTs = FinvizSettings.COTs\r\n if (ty === QuoteRoutes.ShortInterest) {\r\n finvizSettingsTa = {\r\n ...finvizSettingsTa,\r\n overlays: [],\r\n indicators: [\r\n {\r\n name: ShrtflConfig.abbreviation,\r\n parameters: '',\r\n position: Position.Below,\r\n },\r\n {\r\n name: ShrtraConfig.abbreviation,\r\n parameters: '',\r\n position: Position.Below,\r\n },\r\n ],\r\n }\r\n }\r\n convertTa.mergeChartAndTAConfig(window.globalChartConfig, finvizSettingsTa, COTs ? { COTs } : undefined)\r\n }\r\n\r\n return window.globalChartConfig\r\n}\r\n","import { ScaleId } from '../maps/types'\r\n\r\nexport interface GradientDefinition {\r\n colors: string[]\r\n nullColor: string\r\n}\r\n\r\nconst redGreenGradientSmall = {\r\n colors: [\r\n '#e01427',\r\n '#ce252b',\r\n '#bb2f30',\r\n '#aa3534',\r\n '#993938',\r\n '#853c3c',\r\n '#743d3f',\r\n '#414554',\r\n '#3e5f50',\r\n '#3f704f',\r\n '#3f814d',\r\n '#3c924a',\r\n '#36a446',\r\n '#2bb642',\r\n '#12c93b',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\nexport const redGreenGradient = {\r\n colors: [\r\n '#f63538',\r\n '#ee373a',\r\n '#e6393b',\r\n '#df3a3d',\r\n '#d73c3f',\r\n '#ce3d41',\r\n '#c73e43',\r\n '#bf4045',\r\n '#b64146',\r\n '#ae4248',\r\n '#a5424a',\r\n '#9d434b',\r\n '#94444d',\r\n '#8b444e',\r\n '#824450',\r\n '#784551',\r\n '#6f4552',\r\n '#644553',\r\n '#5a4554',\r\n '#4f4554',\r\n '#414554',\r\n '#3f4c53',\r\n '#3d5451',\r\n '#3b5a50',\r\n '#3a614f',\r\n '#38694f',\r\n '#366f4e',\r\n '#35764e',\r\n '#347d4e',\r\n '#32844e',\r\n '#31894e',\r\n '#31904e',\r\n '#30974f',\r\n '#2f9e4f',\r\n '#2fa450',\r\n '#2faa51',\r\n '#2fb152',\r\n '#2fb854',\r\n '#30be56',\r\n '#30c558',\r\n '#30cc5a',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\nconst greenRedGradient = { colors: redGreenGradient.colors.slice().reverse(), nullColor: redGreenGradient.nullColor }\r\nconst redGradient = { colors: redGreenGradient.colors.slice(0, 22).reverse(), nullColor: redGreenGradient.nullColor }\r\nconst greenGradient = { colors: redGreenGradient.colors.slice(21), nullColor: redGreenGradient.nullColor }\r\nconst blueGradient = {\r\n colors: [\r\n '#3d4251',\r\n '#3d4250',\r\n '#3d4250',\r\n '#3e4251',\r\n '#3e4251',\r\n '#3d4350',\r\n '#3d4350',\r\n '#3d4350',\r\n '#3e4351',\r\n '#3e4350',\r\n '#3d4351',\r\n '#3d4352',\r\n '#3f4353',\r\n '#3f4353',\r\n '#3f4453',\r\n '#3f4554',\r\n '#3e4354',\r\n '#3e4354',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4454',\r\n '#3f4555',\r\n '#3f4556',\r\n '#3f4457',\r\n '#3f4457',\r\n '#3f4457',\r\n '#3f4557',\r\n '#3f4657',\r\n '#3f4657',\r\n '#3f4657',\r\n '#3f4557',\r\n '#3e4557',\r\n '#3e4558',\r\n '#3f465a',\r\n '#3f4659',\r\n '#3f4759',\r\n '#3f4759',\r\n '#3f475a',\r\n '#3f4759',\r\n '#3f465a',\r\n '#3f465a',\r\n '#3f4759',\r\n '#3f475b',\r\n '#40475b',\r\n '#40475b',\r\n '#40465b',\r\n '#40465c',\r\n '#40465d',\r\n '#40485d',\r\n '#40485c',\r\n '#40475c',\r\n '#40465c',\r\n '#40465c',\r\n '#40465c',\r\n '#40485d',\r\n '#40485d',\r\n '#40485e',\r\n '#40485f',\r\n '#40495e',\r\n '#40495e',\r\n '#40485e',\r\n '#40485f',\r\n '#40495e',\r\n '#40485e',\r\n '#40485f',\r\n '#404960',\r\n '#404960',\r\n '#404860',\r\n '#404861',\r\n '#404a62',\r\n '#404962',\r\n '#404962',\r\n '#404a62',\r\n '#404a62',\r\n '#404861',\r\n '#404961',\r\n '#404a63',\r\n '#404a64',\r\n '#404a65',\r\n '#404b64',\r\n '#404b64',\r\n '#404a65',\r\n '#404a65',\r\n '#404a65',\r\n '#404a65',\r\n '#404b65',\r\n '#404b65',\r\n '#414c65',\r\n '#424c65',\r\n '#424b65',\r\n '#414b66',\r\n '#414b67',\r\n '#414b67',\r\n '#414c67',\r\n '#424b67',\r\n '#424c67',\r\n '#414c67',\r\n '#414b67',\r\n '#414c67',\r\n '#414c67',\r\n '#414c69',\r\n '#414c6a',\r\n '#414c6a',\r\n '#414c6a',\r\n '#414d6a',\r\n '#424e6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6a',\r\n '#414d6b',\r\n '#414d6c',\r\n '#414e6c',\r\n '#414f6c',\r\n '#414e6c',\r\n '#414d6c',\r\n '#414d6c',\r\n '#414e6c',\r\n '#424e6d',\r\n '#424e6d',\r\n '#414f6d',\r\n '#424f6f',\r\n '#414e6f',\r\n '#414e6f',\r\n '#424f70',\r\n '#414f6f',\r\n '#414f6f',\r\n '#414f6f',\r\n '#414e6f',\r\n '#414e6f',\r\n '#414f6f',\r\n '#414f6f',\r\n '#414f71',\r\n '#414f72',\r\n '#425073',\r\n '#425173',\r\n '#415072',\r\n '#425173',\r\n '#425173',\r\n '#425173',\r\n '#415072',\r\n '#415072',\r\n '#415172',\r\n '#415173',\r\n '#415174',\r\n '#415174',\r\n '#415074',\r\n '#415074',\r\n '#415174',\r\n '#415074',\r\n '#415074',\r\n '#415074',\r\n '#415175',\r\n '#415275',\r\n '#425276',\r\n '#425277',\r\n '#415177',\r\n '#415177',\r\n '#425278',\r\n '#425378',\r\n '#415277',\r\n '#415378',\r\n '#415378',\r\n '#415277',\r\n '#415378',\r\n '#42537a',\r\n '#42537c',\r\n '#42537b',\r\n '#41537a',\r\n '#41527a',\r\n '#41537a',\r\n '#41547a',\r\n '#42547b',\r\n '#41547a',\r\n '#41547a',\r\n '#41547c',\r\n '#41547c',\r\n '#41557c',\r\n '#41557c',\r\n '#41557c',\r\n '#41557c',\r\n '#41557d',\r\n '#41547d',\r\n '#41547c',\r\n '#42557d',\r\n '#41557d',\r\n '#41557d',\r\n '#41557f',\r\n '#415580',\r\n '#41567f',\r\n '#41567f',\r\n '#415580',\r\n '#41567f',\r\n '#415580',\r\n '#415580',\r\n '#41557f',\r\n '#415680',\r\n '#415680',\r\n '#415680',\r\n '#415681',\r\n '#415681',\r\n '#415781',\r\n '#415781',\r\n '#415681',\r\n '#415781',\r\n '#415781',\r\n '#415781',\r\n '#415782',\r\n '#415784',\r\n '#415784',\r\n '#425885',\r\n '#425885',\r\n '#415784',\r\n '#415784',\r\n '#415784',\r\n '#415784',\r\n '#425885',\r\n '#425885',\r\n '#415885',\r\n '#415885',\r\n '#425987',\r\n '#415887',\r\n '#415887',\r\n '#415987',\r\n '#415887',\r\n '#425988',\r\n '#425988',\r\n '#415887',\r\n '#415987',\r\n '#415988',\r\n '#415988',\r\n '#415988',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#415989',\r\n '#41598a',\r\n '#405a8b',\r\n '#405a8c',\r\n '#405b8c',\r\n '#405b8c',\r\n '#405b8c',\r\n '#405a8c',\r\n '#405a8c',\r\n '#405a8c',\r\n '#405a8c',\r\n '#405b8c',\r\n '#415c8d',\r\n '#415c8e',\r\n '#405b8e',\r\n '#415c90',\r\n '#405b8f',\r\n '#405c8f',\r\n '#415d90',\r\n '#405b8f',\r\n '#405c8f',\r\n '#405c8f',\r\n '#405b8f',\r\n '#405c8f',\r\n '#405c90',\r\n '#405c91',\r\n '#405c91',\r\n '#405c91',\r\n '#405d91',\r\n '#405e91',\r\n '#405d91',\r\n '#415e91',\r\n '#405e91',\r\n '#415e91',\r\n '#415e92',\r\n '#3f5d94',\r\n '#3f5d93',\r\n '#3f5d93',\r\n '#3f5e94',\r\n '#405e94',\r\n '#3f5d94',\r\n '#3f5d94',\r\n '#3f5d94',\r\n '#3f5e94',\r\n '#3f5e95',\r\n '#3f5e96',\r\n '#3f5e96',\r\n '#3f5e96',\r\n '#405f97',\r\n '#405f97',\r\n '#3f5e96',\r\n '#3f5e97',\r\n '#3f5f97',\r\n '#3f6097',\r\n '#3f5f97',\r\n '#3f6097',\r\n '#3f5f98',\r\n '#3f5f99',\r\n '#3e5f99',\r\n '#3e6199',\r\n '#3e6099',\r\n '#3e5f99',\r\n '#3e5f99',\r\n '#3e5f98',\r\n '#3e6099',\r\n '#3d609a',\r\n '#3d6099',\r\n '#3e609b',\r\n '#3e619c',\r\n '#3e619c',\r\n '#3e619c',\r\n '#3e609b',\r\n '#3e609c',\r\n '#3e609c',\r\n '#3e619b',\r\n '#3e629c',\r\n '#3e629c',\r\n '#3e619c',\r\n '#3d619d',\r\n '#3d639f',\r\n '#3d629f',\r\n '#3d629f',\r\n '#3d639f',\r\n '#3d629f',\r\n '#3c619e',\r\n '#3c619e',\r\n '#3d629f',\r\n '#3d62a0',\r\n '#3d63a0',\r\n '#3d63a0',\r\n '#3d62a0',\r\n '#3d63a1',\r\n '#3d62a0',\r\n '#3d63a0',\r\n '#3d64a1',\r\n '#3d63a0',\r\n '#3c63a0',\r\n '#3b63a2',\r\n '#3c64a3',\r\n '#3c65a3',\r\n '#3b63a3',\r\n '#3b63a3',\r\n '#3b63a3',\r\n '#3b63a3',\r\n '#3c63a3',\r\n '#3c65a3',\r\n '#3c65a3',\r\n '#3b64a4',\r\n '#3a65a5',\r\n '#3b66a6',\r\n '#3c65a6',\r\n '#3a65a5',\r\n '#3a64a5',\r\n '#3a64a5',\r\n '#3b65a5',\r\n '#3a65a5',\r\n '#3a66a6',\r\n '#3b66a6',\r\n '#3b66a6',\r\n '#3a66a8',\r\n '#3a67a8',\r\n '#3b67a8',\r\n '#3b66a8',\r\n '#3b66a8',\r\n '#3b66a8',\r\n '#3b67a8',\r\n '#3a66a8',\r\n '#3966a9',\r\n '#3967a9',\r\n '#3a67aa',\r\n '#3a67ab',\r\n '#3967ab',\r\n '#3a68ab',\r\n '#3a68ab',\r\n '#3968ab',\r\n '#3966aa',\r\n '#3966aa',\r\n '#3968ab',\r\n '#3968ab',\r\n '#3867ac',\r\n '#3867ac',\r\n '#3868ac',\r\n '#3869ad',\r\n '#3969ad',\r\n '#3968ad',\r\n '#3868ac',\r\n '#3868ac',\r\n '#3869ae',\r\n '#3868ad',\r\n '#3868ad',\r\n '#3769af',\r\n '#3869b0',\r\n '#3769af',\r\n '#3769af',\r\n '#386ab0',\r\n '#386ab0',\r\n '#376aaf',\r\n '#376aaf',\r\n '#376ab0',\r\n '#366ab1',\r\n '#366ab2',\r\n '#366ab2',\r\n '#366ab2',\r\n '#366ab3',\r\n '#366bb3',\r\n '#366ab2',\r\n '#3669b2',\r\n '#366ab2',\r\n '#366ab2',\r\n '#366ab2',\r\n '#356bb3',\r\n '#346bb4',\r\n '#356cb4',\r\n '#356cb4',\r\n '#346bb4',\r\n '#356cb4',\r\n '#356cb5',\r\n '#356cb5',\r\n '#356cb5',\r\n '#346cb5',\r\n '#346cb5',\r\n '#346cb6',\r\n '#336db7',\r\n '#326cb7',\r\n '#326db7',\r\n '#336db7',\r\n '#336cb7',\r\n '#326bb6',\r\n '#326cb6',\r\n '#326db7',\r\n '#326db8',\r\n '#316dba',\r\n '#316eb9',\r\n '#316eb9',\r\n '#326eba',\r\n '#316eba',\r\n '#316db9',\r\n '#316db9',\r\n '#316eb9',\r\n '#306eba',\r\n '#306dba',\r\n '#306dba',\r\n '#306ebb',\r\n '#306dbb',\r\n '#306dbc',\r\n '#306fbc',\r\n '#306fbc',\r\n '#306ebb',\r\n '#306eba',\r\n '#306fbc',\r\n '#2f6fbd',\r\n '#2d6ebe',\r\n '#2d6ebe',\r\n '#2d6fbe',\r\n '#2e70be',\r\n '#2e70be',\r\n '#2e6fbe',\r\n '#2e6fbe',\r\n '#2e6fbe',\r\n '#2c6fc0',\r\n '#2d70c0',\r\n '#2d70c0',\r\n '#2b70c1',\r\n '#2b70c1',\r\n '#2c70c1',\r\n '#2c70c1',\r\n '#2b71c1',\r\n '#2c70c1',\r\n '#2c70c1',\r\n '#2c71c1',\r\n '#2c71c1',\r\n '#2a72c3',\r\n '#2971c3',\r\n '#2a71c2',\r\n '#2972c3',\r\n '#2a71c3',\r\n '#2a71c3',\r\n '#2972c3',\r\n '#2972c3',\r\n '#2972c3',\r\n '#2872c5',\r\n '#2872c6',\r\n '#2872c5',\r\n '#2773c6',\r\n '#2773c6',\r\n '#2772c6',\r\n '#2772c5',\r\n '#2672c5',\r\n '#2673c5',\r\n '#2673c5',\r\n '#2673c7',\r\n '#2472c8',\r\n '#2473c8',\r\n '#2474c8',\r\n '#2573c9',\r\n '#2573c9',\r\n '#2573c9',\r\n '#2573c9',\r\n '#2474c8',\r\n '#2374c9',\r\n '#2374c9',\r\n '#2374c9',\r\n '#2375c9',\r\n '#2374c9',\r\n '#2374c9',\r\n '#2475c9',\r\n '#2575ca',\r\n '#2476ca',\r\n '#2476ca',\r\n '#2476ca',\r\n '#2575cb',\r\n '#2577ca',\r\n '#2577ca',\r\n '#2576ca',\r\n '#2577ca',\r\n '#2577ca',\r\n '#2577ca',\r\n '#2677ca',\r\n '#2678ca',\r\n '#2678cb',\r\n '#2778cb',\r\n '#2778cb',\r\n '#2679cb',\r\n '#2779cb',\r\n '#2779cb',\r\n '#2779cb',\r\n '#2779cb',\r\n '#2879cb',\r\n '#287acb',\r\n '#287acb',\r\n '#2879cb',\r\n '#287acb',\r\n '#287bcb',\r\n '#287acb',\r\n '#287acb',\r\n '#287bcc',\r\n '#287bcc',\r\n '#297bcc',\r\n '#297bcc',\r\n '#297bcc',\r\n '#297bcc',\r\n '#297ccc',\r\n '#297ccc',\r\n '#297dcc',\r\n '#297dcc',\r\n '#2a7dcc',\r\n '#2a7dcc',\r\n '#2a7ecd',\r\n '#2a7ecd',\r\n '#2a7ecc',\r\n '#2a7ecc',\r\n '#2b7ecd',\r\n '#2c7ecd',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2b7ecc',\r\n '#2b7ecc',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2c7fcd',\r\n '#2b7fcd',\r\n '#2b80cd',\r\n '#2c80ce',\r\n '#2d80ce',\r\n '#2d80ce',\r\n '#2c81cd',\r\n '#2d82ce',\r\n '#2d82ce',\r\n '#2d81ce',\r\n '#2d82ce',\r\n '#2d82ce',\r\n '#2d82cd',\r\n '#2e82cd',\r\n '#2e83ce',\r\n '#2e82ce',\r\n '#2d82cd',\r\n '#2d83cd',\r\n '#2e83cf',\r\n '#2e84cf',\r\n '#2e84cf',\r\n '#2e83ce',\r\n '#2e83ce',\r\n '#3084cf',\r\n '#3085cf',\r\n '#2f85ce',\r\n '#3085cf',\r\n '#2f86ce',\r\n '#2f86ce',\r\n '#2f86cf',\r\n '#2f85cf',\r\n '#2f86ce',\r\n '#2f86cf',\r\n '#2f86cf',\r\n '#2f87cf',\r\n '#2f86d0',\r\n '#2f86d0',\r\n '#2f86d0',\r\n '#3087cf',\r\n '#3088d0',\r\n '#3088d0',\r\n '#3087cf',\r\n '#3088cf',\r\n '#3188d0',\r\n '#3188d1',\r\n '#3088d0',\r\n '#3089d0',\r\n '#3089d0',\r\n '#3088d0',\r\n '#3188d0',\r\n '#3189d0',\r\n '#3289d0',\r\n '#3289d0',\r\n '#328ad1',\r\n '#328ad1',\r\n '#318ad0',\r\n '#318ad0',\r\n '#318ad0',\r\n '#328bd1',\r\n '#328ad1',\r\n '#328ad1',\r\n '#338bd2',\r\n '#338bd2',\r\n '#338cd1',\r\n '#338cd1',\r\n '#338cd2',\r\n '#338cd2',\r\n '#338dd1',\r\n '#338dd1',\r\n '#338dd2',\r\n '#338dd1',\r\n '#338ed2',\r\n '#338ed2',\r\n '#338ed2',\r\n '#348ed2',\r\n '#348ed2',\r\n '#348ed2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#348fd2',\r\n '#3390d2',\r\n '#3391d2',\r\n '#3491d3',\r\n '#3490d3',\r\n '#3491d3',\r\n '#3491d3',\r\n '#3591d3',\r\n '#3591d3',\r\n '#3691d4',\r\n '#3690d4',\r\n '#3590d3',\r\n '#3592d3',\r\n '#3592d4',\r\n '#3592d4',\r\n '#3592d3',\r\n '#3593d3',\r\n '#3592d4',\r\n '#3592d4',\r\n '#3592d4',\r\n '#3593d4',\r\n '#3694d4',\r\n '#3695d4',\r\n '#3694d4',\r\n '#3693d4',\r\n '#3693d4',\r\n '#3695d4',\r\n '#3695d4',\r\n '#3695d4',\r\n '#3796d4',\r\n '#3796d4',\r\n '#3695d4',\r\n '#3695d5',\r\n '#3696d5',\r\n '#3696d5',\r\n '#3696d5',\r\n '#3695d4',\r\n '#3696d4',\r\n '#3797d5',\r\n '#3796d5',\r\n '#3797d5',\r\n '#3898d5',\r\n '#3898d5',\r\n '#3797d5',\r\n '#3798d5',\r\n '#3899d5',\r\n '#3899d5',\r\n '#3899d6',\r\n '#3799d6',\r\n '#3799d6',\r\n '#3799d6',\r\n '#389ad6',\r\n '#389ad6',\r\n '#3799d5',\r\n '#3799d5',\r\n '#3799d6',\r\n '#379ad6',\r\n '#379ad6',\r\n '#399ad6',\r\n '#399ad6',\r\n '#389bd5',\r\n '#389bd5',\r\n '#389bd6',\r\n '#389bd6',\r\n '#399cd7',\r\n '#399bd7',\r\n '#399cd7',\r\n '#399dd7',\r\n '#389cd7',\r\n '#389cd6',\r\n '#389dd6',\r\n '#399ed7',\r\n '#389dd6',\r\n '#389dd6',\r\n '#389fd6',\r\n '#399fd7',\r\n '#399ed6',\r\n '#399ed6',\r\n '#399fd7',\r\n '#399fd7',\r\n '#399fd7',\r\n '#3aa0d8',\r\n '#3aa0d8',\r\n '#3a9fd8',\r\n '#3a9fd8',\r\n '#3a9fd8',\r\n '#3aa0d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa1d8',\r\n '#3aa2d9',\r\n '#3aa1d9',\r\n '#3aa1d8',\r\n '#39a2d8',\r\n '#3aa2d9',\r\n '#3aa3d9',\r\n '#3ba3d9',\r\n '#3ba3d9',\r\n '#3ba2d8',\r\n '#3aa2d8',\r\n '#3aa4d8',\r\n '#3ba4d9',\r\n '#3aa3d8',\r\n '#3aa3d9',\r\n '#3ba5da',\r\n '#3ba5d9',\r\n '#3ba4d9',\r\n '#3ba4d9',\r\n '#3ba4d9',\r\n '#3aa5d9',\r\n '#3ba5da',\r\n '#3ba6da',\r\n '#3ba6da',\r\n '#3ba6da',\r\n '#3ba6d9',\r\n '#3ba6d9',\r\n '#3ba6da',\r\n '#3aa5da',\r\n '#3ba6da',\r\n '#3ca7da',\r\n '#3ca7da',\r\n '#3ba7da',\r\n '#3ba6da',\r\n '#3ca7da',\r\n '#3ca8da',\r\n '#3ca8da',\r\n '#3ca8da',\r\n '#3ca9db',\r\n '#3ca9db',\r\n '#3ca9da',\r\n '#3ca8db',\r\n '#3ba8db',\r\n '#3baadb',\r\n '#3caadb',\r\n '#3ca9db',\r\n '#3caadb',\r\n '#3caadb',\r\n '#3ca9db',\r\n '#3ca9db',\r\n '#3ca9db',\r\n '#3cabdb',\r\n '#3cabdc',\r\n '#3caadb',\r\n '#3cabdb',\r\n '#3cacdc',\r\n '#3cacdc',\r\n '#3cacdc',\r\n '#3caddc',\r\n '#3caddc',\r\n '#3caddc',\r\n '#3caedc',\r\n '#3caddd',\r\n '#3caddd',\r\n '#3caedc',\r\n '#3eaedd',\r\n '#3eaddd',\r\n '#3daddc',\r\n '#3daedc',\r\n '#3daedc',\r\n '#3dafdd',\r\n '#3dafdd',\r\n '#3daedd',\r\n '#3dafdd',\r\n '#3dafdd',\r\n '#3dafdd',\r\n '#3db0dd',\r\n '#3db0dd',\r\n '#3db0dc',\r\n '#3db0dc',\r\n '#3db1dd',\r\n '#3db1dd',\r\n '#3db0dd',\r\n '#3db0dd',\r\n '#3db1dd',\r\n '#3db1de',\r\n '#3db1de',\r\n '#3db1de',\r\n '#3db2de',\r\n '#3db2de',\r\n '#3db2dd',\r\n '#3db2dd',\r\n '#3db3dd',\r\n '#3db2de',\r\n '#3db3de',\r\n '#3db4de',\r\n '#3db3dd',\r\n '#3db4de',\r\n '#3db4de',\r\n '#3db4de',\r\n '#3db5df',\r\n '#3db5df',\r\n '#3db4df',\r\n '#3db4df',\r\n '#3db5df',\r\n '#3db5de',\r\n '#3db5de',\r\n '#3db5de',\r\n '#3db6df',\r\n '#3db6df',\r\n '#3db6de',\r\n '#3db6de',\r\n '#3db7df',\r\n '#3db7e0',\r\n '#3db8e0',\r\n '#3db8e0',\r\n '#3db7e0',\r\n '#3db7df',\r\n '#3db7df',\r\n '#3eb7df',\r\n '#3eb8df',\r\n '#3eb8df',\r\n '#3eb9e0',\r\n '#3eb9e0',\r\n '#3eb8df',\r\n '#3eb9df',\r\n '#3fb9df',\r\n '#3fb9e0',\r\n '#3ebae1',\r\n '#3ebae0',\r\n '#3ebae0',\r\n '#3ebae0',\r\n '#3eb9e0',\r\n '#3fbae1',\r\n '#3fbbe1',\r\n '#3ebae0',\r\n '#3ebbe1',\r\n '#3ebae0',\r\n '#3ebbe0',\r\n '#3ebce1',\r\n '#3fbce1',\r\n '#3ebce0',\r\n '#3ebce2',\r\n '#3ebce2',\r\n '#3ebde2',\r\n '#3fbde2',\r\n '#3fbde2',\r\n '#3ebde1',\r\n '#3ebee1',\r\n '#3ebde2',\r\n '#3fbde2',\r\n '#3fbde2',\r\n '#3ebee1',\r\n '#3ebfe1',\r\n '#3ebfe1',\r\n '#3ebfe1',\r\n '#3fbfe2',\r\n '#3ebfe1',\r\n '#3ebee1',\r\n '#3ebee2',\r\n '#3ebfe2',\r\n '#3ebfe2',\r\n '#3ebfe2',\r\n '#3ec0e2',\r\n '#3ec1e2',\r\n '#3fc0e3',\r\n '#3fc0e3',\r\n '#3ec0e2',\r\n '#3ec1e2',\r\n '#3ec2e2',\r\n '#3ec2e2',\r\n '#3ec2e2',\r\n '#3ec3e3',\r\n '#3ec3e3',\r\n '#3ec3e3',\r\n '#3ec2e3',\r\n '#3ec2e3',\r\n '#3fc3e3',\r\n '#3fc4e3',\r\n '#3ec4e3',\r\n '#3ec3e3',\r\n '#3ec3e3',\r\n '#3ec5e4',\r\n '#3fc5e4',\r\n '#3fc5e3',\r\n '#3fc4e4',\r\n '#3fc5e4',\r\n '#3ec6e4',\r\n '#3ec5e4',\r\n '#3ec4e4',\r\n '#3ec5e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec7e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec6e4',\r\n '#3ec7e4',\r\n '#3dc8e4',\r\n '#3dc8e4',\r\n '#3dc7e5',\r\n '#3dc7e5',\r\n '#3dc8e5',\r\n '#3dc8e4',\r\n '#3dc8e4',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e5',\r\n '#3dc9e4',\r\n '#3dc9e5',\r\n '#3dcae6',\r\n '#3dcbe6',\r\n '#3dcae6',\r\n '#3dcae6',\r\n '#3dcae6',\r\n '#3dcbe6',\r\n '#3dcce6',\r\n '#3ecce6',\r\n '#3ecce6',\r\n '#3dcbe6',\r\n '#3dcce6',\r\n '#3dcce6',\r\n '#3dcce6',\r\n '#3dcce5',\r\n '#3dcce5',\r\n '#3dcce6',\r\n '#3dcde7',\r\n '#3dcde7',\r\n '#3dcde7',\r\n '#3dcfe7',\r\n '#3dcfe7',\r\n '#3dcfe7',\r\n '#3dcee7',\r\n '#3dcee6',\r\n '#3dcee6',\r\n '#3dcfe7',\r\n '#3dcfe7',\r\n '#3dcfe6',\r\n '#3dcfe6',\r\n '#3dd0e8',\r\n '#3ed1e8',\r\n '#3ed1e7',\r\n '#3dd0e7',\r\n '#3dd0e8',\r\n '#3dd0e7',\r\n '#3dd1e7',\r\n '#3dd1e7',\r\n '#3dd0e7',\r\n '#3cd1e8',\r\n '#3cd2e8',\r\n '#3cd1e8',\r\n '#3cd1e7',\r\n '#3cd1e7',\r\n '#3cd2e8',\r\n '#3cd3e9',\r\n '#3cd2e8',\r\n '#3cd2e9',\r\n '#3cd2e9',\r\n '#3cd3e8',\r\n '#3cd4e8',\r\n '#3cd3e8',\r\n '#3cd3e8',\r\n ],\r\n nullColor: '#2f323d',\r\n}\r\nconst earningsGradient = {\r\n colors: [\r\n '#592d48',\r\n '#592d49',\r\n '#5b2d49',\r\n '#5b2d49',\r\n '#5b2d49',\r\n '#5b2e49',\r\n '#5b2e49',\r\n '#5b2e4a',\r\n '#5c2e4a',\r\n '#5d2f4b',\r\n '#5c2f4b',\r\n '#5c2e4b',\r\n '#5f2f4c',\r\n '#5f2f4c',\r\n '#5e2e4c',\r\n '#5e2e4c',\r\n '#60304d',\r\n '#60304d',\r\n '#5f2f4d',\r\n '#5f2f4d',\r\n '#62304f',\r\n '#62304f',\r\n '#61304f',\r\n '#62314f',\r\n '#62314f',\r\n '#633150',\r\n '#633150',\r\n '#63314f',\r\n '#63304f',\r\n '#643150',\r\n '#643151',\r\n '#643151',\r\n '#653152',\r\n '#653051',\r\n '#653051',\r\n '#663152',\r\n '#673253',\r\n '#673253',\r\n '#673253',\r\n '#673253',\r\n '#683254',\r\n '#683254',\r\n '#683254',\r\n '#693254',\r\n '#693354',\r\n '#6a3354',\r\n '#6a3354',\r\n '#6a3355',\r\n '#6a3356',\r\n '#6a3456',\r\n '#6c3456',\r\n '#6c3356',\r\n '#6c3457',\r\n '#6c3457',\r\n '#6c3457',\r\n '#6c3457',\r\n '#6d3458',\r\n '#6e3559',\r\n '#6f3559',\r\n '#6f3459',\r\n '#6f345a',\r\n '#70355b',\r\n '#70365b',\r\n '#6f355a',\r\n '#70365b',\r\n '#71355a',\r\n '#71355a',\r\n '#71365b',\r\n '#72355b',\r\n '#72365c',\r\n '#72365d',\r\n '#72355c',\r\n '#73355c',\r\n '#73355d',\r\n '#73375d',\r\n '#73375d',\r\n '#76375e',\r\n '#76375f',\r\n '#76375f',\r\n '#76375f',\r\n '#76365e',\r\n '#76365e',\r\n '#76375f',\r\n '#763860',\r\n '#773861',\r\n '#783860',\r\n '#783860',\r\n '#783861',\r\n '#793861',\r\n '#793862',\r\n '#793762',\r\n '#793761',\r\n '#7b3962',\r\n '#7b3962',\r\n '#7a3962',\r\n '#7a3962',\r\n '#7b3963',\r\n '#7c3964',\r\n '#7d3a64',\r\n '#7d3b64',\r\n '#7d3a65',\r\n '#7d3a65',\r\n '#7d3a65',\r\n '#7e3b65',\r\n '#803b66',\r\n '#7f3a66',\r\n '#7e3a66',\r\n '#7f3a67',\r\n '#7f3b67',\r\n '#803c67',\r\n '#803c67',\r\n '#7f3b67',\r\n '#813c68',\r\n '#823b69',\r\n '#823b69',\r\n '#813b69',\r\n '#823c69',\r\n '#823c69',\r\n '#823c69',\r\n '#823c69',\r\n '#843d6a',\r\n '#843d6a',\r\n '#843d6a',\r\n '#843c6b',\r\n '#863c6c',\r\n '#853c6c',\r\n '#853d6c',\r\n '#863e6c',\r\n '#863d6c',\r\n '#873d6c',\r\n '#873d6c',\r\n '#873d6d',\r\n '#893e6e',\r\n '#8a3e6f',\r\n '#8a3e6f',\r\n '#893e6e',\r\n '#893d6e',\r\n '#893e6e',\r\n '#8a3f6f',\r\n '#8b3f70',\r\n '#8b3f71',\r\n '#8b3e70',\r\n '#8b3e70',\r\n '#8c3f70',\r\n '#8c4071',\r\n '#8c4070',\r\n '#8c4070',\r\n '#8d4071',\r\n '#8d4072',\r\n '#8d4072',\r\n '#8f4073',\r\n '#8f4074',\r\n '#8f4073',\r\n '#8f4173',\r\n '#8f4173',\r\n '#904173',\r\n '#904174',\r\n '#904175',\r\n '#904175',\r\n '#914175',\r\n '#924175',\r\n '#924275',\r\n '#924275',\r\n '#914175',\r\n '#924277',\r\n '#934277',\r\n '#934277',\r\n '#944278',\r\n '#954277',\r\n '#954278',\r\n '#954278',\r\n '#954278',\r\n '#954378',\r\n '#964378',\r\n '#964379',\r\n '#96447a',\r\n '#96437a',\r\n '#96437a',\r\n '#98437a',\r\n '#98447b',\r\n '#98457b',\r\n '#98457b',\r\n '#98457b',\r\n '#99447b',\r\n '#9a457d',\r\n '#9b457d',\r\n '#9b457d',\r\n '#9a447c',\r\n '#9a457c',\r\n '#9b457c',\r\n '#9b457e',\r\n '#9b467e',\r\n '#9c467e',\r\n '#9d467f',\r\n '#9e467f',\r\n '#9d467f',\r\n '#9e467e',\r\n '#9e477f',\r\n '#9e4780',\r\n '#9e477f',\r\n '#9f4680',\r\n '#a04680',\r\n '#a04880',\r\n '#a04881',\r\n '#a04881',\r\n '#a04881',\r\n '#a24883',\r\n '#a24883',\r\n '#a24882',\r\n '#a24883',\r\n '#a24883',\r\n '#a24883',\r\n '#a24883',\r\n '#a34983',\r\n '#a34983',\r\n '#a34984',\r\n '#a44985',\r\n '#a54986',\r\n '#a54986',\r\n '#a54986',\r\n '#a54a85',\r\n '#a54a85',\r\n '#a54a85',\r\n '#a64a86',\r\n '#a74a87',\r\n '#a84a88',\r\n '#a84a88',\r\n '#a74a87',\r\n '#a84b87',\r\n '#a84b88',\r\n '#a84b88',\r\n '#a84b88',\r\n '#a94b89',\r\n '#aa4b89',\r\n '#ab4b89',\r\n '#ab4b89',\r\n '#ab4c8a',\r\n '#aa4c8a',\r\n '#aa4c8a',\r\n '#ab4c8a',\r\n '#ad4c8b',\r\n '#ad4c8b',\r\n '#ad4c8b',\r\n '#ad4c8c',\r\n '#ae4d8d',\r\n '#ae4c8c',\r\n '#ae4d8d',\r\n '#af4e8e',\r\n '#af4e8d',\r\n '#b04e8d',\r\n '#b04e8d',\r\n '#b04d8e',\r\n '#b04e8e',\r\n '#b04d8e',\r\n '#b04e8e',\r\n '#b14f8f',\r\n '#b14e90',\r\n '#b14e90',\r\n '#b14f90',\r\n '#b25090',\r\n '#b34f90',\r\n '#b34f90',\r\n '#b34f90',\r\n '#b35091',\r\n '#b44f91',\r\n '#b55092',\r\n '#b55092',\r\n '#b55092',\r\n '#b55192',\r\n '#b55092',\r\n '#b55092',\r\n '#b55093',\r\n '#b65094',\r\n '#b75194',\r\n '#b85193',\r\n '#b75093',\r\n '#b85095',\r\n '#b85095',\r\n '#b85295',\r\n '#b85295',\r\n '#ba5296',\r\n '#b95197',\r\n '#b95197',\r\n '#ba5297',\r\n '#ba5297',\r\n '#ba5296',\r\n '#ba5296',\r\n '#bb5397',\r\n '#bc5297',\r\n '#bd5298',\r\n '#bd5499',\r\n '#bc5499',\r\n '#bc5499',\r\n '#bc5499',\r\n '#bd5499',\r\n '#be549a',\r\n '#bf549b',\r\n '#bf549b',\r\n '#bf549b',\r\n '#bf549b',\r\n '#c0559b',\r\n '#c0559b',\r\n '#c0559b',\r\n '#c0559b',\r\n '#c0549c',\r\n '#c0549c',\r\n '#c2569c',\r\n '#c2569d',\r\n '#c2569e',\r\n '#c2569e',\r\n '#c4569e',\r\n '#c4569e',\r\n '#c4569f',\r\n '#c3579e',\r\n '#c3579e',\r\n '#c5579e',\r\n '#c658a0',\r\n '#c5579f',\r\n '#c4579f',\r\n '#c557a0',\r\n '#c757a0',\r\n '#c657a0',\r\n '#c658a1',\r\n '#c759a2',\r\n '#c758a2',\r\n '#c758a2',\r\n '#c858a2',\r\n '#c959a3',\r\n '#ca59a3',\r\n '#c958a2',\r\n '#c958a2',\r\n '#c959a3',\r\n '#ca59a4',\r\n '#cb59a4',\r\n '#cb59a4',\r\n '#cb59a4',\r\n '#cb5aa5',\r\n '#cc5ba5',\r\n '#cc5ba5',\r\n '#cc5aa5',\r\n '#cd5ba6',\r\n '#cd5ba6',\r\n '#cd5ba6',\r\n '#ce5ba7',\r\n '#ce5ca7',\r\n '#cf5ca7',\r\n '#cf5ca7',\r\n '#cf5ca7',\r\n '#d05ca8',\r\n '#d05ba9',\r\n '#d05ba9',\r\n '#d05ba9',\r\n '#d15ca9',\r\n '#d15da9',\r\n '#d15da9',\r\n '#d15ca9',\r\n '#d25caa',\r\n '#d25dab',\r\n '#d25eab',\r\n '#d25eab',\r\n '#d35eab',\r\n '#d35dab',\r\n '#d35dab',\r\n '#d45eac',\r\n '#d45dac',\r\n '#d55ead',\r\n '#d55ead',\r\n '#d55dad',\r\n '#d65eac',\r\n '#d65fad',\r\n '#d65fae',\r\n '#d65fae',\r\n '#d75fae',\r\n '#d75fae',\r\n '#d75fae',\r\n '#d75fae',\r\n '#d75faf',\r\n '#d760b0',\r\n '#d960b0',\r\n '#d95fb0',\r\n '#d961b0',\r\n '#d961b1',\r\n '#d961b1',\r\n '#da61b0',\r\n '#dc61b2',\r\n '#dc60b2',\r\n '#db60b2',\r\n '#db61b2',\r\n '#dc61b2',\r\n '#dd61b3',\r\n '#dd61b3',\r\n '#dd62b3',\r\n '#de62b3',\r\n '#de63b4',\r\n '#de63b5',\r\n '#dd62b4',\r\n '#de62b4',\r\n '#df63b5',\r\n '#e063b5',\r\n '#e063b5',\r\n '#e063b6',\r\n '#e164b6',\r\n '#e164b6',\r\n '#e164b6',\r\n '#e164b7',\r\n '#e264b7',\r\n '#e264b7',\r\n '#e264b7',\r\n '#e264b8',\r\n '#e265b8',\r\n '#e265b8',\r\n '#e365b8',\r\n '#e364b8',\r\n '#e465b9',\r\n '#e565ba',\r\n '#e565ba',\r\n '#e566b9',\r\n '#e566ba',\r\n '#e566bb',\r\n '#e666ba',\r\n '#e766bb',\r\n '#e665bb',\r\n '#e665bb',\r\n '#e666bb',\r\n '#e867bc',\r\n '#e867bc',\r\n '#e867bc',\r\n '#e867bc',\r\n '#e968bd',\r\n '#e967be',\r\n '#e968be',\r\n '#e969bd',\r\n '#ea68bf',\r\n '#ea69bf',\r\n '#ea69bf',\r\n '#eb69c0',\r\n '#eb69c0',\r\n '#eb6ac0',\r\n '#eb6ac0',\r\n '#ec6ac1',\r\n '#ed6ac2',\r\n '#ec6bc2',\r\n '#ec6bc2',\r\n '#ed6bc2',\r\n '#ed6bc3',\r\n '#ed6bc3',\r\n '#ed6bc3',\r\n '#ee6bc2',\r\n '#ef6bc3',\r\n '#ef6cc3',\r\n '#ef6cc3',\r\n '#f06cc4',\r\n '#f06cc5',\r\n '#f16cc4',\r\n '#f16cc4',\r\n '#f16cc5',\r\n '#f16dc6',\r\n '#f16dc6',\r\n '#f36dc6',\r\n '#f36dc7',\r\n '#f36dc6',\r\n '#f36dc7',\r\n '#f36dc7',\r\n '#f46dc7',\r\n '#f56ec7',\r\n '#f46ec7',\r\n '#f46ec7',\r\n '#f46ec8',\r\n '#f56ec8',\r\n '#f56fc8',\r\n '#f66fc8',\r\n '#f76fc9',\r\n '#f76fc9',\r\n '#f76fc9',\r\n '#f86fca',\r\n '#f970cb',\r\n '#f971cb',\r\n '#f870cb',\r\n '#f870cb',\r\n '#f870cc',\r\n '#f970cd',\r\n '#fa71cd',\r\n '#fa71cd',\r\n '#fa71cd',\r\n '#fa72ce',\r\n '#fb71ce',\r\n '#fb71ce',\r\n '#fb71ce',\r\n '#fc72cf',\r\n '#fb72ce',\r\n '#fb72ce',\r\n '#fc72cf',\r\n '#fd72d0',\r\n '#fe73d1',\r\n '#ff73d1',\r\n '#ff72d1',\r\n '#fe72d1',\r\n '#ff73d2',\r\n '#ff74d2',\r\n '#fe74d2',\r\n '#02dfce',\r\n '#02dece',\r\n '#02dece',\r\n '#03dfce',\r\n '#03dfce',\r\n '#03dfcd',\r\n '#03ddcd',\r\n '#03ddcd',\r\n '#03ddcc',\r\n '#02dccb',\r\n '#02dccb',\r\n '#03dccc',\r\n '#03dbcb',\r\n '#03dbca',\r\n '#03dbca',\r\n '#03dbca',\r\n '#03daca',\r\n '#04dbcb',\r\n '#04dacb',\r\n '#03d9ca',\r\n '#03d8c9',\r\n '#04d9c9',\r\n '#04dac9',\r\n '#04d9c9',\r\n '#04d9c8',\r\n '#04d7c7',\r\n '#04d6c7',\r\n '#04d7c8',\r\n '#05d7c7',\r\n '#05d6c7',\r\n '#05d6c7',\r\n '#04d6c7',\r\n '#05d5c6',\r\n '#05d5c6',\r\n '#05d5c6',\r\n '#05d5c5',\r\n '#06d4c5',\r\n '#05d4c5',\r\n '#05d4c5',\r\n '#06d4c5',\r\n '#06d3c4',\r\n '#06d2c4',\r\n '#06d2c4',\r\n '#06d2c3',\r\n '#06d2c3',\r\n '#07d2c2',\r\n '#07d0c1',\r\n '#07d0c2',\r\n '#07d0c1',\r\n '#07cfc1',\r\n '#07cfc1',\r\n '#07d0c1',\r\n '#09cfc0',\r\n '#08cfc0',\r\n '#09cfc0',\r\n '#0acec1',\r\n '#0acec0',\r\n '#09cdbf',\r\n '#09cdbf',\r\n '#0acebf',\r\n '#0accbe',\r\n '#0bccbf',\r\n '#0bccbf',\r\n '#0bccbe',\r\n '#0bcbbe',\r\n '#0bcbbe',\r\n '#0bcbbd',\r\n '#0ccabc',\r\n '#0ccbbd',\r\n '#0dcbbd',\r\n '#0dcabc',\r\n '#0cc9bb',\r\n '#0dc8ba',\r\n '#0ec9bb',\r\n '#0ec9bb',\r\n '#0dc8ba',\r\n '#0ec8bb',\r\n '#0dc7ba',\r\n '#0ec7ba',\r\n '#0fc7ba',\r\n '#0ec6b9',\r\n '#0fc6b9',\r\n '#0fc6b9',\r\n '#0fc5b8',\r\n '#0fc6b8',\r\n '#0fc6b8',\r\n '#0fc4b8',\r\n '#10c4b7',\r\n '#10c4b7',\r\n '#10c3b6',\r\n '#10c3b6',\r\n '#10c3b6',\r\n '#12c2b6',\r\n '#11c2b6',\r\n '#11c2b6',\r\n '#12c3b6',\r\n '#12c2b5',\r\n '#12c1b5',\r\n '#12c0b5',\r\n '#13c0b4',\r\n '#13c1b4',\r\n '#13c0b3',\r\n '#13bfb3',\r\n '#13c0b4',\r\n '#13bfb2',\r\n '#13beb3',\r\n '#13beb3',\r\n '#13bfb2',\r\n '#14beb1',\r\n '#14beb1',\r\n '#14beb1',\r\n '#14bdb1',\r\n '#14bdb1',\r\n '#15bdb1',\r\n '#16bdb1',\r\n '#15bcb0',\r\n '#16baaf',\r\n '#16bab0',\r\n '#16bbb0',\r\n '#15bbaf',\r\n '#15b9ae',\r\n '#15b9ae',\r\n '#16baae',\r\n '#17baae',\r\n '#17b9ae',\r\n '#17b8ae',\r\n '#17b8ac',\r\n '#17b8ac',\r\n '#18b8ac',\r\n '#18b7ab',\r\n '#18b7ab',\r\n '#18b7ab',\r\n '#19b7ac',\r\n '#18b7ac',\r\n '#18b5ac',\r\n '#18b5ab',\r\n '#18b5aa',\r\n '#19b4aa',\r\n '#1ab4aa',\r\n '#1ab5aa',\r\n '#19b3a9',\r\n '#19b3a9',\r\n '#19b4a9',\r\n '#19b4a9',\r\n '#19b2a8',\r\n '#1ab3a8',\r\n '#1ab3a8',\r\n '#1ab2a7',\r\n '#1bb1a7',\r\n '#1ab0a7',\r\n '#1ab0a7',\r\n '#1ab0a7',\r\n '#1bb1a6',\r\n '#1bb1a6',\r\n '#1bafa6',\r\n '#1bafa6',\r\n '#1cafa5',\r\n '#1cafa5',\r\n '#1cafa5',\r\n '#1caea4',\r\n '#1caea4',\r\n '#1caea4',\r\n '#1caea4',\r\n '#1cada3',\r\n '#1caca2',\r\n '#1caca2',\r\n '#1caca2',\r\n '#1caca2',\r\n '#1eaba2',\r\n '#1eaca2',\r\n '#1eaca2',\r\n '#1eaba2',\r\n '#1daaa1',\r\n '#1ea9a1',\r\n '#1ea9a1',\r\n '#1daaa0',\r\n '#1ea89f',\r\n '#1fa9a0',\r\n '#1fa8a0',\r\n '#1ea79f',\r\n '#1fa79e',\r\n '#1fa89f',\r\n '#1fa79e',\r\n '#1ea69d',\r\n '#1ea79d',\r\n '#1ea79c',\r\n '#1ea59c',\r\n '#1ea59c',\r\n '#20a59c',\r\n '#1fa59c',\r\n '#1fa59c',\r\n '#20a49b',\r\n '#20a49c',\r\n '#1fa49c',\r\n '#1fa49a',\r\n '#1fa39a',\r\n '#20a29a',\r\n '#20a39a',\r\n '#20a39a',\r\n '#20a29a',\r\n '#21a199',\r\n '#21a099',\r\n '#21a099',\r\n '#21a198',\r\n '#21a098',\r\n '#219f98',\r\n '#219f98',\r\n '#21a098',\r\n '#219f97',\r\n '#219f97',\r\n '#219e97',\r\n '#219d96',\r\n '#219d97',\r\n '#229d96',\r\n '#229d96',\r\n '#229d96',\r\n '#229c95',\r\n '#239d95',\r\n '#239d95',\r\n '#239c95',\r\n '#229a94',\r\n '#229a93',\r\n '#229a93',\r\n '#239b93',\r\n '#229a93',\r\n '#239892',\r\n '#239892',\r\n '#239992',\r\n '#249991',\r\n '#249991',\r\n '#249791',\r\n '#239791',\r\n '#249791',\r\n '#249791',\r\n '#249791',\r\n '#239690',\r\n '#239590',\r\n '#24968f',\r\n '#24968f',\r\n '#23958f',\r\n '#24958e',\r\n '#24948e',\r\n '#24948e',\r\n '#24958e',\r\n '#25938d',\r\n '#25938d',\r\n '#25938d',\r\n '#24938c',\r\n '#24928c',\r\n '#25928c',\r\n '#25928c',\r\n '#25928c',\r\n '#25918c',\r\n '#25908b',\r\n '#25908b',\r\n '#25908b',\r\n '#248f8a',\r\n '#258f8a',\r\n '#258f8a',\r\n '#25908b',\r\n '#258f8a',\r\n '#248e89',\r\n '#258e89',\r\n '#268e89',\r\n '#268e88',\r\n '#268e88',\r\n '#268d88',\r\n '#268c88',\r\n '#268c86',\r\n '#268c86',\r\n '#268c87',\r\n '#268c87',\r\n '#268b86',\r\n '#268a87',\r\n '#268a86',\r\n '#268a85',\r\n '#268a86',\r\n '#268a86',\r\n '#268884',\r\n '#268884',\r\n '#268884',\r\n '#278783',\r\n '#278783',\r\n '#268883',\r\n '#278682',\r\n '#278682',\r\n '#278682',\r\n '#278682',\r\n '#278681',\r\n '#278681',\r\n '#278581',\r\n '#278480',\r\n '#278580',\r\n '#278480',\r\n '#278381',\r\n '#278481',\r\n '#27837f',\r\n '#288480',\r\n '#288380',\r\n '#27827f',\r\n '#27827f',\r\n '#27817e',\r\n '#27817e',\r\n '#27817e',\r\n '#27807d',\r\n '#27807d',\r\n '#27807d',\r\n '#28807d',\r\n '#27807c',\r\n '#277f7b',\r\n '#277f7b',\r\n '#277f7b',\r\n '#287e7b',\r\n '#287d7a',\r\n '#287d7a',\r\n '#297e7b',\r\n '#297d7b',\r\n '#297c7b',\r\n '#297c7b',\r\n '#297d7b',\r\n '#287b79',\r\n '#287c79',\r\n '#287b79',\r\n '#297a79',\r\n '#297a78',\r\n '#297b78',\r\n '#297b78',\r\n '#287a77',\r\n '#287976',\r\n '#287876',\r\n '#287876',\r\n '#287876',\r\n '#287775',\r\n '#297876',\r\n '#297976',\r\n '#297776',\r\n '#287675',\r\n '#297776',\r\n '#297775',\r\n '#287674',\r\n '#297574',\r\n '#297574',\r\n '#297574',\r\n '#297474',\r\n '#287472',\r\n '#297472',\r\n '#297472',\r\n '#297472',\r\n '#297271',\r\n '#287271',\r\n '#287271',\r\n '#297271',\r\n '#297271',\r\n '#287171',\r\n '#28716f',\r\n '#29716f',\r\n '#28706f',\r\n '#297070',\r\n '#297070',\r\n '#296f6f',\r\n '#296f6f',\r\n '#286e6e',\r\n '#286e6e',\r\n '#286f6e',\r\n '#296e6e',\r\n '#286d6d',\r\n '#286d6d',\r\n '#296d6d',\r\n '#296e6d',\r\n '#296e6d',\r\n '#296c6b',\r\n '#286c6b',\r\n '#286c6b',\r\n '#296c6b',\r\n '#296a6b',\r\n '#286a6a',\r\n '#286a6a',\r\n '#296969',\r\n '#2a6969',\r\n '#296969',\r\n '#296869',\r\n '#2a6969',\r\n '#2a6969',\r\n '#2a6969',\r\n '#2a6868',\r\n '#296768',\r\n '#296768',\r\n '#2a6767',\r\n '#2a6767',\r\n '#2a6767',\r\n '#2a6567',\r\n '#296566',\r\n '#286666',\r\n '#286565',\r\n '#286565',\r\n '#296565',\r\n '#286465',\r\n '#296464',\r\n '#296464',\r\n '#286364',\r\n '#286263',\r\n '#286263',\r\n '#286263',\r\n '#286163',\r\n '#286062',\r\n '#286062',\r\n '#286162',\r\n '#296163',\r\n '#285f62',\r\n '#296062',\r\n '#296062',\r\n '#295f61',\r\n '#296061',\r\n '#285f60',\r\n '#285d5f',\r\n '#285d5f',\r\n '#285d60',\r\n '#285c5f',\r\n '#285c5e',\r\n '#285c5f',\r\n '#295b5e',\r\n '#285b5d',\r\n '#285b5d',\r\n '#285c5d',\r\n '#295c5d',\r\n '#285b5c',\r\n '#285b5c',\r\n '#285b5c',\r\n '#285a5d',\r\n '#28595d',\r\n '#28595b',\r\n '#28595b',\r\n '#29585c',\r\n '#28585b',\r\n '#28585a',\r\n '#28575a',\r\n '#29585b',\r\n '#29585b',\r\n '#29575a',\r\n '#295659',\r\n '#285558',\r\n '#285658',\r\n '#285658',\r\n '#295558',\r\n '#295557',\r\n '#285457',\r\n '#285357',\r\n '#285457',\r\n '#285356',\r\n '#295456',\r\n '#295356',\r\n '#285256',\r\n '#295256',\r\n '#285255',\r\n '#285255',\r\n '#295255',\r\n '#295155',\r\n '#284f54',\r\n '#274f54',\r\n '#275054',\r\n '#275054',\r\n '#275054',\r\n '#274e52',\r\n '#274e52',\r\n '#284e52',\r\n '#274d51',\r\n '#274d51',\r\n '#274e52',\r\n '#274c50',\r\n '#274c50',\r\n '#274e51',\r\n '#284e51',\r\n '#274c50',\r\n '#284c50',\r\n '#284b50',\r\n '#274a50',\r\n '#284a50',\r\n '#284a50',\r\n '#28494e',\r\n '#27484e',\r\n '#274a4e',\r\n '#274a4d',\r\n '#27494d',\r\n '#28484e',\r\n '#27474c',\r\n '#26484d',\r\n '#26484d',\r\n '#26484c',\r\n '#25464b',\r\n '#26464b',\r\n '#26474b',\r\n '#26474b',\r\n '#26454a',\r\n '#26454a',\r\n '#26464a',\r\n '#26464a',\r\n '#254349',\r\n '#264349',\r\n '#264349',\r\n '#26444a',\r\n ],\r\n nullColor: '#414554',\r\n}\r\n\r\nconst redGreenGradientBubbles = {\r\n colors: [\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f63538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f53538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f43538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f33538',\r\n '#f23538',\r\n '#f23538',\r\n '#f23538',\r\n '#f23538',\r\n '#f13538',\r\n '#f13538',\r\n '#f13538',\r\n '#f13538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#f03538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ef3538',\r\n '#ee3639',\r\n '#ee3639',\r\n '#ee3639',\r\n '#ed3639',\r\n '#ed3639',\r\n '#ed3639',\r\n '#ec3639',\r\n '#ec3639',\r\n '#ec3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#eb3639',\r\n '#ea3639',\r\n '#ea3639',\r\n '#ea3639',\r\n '#e93639',\r\n '#e93639',\r\n '#e83538',\r\n '#e83538',\r\n '#e83538',\r\n '#e73538',\r\n '#e73538',\r\n '#e73538',\r\n '#e63538',\r\n '#e63639',\r\n '#e63639',\r\n '#e63639',\r\n '#e63639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e53639',\r\n '#e43639',\r\n '#e43639',\r\n '#e43639',\r\n '#e33639',\r\n '#e33639',\r\n '#e33639',\r\n '#e23639',\r\n '#e23639',\r\n '#e23639',\r\n '#e13639',\r\n '#e13639',\r\n '#e13639',\r\n '#e03639',\r\n '#e0363a',\r\n '#e0363a',\r\n '#e0363a',\r\n '#df363a',\r\n '#df363a',\r\n '#df363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#de363a',\r\n '#dd363a',\r\n '#dd373b',\r\n '#dd373b',\r\n '#dc373b',\r\n '#dc373b',\r\n '#dc373b',\r\n '#db373b',\r\n '#db373b',\r\n '#db373b',\r\n '#da373b',\r\n '#da373d',\r\n '#da373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d9373d',\r\n '#d8373e',\r\n '#d8373e',\r\n '#d7383e',\r\n '#d7383e',\r\n '#d7383e',\r\n '#d6383e',\r\n '#d6383e',\r\n '#d5383e',\r\n '#d5383e',\r\n '#d4383e',\r\n '#d4383e',\r\n '#d4383f',\r\n '#d3383f',\r\n '#d3383f',\r\n '#d3393f',\r\n '#d33940',\r\n '#d23940',\r\n '#d23940',\r\n '#d13940',\r\n '#d13941',\r\n '#d03941',\r\n '#d03941',\r\n '#cf3941',\r\n '#cf3942',\r\n '#cf3942',\r\n '#cf3a42',\r\n '#ce3a42',\r\n '#cd3a43',\r\n '#cd3a43',\r\n '#cc3943',\r\n '#cc3943',\r\n '#cb3944',\r\n '#cb3944',\r\n '#ca3944',\r\n '#ca3944',\r\n '#c93a45',\r\n '#c93a45',\r\n '#c83a45',\r\n '#c73a45',\r\n '#c73a45',\r\n '#c53a45',\r\n '#c53a45',\r\n '#c43a45',\r\n '#c43a46',\r\n '#c43a46',\r\n '#c43c46',\r\n '#c33c47',\r\n '#c33c47',\r\n '#c23c47',\r\n '#c23c47',\r\n '#c13c48',\r\n '#c13c48',\r\n '#c03c48',\r\n '#c03c48',\r\n '#bf3c48',\r\n '#bf3d4a',\r\n '#be3d4a',\r\n '#be3d4a',\r\n '#bd3d4a',\r\n '#bd3d4b',\r\n '#bc3d4b',\r\n '#bc3d4b',\r\n '#bb3d4b',\r\n '#bb3d4b',\r\n '#bb3d4c',\r\n '#bb3d4c',\r\n '#ba3d4c',\r\n '#ba3e4c',\r\n '#b83e4c',\r\n '#b83e4c',\r\n '#b83e4c',\r\n '#b73e4c',\r\n '#b73e4c',\r\n '#b63e4c',\r\n '#b63e4c',\r\n '#b53e4d',\r\n '#b53e4d',\r\n '#b53e4d',\r\n '#b43e4d',\r\n '#b43e4d',\r\n '#b33e4d',\r\n '#b33f4d',\r\n '#b23f4e',\r\n '#b23f4e',\r\n '#b23f4e',\r\n '#b13f4e',\r\n '#b13f4e',\r\n '#b03e4e',\r\n '#b03e4e',\r\n '#b03e4f',\r\n '#b03e4f',\r\n '#b03e4f',\r\n '#ae3e4f',\r\n '#ae3e4f',\r\n '#ad3e4f',\r\n '#ad3e4f',\r\n '#ac3e4f',\r\n '#ac3f50',\r\n '#ab3f50',\r\n '#ab3f50',\r\n '#aa3f50',\r\n '#aa3f50',\r\n '#a93f50',\r\n '#a93f50',\r\n '#a73f50',\r\n '#a73f50',\r\n '#a63f50',\r\n '#a63f51',\r\n '#a53f51',\r\n '#a53f51',\r\n '#a43f50',\r\n '#a43f50',\r\n '#a43f50',\r\n '#a43f50',\r\n '#a24050',\r\n '#a24050',\r\n '#a14050',\r\n '#a04051',\r\n '#a04051',\r\n '#9f4051',\r\n '#9f4051',\r\n '#9e4051',\r\n '#9c4051',\r\n '#9c4051',\r\n '#9b4051',\r\n '#9a4051',\r\n '#9a4053',\r\n '#994053',\r\n '#994153',\r\n '#984153',\r\n '#974153',\r\n '#974153',\r\n '#964153',\r\n '#954153',\r\n '#954153',\r\n '#934054',\r\n '#934054',\r\n '#924054',\r\n '#914054',\r\n '#914054',\r\n '#904053',\r\n '#8e4053',\r\n '#8e4153',\r\n '#8d4153',\r\n '#8d4153',\r\n '#8d4154',\r\n '#8b4154',\r\n '#8b4154',\r\n '#8a4154',\r\n '#894154',\r\n '#894154',\r\n '#884154',\r\n '#884154',\r\n '#864154',\r\n '#864154',\r\n '#854154',\r\n '#844155',\r\n '#844255',\r\n '#824255',\r\n '#824255',\r\n '#824255',\r\n '#824255',\r\n '#814255',\r\n '#814255',\r\n '#804255',\r\n '#804255',\r\n '#7e4255',\r\n '#7e4255',\r\n '#7d4255',\r\n '#7d4256',\r\n '#7c4256',\r\n '#7c4256',\r\n '#7b4256',\r\n '#7b4256',\r\n '#7b4256',\r\n '#794256',\r\n '#794256',\r\n '#784256',\r\n '#784356',\r\n '#774256',\r\n '#774256',\r\n '#774256',\r\n '#764256',\r\n '#764256',\r\n '#764256',\r\n '#754256',\r\n '#754256',\r\n '#744255',\r\n '#744255',\r\n '#744255',\r\n '#734255',\r\n '#734255',\r\n '#734255',\r\n '#724255',\r\n '#724255',\r\n '#724255',\r\n '#714255',\r\n '#714255',\r\n '#6f4255',\r\n '#6f4255',\r\n '#6f4255',\r\n '#6e4255',\r\n '#6e4255',\r\n '#6e4255',\r\n '#6d4255',\r\n '#6d4255',\r\n '#6d4255',\r\n '#6c4255',\r\n '#6c4255',\r\n '#6c4255',\r\n '#6b4155',\r\n '#6b4155',\r\n '#694155',\r\n '#694155',\r\n '#694155',\r\n '#684155',\r\n '#684155',\r\n '#684155',\r\n '#684155',\r\n '#684155',\r\n '#674155',\r\n '#674155',\r\n '#674155',\r\n '#664154',\r\n '#664154',\r\n '#654154',\r\n '#654154',\r\n '#654154',\r\n '#634154',\r\n '#634154',\r\n '#624154',\r\n '#624154',\r\n '#614154',\r\n '#614154',\r\n '#614154',\r\n '#604054',\r\n '#604054',\r\n '#5f4054',\r\n '#5f4054',\r\n '#5f4054',\r\n '#5e4054',\r\n '#5e4054',\r\n '#5d4054',\r\n '#5d4054',\r\n '#5d4054',\r\n '#5c4053',\r\n '#5c4053',\r\n '#5c4053',\r\n '#5b4053',\r\n '#5b4053',\r\n '#5a4053',\r\n '#5a4053',\r\n '#5a4053',\r\n '#593f53',\r\n '#593f53',\r\n '#593f53',\r\n '#583f53',\r\n '#583f53',\r\n '#583f53',\r\n '#573f53',\r\n '#573e53',\r\n '#573e53',\r\n '#563e53',\r\n '#563e53',\r\n '#563e53',\r\n '#563e53',\r\n '#553e52',\r\n '#553e52',\r\n '#553e52',\r\n '#543e52',\r\n '#543e52',\r\n '#543e52',\r\n '#543e52',\r\n '#543e52',\r\n '#533e52',\r\n '#533e52',\r\n '#533e52',\r\n '#533e52',\r\n '#533e52',\r\n '#523e51',\r\n '#523e51',\r\n '#523e51',\r\n '#523e51',\r\n '#523e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#513e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503e51',\r\n '#503f51',\r\n '#503f51',\r\n '#4f3f51',\r\n '#4f3f51',\r\n '#4f3f51',\r\n '#4d3f51',\r\n '#4d3f51',\r\n '#4d4151',\r\n '#4b4151',\r\n '#4b4151',\r\n '#4a4152',\r\n '#494152',\r\n '#484253',\r\n '#484253',\r\n '#474253',\r\n '#474253',\r\n '#464353',\r\n '#454353',\r\n '#454353',\r\n '#444454',\r\n '#444454',\r\n '#434454',\r\n '#434454',\r\n '#424454',\r\n '#424554',\r\n '#424554',\r\n '#424554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#414554',\r\n '#404654',\r\n '#404654',\r\n '#404654',\r\n '#404653',\r\n '#404653',\r\n '#3f4653',\r\n '#3f4753',\r\n '#3f4753',\r\n '#3e4753',\r\n '#3e4753',\r\n '#3e4852',\r\n '#3d4852',\r\n '#3d4852',\r\n '#3c4951',\r\n '#3c4951',\r\n '#3b4951',\r\n '#3b4a51',\r\n '#3b4a50',\r\n '#3b4a50',\r\n '#3a4c50',\r\n '#394c50',\r\n '#394c50',\r\n '#394c50',\r\n '#394c50',\r\n '#394c50',\r\n '#384c4f',\r\n '#384c4f',\r\n '#384c4f',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384d50',\r\n '#384e50',\r\n '#364e50',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364e4f',\r\n '#364f4f',\r\n '#364f4f',\r\n '#354f4f',\r\n '#354f4f',\r\n '#354f4f',\r\n '#354f4f',\r\n '#35514f',\r\n '#35514f',\r\n '#35514f',\r\n '#34514f',\r\n '#34514f',\r\n '#34524f',\r\n '#34524f',\r\n '#34524f',\r\n '#34524f',\r\n '#33524e',\r\n '#33534e',\r\n '#33534e',\r\n '#33534e',\r\n '#32534e',\r\n '#32544e',\r\n '#32544e',\r\n '#32544e',\r\n '#32544e',\r\n '#31554e',\r\n '#31554e',\r\n '#31554e',\r\n '#31564d',\r\n '#31564d',\r\n '#31564d',\r\n '#31564d',\r\n '#31574d',\r\n '#30574d',\r\n '#30574d',\r\n '#30584d',\r\n '#30584d',\r\n '#2f584d',\r\n '#2f594d',\r\n '#2f594d',\r\n '#2f594c',\r\n '#2e5a4c',\r\n '#2e5a4c',\r\n '#2e5a4c',\r\n '#2d5b4c',\r\n '#2d5b4c',\r\n '#2d5b4c',\r\n '#2d5b4c',\r\n '#2c5c4c',\r\n '#2c5c4c',\r\n '#2c5c4c',\r\n '#2b5d4b',\r\n '#2b5d4b',\r\n '#2b5d4b',\r\n '#2b5e4b',\r\n '#2a5e4b',\r\n '#2a5e4b',\r\n '#2a5f4b',\r\n '#2a5f4b',\r\n '#2a5f4b',\r\n '#2a604b',\r\n '#2a604b',\r\n '#2a604b',\r\n '#29624b',\r\n '#29624b',\r\n '#29624b',\r\n '#29624b',\r\n '#29634b',\r\n '#29634b',\r\n '#29634b',\r\n '#29644b',\r\n '#28644b',\r\n '#28644b',\r\n '#28644b',\r\n '#28654b',\r\n '#28654a',\r\n '#27654a',\r\n '#27664a',\r\n '#27664a',\r\n '#27664a',\r\n '#27664a',\r\n '#26684a',\r\n '#26684a',\r\n '#26684a',\r\n '#26684a',\r\n '#26694a',\r\n '#25694a',\r\n '#25694a',\r\n '#25694a',\r\n '#256a4a',\r\n '#256a4a',\r\n '#256a4a',\r\n '#256a4a',\r\n '#246a4a',\r\n '#246b49',\r\n '#246b49',\r\n '#246b49',\r\n '#246b49',\r\n '#246c49',\r\n '#246c49',\r\n '#236c49',\r\n '#236c49',\r\n '#236e49',\r\n '#236e49',\r\n '#236e49',\r\n '#236e49',\r\n '#236f49',\r\n '#236f49',\r\n '#236f49',\r\n '#226f49',\r\n '#227049',\r\n '#227049',\r\n '#227049',\r\n '#227149',\r\n '#227149',\r\n '#227149',\r\n '#227149',\r\n '#227349',\r\n '#217349',\r\n '#217349',\r\n '#217449',\r\n '#217449',\r\n '#217449',\r\n '#217449',\r\n '#217549',\r\n '#217549',\r\n '#217549',\r\n '#207649',\r\n '#207649',\r\n '#207649',\r\n '#207847',\r\n '#207847',\r\n '#207847',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207947',\r\n '#207b47',\r\n '#207b47',\r\n '#207b47',\r\n '#207c47',\r\n '#207c47',\r\n '#207c47',\r\n '#207d47',\r\n '#207d47',\r\n '#207e48',\r\n '#207e48',\r\n '#207e48',\r\n '#208048',\r\n '#208048',\r\n '#208048',\r\n '#208148',\r\n '#208148',\r\n '#208148',\r\n '#208248',\r\n '#1f8247',\r\n '#1f8247',\r\n '#1f8347',\r\n '#1f8347',\r\n '#1f8347',\r\n '#1f8547',\r\n '#1f8547',\r\n '#1f8547',\r\n '#1f8647',\r\n '#1f8647',\r\n '#1f8647',\r\n '#1e8747',\r\n '#1e8747',\r\n '#1e8747',\r\n '#1e8747',\r\n '#1e8947',\r\n '#1e8947',\r\n '#1e8947',\r\n '#1e8a47',\r\n '#1e8a47',\r\n '#1e8a47',\r\n '#1e8b47',\r\n '#1e8b47',\r\n '#1e8b47',\r\n '#1e8b47',\r\n '#1e8c47',\r\n '#1e8c47',\r\n '#1e8c47',\r\n '#1e8c47',\r\n '#1e8e47',\r\n '#1e8e47',\r\n '#1e8e47',\r\n '#1e8f47',\r\n '#1d8f47',\r\n '#1d8f47',\r\n '#1d8f47',\r\n '#1d9047',\r\n '#1d9047',\r\n '#1e9047',\r\n '#1e9047',\r\n '#1e9147',\r\n '#1e9147',\r\n '#1e9147',\r\n '#1e9347',\r\n '#1e9347',\r\n '#1e9347',\r\n '#1e9347',\r\n '#1e9447',\r\n '#1e9447',\r\n '#1e9447',\r\n '#1e9548',\r\n '#1e9548',\r\n '#1e9548',\r\n '#1e9648',\r\n '#1e9648',\r\n '#1e9648',\r\n '#1f9848',\r\n '#1f9848',\r\n '#1f9848',\r\n '#209948',\r\n '#209948',\r\n '#209948',\r\n '#209a48',\r\n '#209a48',\r\n '#209a48',\r\n '#209b48',\r\n '#209b48',\r\n '#209b48',\r\n '#209b48',\r\n '#219c48',\r\n '#219c48',\r\n '#219d48',\r\n '#219d48',\r\n '#219e48',\r\n '#219e48',\r\n '#219e48',\r\n '#219f48',\r\n '#219f48',\r\n '#21a048',\r\n '#21a048',\r\n '#21a048',\r\n '#21a148',\r\n '#21a148',\r\n '#21a348',\r\n '#21a348',\r\n '#22a449',\r\n '#22a449',\r\n '#22a449',\r\n '#22a549',\r\n '#22a549',\r\n '#22a649',\r\n '#22a649',\r\n '#22a64a',\r\n '#23a74a',\r\n '#23a74a',\r\n '#23a84a',\r\n '#23a84a',\r\n '#23aa4a',\r\n '#23aa4a',\r\n '#23aa4a',\r\n '#24ab4a',\r\n '#24ab4a',\r\n '#24ab4a',\r\n '#25ac4a',\r\n '#25ac4a',\r\n '#25ad4a',\r\n '#25ad4a',\r\n '#25ad4a',\r\n '#26ae4a',\r\n '#26ae4a',\r\n '#26ae4a',\r\n '#26af4a',\r\n '#26af4a',\r\n '#26b04a',\r\n '#26b04a',\r\n '#26b04a',\r\n '#27b14a',\r\n '#27b14a',\r\n '#27b14a',\r\n '#27b24a',\r\n '#27b24a',\r\n '#27b24a',\r\n '#27b24a',\r\n '#27b34a',\r\n '#27b34a',\r\n '#27b34a',\r\n '#28b54b',\r\n '#28b54b',\r\n '#28b54b',\r\n '#28b54b',\r\n '#28b64b',\r\n '#28b64b',\r\n '#28b64d',\r\n '#28b64d',\r\n '#28b74d',\r\n '#28b74d',\r\n '#28b74d',\r\n '#29b74d',\r\n '#29b84d',\r\n '#29b84d',\r\n '#29b84d',\r\n '#29b84d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94d',\r\n '#29b94e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2aba4e',\r\n '#2abb4e',\r\n '#2abb4e',\r\n '#2abb4f',\r\n '#2abb4f',\r\n '#2abc4f',\r\n '#2abc4f',\r\n '#2abc4f',\r\n '#2bbc4f',\r\n '#2bbc4f',\r\n '#2bbd4f',\r\n '#2bbd4f',\r\n '#2bbd50',\r\n '#2bbd50',\r\n '#2bbd50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbe50',\r\n '#2bbf51',\r\n '#2cbf51',\r\n '#2cbf51',\r\n '#2cbf51',\r\n '#2cc051',\r\n '#2cc051',\r\n '#2cc051',\r\n '#2cc052',\r\n '#2cc052',\r\n '#2cc152',\r\n '#2cc152',\r\n '#2cc152',\r\n '#2cc152',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2dc353',\r\n '#2ec453',\r\n '#2ec453',\r\n '#2ec454',\r\n '#2ec454',\r\n '#2ec454',\r\n '#2ec554',\r\n '#2ec554',\r\n '#2fc554',\r\n '#2fc554',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc655',\r\n '#2fc755',\r\n '#2fc755',\r\n '#2fc756',\r\n '#2fc756',\r\n '#2fc756',\r\n '#2fc756',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc856',\r\n '#2fc858',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fc958',\r\n '#2fca58',\r\n '#2fca58',\r\n '#2fca58',\r\n '#2fca59',\r\n '#2fca59',\r\n '#2fca59',\r\n '#2fca59',\r\n '#2fca59',\r\n '#30ca59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb59',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cb5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n '#30cc5a',\r\n ],\r\n nullColor: 'pink',\r\n}\r\nconst blueGradientBubbles = {\r\n colors: [\r\n '#0c3574',\r\n '#0b3475',\r\n '#0b3475',\r\n '#0c3475',\r\n '#0c3575',\r\n '#0c3475',\r\n '#0c3475',\r\n '#0c3576',\r\n '#0c3677',\r\n '#0c3677',\r\n '#0d3776',\r\n '#0d3676',\r\n '#0e3677',\r\n '#0e3576',\r\n '#0d3576',\r\n '#0d3677',\r\n '#0d3777',\r\n '#0e3778',\r\n '#0e3778',\r\n '#0d3877',\r\n '#0d3878',\r\n '#0d3878',\r\n '#0d3878',\r\n '#0d3878',\r\n '#0d3978',\r\n '#0e3778',\r\n '#0e3779',\r\n '#0e397a',\r\n '#0f3979',\r\n '#0f3a7a',\r\n '#0f3a7b',\r\n '#0f3a7b',\r\n '#0e3a7a',\r\n '#0e3a7a',\r\n '#0f3a7a',\r\n '#0e3a7a',\r\n '#0f3a7c',\r\n '#0f3a7c',\r\n '#0f3a7b',\r\n '#0f3b7b',\r\n '#0f3a7b',\r\n '#0e3a7b',\r\n '#0e3b7c',\r\n '#0f3c7c',\r\n '#0f3c7c',\r\n '#0f3d7d',\r\n '#0f3d7d',\r\n '#0f3c7d',\r\n '#0f3c7e',\r\n '#0f3d7e',\r\n '#0f3d7e',\r\n '#0f3d7e',\r\n '#0f3e7e',\r\n '#0f3d7e',\r\n '#103e7e',\r\n '#113e7f',\r\n '#103e7e',\r\n '#103d7e',\r\n '#103e7f',\r\n '#103e7e',\r\n '#113e80',\r\n '#113f80',\r\n '#103f7f',\r\n '#114080',\r\n '#113f81',\r\n '#114081',\r\n '#113f81',\r\n '#103e80',\r\n '#103f81',\r\n '#104181',\r\n '#104181',\r\n '#103f81',\r\n '#114082',\r\n '#103f82',\r\n '#103f81',\r\n '#114081',\r\n '#114282',\r\n '#114282',\r\n '#114282',\r\n '#124182',\r\n '#114082',\r\n '#114182',\r\n '#114283',\r\n '#124384',\r\n '#114384',\r\n '#114383',\r\n '#124383',\r\n '#124485',\r\n '#114384',\r\n '#114384',\r\n '#114384',\r\n '#114484',\r\n '#124585',\r\n '#124585',\r\n '#124585',\r\n '#134587',\r\n '#134586',\r\n '#134586',\r\n '#134687',\r\n '#134687',\r\n '#134586',\r\n '#134686',\r\n '#134687',\r\n '#134787',\r\n '#134788',\r\n '#134688',\r\n '#134688',\r\n '#134687',\r\n '#124788',\r\n '#124789',\r\n '#134688',\r\n '#134688',\r\n '#134688',\r\n '#134788',\r\n '#134889',\r\n '#13488a',\r\n '#13488a',\r\n '#13488a',\r\n '#134889',\r\n '#134789',\r\n '#13478a',\r\n '#13498a',\r\n '#14498a',\r\n '#15498b',\r\n '#14488b',\r\n '#14498c',\r\n '#15498c',\r\n '#14498b',\r\n '#15498c',\r\n '#15498c',\r\n '#14498c',\r\n '#154a8d',\r\n '#144b8c',\r\n '#144b8c',\r\n '#154b8d',\r\n '#144c8d',\r\n '#154b8d',\r\n '#154b8d',\r\n '#154c8d',\r\n '#144c8d',\r\n '#154c8d',\r\n '#154c8d',\r\n '#164c8e',\r\n '#164c8e',\r\n '#164c8e',\r\n '#164c8e',\r\n '#154d8e',\r\n '#154d8f',\r\n '#164e90',\r\n '#164e90',\r\n '#164e90',\r\n '#154e8f',\r\n '#154d90',\r\n '#154e90',\r\n '#164e90',\r\n '#154e91',\r\n '#154f91',\r\n '#155091',\r\n '#165091',\r\n '#164f91',\r\n '#164f92',\r\n '#165092',\r\n '#165092',\r\n '#165092',\r\n '#165092',\r\n '#155192',\r\n '#155192',\r\n '#175093',\r\n '#175293',\r\n '#175293',\r\n '#175093',\r\n '#175093',\r\n '#175293',\r\n '#175293',\r\n '#175193',\r\n '#175294',\r\n '#175394',\r\n '#175394',\r\n '#175294',\r\n '#175395',\r\n '#175295',\r\n '#175295',\r\n '#175395',\r\n '#175395',\r\n '#185495',\r\n '#185495',\r\n '#175396',\r\n '#175497',\r\n '#175397',\r\n '#175497',\r\n '#175597',\r\n '#175597',\r\n '#175597',\r\n '#175497',\r\n '#185497',\r\n '#195698',\r\n '#195798',\r\n '#185597',\r\n '#185497',\r\n '#185599',\r\n '#195799',\r\n '#195799',\r\n '#185799',\r\n '#185699',\r\n '#195699',\r\n '#195799',\r\n '#195799',\r\n '#19589a',\r\n '#185899',\r\n '#185899',\r\n '#18589a',\r\n '#18589a',\r\n '#18599a',\r\n '#18589a',\r\n '#18579a',\r\n '#19589b',\r\n '#19599b',\r\n '#19599a',\r\n '#18599a',\r\n '#1a5a9c',\r\n '#1a5a9d',\r\n '#1a5a9c',\r\n '#1a599d',\r\n '#1a5a9d',\r\n '#1a5a9e',\r\n '#1a5a9e',\r\n '#195a9d',\r\n '#195a9d',\r\n '#195a9d',\r\n '#195a9d',\r\n '#1a5a9e',\r\n '#1a5b9f',\r\n '#1a5b9e',\r\n '#1a5b9e',\r\n '#1a5d9e',\r\n '#1a5c9f',\r\n '#195c9f',\r\n '#195c9f',\r\n '#195da0',\r\n '#195d9f',\r\n '#195ca0',\r\n '#1a5ca0',\r\n '#1a5d9f',\r\n '#1a5ea1',\r\n '#1a5ea1',\r\n '#1a5da0',\r\n '#1a5da0',\r\n '#195ea0',\r\n '#195ea0',\r\n '#1a5ea0',\r\n '#1a5ea1',\r\n '#1c5fa3',\r\n '#1c5fa3',\r\n '#1b5fa3',\r\n '#1b5ea2',\r\n '#1b5ea2',\r\n '#1b5ea2',\r\n '#1b5fa3',\r\n '#1b60a3',\r\n '#1b60a3',\r\n '#1b5fa3',\r\n '#1b60a3',\r\n '#1c61a4',\r\n '#1b60a4',\r\n '#1b60a4',\r\n '#1b61a4',\r\n '#1b60a4',\r\n '#1b60a4',\r\n '#1b60a4',\r\n '#1b62a4',\r\n '#1b62a5',\r\n '#1b61a5',\r\n '#1b62a5',\r\n '#1b62a5',\r\n '#1b61a5',\r\n '#1d61a6',\r\n '#1d63a6',\r\n '#1c62a6',\r\n '#1d63a6',\r\n '#1d62a6',\r\n '#1c62a6',\r\n '#1c63a7',\r\n '#1d64a8',\r\n '#1c64a7',\r\n '#1c64a7',\r\n '#1d65a8',\r\n '#1c63a8',\r\n '#1d64a9',\r\n '#1d65a9',\r\n '#1d65a9',\r\n '#1d65a9',\r\n '#1d65a9',\r\n '#1d66a9',\r\n '#1d66a9',\r\n '#1c65a9',\r\n '#1d66aa',\r\n '#1d66aa',\r\n '#1c65aa',\r\n '#1c66aa',\r\n '#1c66aa',\r\n '#1d66aa',\r\n '#1c66ab',\r\n '#1c68ab',\r\n '#1c67ab',\r\n '#1c67ab',\r\n '#1d68ab',\r\n '#1d68ac',\r\n '#1e68ac',\r\n '#1e67ab',\r\n '#1d67ab',\r\n '#1e69ac',\r\n '#1e69ac',\r\n '#1d68ac',\r\n '#1d68ac',\r\n '#1e69ae',\r\n '#1e6aae',\r\n '#1e6aad',\r\n '#1e69ad',\r\n '#1e6aae',\r\n '#1d69ae',\r\n '#1d6aae',\r\n '#1e6bae',\r\n '#1e6aaf',\r\n '#1e6baf',\r\n '#1e6baf',\r\n '#1e6bb0',\r\n '#1e6cb0',\r\n '#1d6baf',\r\n '#1d6baf',\r\n '#1e6bb0',\r\n '#1d6ab0',\r\n '#1d6cb0',\r\n '#1d6db1',\r\n '#1e6cb1',\r\n '#1e6db0',\r\n '#1e6cb1',\r\n '#1d6cb1',\r\n '#1d6cb0',\r\n '#1f6db1',\r\n '#1f6cb1',\r\n '#1f6cb1',\r\n '#1f6db2',\r\n '#1f6cb1',\r\n '#1f6db1',\r\n '#1f6eb3',\r\n '#1f6fb3',\r\n '#1f6eb3',\r\n '#1f6eb3',\r\n '#1f6fb3',\r\n '#1f6fb3',\r\n '#1f6fb4',\r\n '#1f6fb4',\r\n '#1f6fb4',\r\n '#2070b5',\r\n '#1f70b4',\r\n '#1f70b4',\r\n '#1f70b4',\r\n '#1f71b5',\r\n '#1f71b5',\r\n '#1f71b5',\r\n '#1f71b5',\r\n '#1f70b5',\r\n '#1f71b5',\r\n '#1f72b6',\r\n '#1f72b6',\r\n '#1f71b6',\r\n '#1f71b6',\r\n '#1f72b5',\r\n '#2072b6',\r\n '#2172b7',\r\n '#2172b7',\r\n '#2172b6',\r\n '#2172b6',\r\n '#2172b7',\r\n '#2072b7',\r\n '#2073b8',\r\n '#2173b9',\r\n '#2173b9',\r\n '#2075b8',\r\n '#2075b8',\r\n '#2174b8',\r\n '#2174b9',\r\n '#2175ba',\r\n '#2174ba',\r\n '#2174ba',\r\n '#2175ba',\r\n '#2175ba',\r\n '#2176bb',\r\n '#2176bb',\r\n '#2076ba',\r\n '#2076ba',\r\n '#2176bb',\r\n '#2176bb',\r\n '#2076bb',\r\n '#2077bb',\r\n '#2177bc',\r\n '#2077bb',\r\n '#2077bb',\r\n '#2077bc',\r\n '#2077bc',\r\n '#2077bc',\r\n '#2177bd',\r\n '#2078bc',\r\n '#2078bc',\r\n '#2178bd',\r\n '#2279be',\r\n '#2178be',\r\n '#2179be',\r\n '#2179be',\r\n '#2279bf',\r\n '#2278bf',\r\n '#2179bf',\r\n '#217abf',\r\n '#227ac0',\r\n '#2279c0',\r\n '#227ac0',\r\n '#227abf',\r\n '#227ac0',\r\n '#217bc0',\r\n '#227bc0',\r\n '#227bc0',\r\n '#217bc0',\r\n '#217ac0',\r\n '#217bc0',\r\n '#217cc1',\r\n '#227cc1',\r\n '#217cc1',\r\n '#217cc1',\r\n '#227cc1',\r\n '#217cc1',\r\n '#227cc2',\r\n '#227cc2',\r\n '#227dc2',\r\n '#217dc1',\r\n '#217dc2',\r\n '#217dc2',\r\n '#217dc3',\r\n '#217ec3',\r\n '#217ec3',\r\n '#217ec3',\r\n '#227ec4',\r\n '#237fc4',\r\n '#237ec5',\r\n '#237ec5',\r\n '#237ec5',\r\n '#237ec4',\r\n '#237ec4',\r\n '#237ec6',\r\n '#237fc6',\r\n '#2380c6',\r\n '#237fc5',\r\n '#237fc5',\r\n '#2380c5',\r\n '#2380c7',\r\n '#2381c6',\r\n '#2381c6',\r\n '#2380c6',\r\n '#2381c7',\r\n '#2380c6',\r\n '#2380c7',\r\n '#2381c8',\r\n '#2382c7',\r\n '#2381c7',\r\n '#2381c7',\r\n '#2382c8',\r\n '#2382c8',\r\n '#2383c8',\r\n '#2384c9',\r\n '#2384c9',\r\n '#2383c8',\r\n '#2383c9',\r\n '#2383ca',\r\n '#2384ca',\r\n '#2384ca',\r\n '#2383ca',\r\n '#2383ca',\r\n '#2384ca',\r\n '#2384ca',\r\n '#2484cb',\r\n '#2485cb',\r\n '#2385cb',\r\n '#2384cb',\r\n '#2385cb',\r\n '#2485cb',\r\n '#2585cc',\r\n '#2586cc',\r\n '#2485cc',\r\n '#2485cc',\r\n '#2485cc',\r\n '#2486cd',\r\n '#2586cd',\r\n '#2587cd',\r\n '#2487cc',\r\n '#2486cd',\r\n '#2587cd',\r\n '#2587cd',\r\n '#2487ce',\r\n '#2588ce',\r\n '#2588ce',\r\n '#2588ce',\r\n '#2488cf',\r\n '#2588cf',\r\n '#2589ce',\r\n '#2589ce',\r\n '#2688cf',\r\n '#2589ce',\r\n '#2789cf',\r\n '#2889d0',\r\n '#2889d0',\r\n '#288ad0',\r\n '#2889d0',\r\n '#298ad0',\r\n '#2b8bd0',\r\n '#2a89cf',\r\n '#2989cf',\r\n '#2b8bcf',\r\n '#2c8cd0',\r\n '#2c8ccf',\r\n '#2d8cd0',\r\n '#2d8cd0',\r\n '#2c8bd0',\r\n '#2e8cd1',\r\n '#2e8cd1',\r\n '#2e8cd0',\r\n '#2e8cd1',\r\n '#2e8dd0',\r\n '#308ed0',\r\n '#318ed1',\r\n '#318dd1',\r\n '#308dd0',\r\n '#308dd0',\r\n '#318fd0',\r\n '#338fd1',\r\n '#328dd1',\r\n '#338ed1',\r\n '#348fd1',\r\n '#348fd2',\r\n '#338ed2',\r\n '#338ed1',\r\n '#348fd1',\r\n '#3590d1',\r\n '#368fd2',\r\n '#3690d1',\r\n '#3690d1',\r\n '#3690d2',\r\n '#3791d3',\r\n '#3791d3',\r\n '#3791d2',\r\n '#3790d2',\r\n '#3790d2',\r\n '#3892d2',\r\n '#3892d2',\r\n '#3992d2',\r\n '#3a92d3',\r\n '#3a93d3',\r\n '#3b92d3',\r\n '#3b92d3',\r\n '#3a93d3',\r\n '#3a93d3',\r\n '#3b93d3',\r\n '#3c94d3',\r\n '#3d94d3',\r\n '#3d94d3',\r\n '#3d94d3',\r\n '#3d93d3',\r\n '#3f93d4',\r\n '#3f96d4',\r\n '#3f96d4',\r\n '#3e95d3',\r\n '#3e96d3',\r\n '#3f96d4',\r\n '#4095d4',\r\n '#4095d4',\r\n '#3f96d4',\r\n '#3f96d4',\r\n '#4096d4',\r\n '#4297d4',\r\n '#4197d4',\r\n '#4096d3',\r\n '#4196d3',\r\n '#4397d5',\r\n '#4398d5',\r\n '#4397d5',\r\n '#4398d5',\r\n '#4398d5',\r\n '#4499d5',\r\n '#4499d5',\r\n '#4499d5',\r\n '#4499d5',\r\n '#459ad5',\r\n '#459ad4',\r\n '#459ad4',\r\n '#459ad4',\r\n '#459ad5',\r\n '#459ad6',\r\n '#469bd6',\r\n '#469bd5',\r\n '#469ad5',\r\n '#469ad5',\r\n '#479bd5',\r\n '#499cd6',\r\n '#499cd6',\r\n '#499cd5',\r\n '#499cd5',\r\n '#499cd6',\r\n '#4a9dd6',\r\n '#4a9fd6',\r\n '#4a9ed6',\r\n '#4a9ed5',\r\n '#4a9ed6',\r\n '#4b9ed7',\r\n '#4b9ed7',\r\n '#4b9fd7',\r\n '#4a9ed7',\r\n '#4b9ed7',\r\n '#4ca0d7',\r\n '#4c9ed7',\r\n '#4b9ed7',\r\n '#4c9fd7',\r\n '#4da0d7',\r\n '#4da0d8',\r\n '#4da0d8',\r\n '#4c9fd8',\r\n '#4c9fd7',\r\n '#4da0d7',\r\n '#4ea2d8',\r\n '#4ea2d8',\r\n '#4ea1d8',\r\n '#4ea2d7',\r\n '#4ea2d7',\r\n '#4ea2d8',\r\n '#4ea2d7',\r\n '#4ea2d7',\r\n '#4fa3d9',\r\n '#50a3d9',\r\n '#50a3d8',\r\n '#4fa2d8',\r\n '#4fa3d8',\r\n '#51a3d8',\r\n '#51a3d8',\r\n '#51a3d9',\r\n '#51a3d8',\r\n '#51a3d8',\r\n '#52a4d9',\r\n '#52a5da',\r\n '#52a4d9',\r\n '#52a4d9',\r\n '#52a5da',\r\n '#53a5da',\r\n '#53a5da',\r\n '#53a5da',\r\n '#54a5da',\r\n '#54a5da',\r\n '#54a6d9',\r\n '#54a7d9',\r\n '#54a6d9',\r\n '#54a7d9',\r\n '#55a8da',\r\n '#55a8da',\r\n '#56a8db',\r\n '#55a7da',\r\n '#56a8db',\r\n '#57a8db',\r\n '#56a7da',\r\n '#57a8db',\r\n '#57a8db',\r\n '#57a8db',\r\n '#58a9da',\r\n '#58aada',\r\n '#57a9da',\r\n '#57a8da',\r\n '#57a9da',\r\n '#58aadb',\r\n '#59aadb',\r\n '#59aadb',\r\n '#59aadc',\r\n '#59abdb',\r\n '#5aacdb',\r\n '#5aabdb',\r\n '#59abdb',\r\n '#5babdb',\r\n '#5babdc',\r\n '#5babdc',\r\n '#5aabdc',\r\n '#5baddc',\r\n '#5bacdc',\r\n '#5cacdc',\r\n '#5bacdc',\r\n '#5caedc',\r\n '#5caddc',\r\n '#5cacdc',\r\n '#5caddc',\r\n '#5dafdc',\r\n '#5dafdc',\r\n '#5caedc',\r\n '#5daedc',\r\n '#5eb0dd',\r\n '#5db0dd',\r\n '#5eafdd',\r\n '#5eafdd',\r\n '#5fb1dd',\r\n '#5fb1dd',\r\n '#5fafdd',\r\n '#5fafdd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#60b1dd',\r\n '#61b1de',\r\n '#61b1de',\r\n '#61b1de',\r\n '#61b1de',\r\n '#61b2dd',\r\n '#61b2dd',\r\n '#62b2dd',\r\n '#62b2de',\r\n '#62b2de',\r\n '#62b2de',\r\n '#63b3dd',\r\n '#63b4de',\r\n '#63b4df',\r\n '#63b4df',\r\n '#63b3df',\r\n '#63b4de',\r\n '#63b4de',\r\n '#63b4df',\r\n '#63b5df',\r\n '#64b6df',\r\n '#64b6df',\r\n '#64b6df',\r\n '#64b5de',\r\n '#65b6e0',\r\n '#65b7e0',\r\n '#65b7df',\r\n '#65b6e0',\r\n '#65b6e0',\r\n '#65b6df',\r\n '#66b6df',\r\n '#67b7e0',\r\n '#67b8e0',\r\n '#66b8df',\r\n '#66b8e0',\r\n '#67b8df',\r\n '#67b7df',\r\n '#67b8e0',\r\n '#67b9e0',\r\n '#67b8e0',\r\n '#68b9e1',\r\n '#69bae1',\r\n '#69bae1',\r\n '#68b8e0',\r\n '#69b9e0',\r\n '#69bae0',\r\n '#69bae0',\r\n '#6abbe1',\r\n '#69bbe0',\r\n '#69bbe0',\r\n '#69bbe1',\r\n '#6abce1',\r\n '#6abbe0',\r\n '#6abbe0',\r\n '#6abbe1',\r\n '#6abce1',\r\n '#6abce2',\r\n '#6bbde2',\r\n '#6bbee1',\r\n '#6cbde2',\r\n '#6cbde2',\r\n '#6bbde1',\r\n '#6cbde1',\r\n '#6cbde2',\r\n '#6cbde2',\r\n '#6cbde2',\r\n '#6cbee2',\r\n '#6cbee2',\r\n '#6dbfe2',\r\n '#6dbfe2',\r\n '#6dbee2',\r\n '#6ebee3',\r\n '#6fbfe3',\r\n '#6fc0e3',\r\n '#6fc0e2',\r\n '#6ebfe3',\r\n '#6ec0e3',\r\n '#6ec1e3',\r\n '#6ec1e3',\r\n '#6ec1e4',\r\n '#6fc0e3',\r\n '#70c1e3',\r\n '#70c2e3',\r\n '#70c2e4',\r\n '#6fc1e3',\r\n '#6fc1e3',\r\n '#70c2e3',\r\n '#71c2e4',\r\n '#70c3e4',\r\n '#70c2e4',\r\n '#70c2e4',\r\n '#72c4e4',\r\n '#72c4e4',\r\n '#71c2e4',\r\n '#71c2e4',\r\n '#73c4e4',\r\n '#72c3e4',\r\n '#72c3e4',\r\n '#72c3e4',\r\n '#72c4e4',\r\n '#73c5e4',\r\n '#73c5e4',\r\n '#72c5e4',\r\n '#73c6e4',\r\n '#73c5e4',\r\n '#73c6e4',\r\n '#74c7e5',\r\n '#73c6e4',\r\n '#75c8e5',\r\n '#74c7e5',\r\n '#74c7e5',\r\n '#74c6e5',\r\n '#75c6e5',\r\n '#76c7e5',\r\n '#75c7e5',\r\n '#76c8e5',\r\n '#75c8e5',\r\n '#75c8e6',\r\n '#76c8e6',\r\n '#77c8e5',\r\n '#76c9e6',\r\n '#76c9e5',\r\n '#76c9e5',\r\n '#77cae6',\r\n '#77c9e6',\r\n '#77c9e6',\r\n '#77c9e6',\r\n '#78cae6',\r\n '#77cbe7',\r\n '#77cbe7',\r\n '#78cbe7',\r\n '#78cbe7',\r\n '#79cae6',\r\n '#78cae6',\r\n '#78cbe7',\r\n '#78cae6',\r\n '#79cae6',\r\n '#7acce6',\r\n '#7acde7',\r\n '#7acbe7',\r\n '#79cce6',\r\n '#79cee7',\r\n '#7acee8',\r\n '#7acde8',\r\n '#79cde7',\r\n '#7acde7',\r\n '#7bcee8',\r\n '#7acee7',\r\n '#7acfe7',\r\n '#7acee7',\r\n '#7ccee8',\r\n '#7bcee7',\r\n '#7bcfe7',\r\n '#7bcfe7',\r\n '#7bcfe8',\r\n '#7dd0e9',\r\n '#7dd0e9',\r\n '#7ccfe8',\r\n '#7ccfe8',\r\n '#7cd1e8',\r\n '#7cd1e8',\r\n '#7cd0e8',\r\n '#7cd0e8',\r\n '#7dd1e8',\r\n '#7dd2e9',\r\n '#7dd2e9',\r\n '#7ed2e9',\r\n '#7dd1e8',\r\n '#7dd2e8',\r\n '#7fd3ea',\r\n '#7fd3ea',\r\n '#7ed3e9',\r\n '#7ed2ea',\r\n '#80d2ea',\r\n '#7fd3e9',\r\n '#7fd2e9',\r\n '#80d4ea',\r\n '#80d5ea',\r\n '#7fd4e9',\r\n '#7fd4e9',\r\n '#80d4e9',\r\n '#81d6ea',\r\n '#81d6eb',\r\n '#80d4ea',\r\n '#80d5ea',\r\n '#80d6ea',\r\n '#80d5ea',\r\n '#81d6ea',\r\n '#81d6ea',\r\n '#82d6ea',\r\n '#82d7ea',\r\n '#82d8ea',\r\n '#81d6ea',\r\n '#81d6ea',\r\n '#82d8ea',\r\n '#82d7eb',\r\n '#82d8eb',\r\n '#82d8eb',\r\n '#82d7eb',\r\n '#83d9eb',\r\n '#84d9ec',\r\n '#84d9ec',\r\n '#83d8eb',\r\n '#83d8eb',\r\n '#85d8eb',\r\n '#85d9eb',\r\n '#84daeb',\r\n '#85daeb',\r\n '#85dbec',\r\n '#85dbec',\r\n '#84daec',\r\n '#85dbec',\r\n '#86dbec',\r\n '#86dbec',\r\n '#85dbec',\r\n '#85dbec',\r\n '#85dbec',\r\n '#85dcec',\r\n '#86ddec',\r\n '#86dceb',\r\n '#86dceb',\r\n '#87ddec',\r\n '#86dced',\r\n '#86dcec',\r\n '#86deec',\r\n '#86deed',\r\n '#87ddec',\r\n '#87deed',\r\n '#87dfec',\r\n '#87deec',\r\n '#88deed',\r\n '#89deec',\r\n '#88deec',\r\n '#88dfed',\r\n '#88dfec',\r\n '#89e0ed',\r\n '#89e0ee',\r\n '#88dfee',\r\n '#89e0ee',\r\n '#88dfed',\r\n '#88dfed',\r\n '#8ae1ee',\r\n '#89e1ed',\r\n '#8ae2ee',\r\n '#8ae2ee',\r\n '#8ae2ee',\r\n '#8ae1ee',\r\n '#8be3ee',\r\n '#8be3ee',\r\n '#8be2ee',\r\n '#8be2ee',\r\n '#8be2ef',\r\n '#8ce2ef',\r\n '#8ce3ef',\r\n '#8be3ee',\r\n '#8ce4ef',\r\n '#8be3ef',\r\n '#8be3ee',\r\n '#8de5ef',\r\n '#8de4ef',\r\n '#8de4ef',\r\n '#8de5ef',\r\n '#8ce4ef',\r\n '#8de4ef',\r\n '#8de4ef',\r\n '#8de4f0',\r\n '#8ee6f0',\r\n '#8ee6f0',\r\n '#8ee6ef',\r\n '#8ee6ef',\r\n '#8de7ef',\r\n '#8de6ef',\r\n '#8fe7f0',\r\n '#8fe8f1',\r\n '#8ee6ef',\r\n '#8ee6ef',\r\n '#8ee8f1',\r\n '#8fe8f1',\r\n '#8fe7f0',\r\n '#90e8f1',\r\n '#90e8f1',\r\n '#8fe8f0',\r\n '#90eaf1',\r\n '#8fe9f0',\r\n '#8fe9f0',\r\n '#90eaf1',\r\n '#90eaf1',\r\n '#91eaf1',\r\n '#91eaf1',\r\n '#91eaf1',\r\n '#92ebf2',\r\n '#91eaf1',\r\n ],\r\n nullColor: 'pink',\r\n}\r\n\r\nexport const gradients: Record = {\r\n [ScaleId.IntradayReduced]: redGreenGradient,\r\n [ScaleId.DayPerf]: redGreenGradient,\r\n _5: redGreenGradient,\r\n _10: redGreenGradient,\r\n _15: redGreenGradient,\r\n _20: redGreenGradient,\r\n _25: redGreenGradient,\r\n _relvol: blueGradient,\r\n _pe: greenRedGradient,\r\n _fpe: greenRedGradient,\r\n _peg: greenRedGradient,\r\n _ps: greenRedGradient,\r\n _pb: greenRedGradient,\r\n _div: greenGradient,\r\n _eps5y: redGreenGradient,\r\n _short: redGradient,\r\n _rec: redGreenGradient,\r\n _earndate: earningsGradient,\r\n _portfolioPct: redGreenGradient,\r\n _portfolioUsd: redGreenGradient,\r\n}\r\n\r\nexport const bubbleGradients: Record = {\r\n [ScaleId.IntradayReduced]: redGreenGradientBubbles,\r\n [ScaleId.DayPerf]: redGreenGradientBubbles,\r\n _5: redGreenGradientBubbles,\r\n _10: redGreenGradientBubbles,\r\n _15: redGreenGradientBubbles,\r\n _20: redGreenGradientBubbles,\r\n _25: redGreenGradientBubbles,\r\n _relvol: blueGradientBubbles,\r\n _pe: redGreenGradientBubbles,\r\n _fpe: redGreenGradientBubbles,\r\n _peg: redGreenGradientBubbles,\r\n _ps: redGreenGradientBubbles,\r\n _pb: redGreenGradientBubbles,\r\n _div: redGreenGradientBubbles,\r\n _eps5y: redGreenGradientBubbles,\r\n _short: redGreenGradientBubbles, // TODO red skala\r\n _rec: redGreenGradientBubbles,\r\n _earndate: redGreenGradientBubbles,\r\n _portfolioPct: redGreenGradientBubbles,\r\n _portfolioUsd: redGreenGradientBubbles,\r\n}\r\n\r\nexport const gradientSmall = redGreenGradientSmall\r\n","import classnames from 'classnames'\r\nimport { ForwardedRef, HTMLProps, PropsWithChildren, ReactNode, forwardRef } from 'react'\r\n\r\nimport { Icon } from './icon'\r\n\r\nexport enum ColorVariant {\r\n violet = 'violet',\r\n emerald = 'emerald',\r\n orange = 'orange',\r\n teal = 'teal',\r\n pink = 'pink',\r\n lime = 'lime',\r\n purple = 'purple',\r\n green = 'green',\r\n yellow = 'yellow',\r\n blue = 'blue',\r\n red = 'red',\r\n gray = 'gray',\r\n default = 'default',\r\n dark = 'dark',\r\n}\r\n\r\nexport enum CheckboxSize {\r\n none = '', // Do not set fixed size\r\n small = 'min-h-6 text-2xs', // 24px\r\n regular = 'min-h-7 text-sm', // 28px\r\n}\r\nexport type CheckboxSizeType = keyof typeof CheckboxSize\r\n\r\ninterface CheckboxProps extends Omit, 'label' | 'size'> {\r\n /**\r\n * Text that gets displayed on the right side of the checkbox\r\n */\r\n label?: ReactNode\r\n\r\n checked: boolean\r\n\r\n /**\r\n * Size of the checkbox\r\n *\r\n * @default \"regular\"\r\n */\r\n size?: CheckboxSizeType\r\n\r\n /**\r\n * Color of the checkbox\r\n *\r\n * @default \"default\"\r\n */\r\n color?: ColorVariant\r\n}\r\n\r\nfunction CheckboxComponent(\r\n {\r\n className,\r\n label,\r\n size = 'regular',\r\n color = ColorVariant.default,\r\n children,\r\n ...props\r\n }: PropsWithChildren,\r\n ref: ForwardedRef\r\n) {\r\n const checked = props.checked ?? props.defaultChecked\r\n\r\n return (\r\n \r\n
\r\n \r\n {checked && (\r\n \r\n )}\r\n
\r\n {label ?? children}\r\n \r\n )\r\n}\r\n\r\nexport const Checkbox = forwardRef(CheckboxComponent)\r\n","import classnames from 'classnames'\r\nimport { HTMLProps, PropsWithChildren, memo, useCallback, useLayoutEffect, useRef, useState } from 'react'\r\n\r\nexport interface Interaction {\r\n left: number\r\n top: number\r\n}\r\n\r\n/**\r\n * Clamp value between two bounds\r\n */\r\nfunction clamp(num: number, min = 0, max = 1) {\r\n return num > max ? max : num < min ? min : num\r\n}\r\n\r\n/**\r\n * Check if an event was triggered by touch\r\n */\r\nfunction isTouch(event: MouseEvent | TouchEvent): event is TouchEvent {\r\n return 'touches' in event\r\n}\r\n\r\n/**\r\n * Returns a relative position of the pointer inside the node's bounding box\r\n */\r\nfunction getRelativePosition(node: HTMLDivElement, event: MouseEvent | TouchEvent): Interaction {\r\n const rect = node.getBoundingClientRect()\r\n\r\n // Get user's pointer position from `touches` array if it's a `TouchEvent`\r\n const pointer = isTouch(event) ? event.touches[0] : (event as MouseEvent)\r\n\r\n return {\r\n left: clamp((pointer.pageX - (rect.left + window.pageXOffset)) / rect.width),\r\n top: clamp((pointer.pageY - (rect.top + window.pageYOffset)) / rect.height),\r\n }\r\n}\r\n\r\n/**\r\n * Browsers introduced an intervention, making touch events passive by default.\r\n * This workaround removes `preventDefault` call from the touch handlers.\r\n * @see https://github.com/facebook/react/issues/19651\r\n */\r\nfunction preventDefaultMove(event: MouseEvent | TouchEvent) {\r\n !isTouch(event) && event.preventDefault()\r\n}\r\n\r\ninterface Props {\r\n onMove: (interaction: Interaction) => void\r\n onKey: (offset: Interaction) => void\r\n}\r\n\r\nfunction DraggablePickerComponent({\r\n onMove,\r\n onKey,\r\n className,\r\n ...props\r\n}: PropsWithChildren & HTMLProps) {\r\n const container = useRef(null)\r\n const hasTouched = useRef(false)\r\n const [isDragging, setDragging] = useState(false)\r\n\r\n /**\r\n * Prevent mobile browsers from handling mouse events (conflicting with touch ones).\r\n * If we detected a touch interaction before, we prefer reacting to touch events only.\r\n */\r\n const isValid = useRef((event: MouseEvent | TouchEvent): boolean => {\r\n if (hasTouched.current && !isTouch(event)) return false\r\n if (!hasTouched.current) hasTouched.current = isTouch(event)\r\n return true\r\n })\r\n\r\n const handleMove = useCallback(\r\n (event: MouseEvent | TouchEvent) => {\r\n preventDefaultMove(event)\r\n\r\n // If user moves the pointer outside of the window or iframe bounds and release it there,\r\n // `mouseup`/`touchend` won't be fired. In order to stop the picker from following the cursor\r\n // after the user has moved the mouse/finger back to the document, we check `event.buttons`\r\n // and `event.touches`. It allows us to detect that the user is just moving his pointer\r\n // without pressing it down\r\n const isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0\r\n\r\n if (isDown && container.current) {\r\n onMove(getRelativePosition(container.current, event))\r\n } else {\r\n setDragging(false)\r\n }\r\n },\r\n [onMove]\r\n )\r\n\r\n const handleMoveStart = useCallback(\r\n ({ nativeEvent }: React.MouseEvent | React.TouchEvent) => {\r\n preventDefaultMove(nativeEvent)\r\n\r\n if (!isValid.current(nativeEvent)) return\r\n\r\n // The node/ref must actually exist when user start an interaction.\r\n // We won't suppress the ESLint warning though, as it should probably be something to be aware of.\r\n onMove(getRelativePosition(container.current!, nativeEvent))\r\n setDragging(true)\r\n },\r\n [onMove]\r\n )\r\n\r\n const handleKeyDown = useCallback(\r\n (event: React.KeyboardEvent) => {\r\n const keyCode = event.which || event.keyCode\r\n\r\n // Ignore all keys except arrow ones\r\n if (keyCode < 37 || keyCode > 40) return\r\n // Do not scroll page by arrow keys when document is focused on the element\r\n event.preventDefault()\r\n // Send relative offset to the parent component.\r\n // We use codes (37←, 38↑, 39→, 40↓) instead of keys ('ArrowRight', 'ArrowDown', etc)\r\n // to reduce the size of the library\r\n onKey({\r\n left: keyCode === 39 ? 0.05 : keyCode === 37 ? -0.05 : 0,\r\n top: keyCode === 40 ? 0.05 : keyCode === 38 ? -0.05 : 0,\r\n })\r\n },\r\n [onKey]\r\n )\r\n\r\n const handleMoveEnd = useCallback(() => setDragging(false), [])\r\n\r\n const toggleDocumentEvents = useCallback(\r\n (state: boolean) => {\r\n // add or remove additional pointer event listeners\r\n const toggleEvent = state ? window.addEventListener : window.removeEventListener\r\n toggleEvent(hasTouched.current ? 'touchmove' : 'mousemove', handleMove)\r\n toggleEvent(hasTouched.current ? 'touchend' : 'mouseup', handleMoveEnd)\r\n },\r\n [handleMove, handleMoveEnd]\r\n )\r\n\r\n useLayoutEffect(() => {\r\n toggleDocumentEvents(isDragging)\r\n return () => {\r\n isDragging && toggleDocumentEvents(false)\r\n }\r\n }, [isDragging, toggleDocumentEvents])\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport const DraggablePicker = memo(DraggablePickerComponent)\r\n","interface PointerProps {\r\n className?: string\r\n top?: number\r\n left: number\r\n color: string\r\n}\r\n\r\nexport function Pointer({ color, left, top = 0.5 }: PointerProps) {\r\n return (\r\n \r\n
\r\n
\r\n )\r\n}\r\n","/**\r\n * Keep this file in sync with `app/utils/colors.ts` in charts repo\r\n * */\r\n\r\nexport interface RGBA {\r\n r: number\r\n g: number\r\n b: number\r\n a: number\r\n}\r\n\r\nexport interface HSVA {\r\n h: number\r\n s: number\r\n v: number\r\n a: number\r\n}\r\n\r\nexport interface HSLA {\r\n h: number\r\n s: number\r\n l: number\r\n a: number\r\n}\r\n\r\n/**\r\n * Convert Hex string to RGBA object.\r\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\r\n *\r\n * Input: color in hex3, hex4, hex6 or hex8 format (#fff)\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hexStringToRGBA(hexString: string): RGBA {\r\n const hexColor = removeHashSymbol(hexString)\r\n let r: string | number = 0\r\n let g: string | number = 0\r\n let b: string | number = 0\r\n let a: string | number = 255\r\n\r\n // 3 digits\r\n if (hexColor.length === 3 || hexColor.length === 4) {\r\n r = '0x' + hexColor[0] + hexColor[0]\r\n g = '0x' + hexColor[1] + hexColor[1]\r\n b = '0x' + hexColor[2] + hexColor[2]\r\n // Get channel if defined\r\n a = hexColor.length === 4 ? '0x' + hexColor[3] + hexColor[3] : a\r\n\r\n // 6 digits\r\n } else if (hexColor.length === 6 || hexColor.length === 8) {\r\n r = '0x' + hexColor[0] + hexColor[1]\r\n g = '0x' + hexColor[2] + hexColor[3]\r\n b = '0x' + hexColor[4] + hexColor[5]\r\n // Get channel if defined\r\n a = hexColor.length === 8 ? '0x' + hexColor[6] + hexColor[7] : a\r\n }\r\n\r\n return { r: Number(r), g: Number(g), b: Number(b), a: Math.min(Math.round((Number(a) / 255) * 100) / 100, 1) }\r\n}\r\n\r\n/**\r\n * Convert HEX string to HSVA color representation.\r\n *\r\n * Input: color in hex3, hex4, hex6 or hex8 format (#fff)\r\n *\r\n * Output: { h: [0,360], s: [0,1], v: [0,1], a: [0,1]}\r\n */\r\nexport function hexStringToHSVA(hexString: string) {\r\n return rgbaToHSVA(hexStringToRGBA(hexString))\r\n}\r\n\r\n/**\r\n * Convert HEX string to HSLA color representation.\r\n *\r\n * Input: color in hex3, hex4, hex6 or hex8 format (#fff)\r\n *\r\n * Output: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n */\r\nexport function hexStringToHSLA(hexString: string) {\r\n return rgbaToHSLA(hexStringToRGBA(hexString))\r\n}\r\n\r\n/**\r\n * Convert alpha value to hex value\r\n *\r\n * Input: [0,1]\r\n *\r\n * Output: alpha in HEX format\r\n */\r\nexport function alphaToHex(alpha: number) {\r\n return Math.max(Math.min(Math.round(alpha * 255), 255), 0)\r\n .toString(16)\r\n .padStart(2, '0')\r\n}\r\n\r\n/**\r\n * Convert RGBA color to HEX string.\r\n *\r\n * Input: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n *\r\n * Output: color in hex6 or hex8 depending on whether or not alpha is enabled\r\n */\r\nexport function rgbaToHexString(color: RGBA, alpha = false) {\r\n const r = color.r.toString(16)\r\n const g = color.g.toString(16)\r\n const b = color.b.toString(16)\r\n const hexString = '#' + r.padStart(2, '0') + g.padStart(2, '0') + b.padStart(2, '0')\r\n\r\n if (!alpha || color.a === 1) {\r\n return hexString\r\n }\r\n\r\n return `${hexString}${alphaToHex(color.a)}`\r\n}\r\n\r\n/**\r\n * Convert HSVA object to HEX string\r\n *\r\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\r\n *\r\n * Input: { h: [0,360], s: [0,1], v: [0,1], a: [0,1]}\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hsvaToHEXString(color: HSVA, alpha = false) {\r\n const rgbaColor = hsvaToRGBA(color)\r\n\r\n return rgbaToHexString(rgbaColor, alpha)\r\n}\r\n\r\n/**\r\n * Convert HSLA object to HEX string\r\n *\r\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\r\n *\r\n * Input: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hslaToHexString(color: HSLA, alpha = false) {\r\n const rgbaColor = hslaToRGBA(color)\r\n\r\n return rgbaToHexString(rgbaColor, alpha)\r\n}\r\n\r\n/**\r\n * Convert RGBA color to HSVA\r\n * @see https://stackoverflow.com/a/54070620/6662683\r\n *\r\n * Input: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n *\r\n * Output: { h: [0,360], s: [0,1], v: [0,1], a: [0,1]}\r\n */\r\nexport function rgbaToHSVA(color: RGBA): HSVA {\r\n const r = color.r / 255\r\n const g = color.g / 255\r\n const b = color.b / 255\r\n\r\n const v = Math.max(r, g, b)\r\n const c = v - Math.min(r, g, b)\r\n const h = c && (v === r ? (g - b) / c : v === g ? 2 + (b - r) / c : 4 + (r - g) / c)\r\n\r\n return {\r\n h: 60 * (h < 0 ? h + 6 : h),\r\n s: v ? c / v : 0,\r\n v: v,\r\n a: color.a,\r\n }\r\n}\r\n\r\n/**\r\n * Convert RGBA to HSLA\r\n * @see https://stackoverflow.com/a/54071699/6662683\r\n *\r\n * Input: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n *\r\n * Output: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n */\r\nexport function rgbaToHSLA(color: RGBA): HSLA {\r\n const r = color.r / 255\r\n const g = color.g / 255\r\n const b = color.b / 255\r\n\r\n const v = Math.max(r, g, b)\r\n const c = v - Math.min(r, g, b)\r\n const f = 1 - Math.abs(v + v - c - 1)\r\n const h = c && (v === r ? (g - b) / c : v === g ? 2 + (b - r) / c : 4 + (r - g) / c)\r\n\r\n return {\r\n h: 60 * (h < 0 ? h + 6 : h),\r\n s: f ? c / f : 0,\r\n l: (v + v - c) / 2,\r\n a: color.a,\r\n }\r\n}\r\n\r\n/**\r\n * Convert HSVA color to RGBA\r\n * @see https://stackoverflow.com/a/54024653/6662683\r\n *\r\n * Input: { h: [0,360], s: [0,1], v: [0,1], a: [0,1]}\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hsvaToRGBA(color: HSVA): RGBA {\r\n const f = (n: number, k = (n + color.h / 60) % 6) => color.v - color.v * color.s * Math.max(Math.min(k, 4 - k, 1), 0)\r\n\r\n return {\r\n r: Math.round(f(5) * 255),\r\n g: Math.round(f(3) * 255),\r\n b: Math.round(f(1) * 255),\r\n a: Math.round(color.a * 100) / 100,\r\n }\r\n}\r\n\r\n/**\r\n * Convert HSLA color to RGBA\r\n * @see https://stackoverflow.com/a/54014428/6662683\r\n *\r\n * Input: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hslaToRGBA(color: HSLA): RGBA {\r\n const a = color.s * Math.min(color.l, 1 - color.l)\r\n const f = (n: number, k = (n + color.h / 30) % 12) => color.l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)\r\n\r\n return {\r\n r: Math.round(f(0) * 255),\r\n g: Math.round(f(8) * 255),\r\n b: Math.round(f(4) * 255),\r\n a: color.a,\r\n }\r\n}\r\n\r\n/**\r\n * Convert RGBA color to rgba() string\r\n *\r\n * Input: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n *\r\n * Output: rgba(r, g, b, a)\r\n */\r\nexport function rgbaToRGBAString(color: RGBA) {\r\n return `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`\r\n}\r\n\r\n/**\r\n * Convert rgba() string to RGBA color\r\n *\r\n * Input: rgba(r, g, b, a)\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function rgbaStringToObject(color: string) {\r\n const colorParts = /^rgba?\\(([0-9]{1,3})[ ,]+([0-9]{1,3})[ ,]+([0-9]{1,3})[ ,]*([01].?[0-9]*)?\\)$/.exec(color)\r\n const [red, green, blue, alpha = '1'] = colorParts?.slice(1) || [0, 0, 0, 1].map(String)\r\n return {\r\n r: Number.parseInt(red),\r\n g: Number.parseInt(green),\r\n b: Number.parseInt(blue),\r\n a: Number.parseFloat(alpha),\r\n }\r\n}\r\n\r\n/**\r\n * Convert HSLA color to hsla() string\r\n *\r\n * Input: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n *\r\n * Output: hsla(h, s, l, a)\r\n */\r\nexport function hslaToHSLAString(color: HSLA) {\r\n return `hsla(${Math.round(color.h)}, ${Math.round(color.s * 10000) / 100}%, ${Math.round(color.l * 10000) / 100}%, ${\r\n color.a\r\n })`\r\n}\r\n\r\nexport function removeHashSymbol(strColor: string) {\r\n return strColor.replace(/#/g, '')\r\n}\r\n\r\n/**\r\n * Check if the param is a valid color by setting it as style\r\n */\r\nexport function isValidColor(strColor: string) {\r\n const isRgb = strColor.startsWith('rgba')\r\n const s = new Option().style\r\n\r\n s.color = isRgb ? strColor : `#${removeHashSymbol(strColor)}`\r\n\r\n return s.color !== ''\r\n}\r\n\r\n/**\r\n * Normalize color to be a hex value\r\n */\r\nexport function convertColorToHEX(strColor: string) {\r\n const isRgb = getIsRgb(strColor)\r\n\r\n if (isRgb) {\r\n return rgbaToHexString(rgbaStringToObject(strColor), true)\r\n }\r\n\r\n return strColor\r\n}\r\n\r\n/**\r\n * Returns true if color is rgb or rgba\r\n */\r\nexport function getIsRgb(strColor: string, isAlphaAllowed = true) {\r\n const rgbKeys = ['rgb']\r\n if (isAlphaAllowed) {\r\n rgbKeys.push('rgba')\r\n }\r\n return rgbKeys.some((startsWith) => strColor.startsWith(startsWith))\r\n}\r\n\r\n/**\r\n * Convert any color format to HSVA (internal color picker representation)\r\n */\r\nexport function getHSVAFromColor(strColor: string) {\r\n if (getIsRgb(strColor)) {\r\n return rgbaToHSVA(rgbaStringToObject(strColor))\r\n }\r\n\r\n return hexStringToHSVA(strColor)\r\n}\r\n\r\n/**\r\n * Stringify HSVA color representation into a output format\r\n */\r\nexport function stringifyHSVAColor(color: HSVA, output: 'rgba' | 'hex', canSelectAlpha?: boolean) {\r\n switch (output) {\r\n case 'rgba':\r\n return rgbaToRGBAString(hsvaToRGBA(color))\r\n default:\r\n return hsvaToHEXString(color, canSelectAlpha)\r\n }\r\n}\r\n\r\n/**\r\n * Get luma value from RGBA color using the Rec. 709 coefficients\r\n * @see https://en.wikipedia.org/wiki/Luma_%28video%29\r\n *\r\n * If luma is >= 165 the foreground color should be dark\r\n */\r\nexport function getLumaFromRGBA(color: RGBA) {\r\n return 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b\r\n}\r\n\r\n/**\r\n * Checks if luma is >= 165 or alpha < 0.3\r\n */\r\nexport function getIsColorTooLightOrTransparent(color: RGBA) {\r\n return getLumaFromRGBA(color) >= 165 || color.a < 0.5\r\n}\r\n\r\n/**\r\n * Set specific alpha for a hex color\r\n */\r\nexport function getHEXWithSpecificAplha(color: string, alpha = 1) {\r\n const rgbaColor = hexStringToRGBA(color)\r\n return rgbaToHexString({ ...rgbaColor, a: alpha }, true)\r\n}\r\n\r\n/**\r\n * Get rgba from valid color string\r\n */\r\nexport function getRGBAValueFromValidColorString(value: string) {\r\n if (getIsRgb(value)) return rgbaToRGBAString(rgbaStringToObject(value))\r\n return rgbaToRGBAString(hexStringToRGBA(value))\r\n}\r\n","import { useCallback, useMemo } from 'react'\r\n\r\nimport { DraggablePicker, Interaction } from './draggable'\r\nimport { Pointer } from './pointer'\r\nimport { HSVA, hsvaToHEXString } from './util'\r\n\r\ninterface LightnessProps {\r\n color: HSVA\r\n onChange: (color: HSVA) => void\r\n}\r\n\r\nexport function Alpha({ color, onChange }: LightnessProps) {\r\n const changeLightness = useCallback((pos: Interaction) => onChange({ ...color, a: 1 - pos.left }), [onChange, color])\r\n\r\n const gradientPreview = useMemo(() => {\r\n const gradientFrom = hsvaToHEXString({ ...color, a: 1 })\r\n const gradientTo = hsvaToHEXString({ ...color, a: 0 }, true)\r\n\r\n return `linear-gradient(90deg, ${gradientFrom}, ${gradientTo})`\r\n // Don’t recalculate when alpha changes\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [color.h, color.s, color.v])\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n )\r\n}\r\n","import { Icon } from '../icon'\r\nimport { HSVA, hexStringToHSVA } from './util'\r\n\r\nconst DEFAULT_COLORS = [\r\n { title: 'Rose', value: '#f43f5e' },\r\n { title: 'Pink', value: '#db2777' },\r\n { title: 'Fuchsia', value: '#c026d3' },\r\n { title: 'Purple', value: '#9333ea' },\r\n { title: 'Violet', value: '#7c3aed' },\r\n { title: 'Indigo', value: '#4f46e5' },\r\n { title: 'Blue', value: '#2563eb' },\r\n { title: 'Light Blue', value: '#0284c7' },\r\n { title: 'Cyan', value: '#0891b2' },\r\n { title: 'Teal', value: '#0d9488' },\r\n { title: 'Emerald', value: '#059669' },\r\n { title: 'Green', value: '#16a34a' },\r\n { title: 'Lime', value: '#65a30d' },\r\n { title: 'Yellow', value: '#eab308' },\r\n { title: 'Amber', value: '#d97706' },\r\n { title: 'Red', value: '#dc2626' },\r\n]\r\n\r\ninterface ColorItem {\r\n /**\r\n * Name of the color\r\n */\r\n title: string\r\n\r\n /**\r\n * Hex value\r\n */\r\n value: string\r\n}\r\n\r\ninterface ColorPaletteProps {\r\n /**\r\n * Current selected color in HEX format (supports HEX8 for alpha)\r\n */\r\n color: string\r\n\r\n /**\r\n * List of colors to display in the palette\r\n *\r\n * @default DEFAULT_COLORS\r\n */\r\n colors?: ColorItem[]\r\n\r\n /**\r\n * Callback when user picks a color\r\n */\r\n onChange: (color: string, originalColor: HSVA) => void\r\n}\r\n\r\nexport function ColorPalette({ color, colors = DEFAULT_COLORS, onChange }: ColorPaletteProps) {\r\n const lowerCaseColor = color.toLowerCase()\r\n\r\n return (\r\n
\r\n {colors.map((colorObj) => {\r\n const isSelected = lowerCaseColor.startsWith(colorObj.value)\r\n return (\r\n onChange(colorObj.value, hexStringToHSVA(colorObj.value))}\r\n >\r\n {isSelected && }\r\n
\r\n )\r\n })}\r\n
\r\n )\r\n}\r\n","import { useCallback, useMemo } from 'react'\r\n\r\nimport { DraggablePicker, Interaction } from './draggable'\r\nimport { Pointer } from './pointer'\r\nimport { HSVA, hsvaToHEXString } from './util'\r\n\r\ninterface HueSaturationProps {\r\n color: HSVA\r\n onChange: (color: HSVA) => void\r\n}\r\n\r\nfunction getPositionFromHSLA(color: HSVA) {\r\n return {\r\n left: color.h / 360,\r\n top: 1 - color.s,\r\n }\r\n}\r\n\r\nexport function HueSaturation({ color, onChange }: HueSaturationProps) {\r\n const position = useMemo(() => getPositionFromHSLA(color), [color])\r\n\r\n const colorPreview = useMemo(() => hsvaToHEXString({ h: color.h, s: color.s, v: 1, a: 1 }), [color.h, color.s])\r\n\r\n const changeSaturation = useCallback(\r\n (pos: Interaction) =>\r\n onChange({\r\n h: Math.round(pos.left * 360),\r\n s: 1 - pos.top,\r\n v: 1,\r\n a: color.a,\r\n }),\r\n [color.a, onChange]\r\n )\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n )\r\n}\r\n","import { useCallback, useMemo } from 'react'\r\n\r\nimport { DraggablePicker, Interaction } from './draggable'\r\nimport { Pointer } from './pointer'\r\nimport { HSVA, hsvaToHEXString } from './util'\r\n\r\ninterface LightnessProps {\r\n color: HSVA\r\n onChange: (color: HSVA) => void\r\n}\r\n\r\nexport function Lightness({ color, onChange }: LightnessProps) {\r\n const changeLightness = useCallback((pos: Interaction) => onChange({ ...color, v: 1 - pos.left }), [onChange, color])\r\n\r\n const colorPreview = useMemo(\r\n () => hsvaToHEXString({ h: color.h, s: color.s, v: color.v, a: 1 }),\r\n [color.h, color.s, color.v]\r\n )\r\n\r\n const gradientPreview = useMemo(() => {\r\n const gradientFrom = hsvaToHEXString({ h: color.h, s: color.s, v: 1, a: 1 })\r\n const gradientTo = hsvaToHEXString({ h: color.h, s: color.s, v: 0, a: 1 })\r\n\r\n return `linear-gradient(90deg, ${gradientFrom}, ${gradientTo})`\r\n }, [color.h, color.s])\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { Icon, IconNameType, isValidIconName } from '../icon'\r\nimport { getIsColorTooLightOrTransparent, hexStringToRGBA } from './util'\r\n\r\ninterface ColorPreviewProps {\r\n /**\r\n * Name of an icon or JSX.Element\r\n */\r\n icon?: JSX.Element | IconNameType\r\n\r\n /**\r\n * One or more colors to show in the preview\r\n */\r\n color: string | string[]\r\n\r\n /**\r\n * Wrapper classname\r\n */\r\n className?: string\r\n}\r\n\r\nexport function ColorPreview({ icon, color, className }: ColorPreviewProps) {\r\n const colors = Array.isArray(color) ? color : [color]\r\n const isTooLight = getIsColorTooLightOrTransparent(hexStringToRGBA(colors[0]))\r\n return (\r\n \r\n {icon && (\r\n
\r\n {isValidIconName(icon) ? (\r\n \r\n ) : (\r\n icon\r\n )}\r\n
\r\n )}\r\n {colors.map((color, index) => (\r\n //   has to be there because of a bug on safari which ignores h-full when empty element\r\n
\r\n  \r\n
\r\n ))}\r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React, { ForwardedRef, useCallback, useEffect, useState } from 'react'\r\n\r\nimport { Input, InputComponentProps } from '../input'\r\nimport { ColorPreview } from './color-preview'\r\nimport { ColorPickerProps } from './picker'\r\nimport * as colorUtil from './util'\r\n\r\ninterface PickerInputProps extends Omit {\r\n color: ColorPickerProps['color']\r\n onChange: ColorPickerProps['onChange']\r\n\r\n /*\r\n * Is color preview square visible\r\n *\r\n * @default true\r\n * */\r\n hasColorPreview?: boolean\r\n}\r\nexport const PickerInput = React.forwardRef(\r\n (\r\n { color, inputClass, hasColorPreview = true, onChange, ...props }: PickerInputProps,\r\n ref: ForwardedRef\r\n ) => {\r\n const [colorInput, setColorInput] = useState(colorUtil.removeHashSymbol(color))\r\n const isRgba = colorUtil.getIsRgb(colorInput)\r\n\r\n useEffect(() => {\r\n setColorInput(colorUtil.removeHashSymbol(color))\r\n }, [color])\r\n\r\n const handleColorInputChange = useCallback(\r\n (event: React.KeyboardEvent) => {\r\n const value = colorUtil.removeHashSymbol(event.currentTarget.value)\r\n const isRgba = value.startsWith('rgba')\r\n const colorValue = isRgba ? value : `#${value}`\r\n\r\n setColorInput(value)\r\n if ((value.length >= 6 || (isRgba && value.length >= 16)) && colorUtil.isValidColor(colorValue)) {\r\n onChange(colorValue, colorUtil.hexStringToHSVA(colorValue))\r\n }\r\n },\r\n [onChange]\r\n )\r\n return (\r\n \r\n {hasColorPreview && (\r\n
\r\n \r\n
\r\n )}\r\n {!isRgba && #}\r\n
\r\n }\r\n onChange={handleColorInputChange}\r\n />\r\n )\r\n }\r\n)\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport React, { ReactNode, useCallback, useEffect, useRef, useState } from 'react'\r\n\r\nimport { isMobile } from '../../../app/shared/isMobile'\r\nimport { Button } from '../button'\r\nimport { Popover, PopoverTrigger, usePopoverState } from '../popover'\r\nimport { Alpha } from './alpha'\r\nimport { ColorPalette } from './color-palette'\r\nimport { HueSaturation } from './hue-saturation'\r\nimport { Lightness } from './lightness'\r\nimport { PickerInput } from './picker-input'\r\nimport * as colorUtil from './util'\r\n\r\nexport interface ColorPickerProps {\r\n /**\r\n * The selected color in HEX format (supports HEX8 for alpha)\r\n */\r\n color: string\r\n\r\n /**\r\n * Whether or not the user is able to select custom color\r\n *\r\n * @default true\r\n */\r\n canSelectCustom?: boolean\r\n\r\n /**\r\n * Whether or not the user is able to change alpha channel. Only applicable\r\n * when `canSelectCustom` is true\r\n *\r\n * @default true\r\n */\r\n canSelectAlpha?: boolean\r\n\r\n /**\r\n * Sets the output format for the color picker\r\n *\r\n * @default 'hex'\r\n */\r\n outputFormat?: 'hex' | 'rgba'\r\n\r\n /**\r\n * Callback when user changes color. Use the second parameter to do color space\r\n * conversions otherwise the color could differ due to rounding\r\n */\r\n onChange: (color: string, originalColor: colorUtil.HSVA) => void\r\n\r\n /**\r\n * Callback when user clicks on a palette item. Used to close popover\r\n */\r\n onPaletteItemClick?: () => void\r\n}\r\n\r\nexport function ColorPicker({\r\n color,\r\n canSelectCustom = true,\r\n canSelectAlpha = true,\r\n outputFormat = 'hex',\r\n onChange,\r\n onPaletteItemClick,\r\n}: ColorPickerProps) {\r\n const cachedColor = useRef(color)\r\n const [hsvaColor, setColor] = useState(colorUtil.getHSVAFromColor(color))\r\n const popover = Ariakit.usePopoverContext()\r\n const input = popover?.useState('disclosureElement')\r\n\r\n /**\r\n * Update state if the color from outside changed\r\n */\r\n useEffect(() => {\r\n const currentColor = colorUtil.removeHashSymbol(cachedColor.current)\r\n const newColor = colorUtil.removeHashSymbol(color)\r\n\r\n if (currentColor === newColor || !colorUtil.isValidColor(newColor)) return\r\n\r\n cachedColor.current = color\r\n setColor(colorUtil.getHSVAFromColor(color))\r\n }, [color])\r\n\r\n /**\r\n * Handle color change\r\n * 1. update cache so we can correctly check when outside color updates\r\n * 2. Update internal color representation\r\n * 3. call onChange with string color\r\n */\r\n const onChangeCallback = useCallback(\r\n (color: colorUtil.HSVA) => {\r\n const stringColor = colorUtil.stringifyHSVAColor(color, outputFormat, canSelectAlpha)\r\n cachedColor.current = stringColor\r\n onChange(stringColor, color)\r\n setColor(color)\r\n },\r\n [onChange, canSelectAlpha, outputFormat]\r\n )\r\n\r\n const onSetCustomCodeClick = useCallback(() => {\r\n const value = prompt('Enter a color code')?.trim()\r\n\r\n if (!value) return\r\n\r\n const isValid = colorUtil.isValidColor(value)\r\n\r\n if (!isValid) {\r\n return alert('The code is not a valid color')\r\n }\r\n\r\n onChangeCallback(colorUtil.getHSVAFromColor(value))\r\n }, [onChangeCallback])\r\n\r\n return (\r\n
\r\n {canSelectCustom && (\r\n <>\r\n {isMobile() && (\r\n \r\n )}\r\n \r\n \r\n\r\n {canSelectAlpha && }\r\n \r\n )}\r\n\r\n \r\n {\r\n input?.focus({ preventScroll: true })\r\n onPaletteItemClick?.()\r\n onChangeCallback({ ...orignalColor, a: hsvaColor.a })\r\n }}\r\n />\r\n
\r\n \r\n )\r\n}\r\n\r\ninterface InputColorPickerProps extends ColorPickerProps {\r\n /**\r\n * Label for the input\r\n */\r\n label?: ReactNode\r\n inputDataTestId?: string\r\n}\r\n\r\nexport function InputColorPicker({ label, inputDataTestId, onChange, ...props }: InputColorPickerProps) {\r\n const popoverState = usePopoverState()\r\n const canSelectCustom = props.canSelectCustom !== false\r\n const isMobileDevice = isMobile()\r\n\r\n return (\r\n <>\r\n \r\n }\r\n />\r\n \r\n \r\n {\r\n if (canSelectCustom) return\r\n popoverState.hide()\r\n }}\r\n />\r\n \r\n \r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { isMobile } from '../../../app/shared/isMobile'\r\nimport { Button, ButtonComponentProps, ButtonRounding, ButtonSizeType } from '../button'\r\nimport { ButtonGroup } from '../button-group'\r\nimport { IconNameType } from '../icon'\r\nimport { Popover, PopoverTrigger, usePopoverState } from '../popover'\r\nimport { ColorPreview } from './color-preview'\r\nimport { ColorPicker, ColorPickerProps } from './picker'\r\nimport { PickerInput } from './picker-input'\r\nimport * as colorUtil from './util'\r\n\r\ninterface MultiColorPickerProps extends ColorPickerProps {\r\n /**\r\n * Label for color text input\r\n *\r\n * @default undefined\r\n */\r\n colorInputLabel?: string\r\n}\r\n\r\nexport function MultiColorPicker({\r\n colorInputLabel,\r\n onChange,\r\n canSelectCustom = true,\r\n ...props\r\n}: MultiColorPickerProps) {\r\n const isMobileDevice = isMobile()\r\n\r\n return (\r\n <>\r\n {canSelectCustom && !isMobileDevice && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n {}} />\r\n \r\n \r\n )\r\n}\r\n\r\ninterface ColorTabButtonProps extends ButtonComponentProps {\r\n /*\r\n * Preview color\r\n * */\r\n color: string\r\n}\r\n\r\nexport function ColorTabButton({ color, children, ...props }: ColorTabButtonProps) {\r\n return (\r\n }\r\n {...props}\r\n >\r\n {children}\r\n \r\n )\r\n}\r\n\r\ntype ButtonColorProperties = { color: string; label: string }\r\n\r\ninterface ButtonColorPickerProps\r\n extends Omit {\r\n /**\r\n * Temporary prop to enable/disable multi picker funcionality,\r\n * in the future we'll only use secondaryColor prop to decide if the picker is multi picker or not\r\n *\r\n * @default undefined\r\n */\r\n isMultiPicker?: boolean\r\n\r\n /**\r\n * Button classname\r\n */\r\n className?: string\r\n\r\n /**\r\n * Array of objects with color and value\r\n */\r\n colors: ColorType[]\r\n\r\n /**\r\n * Color onchange callback\r\n */\r\n onChange: (colors: ColorType[], originalColor: colorUtil.HSVA) => void\r\n\r\n /**\r\n * Button size\r\n *\r\n * @default undefined\r\n */\r\n size?: ButtonSizeType\r\n /**\r\n * Label for color text input\r\n *\r\n * @default undefined\r\n */\r\n colorInputLabel?: string\r\n\r\n /**\r\n * Name of an icon or JSX.Element\r\n */\r\n icon?: JSX.Element | IconNameType\r\n\r\n /**\r\n * Identifier for e2e testing\r\n *\r\n * @default undefined\r\n */\r\n buttonPickerDataTestId?: string\r\n}\r\n\r\nexport function ButtonColorPicker({\r\n size,\r\n icon,\r\n colors,\r\n className,\r\n onChange,\r\n buttonPickerDataTestId,\r\n ...props\r\n}: ButtonColorPickerProps) {\r\n const popoverState = usePopoverState()\r\n const isOpen = popoverState.useState('open')\r\n const isMultiPicker = !!props.isMultiPicker && colors.length > 1\r\n const [activeColorIndex, setActiveColorIndex] = React.useState(0)\r\n const handleColorChange = React.useCallback(\r\n (color: string, originalColor: colorUtil.HSVA) => {\r\n onChange(\r\n colors.map((colorObject, index) => (index === activeColorIndex ? { ...colorObject, color } : colorObject)),\r\n originalColor\r\n )\r\n },\r\n [activeColorIndex, colors, onChange]\r\n )\r\n return (\r\n <>\r\n \r\n color)}\r\n className={classnames('h-full w-full', ButtonRounding.small)}\r\n />\r\n \r\n \r\n {isMultiPicker && (\r\n
\r\n \r\n {colors.map(({ color, label }, index) => (\r\n setActiveColorIndex(index)}\r\n >\r\n {label}\r\n \r\n ))}\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n )\r\n}\r\n","import copy from 'copy-to-clipboard'\r\nimport React from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { InputProps, Textarea } from '../input'\r\n\r\ninterface Props extends Pick {\r\n className?: string\r\n text: string\r\n bottomLeftContent?: React.ReactNode\r\n}\r\n\r\nexport const CopyToClipboard: React.FC = ({ className, label, text, bottomLeftContent }) => {\r\n const [isCopied, setIsCopied] = React.useState(false)\r\n\r\n const handleCopyToClipboard = React.useCallback(() => {\r\n setIsCopied(true)\r\n copy(text)\r\n }, [text])\r\n\r\n React.useEffect(() => {\r\n let timeout: number\r\n const resetTimer = () => {\r\n if (!timeout) return\r\n clearTimeout(timeout)\r\n }\r\n if (isCopied) {\r\n resetTimer()\r\n timeout = window.setTimeout(() => {\r\n setIsCopied(false)\r\n }, 2000)\r\n }\r\n\r\n return () => {\r\n resetTimer()\r\n }\r\n }, [isCopied])\r\n\r\n return (\r\n
\r\n e.currentTarget.select()}\r\n inputClass=\"h-12\"\r\n data-testid=\"copy-to-clipboard-textarea\"\r\n value={text}\r\n />\r\n
\r\n {bottomLeftContent &&
{bottomLeftContent}
}\r\n \r\n {isCopied ? 'Copied' : 'Copy'}\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nexport interface DelayedProps {\r\n /**\r\n * The delay in milliseconds before the component is rendered.\r\n *\r\n * @default 300\r\n */\r\n delay?: number\r\n\r\n /**\r\n * Delay in milliseconds before rendering timeout state.\r\n */\r\n timeout?: number\r\n\r\n /**\r\n * Throw on timeout (suspense)\r\n */\r\n throwOnTimeout?: boolean\r\n\r\n /**\r\n * Component visible during the delay.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n delayComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when timeout is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n timeoutComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when delay is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n children?: React.ReactNode\r\n}\r\n\r\nexport function Delayed({\r\n delay = 300,\r\n timeout = 0,\r\n throwOnTimeout = false,\r\n delayComponent,\r\n timeoutComponent,\r\n children,\r\n}: DelayedProps) {\r\n const [visible, setVisible] = React.useState(false)\r\n const [hasTimedOut, setHasTimedOut] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const visibilityTimeout = window.setTimeout(() => setVisible(true), delay)\r\n\r\n let failedTimeout: number\r\n if (timeout > 0) {\r\n failedTimeout = window.setTimeout(() => {\r\n setHasTimedOut(true)\r\n if (throwOnTimeout) throw new Error()\r\n }, timeout)\r\n }\r\n\r\n return () => {\r\n clearTimeout(visibilityTimeout)\r\n clearTimeout(failedTimeout)\r\n }\r\n }, [delay, timeout, throwOnTimeout])\r\n\r\n if (!visible) return <>{delayComponent}\r\n\r\n if (hasTimedOut) {\r\n return <>{timeoutComponent}\r\n }\r\n\r\n return <>{children}\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classNames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { usePrevious } from '../../hooks/use-previous'\r\nimport { usePopoverPlacement } from '../../hooks/usePopoverPlacement'\r\nimport { blurWithoutScroll, focusWithoutScroll, preventDefault } from '../../util'\r\n\r\nenum DropdownRounding {\r\n none = '',\r\n regular = 'rounded-lg',\r\n}\r\n\r\nenum DropdownTheme {\r\n none = '',\r\n default = 'border border-primary bg-primary',\r\n}\r\n\r\ninterface StatelessDropdownProps\r\n extends Omit, 'ref'>,\r\n Pick {\r\n /**\r\n * Trigger button for the dropdown\r\n */\r\n trigger: JSX.Element | null\r\n\r\n /**\r\n * Disable interaction with other page elements when the dropdown is open\r\n *\r\n * @default true\r\n */\r\n modal?: boolean\r\n\r\n /**\r\n * When true, the dropdown will show when dropdown is hovered. Combine with\r\n * `backdrop={false}` to make the popover hide on mouse out\r\n */\r\n showOnHover?: boolean\r\n\r\n /**\r\n * Placement of the dropdown\r\n *\r\n */\r\n placement?: Ariakit.MenuProviderProps['placement']\r\n\r\n /**\r\n * Orientation in which the items are laid out. Changes which arrows control next/prev item\r\n *\r\n * @default vertical\r\n */\r\n orientation?: 'vertical' | 'horizontal'\r\n\r\n /**\r\n * Set rounding for the dropdown list\r\n *\r\n * @default regular\r\n */\r\n rounding?: keyof typeof DropdownRounding\r\n\r\n /**\r\n * Dropdown theme\r\n *\r\n * @default default\r\n */\r\n theme?: keyof typeof DropdownTheme\r\n\r\n /**\r\n * The amount of space between button and its popover\r\n *\r\n * @default 4\r\n */\r\n gutter?: number\r\n\r\n /**\r\n * Show backdrop on the dialog. Provide your own element if you want to add background or animation\r\n *\r\n */\r\n backdrop?: false | JSX.Element\r\n\r\n /**\r\n * Do not render the items when the popover is not visible\r\n *\r\n * @default true\r\n */\r\n unmountOnHide?: boolean\r\n\r\n /**\r\n * If true, the dropdown will overlay the trigger if necessary instead of going\r\n * out of bounds and overflowing\r\n */\r\n overlap?: boolean\r\n\r\n /**\r\n * Callback before the menu starts hiding. Event can be prevented which keeps the menu open\r\n * This callback isn’t called on backdrop click. Use `backdrop={
}` to react on backdrop clicks\r\n */\r\n onClose?: (ev: Event) => void\r\n\r\n /**\r\n * Used to provide virtual anchor, useful for context menu, etc\r\n */\r\n getAnchorRect?: () => { x: number; y: number }\r\n\r\n /**\r\n * Set which element gets focus when the dialog visibility changes. If `false`, the focus stays on the previous element.\r\n * Defaults to focusing without scrolling the page or keeping the focus on trigger if input-like.\r\n */\r\n autoFocusOnShow?: false | ((element: HTMLElement) => boolean)\r\n\r\n /**\r\n * Set which element gets focus when the dialog visibility changes. If `false`, the focus stays on the previous element.\r\n * Defaults to focusing without scrolling the page or keeping the focus on trigger if input-like.\r\n */\r\n autoFocusOnHide?: false | ((element: HTMLElement) => boolean)\r\n\r\n /**\r\n * Callback which is called when the dialog opens and all animations complete\r\n */\r\n onFullyOpen?: () => void\r\n\r\n /**\r\n * Callback which is called when the dialog closes and all animations complete\r\n */\r\n onFullyClosed?: () => void\r\n}\r\n\r\nexport const StatelessDropdown = React.forwardRef(function DropdownComponent(\r\n {\r\n trigger,\r\n modal = true,\r\n rounding = 'regular',\r\n theme = 'default',\r\n gutter,\r\n unmountOnHide = true,\r\n children,\r\n backdrop,\r\n showOnHover,\r\n hideOnInteractOutside,\r\n autoFocusOnShow,\r\n autoFocusOnHide,\r\n onFullyOpen,\r\n onFullyClosed,\r\n ...props\r\n }: React.PropsWithChildren,\r\n ref: React.ForwardedRef\r\n) {\r\n const store = Ariakit.useMenuContext()\r\n const { placement, zIndex, updatePosition } = usePopoverPlacement(store)\r\n const isOpen = store?.useState('open')\r\n const [isFullyOpen, setIsFullyOpen] = React.useState(false)\r\n const isMounted = store?.useState('mounted')\r\n const wasMounted = usePrevious(isMounted)\r\n const menuGutter = gutter ?? (store?.parent ? 6 : 4)\r\n\r\n React.useEffect(() => {\r\n if (wasMounted && !isMounted) {\r\n onFullyClosed?.()\r\n }\r\n // We want to call it only on isMounted change\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isMounted])\r\n\r\n return (\r\n <>\r\n {trigger && (\r\n \r\n )}\r\n }\r\n // Update zIndex when popover position changes\r\n updatePosition={updatePosition}\r\n // E2E tests don’t wait for transitions to complete and it could lead to bugs with other popover components (ResizeObserver loop exceeded)\r\n // or visual diffs due a screenshot being captured while the dropdown still in transition\r\n // If you encounter this problem, just do `cy.get('[data-fully-open=true]').should('exist')` before continuing to wait for the dropdown\r\n data-fully-open={isFullyOpen}\r\n className={classNames(\r\n props.className,\r\n zIndex,\r\n DropdownRounding[rounding],\r\n DropdownTheme[theme],\r\n 'custom-scrollbar absolute flex flex-col overflow-hidden shadow-modal outline-none dark:shadow-modal-dark',\r\n // These are set by popper, we just need to make sure we don’t encroach on the safe insets\r\n 'min-w-[--popover-anchor-width] max-w-[--popover-available-width]',\r\n // Animations\r\n 'opacity-0 transition duration-[250ms] data-[enter]:translate-y-0 data-[enter]:opacity-100',\r\n {\r\n // When in combobox mode, the padding is smaller so we can render a gradient under the combobox input.\r\n // Change the custom scrollbar offset so the top of the first item fits the top of our scrollbar\r\n '[--scrollbar-radius:0]': DropdownRounding[rounding] === DropdownRounding.none,\r\n // Direction based styles\r\n 'max-h-[calc(var(--popover-available-height)-env(safe-area-inset-bottom))] motion-safe:-translate-y-1':\r\n placement?.startsWith('bottom'),\r\n 'max-h-[calc(var(--popover-available-height)-env(safe-area-inset-top))] motion-safe:translate-y-1':\r\n placement?.startsWith('top'),\r\n }\r\n )}\r\n onTransitionEnd={(ev) => {\r\n if (ev.target === ev.currentTarget && isOpen) {\r\n setIsFullyOpen(true)\r\n onFullyOpen?.()\r\n }\r\n }}\r\n >\r\n \r\n {children}\r\n
\r\n \r\n \r\n )\r\n})\r\n\r\nexport interface DropdownProps extends StatelessDropdownProps {\r\n state?: Ariakit.MenuStore\r\n}\r\n\r\nexport const Dropdown = React.forwardRef(\r\n (\r\n { state, placement, orientation = 'vertical', ...props }: React.PropsWithChildren,\r\n ref: React.ForwardedRef\r\n ) => (\r\n \r\n \r\n \r\n )\r\n)\r\n","import * as Ariakit from '@ariakit/react'\r\nimport * as React from 'react'\r\n\r\nimport { OptionButton, OptionButtonProps } from '../OptionButton'\r\nimport { BUTTON_DEFAULT_ELEMENT } from '../button'\r\nimport { PropsWithAs } from '../types'\r\n\r\ninterface DropdownItemProps extends OptionButtonProps {\r\n store?: Ariakit.MenuStore\r\n\r\n subtitle?: React.ReactNode\r\n\r\n /**\r\n * Whether clicking the item should also close the dropdown. Only applies to\r\n * items without a submenu\r\n *\r\n * @default true\r\n */\r\n hideOnClick?: boolean\r\n}\r\n\r\nfunction DropdownItemComponent(\r\n { as: asComponent, ...props }: PropsWithAs & DropdownItemProps,\r\n ref: React.ForwardedRef\r\n) {\r\n return } />\r\n}\r\n\r\n/**\r\n * We need to forward ref to the function, but typescript looses the type of the\r\n * props param so we need to typecast to get suggestions to work\r\n */\r\nexport const DropdownItem = React.forwardRef(DropdownItemComponent) as <\r\n TagType extends React.ElementType = typeof BUTTON_DEFAULT_ELEMENT,\r\n>(\r\n props: PropsWithAs & DropdownItemProps & { ref?: React.ForwardedRef }\r\n) => ReturnType\r\n","import * as Ariakit from '@ariakit/react'\r\n\r\nexport const useDropdownState = Ariakit.useMenuStore\r\n","import * as React from 'react'\r\n\r\nimport { PartialBy } from '../../types'\r\nimport { MenuGroup } from '../MenuGroup'\r\nimport { Dropdown, DropdownItem, DropdownProps } from '../dropdown'\r\nimport { ObjectHash } from '../types'\r\n\r\nexport interface IContextMenuOption {\r\n type?: never\r\n id: string\r\n label: React.ReactNode\r\n onClick?: () => void\r\n options?: ContextMenuItem[]\r\n gtag?: ObjectHash\r\n}\r\n\r\ninterface IContextMenuDivider {\r\n type: 'divider'\r\n label?: React.ReactNode\r\n}\r\n\r\nexport type ContextMenuItem = IContextMenuOption | IContextMenuDivider\r\n\r\ninterface ContextMenuInnerProps extends PartialBy {\r\n /**\r\n * Items visible in the menu\r\n */\r\n items: ContextMenuItem[]\r\n}\r\n\r\nexport function ContextMenuInner(\r\n { trigger, items, onClose, ...props }: ContextMenuInnerProps,\r\n ref: React.ForwardedRef\r\n) {\r\n return (\r\n ev.preventDefault()}\r\n >\r\n {items?.map((item, index) => {\r\n if (item.type === 'divider') {\r\n return \r\n }\r\n\r\n if (item?.options !== undefined) {\r\n return (\r\n \r\n {item.label}\r\n \r\n }\r\n />\r\n )\r\n }\r\n\r\n return (\r\n {\r\n item.onClick?.()\r\n window.gtag?.('event', 'context-menu', Object.assign({ menu_option: item.id }, item.gtag))\r\n }}\r\n data-testid={`dropdown-menu-${item.id}`}\r\n >\r\n {item.label}\r\n \r\n )\r\n })}\r\n \r\n )\r\n}\r\n\r\nexport const ContextMenu = React.forwardRef(ContextMenuInner)\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\ninterface GridLayoutProps extends React.HTMLProps {\r\n /**\r\n * Number of columns\r\n */\r\n columns?: number\r\n\r\n /**\r\n * Number of rows\r\n */\r\n rows?: number\r\n\r\n /**\r\n * Whether or not a border is rendered between and around items. eg. charts\r\n * on HP won’t have a border\r\n *\r\n * @default false\r\n */\r\n border?: boolean\r\n}\r\n\r\nexport const ChartGridCell = React.forwardRef(\r\n ({ children, gridArea, className, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n )\r\n)\r\n\r\ninterface ChartGridCellProps extends React.HTMLProps {\r\n /**\r\n * Css grid-area value\r\n */\r\n gridArea?: string\r\n}\r\n\r\nexport function GridLayout({ columns = 1, rows = 1, border = false, children, className, ...props }: GridLayoutProps) {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\ninterface ChartGridProps extends GridLayoutProps {\r\n isResizable?: boolean\r\n}\r\n\r\nexport const ChartGrid: React.FC = (props) => \r\n","import * as React from 'react'\r\n\r\nimport { PropsWithAs, RequireByKey } from '../types'\r\n\r\nconst defaultValueAccessor: ValueAccessor = (data) => data\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nconst DEFAULT_VALUE_KEY = 'value'\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nconst DEFAULT_CHANGE_KEY = 'onChange'\r\n\r\ntype ValueAccessor<\r\n TagType extends React.ElementType,\r\n ValueKey extends keyof React.ComponentProps = typeof DEFAULT_VALUE_KEY,\r\n ChangeKey extends keyof React.ComponentProps = typeof DEFAULT_CHANGE_KEY,\r\n> = (...args: Parameters[ChangeKey]>) => React.ComponentProps[ValueKey]\r\n\r\nexport type InnerStateProps<\r\n TagType extends React.ElementType,\r\n ValueKey extends keyof React.ComponentProps,\r\n ChangeKey extends keyof React.ComponentProps,\r\n> = RequireByKey, 'as'> & {\r\n valueKey?: ValueKey\r\n changeKey?: ChangeKey\r\n valueAccessor?: ValueAccessor\r\n}\r\n\r\nexport function InnerState<\r\n TagType extends React.ElementType,\r\n ValueKey extends keyof React.ComponentProps = typeof DEFAULT_VALUE_KEY,\r\n ChangeKey extends keyof React.ComponentProps = typeof DEFAULT_CHANGE_KEY,\r\n>({\r\n as: asComponent,\r\n valueKey = 'value' as ValueKey,\r\n changeKey = 'onChange' as ChangeKey,\r\n valueAccessor = defaultValueAccessor,\r\n ...props\r\n}: InnerStateProps) {\r\n const { [valueKey]: value, [changeKey]: onChange } = props\r\n const [state, setState] = React.useState[ValueKey]>(value)\r\n\r\n const handleChange = React.useCallback>(\r\n (...args) => {\r\n setState(valueAccessor(...args))\r\n onChange(...args)\r\n },\r\n [onChange, valueAccessor]\r\n )\r\n\r\n return React.createElement(asComponent, {\r\n ...props,\r\n [valueKey]: state,\r\n [changeKey]: handleChange,\r\n })\r\n}\r\n","import classnames from 'classnames'\r\nimport { HTMLProps, ReactNode, useEffect, useMemo, useRef, useState } from 'react'\r\n\r\nimport { Label } from './typography'\r\n\r\nexport enum RangeSize {\r\n small = 'sm:h-6', // 24px height\r\n regular = 'sm:h-7', // 28px height\r\n medium = 'sm:h-8', // 32px height\r\n large = 'sm:h-9', // 36px height\r\n}\r\n\r\ntype InputProps = HTMLProps\r\n\r\ninterface RangeSliderProps extends Omit {\r\n /**\r\n * Label which is rendered above the select\r\n */\r\n label?: ReactNode\r\n\r\n /**\r\n * Range size. All inputs have forced height on mobile to avoid zoom\r\n *\r\n * @default regular\r\n */\r\n size?: keyof typeof RangeSize\r\n\r\n /**\r\n * Element which will be rendered on the left side of the slider\r\n */\r\n leftContent?: ReactNode\r\n\r\n /**\r\n * Element which will be rendered on the right side of the slider\r\n */\r\n rightContent?: ReactNode\r\n\r\n /**\r\n * Class name for the wrapper element\r\n */\r\n className?: string\r\n\r\n /**\r\n * Class name for the input element\r\n */\r\n inputClassName?: string\r\n\r\n /**\r\n * Min value for the input\r\n *\r\n * @default 0\r\n */\r\n min?: number\r\n\r\n /**\r\n * Max value for the input\r\n *\r\n * @default 100\r\n */\r\n max?: number\r\n\r\n /**\r\n * Step value for the input\r\n *\r\n * @default 1\r\n */\r\n step?: number\r\n\r\n /**\r\n * Current value\r\n */\r\n value: number\r\n\r\n /**\r\n * Callback when value changes\r\n */\r\n onChange: InputProps['onChange']\r\n}\r\n\r\nexport function RangeSlider({\r\n label,\r\n size = 'regular',\r\n leftContent,\r\n rightContent,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n className,\r\n inputClassName,\r\n ...props\r\n}: RangeSliderProps) {\r\n const [hasTrack, setHasTrack] = useState(false)\r\n const trackRef = useRef(null)\r\n const thumbRef = useRef(null)\r\n\r\n useEffect(() => {\r\n setHasTrack(Boolean(trackRef.current && thumbRef.current))\r\n }, [])\r\n\r\n const thumbLeft = useMemo(() => {\r\n const track = trackRef.current\r\n const thumb = thumbRef.current\r\n const valuePercent = (props.value - min) / (max - min)\r\n\r\n if (!hasTrack || !track || !thumb) return\r\n\r\n const trackBox = track.getBoundingClientRect()\r\n const thumbBox = thumb.getBoundingClientRect()\r\n\r\n return ((valuePercent * (trackBox.width - thumbBox.width)) / trackBox.width) * 100\r\n }, [min, max, props.value, hasTrack])\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import { ButtonRoundingType, ButtonThemeType } from '../button'\r\nimport { IconNameType } from '../icon'\r\n\r\nexport enum ToolbarTheme {\r\n chipTransparent, // (default)\r\n alternative,\r\n}\r\n\r\nexport enum ToolbarDirection {\r\n vertical,\r\n horizontal,\r\n}\r\n\r\nexport type ToolbarDirectionType = keyof typeof ToolbarDirection\r\n\r\nexport interface IButtonThemeSettings {\r\n className?: string\r\n theme: ButtonThemeType\r\n rounding: ButtonRoundingType\r\n}\r\n\r\nexport interface IToolbarItem {\r\n id: string\r\n icon: IconNameType\r\n iconActive?: IconNameType\r\n iconAction?: IconNameType\r\n title: string\r\n titleActive?: string\r\n titleAction?: string\r\n}\r\n\r\nexport type ToolbarThemeType = keyof typeof ToolbarTheme\r\n","import * as React from 'react'\r\n\r\nimport { ToolbarDirection, ToolbarTheme } from './interfaces'\r\n\r\nexport interface IToolbarContext {\r\n direction: ToolbarDirection\r\n theme: ToolbarTheme\r\n isWrapped: boolean\r\n isStretched: boolean\r\n isMobile: boolean\r\n}\r\n\r\nexport const ToolbarContext = React.createContext({\r\n direction: ToolbarDirection.vertical,\r\n theme: ToolbarTheme.chipTransparent,\r\n isWrapped: false,\r\n isStretched: false,\r\n isMobile: false,\r\n})\r\n\r\nexport function useToolbarContext() {\r\n return React.useContext(ToolbarContext)\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport React from 'react'\r\n\r\nimport { isSafariDesktop } from '../../../app/shared/isMobile'\r\nimport { StatelessDropdown } from '../dropdown'\r\nimport { IToolbarContext, ToolbarContext } from './hooks'\r\nimport { ToolbarDirection, ToolbarDirectionType, ToolbarTheme, ToolbarThemeType } from './interfaces'\r\n\r\nconst getToolbarSettings = ({\r\n direction,\r\n isWrapped,\r\n isMobile,\r\n theme,\r\n}: IToolbarContext): React.HTMLProps => {\r\n switch (isWrapped) {\r\n case true:\r\n return {\r\n className: classnames('shrink-0 items-center bg-white dark:bg-gray-800', {\r\n 'flex flex-wrap justify-between': direction === ToolbarDirection.vertical,\r\n 'grid border border-gray-100 dark:border-gray-600 p-1.5 gap-1 border-box rounded-md grid-cols-2':\r\n FinvizSettings.hasRedesignEnabled,\r\n }),\r\n }\r\n\r\n default:\r\n return {\r\n className: classnames('flex shrink-0 items-center bg-white dark:bg-gray-800', {\r\n 'p-1.5': !isMobile,\r\n 'space-x-1.5 px-1.5': direction === ToolbarDirection.horizontal && FinvizSettings.hasRedesignEnabled,\r\n 'flex-col overflow-hidden overflow-y-auto [--inset-l:0.5rem] landscape-primary:pl-inset-left':\r\n direction === ToolbarDirection.vertical,\r\n 'space-y-2': direction === ToolbarDirection.vertical && !isMobile,\r\n 'pb-inset-bottom [--inset-b:0.5rem]': theme !== ToolbarTheme.alternative && !isMobile,\r\n 'w-screen space-x-2 overflow-hidden overflow-x-auto':\r\n direction === ToolbarDirection.horizontal && theme !== ToolbarTheme.alternative,\r\n 'overflow-x-hidden': theme === ToolbarTheme.alternative,\r\n }),\r\n }\r\n }\r\n}\r\n\r\nexport interface ToolbarProps {\r\n /**\r\n * Toolbar direction\r\n *\r\n * @default vertical\r\n */\r\n direction?: ToolbarDirectionType\r\n\r\n /**\r\n * Toolbar buttons theme\r\n *\r\n * @default light\r\n */\r\n theme?: ToolbarThemeType\r\n\r\n /**\r\n * Charts mobile design\r\n *\r\n * @default false\r\n */\r\n isMobile?: boolean\r\n\r\n className?: string\r\n}\r\n\r\nexport function Toolbar({\r\n direction = 'vertical',\r\n theme = 'chipTransparent',\r\n isMobile = false,\r\n children,\r\n className,\r\n}: React.PropsWithChildren) {\r\n const hasFocusRings = React.useRef(false)\r\n const toolbarRef = React.useRef(null)\r\n const contextProviderValue = React.useMemo(\r\n () => ({\r\n direction: ToolbarDirection[direction],\r\n theme: ToolbarTheme[theme],\r\n isWrapped:\r\n ToolbarDirection[direction] === ToolbarDirection.vertical && ToolbarTheme[theme] === ToolbarTheme.alternative,\r\n isStretched:\r\n ToolbarDirection[direction] === ToolbarDirection.horizontal && ToolbarTheme[theme] === ToolbarTheme.alternative,\r\n isMobile,\r\n }),\r\n [direction, theme, isMobile]\r\n )\r\n const toolbarSettings = getToolbarSettings(contextProviderValue)\r\n\r\n React.useLayoutEffect(() => {\r\n // Workaround for Safari scrollbar bug https://github.com/finvizhq/charts/issues/1038\r\n // Safari injects scrollbar after layout render and doesn't trigger reflow\r\n if (ToolbarTheme[theme] !== ToolbarTheme.alternative && isSafariDesktop()) {\r\n const forceReflow = throttle(() => {\r\n if (toolbarRef.current !== null) {\r\n const originalWidth = toolbarRef.current.style.width\r\n toolbarRef.current.style.width = '0'\r\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n toolbarRef.current.offsetWidth\r\n toolbarRef.current.style.width = originalWidth\r\n }\r\n }, 200)\r\n\r\n forceReflow()\r\n window.addEventListener('resize', forceReflow)\r\n\r\n return () => {\r\n window.removeEventListener('resize', forceReflow)\r\n }\r\n }\r\n }, [theme])\r\n\r\n return (\r\n \r\n \r\n {children}\r\n {\r\n hasFocusRings.current = !!document.querySelector('[data-focus-visible]')\r\n return true\r\n }}\r\n autoFocusOnHide={(el: HTMLElement) => {\r\n // Only call focus when we previously had focus rings to prevent sticky focus rings\r\n if (hasFocusRings.current) el.focus({ preventScroll: true })\r\n hasFocusRings.current = false\r\n return false\r\n }}\r\n />\r\n \r\n \r\n )\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button, ButtonHTMLProps, ButtonProps } from '../button'\r\nimport { Delayed } from '../delayed'\r\nimport { Icon } from '../icon'\r\nimport { Spinner } from '../spinner'\r\nimport { PropsWithAs } from '../types'\r\nimport { useToolbarContext } from './hooks'\r\nimport { IToolbarItem, ToolbarTheme } from './interfaces'\r\n\r\nfunction getButtonThemeSettings({\r\n className,\r\n theme,\r\n isActive,\r\n isStretched,\r\n isInAction,\r\n}: {\r\n className: string\r\n theme: ToolbarTheme\r\n isStretched: boolean\r\n isActive?: boolean\r\n isInAction?: boolean\r\n}): Omit & ButtonProps {\r\n const includeRedesign = FinvizSettings.hasRedesignEnabled\r\n switch (theme) {\r\n case ToolbarTheme.alternative:\r\n return {\r\n className: classnames(\r\n className,\r\n {\r\n grow: isStretched,\r\n 'h-10 w-10': !isStretched && !includeRedesign,\r\n 'animate-pulse': isInAction,\r\n },\r\n\r\n !includeRedesign && {\r\n 'active:bg-white disabled:bg-white disabled:text-gray-300 disabled:hover:text-gray-300': true,\r\n 'border border-white text-gray-500 hover:border-gray-100 hover:text-gray-900': !isActive,\r\n 'border border-gray-900 text-gray-900': isActive,\r\n }\r\n ),\r\n theme: includeRedesign ? 'chipTransparent' : 'transparent',\r\n rounding: includeRedesign ? undefined : 'none',\r\n size: isStretched || includeRedesign ? undefined : 'none',\r\n }\r\n default:\r\n return {\r\n className: classnames(\r\n className,\r\n 'border dark:disabled:bg-gray-800 dark:disabled:text-gray-600 disabled:text-gray-300 disabled:bg-white dark:disabled:hover:bg-gray-800 dark:disabled:hover:text-gray-600 disabled:hover:text-gray-300 disabled:hover:bg-white',\r\n {\r\n 'animate-pulse': isInAction,\r\n 'border-transparent text-gray-500 hover:bg-gray-200/30 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-500/30 dark:hover:text-gray-200':\r\n !isActive,\r\n 'border-blue-400 bg-blue-50 text-gray-900 dark:bg-gray-700 dark:text-white': isActive,\r\n }\r\n ),\r\n theme: 'transparent',\r\n rounding: 'small',\r\n }\r\n }\r\n}\r\n\r\nexport interface ToolbarButtonProps extends Omit {\r\n rowId?: number\r\n item: IToolbarItem\r\n disabledTooltip?: string\r\n isInAction?: boolean\r\n isLoading?: boolean\r\n}\r\n\r\nexport const ToolbarButton = React.forwardRef(function ToolbarButton(\r\n { item, disabledTooltip, isInAction: isInActionProp, isLoading, ...props }: PropsWithAs & ToolbarButtonProps,\r\n ref: React.ForwardedRef\r\n) {\r\n const context = Ariakit.useMenuContext()\r\n const { theme, isStretched } = useToolbarContext()\r\n const isInAction = isInActionProp && item.iconAction !== undefined\r\n const buttonSettings = getButtonThemeSettings({\r\n className: props.className,\r\n theme,\r\n isStretched,\r\n isActive: props.active,\r\n isInAction: isInAction,\r\n })\r\n\r\n const getMainIcon = () => (\r\n \r\n )\r\n\r\n return (\r\n }\r\n store={context?.menubar || undefined}\r\n blurOnHoverEnd\r\n render={\r\n \r\n {isLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n {props.children ??\r\n (isInAction ? (\r\n \r\n \r\n \r\n ) : (\r\n getMainIcon()\r\n ))}\r\n \r\n )}\r\n \r\n }\r\n />\r\n )\r\n})\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { isMobile } from '../../../app/shared/isMobile'\r\nimport { DropdownItem } from '../dropdown'\r\nimport { Icon } from '../icon'\r\nimport { NativeSelect } from '../select/NativeSelect'\r\nimport { useToolbarContext } from './hooks'\r\nimport { IToolbarItem, ToolbarTheme } from './interfaces'\r\nimport { ToolbarButton } from './toolbar-button'\r\n\r\nconst isMobileBrowser = isMobile()\r\n\r\nexport interface ToolbarGroupProps {\r\n /**\r\n * Main button item\r\n */\r\n defaultItem: IToolbarItem\r\n\r\n /**\r\n * Shows spinner instead of icon\r\n */\r\n isLoading?: boolean\r\n\r\n /**\r\n * Current selected item id\r\n */\r\n isActive: boolean\r\n\r\n /**\r\n * Should indicate some action in progress\r\n */\r\n isInAction?: boolean\r\n\r\n /**\r\n * Array of items\r\n */\r\n groupItems: IToolbarItem[]\r\n\r\n /**\r\n * Expand group button label\r\n */\r\n groupTitle?: string\r\n\r\n /**\r\n * On item select callback\r\n */\r\n onChange: (id: string, trigger: 'button' | 'select' | 'group') => void\r\n\r\n /**\r\n * Use native select for mobile devices\r\n *\r\n * @default true\r\n */\r\n useNativeSelect?: boolean\r\n\r\n /**\r\n * Is item disabled\r\n */\r\n disabled?: boolean\r\n\r\n /**\r\n * Tooltip message if item is disabled\r\n */\r\n disabledTooltip?: string\r\n\r\n rowId?: number\r\n}\r\n\r\nexport const ToolbarGroup = React.forwardRef(function ToolbarGroup(\r\n {\r\n defaultItem,\r\n isActive,\r\n isLoading,\r\n groupItems,\r\n groupTitle,\r\n onChange,\r\n useNativeSelect = isMobileBrowser,\r\n disabled,\r\n disabledTooltip,\r\n rowId,\r\n }: ToolbarGroupProps,\r\n ref: React.ForwardedRef\r\n) {\r\n const { theme, isStretched } = useToolbarContext()\r\n const [selectedItem, setSelectedItem] = React.useState(defaultItem)\r\n const groupId = groupTitle?.replace(/\\s/g, '-').toLocaleLowerCase()\r\n const isAlternativeTheme = theme === ToolbarTheme.alternative\r\n\r\n // Setup states, pass Menubar context to this menu so we can control the shared menu\r\n const context = Ariakit.useMenuContext()\r\n const menu = Ariakit.useMenuStore({ store: context })\r\n\r\n // We have multiple menu triggers but just one shared menu so we need a way to know which button has been hovered\r\n const [menuButton, setMenuButton] = React.useState(null)\r\n const open = menu.useState((state) => state.mounted && state.anchorElement === menuButton)\r\n\r\n // Find the element to render the menu into using Portal\r\n const parentMenu = menu.useState('contentElement')\r\n const menuContentElement = React.useMemo(() => parentMenu?.querySelector('div'), [parentMenu])\r\n\r\n /**\r\n * Charts prevent bubling mouseover so we need to hide the menu manually\r\n */\r\n const hideMenu = menu.hide\r\n React.useEffect(() => {\r\n const onMouseLeave = () => hideMenu()\r\n\r\n parentMenu?.addEventListener('mouseleave', onMouseLeave)\r\n return () => parentMenu?.removeEventListener('mouseleave', onMouseLeave)\r\n }, [hideMenu, parentMenu])\r\n\r\n const showMenu = menu.show\r\n const handleMenuOpen = React.useCallback(\r\n (ev: React.SyntheticEvent) => {\r\n menu.setDisclosureElement(ev.currentTarget)\r\n menu.setAnchorElement(ev.currentTarget)\r\n showMenu()\r\n },\r\n [menu, showMenu]\r\n )\r\n\r\n const trigger = (\r\n \r\n \r\n \r\n \r\n )\r\n\r\n if (useNativeSelect) {\r\n return (\r\n \r\n {trigger}\r\n ({ value: item.id, label: item.title }))}\r\n onChange={(option) => {\r\n setSelectedItem(groupItems![groupItems!.findIndex((item) => item.id === option.value)])\r\n onChange(option.value, 'select')\r\n }}\r\n onClick={() => onChange(selectedItem.id, 'select')}\r\n />\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n ) => {\r\n // Preventing this means the dropdown will only open on hover not by a click\r\n ev.preventDefault()\r\n }}\r\n onPointerDown={(ev: React.PointerEvent) => {\r\n // Finally, pre-select the current group tool\r\n onChange(selectedItem.id, 'group')\r\n handleMenuOpen(ev)\r\n }}\r\n />\r\n {open && (\r\n // Render this menu's contents into the parent menu.\r\n }>\r\n {groupItems.map((item) => (\r\n }\r\n data-testid={`toolbar-group-${groupId}-${item.id}`}\r\n rounding={theme === ToolbarTheme.alternative && !FinvizSettings.hasRedesignEnabled ? 'none' : undefined}\r\n onPointerDown={() => {\r\n setSelectedItem(item)\r\n onChange(item.id, 'select')\r\n }}\r\n >\r\n {item.title}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n )\r\n})\r\n","import { PartialBy } from '../../types'\r\nimport { ToolbarButton } from './toolbar-button'\r\nimport { ToolbarGroup, ToolbarGroupProps } from './toolbar-group'\r\n\r\nexport function ToolbarItem({\r\n defaultItem,\r\n isLoading,\r\n isActive,\r\n isInAction,\r\n groupItems,\r\n groupTitle,\r\n onChange,\r\n useNativeSelect,\r\n disabled,\r\n disabledTooltip,\r\n rowId,\r\n}: PartialBy) {\r\n const isItemActive = isActive && !disabled\r\n\r\n if (!!groupItems?.length) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n {\r\n onChange(defaultItem.id, 'button')\r\n }}\r\n />\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { useToolbarContext } from './hooks'\r\nimport { ToolbarDirection, ToolbarTheme } from './interfaces'\r\n\r\ntype ToolbarDividerProps = {\r\n className?: string\r\n}\r\n\r\nexport function ToolbarDivider({ className }: ToolbarDividerProps) {\r\n const { direction, theme } = useToolbarContext()\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import { Box } from '../box'\r\nimport { Heading, Paragraph } from '../typography'\r\nimport { TourStep } from './types'\r\n\r\nexport function StepContent({ step }: { step: TourStep }) {\r\n return (\r\n \r\n {step.title && (\r\n \r\n {step.title}\r\n \r\n )}\r\n {step.body && {step.body}}\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\nimport * as ReactDOM from 'react-dom/server'\r\nimport Shepherd from 'shepherd.js'\r\n\r\nimport {\r\n BUTTON_BASE_CLASS,\r\n BUTTON_FOCUS_STYLES,\r\n ButtonPadding,\r\n ButtonRounding,\r\n ButtonSize,\r\n ButtonTheme,\r\n getButtonTheme,\r\n} from '../button'\r\nimport { StepContent } from './step-content'\r\nimport { TourDefinition, TourStep } from './types'\r\n\r\ntype ExcludesFalse = (x: T | false) => x is T\r\n\r\n/**\r\n * Async load Shepherd module when we need it\r\n */\r\nlet shepherdLibrary: typeof Shepherd\r\nexport async function loadShepherdLibrary(setLoading: (state: boolean) => void) {\r\n if (shepherdLibrary) return shepherdLibrary\r\n\r\n try {\r\n setLoading(true)\r\n const shepherdPromise = await import('shepherd.js')\r\n shepherdLibrary = shepherdPromise.default\r\n setLoading(false)\r\n\r\n return shepherdLibrary\r\n } catch {}\r\n}\r\n\r\n/**\r\n * Get buttons based on index in the step array\r\n */\r\nconst buttonClasses = classnames(BUTTON_BASE_CLASS, BUTTON_FOCUS_STYLES, ButtonSize.regular, ButtonRounding.regular)\r\nfunction getStepButtons(tour: Shepherd.Tour, step: TourStep, index: number, arr: TourStep[]) {\r\n return [\r\n {\r\n action: tour.complete,\r\n classes: classnames(buttonClasses, 'mr-auto', getButtonTheme(ButtonTheme.light).button, ButtonPadding.regular),\r\n text: 'Exit',\r\n },\r\n index > 0 && {\r\n action: tour.back,\r\n classes: classnames(buttonClasses, getButtonTheme(ButtonTheme.light).button, ButtonPadding.regular),\r\n text: step.backButton ?? 'Back',\r\n },\r\n {\r\n classes: classnames(buttonClasses, getButtonTheme(ButtonTheme.blue).button, ButtonPadding.regular),\r\n action: tour.next,\r\n text: step.nextButton ?? (index === arr.length - 1 ? 'Finish' : 'Next'),\r\n },\r\n ].filter(Boolean as unknown as ExcludesFalse)\r\n}\r\n\r\n/**\r\n * Convert tour steps to Shepherd steps\r\n */\r\nexport function processSteps(tour: Shepherd.Tour, steps: TourStep[]): Shepherd.Step.StepOptions[] {\r\n return steps.map((step, index) => ({\r\n attachTo: { element: step.target, on: step.placement ?? 'auto' },\r\n classes: 'z-dialog',\r\n // Add offset\r\n popperOptions: {\r\n modifiers: [\r\n {\r\n name: 'offset',\r\n options: {\r\n offset: step.offset ?? [0, 10],\r\n },\r\n },\r\n ],\r\n },\r\n // Render the body\r\n text: ReactDOM.renderToString(React.createElement(StepContent, { step })),\r\n // Add buttons\r\n buttons: getStepButtons(tour, step, index, steps),\r\n modalOverlayOpeningRadius: step.overlayRadius ?? 8,\r\n modalOverlayOpeningPadding: step.overlayPadding ?? 0,\r\n }))\r\n}\r\n\r\nexport function getTourKey() {\r\n return `tour${window.location.pathname.replace(/[/.]/g, '-')}`\r\n}\r\n\r\nexport function getStepsForUser(tours: TourDefinition[]) {\r\n const lastFinishedTour = localStorage?.getItem(getTourKey())\r\n const lastTourIndex = tours.findIndex((tour) => tour.id === lastFinishedTour)\r\n const allToursViewed = lastTourIndex === tours.length - 1 || tours.slice(lastTourIndex + 1).every((item) => item.skip)\r\n const toursToView = allToursViewed ? tours : tours.slice(lastTourIndex + 1)\r\n const userTour = toursToView.reduce(\r\n (acc, current) =>\r\n current.skip\r\n ? acc\r\n : {\r\n ...acc,\r\n id: current.id,\r\n steps: [...acc.steps, ...current.steps],\r\n },\r\n { id: 'tour', steps: [], initialTour: toursToView[0].id }\r\n )\r\n\r\n return { hasNewTours: !allToursViewed, tour: userTour }\r\n}\r\n\r\nexport function completeTour(key: string) {\r\n localStorage?.setItem(getTourKey(), key)\r\n}\r\n","import * as React from 'react'\r\nimport Shepherd from 'shepherd.js'\r\n\r\nimport { TourDefinition } from './types'\r\nimport * as tourUtils from './utils'\r\n\r\nexport const DEFAULT_OPTIONS = {\r\n exitOnEsc: true,\r\n useModalOverlay: true,\r\n}\r\n\r\n/**\r\n * Hook which controls shepherd.js. The library is lazy-loaded when the tour starts\r\n *\r\n * Returns:\r\n * - `isLoading`: state of the library loading\r\n * - `currentTour`: tour object, only defined after library has loaded\r\n * - `startTour`: load the library and start tour. Returns `currentTour`\r\n * - `getStepsForUser`: returns a list of tour steps based on tours the user finished\r\n * - `completeTour`: persists the last finished tour to local storage\r\n */\r\nexport function useTour(options?: Shepherd.Tour.TourOptions) {\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [currentTour, setTour] = React.useState(null)\r\n\r\n /**\r\n * We’re loading shepherd asynchronously and want to have loading state so we use\r\n * AbortController to check if the component is still mounted.\r\n */\r\n const controller = React.useRef('AbortController' in window ? new AbortController() : undefined)\r\n const loadingSetter = React.useRef((state: boolean) => {\r\n if (controller.current?.signal.aborted) return\r\n\r\n setIsLoading(state)\r\n })\r\n // Cleanup effect to abort the controller\r\n React.useEffect(() => () => controller.current?.abort(), [])\r\n\r\n const startTour = React.useCallback(\r\n async (definition: TourDefinition, setComplete = true) => {\r\n const shepherdLibrary = await tourUtils.loadShepherdLibrary(loadingSetter.current)\r\n\r\n if (shepherdLibrary && !controller.current?.signal.aborted) {\r\n const tour = currentTour ?? new shepherdLibrary.Tour({ ...DEFAULT_OPTIONS, ...options })\r\n\r\n if (!currentTour) setTour(tour)\r\n\r\n // Reset the tour steps in case they were updated\r\n Array.from(tour.steps).forEach((step) => tour.removeStep(step.id))\r\n\r\n const processedSteps = tourUtils.processSteps(tour, definition.steps)\r\n tour.addSteps(processedSteps)\r\n\r\n if (setComplete) {\r\n tourUtils.completeTour(definition.id)\r\n }\r\n\r\n tour.start()\r\n window.gtag?.('event', 'tour-start', { event_label: definition.initialTour ?? definition.id })\r\n\r\n return tour\r\n }\r\n },\r\n [currentTour, options]\r\n )\r\n\r\n return {\r\n isLoading,\r\n currentTour,\r\n startTour,\r\n getStepsForUser: tourUtils.getStepsForUser,\r\n completeTour: tourUtils.completeTour,\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-duplicate-enum-values */\r\nimport * as Ariakit from '@ariakit/react'\r\nimport classNames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { BUTTON_DEFAULT_ELEMENT, Button, ButtonComponentProps } from '../button'\r\nimport { Icon, IconNameType, isValidIconName } from '../icon'\r\n\r\n// Must have the same keys as ButtonSize\r\nexport enum TabSpacing {\r\n xxsmall = 'space-x-0.5', // 2px spacing\r\n xsmall = 'space-x-1', // 4px spacing\r\n none = 'space-x-1.5', // 6px spacing\r\n small = 'space-x-1.5', // 6px spacing\r\n regular = 'space-x-1.5', // 6px spacing\r\n medium = 'space-x-2', // 8px spacing\r\n large = 'space-x-2', // 8px spacing\r\n}\r\n\r\nfunction getRightContent(content: JSX.Element | IconNameType | undefined, isActive: boolean) {\r\n if (isValidIconName(content)) return \r\n else if (React.isValidElement(content))\r\n return React.cloneElement(content as React.ReactElement<{ active: boolean }>, {\r\n active: isActive,\r\n })\r\n else return content\r\n}\r\n\r\nconst InternalTab = React.forwardRef(function InternalTab<\r\n TagType extends React.ElementType = typeof BUTTON_DEFAULT_ELEMENT,\r\n>(\r\n {\r\n rounding = 'none',\r\n theme = 'tab',\r\n size = 'medium',\r\n 'aria-selected': ariaSelected,\r\n children,\r\n ...props\r\n }: Omit, 'theme'>,\r\n ref: React.ForwardedRef\r\n) {\r\n const spacing = TabSpacing[size]\r\n const active = Boolean(ariaSelected)\r\n const rightContent = getRightContent(props.rightContent, active)\r\n\r\n return (\r\n )}\r\n ref={ref}\r\n active={active}\r\n theme={theme}\r\n size={size}\r\n rounding={rounding}\r\n rightContent={undefined}\r\n className={classNames('group/badge', props.className)}\r\n contentClass={classNames(spacing, 'flex', props.contentClass)}\r\n >\r\n {children}\r\n {rightContent}\r\n \r\n )\r\n})\r\n\r\nexport function Tab(\r\n props: React.PropsWithChildren>\r\n) {\r\n return } />\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classNames from 'classnames'\r\n\r\nexport function TabList(props: Ariakit.TabListProps) {\r\n return (\r\n \r\n )\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport React from 'react'\r\n\r\nexport function TabPanel(props: Ariakit.TabPanelProps) {\r\n return \r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport React from 'react'\r\n\r\nexport function Tabs({ children }: React.PropsWithChildren) {\r\n return (\r\n \r\n
{children}
\r\n
\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport React from 'react'\r\n\r\nenum BadgeSize {\r\n small = 'h-4 min-w-4', // 16px height\r\n medium = 'h-5 min-w-5', // 20px height\r\n}\r\ntype BadgeSizeType = keyof typeof BadgeSize\r\n\r\nenum BadgePadding {\r\n small = 'px-[5px] py-0', // 16px height\r\n medium = 'px-1.5 py-0.5', // 20px height\r\n}\r\ntype BadgePaddingType = keyof typeof BadgePadding\r\n\r\ntype BadgeProps = {\r\n size?: BadgeSizeType\r\n padding?: BadgePaddingType\r\n active?: boolean\r\n}\r\n\r\nexport function Badge({ size = 'medium', padding = size, active, children }: React.PropsWithChildren) {\r\n const badgePadding = BadgePadding[padding]\r\n const badgeSize = BadgeSize[size]\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport React from 'react'\r\n\r\nenum TagSize {\r\n small = 'h-4 min-w-4', // 16px height\r\n medium = 'h-5 min-w-5', // 20px height\r\n}\r\ntype TagSizeType = keyof typeof TagSize\r\n\r\nenum TagPadding {\r\n small = 'px-[5px] py-0', // 16px height\r\n medium = 'px-1.5 py-0.5', // 20px height\r\n}\r\ntype TagPaddingType = keyof typeof TagPadding\r\n\r\nenum TagFont {\r\n small = 'text-3xs leading-3', // 10px/12px\r\n medium = 'text-2xs leading-4', // 12px/16px\r\n}\r\n\r\ntype TagProps = {\r\n size?: TagSizeType\r\n padding?: TagPaddingType\r\n}\r\n\r\nexport function Tag({ size = 'medium', padding = size, children }: React.PropsWithChildren) {\r\n const tagPadding = TagPadding[padding]\r\n const tagSize = TagSize[size]\r\n const tagFont = TagFont[size]\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nexport type NotificationContextType = ReturnType\r\n\r\nexport enum NotificationPosition {\r\n TopLeft,\r\n TopRight,\r\n BottomLeft,\r\n BottomRight,\r\n}\r\n\r\nexport interface NotificationOptions {\r\n position?: NotificationPosition\r\n inline?: boolean\r\n}\r\n\r\nexport const NotificationContext = React.createContext<{\r\n show: (element: JSX.Element, options?: NotificationOptions) => void\r\n hide: () => void\r\n}>({\r\n show: () => {},\r\n hide: () => {},\r\n})\r\n\r\nexport function useNotification() {\r\n return React.useContext(NotificationContext)\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { getVisualViewport, useVisualViewport } from '../../hooks/useVisualViewport'\r\nimport { NotificationContext, NotificationOptions, NotificationPosition } from './hooks'\r\n\r\ninterface NotificationState {\r\n element: JSX.Element\r\n options: Partial\r\n}\r\n\r\nexport function NotificationWrapper(props: React.PropsWithChildren) {\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [notification, setNotification] = React.useState(null)\r\n const { viewport, setViewport } = useVisualViewport({ enabled: !!notification })\r\n\r\n const context = React.useRef({\r\n show: (element: JSX.Element, options: Partial = {}) => {\r\n setViewport(() => getVisualViewport(window.visualViewport))\r\n setNotification({ element, options })\r\n setIsOpen(true)\r\n },\r\n hide: () => setIsOpen(false),\r\n })\r\n\r\n const positionClass = React.useMemo(() => {\r\n const { position = NotificationPosition.BottomLeft } = notification?.options ?? {}\r\n return {\r\n '[--inset-t:1rem] items-start pt-inset-top': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.TopRight,\r\n ].includes(position),\r\n '[--inset-r:1rem] justify-end landscape-secondary:pr-inset-right': [\r\n NotificationPosition.TopRight,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-b:1rem] items-end pb-inset-bottom': [\r\n NotificationPosition.BottomLeft,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-l:1rem] justify-start landscape-primary:pl-inset-left': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.BottomLeft,\r\n ].includes(position),\r\n }\r\n }, [notification?.options])\r\n\r\n const WrapperComponent = React.useMemo(\r\n () => (notification?.options.inline ? React.Fragment : Ariakit.Portal),\r\n [notification?.options.inline]\r\n )\r\n\r\n return (\r\n \r\n {props.children}\r\n {isOpen && (\r\n \r\n \r\n {notification?.element}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { NotificationContextType, useNotification } from './hooks'\r\n\r\nexport function withNotificationContext(\r\n WrappedComponent: React.ComponentType\r\n) {\r\n const displayName = WrappedComponent.displayName ?? WrappedComponent.name ?? 'Component'\r\n const WithNotificationContext = (props: Omit) => {\r\n const notification = useNotification()\r\n return \r\n }\r\n\r\n WithNotificationContext.displayName = `withNotificationContext(${displayName})`\r\n\r\n return WithNotificationContext\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { useNotification } from './hooks'\r\n\r\ninterface NotificationProps {\r\n className?: string\r\n /**\r\n * Default button text\r\n * @default Close\r\n */\r\n closeText?: string\r\n\r\n /**\r\n * Custom buttons. Overrides `closeText`\r\n */\r\n actions?: JSX.Element\r\n\r\n /**\r\n * When set, the notification will automatically close\r\n */\r\n timeoutInMs?: number\r\n}\r\n\r\nexport function Notification({\r\n className,\r\n closeText = 'Close',\r\n actions,\r\n timeoutInMs,\r\n children,\r\n}: React.PropsWithChildren) {\r\n const notification = useNotification()\r\n\r\n React.useEffect(() => {\r\n let timeoutId: number\r\n if (timeoutInMs) {\r\n timeoutId = window.setTimeout(() => {\r\n notification.hide()\r\n }, timeoutInMs)\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId)\r\n }\r\n }\r\n }, [notification, timeoutInMs])\r\n\r\n return (\r\n \r\n
{children}
\r\n
\r\n {actions ?? (\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport * as React from 'react'\r\n\r\nimport { Input, InputComponentProps } from './input'\r\nimport { Tooltip, TooltipColor, TooltipProps, TooltipTrigger } from './tooltip'\r\n\r\ninterface TooltipSettingsProps\r\n extends Pick,\r\n Pick {\r\n color?: keyof typeof TooltipColor\r\n}\r\n\r\ninterface TooltipInputProps extends InputComponentProps {\r\n /**\r\n * Optimization to turn off the tooltip functionality if the input isn’t visible on screen\r\n *\r\n * @default true\r\n */\r\n isInteractive?: boolean\r\n\r\n /**\r\n * Settings for Tooltip component and useTooltipStore\r\n */\r\n tooltipSettings?: TooltipSettingsProps\r\n}\r\n\r\nfunction TooltipInputComponent(\r\n { tooltipSettings, isInteractive = true, name, children, ...props }: React.PropsWithChildren,\r\n ref: React.ForwardedRef\r\n) {\r\n const { color, gutter, placement = 'bottom', isPointerEventsEnabled } = tooltipSettings ?? {}\r\n\r\n const input = \r\n\r\n if (!isInteractive || !children) {\r\n return input\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n )\r\n}\r\n\r\nexport const TooltipInput = React.forwardRef(TooltipInputComponent)\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\ninterface Props {\r\n throttleWaitInMs?: number\r\n isWatching?: boolean\r\n}\r\n\r\nexport function useWindowSize({ throttleWaitInMs = 300, isWatching = true }: Props = {}) {\r\n const [size, setSize] = React.useState({\r\n clientWidth: document.documentElement.clientWidth,\r\n innerWidth: window.innerWidth,\r\n innerHeight: window.innerHeight,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (!isWatching) return\r\n\r\n const handleResize = throttle(() => {\r\n setSize({\r\n clientWidth: document.documentElement.clientWidth,\r\n innerWidth: window.innerWidth,\r\n innerHeight: window.innerHeight,\r\n })\r\n }, throttleWaitInMs)\r\n\r\n window.addEventListener('resize', handleResize)\r\n\r\n return () => {\r\n handleResize.cancel()\r\n window.removeEventListener('resize', handleResize)\r\n }\r\n }, [throttleWaitInMs, isWatching])\r\n\r\n return size\r\n}\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nexport function getVisualViewport(visualViewport: VisualViewport | null) {\r\n const width = visualViewport?.width ?? window.innerWidth\r\n const height = visualViewport?.height ?? window.innerHeight\r\n const scale = visualViewport?.scale ?? 1\r\n\r\n return {\r\n top: visualViewport?.offsetTop ?? 0,\r\n left: visualViewport?.offsetLeft ?? 0,\r\n scale: Math.round((1 / scale) * 100) / 100,\r\n width: Math.round(width * scale),\r\n height: Math.round(height * scale),\r\n unscaledWidth: width,\r\n unscaledHeight: height,\r\n }\r\n}\r\n\r\nexport function useVisualViewport({ enabled = true, onScroll = true }: { enabled?: boolean; onScroll?: boolean } = {}) {\r\n const [viewport, setViewport] = React.useState(getVisualViewport(window.visualViewport))\r\n\r\n React.useEffect(() => {\r\n if (!enabled) return\r\n\r\n const handleChange = throttle((ev: Event) => {\r\n const viewport = ev.currentTarget as VisualViewport\r\n if (viewport) {\r\n setViewport(() => getVisualViewport(viewport))\r\n }\r\n }, 50)\r\n\r\n window.visualViewport?.addEventListener('resize', handleChange)\r\n if (onScroll) window.visualViewport?.addEventListener('scroll', handleChange)\r\n handleChange({ currentTarget: window.visualViewport } as Event)\r\n\r\n return () => {\r\n window.visualViewport?.removeEventListener('resize', handleChange)\r\n window.visualViewport?.removeEventListener('scroll', handleChange)\r\n }\r\n }, [enabled, onScroll])\r\n\r\n return React.useMemo(() => ({ viewport, setViewport }), [viewport])\r\n}\r\n","/**\n * React Router DOM v6.26.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, replace, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `
`/`` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a