{"version":3,"file":"quote.5ac7fb21.js","mappings":"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AM,EAAG,IAAIzT,UAAWrQ,UAAWo7B,EAAiBp7B,WACpGu7B,EAAgB,CAAE1/B,OAAQu/B,EAAiBv/B,OAAOioB,MAAM,IAAK9jB,UAAWo7B,EAAiBp7B,WA49DzFw7B,EAA0B,CAC9B3/B,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,WAEFmE,UAAW,QAg/BAy7B,EAAiD,CAC5D,CAACt7B,EAAAA,GAAQu7B,iBAAkBN,EAC3B,CAACj7B,EAAAA,GAAQC,SAAUg7B,EACnBO,GAAIP,EACJQ,IAAKR,EACLS,IAAKT,EACLU,IAAKV,EACLW,IAAKX,EACLY,QA97HmB,CACnBngC,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,WAEFmE,UAAW,WAo9FXi8B,IAAKZ,EACLa,KAAMb,EACNc,KAAMd,EACNe,IAAKf,EACLgB,IAAKhB,EACLiB,KAAMf,EACNgB,OAAQnB,EACRoB,OAAQlB,EACRmB,KAAMrB,EACNsB,UA39FuB,CACvB7gC,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,WAEFmE,UAAW,WAi/DX28B,cAAevB,EACfwB,cAAexB,GAGJr7B,EAAuD,CAClE,CAACI,EAAAA,GAAQu7B,iBAAkBF,EAC3B,CAACr7B,EAAAA,GAAQC,SAAUo7B,EACnBG,GAAIH,EACJI,IAAKJ,EACLK,IAAKL,EACLM,IAAKN,EACLO,IAAKP,EACLQ,QA7gC0B,CAC1BngC,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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","sources":["webpack://@finviz/website/./js/app/backtest/utils.tsx","webpack://@finviz/website/./js/app/bubbles/selects.ts","webpack://@finviz/website/./js/app/bubbles/utils.ts","webpack://@finviz/website/./js/app/quote/types.ts","webpack://@finviz/website/./js/app/quote/utils.ts","webpack://@finviz/website/./js/app/quote/QuoteContext.tsx","webpack://@finviz/website/./js/app/quote/components/Portal.tsx","webpack://@finviz/website/./js/main/hooks/useToggleStaticElement.ts","webpack://@finviz/website/./js/app/quote/components/Navigation/QuoteLinksWrapper.tsx","webpack://@finviz/website/./js/app/quote/use-chart-timeframe-path-watch.ts","webpack://@finviz/website/./js/app/quote/components/Navigation/QuoteLinkComponent.tsx","webpack://@finviz/website/./js/app/quote/components/Navigation/CreateAlertLink.tsx","webpack://@finviz/website/./js/app/quote/components/Navigation/SaveToPortfolioLink.tsx","webpack://@finviz/website/./js/app/quote/Navigation.tsx","webpack://@finviz/website/./js/app/quote/QuoteChart.tsx","webpack://@finviz/website/./js/app/quote/components/StaticChartHeader.tsx","webpack://@finviz/website/./js/app/quote/etf-holdings/async-modules.ts","webpack://@finviz/website/./js/app/quote/etf-holdings/index.tsx","webpack://@finviz/website/./js/app/quote/barChart.tsx","webpack://@finviz/website/./js/app/quote/fundamentalCharts.tsx","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/CartesianGrid.js","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/constants.ts","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/ChartTooltip.tsx","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/InsiderVolumeBar.tsx","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/InsiderTradingVolumeChart.tsx","webpack://@finviz/website/./js/app/quote/insider-trading-volume-chart/utils.ts","webpack://@finviz/website/./js/app/quote/quote.tsx","webpack://@finviz/website/./js/main/components/QuotePrice.tsx","webpack://@finviz/website/./js/app/quote/quote-header/hooks.ts","webpack://@finviz/website/./js/app/quote/quote-header/QuoteHeader.tsx","webpack://@finviz/website/../node_modules/date-fns/esm/isBefore/index.js","webpack://@finviz/website/./js/app/quote/statements-constants.ts","webpack://@finviz/website/./js/app/quote/statements.tsx","webpack://@finviz/website/./js/app/quote/use-stock-detail-updater.tsx","webpack://@finviz/website/./js/app/quote/index.tsx","webpack://@finviz/website/./js/app/quote/use-chart-layout-width-watch.ts","webpack://@finviz/website/./js/app/shared/chartLayoutConfig.ts","webpack://@finviz/website/./js/app/shared/components/Ads.tsx","webpack://@finviz/website/./js/app/shared/getInitChartConfig.ts","webpack://@finviz/website/./js/app/shared/gradients.ts","webpack://@finviz/website/./js/main/components/ChipSwitch.tsx","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableContext.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableRow.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTable.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsTableStickyColumnWrapper.tsx","webpack://@finviz/website/./js/main/components/financials-table/FinancialsWidget.tsx","webpack://@finviz/website/./js/main/components/financials-table/utils.ts","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/hooks/use-check-non-idea-chart-missing-config.ts","webpack://@finviz/website/./js/main/hooks/use-window-size.tsx","webpack://@finviz/website/./js/main/hooks/useVisualViewport.ts","webpack://@finviz/website/./js/main/modules/charts/util.ts","webpack://@finviz/website/../node_modules/react-router-dom/dist/index.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/Area.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/ZAxis.js","webpack://@finviz/website/../node_modules/recharts/es6/util/ScatterUtils.js","webpack://@finviz/website/../node_modules/recharts/es6/cartesian/Scatter.js","webpack://@finviz/website/../node_modules/recharts/es6/chart/ComposedChart.js","webpack://@finviz/website/../node_modules/recharts/es6/component/ResponsiveContainer.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":["export function round(n: number, places: number = 2) {\r\n return (+(Math.round(Number(n + 'e+' + places)) + 'e-' + places)).toFixed(places)\r\n}\r\n\r\nexport const format = {\r\n totalReturn: (totalReturn: number | string) => round(Number(totalReturn) * 100) + '%',\r\n maxDrawdown: (maxDrawdown: number | string) => round(Number(maxDrawdown) * 100) + '%',\r\n sharpeRatio: (sharpeRatio: number) => round(sharpeRatio),\r\n calmarRatio: (calmarRatio: number) => round(calmarRatio),\r\n CAGR: (CAGR: number) => round(CAGR * 100) + '%',\r\n cagr: (CAGR: number) => round(CAGR * 100) + '%',\r\n volatility: (volatility: number) => round(volatility * 100) + '%',\r\n numberOfTrades: (numberOfTrades: any) => numberOfTrades,\r\n positiveDays: (positiveDays: any) => positiveDays,\r\n negativeDays: (negativeDays: any) => negativeDays,\r\n bestMonth: (bestMonth: number) => round(bestMonth * 100) + '%',\r\n worstMonth: (worstMonth: number) => round(worstMonth * 100) + '%',\r\n}\r\n\r\nexport const figureSpace = ' '\r\n\r\nexport const BACKTEST_MIN_MAX_DATES = Object.freeze({\r\n min: new Date(1996, 5, 3),\r\n max: new Date(2023, 0, 31),\r\n})\r\n","import { SelectItem } from '../../main/components'\r\n\r\nexport type BubbleSelectOption = SelectItem & { format?: string }\r\n\r\nexport const ETF_MARKET_CAP_LABEL = 'Assets under management'\r\nexport const MARKET_CAP_VALUE = 'marketCap'\r\nexport const ETF_SECTOR_VALUE = 'financial'\r\nexport const ETF_INDUSTRY_IDS = [\r\n 'exchangetradedfund',\r\n 'closedendfunddebt',\r\n 'closedendfundequity',\r\n 'closedendfundforeign',\r\n]\r\n\r\nvar xys = [\r\n { value: 'sector', label: 'Sector' },\r\n { value: 'ticker', label: 'Ticker' },\r\n { value: 'order', label: 'Order' },\r\n { value: MARKET_CAP_VALUE, label: 'Market Capitalization' },\r\n { value: 'dividendYield', label: 'Dividend Yield', format: '%' },\r\n { value: 'payoutRatio', label: 'Payout Ratio', format: '%' },\r\n { value: 'employees', label: 'Employees' },\r\n { value: 'income', label: 'Income' },\r\n { value: 'sales', label: 'Sales' },\r\n { value: 'epsQoQ', label: 'EPS growth Q/Q', format: '%' },\r\n { value: 'epsYoY', label: 'EPS growth this Y/Y', format: '%' },\r\n { value: 'epsYoY1', label: 'EPS growth next Y/Y', format: '%' },\r\n { value: 'eps5Years', label: 'EPS growth past 5 years', format: '%' },\r\n { value: 'estLTGrowth', label: 'EPS growth long term est.', format: '%' },\r\n { value: 'salesQoQ', label: 'Sales growth Q/Q', format: '%' },\r\n { value: 'sales5Years', label: 'Sales growth past 5 years', format: '%' },\r\n { value: 'PE', label: 'P/E' },\r\n { value: 'forwardPE', label: 'Forward P/E' },\r\n { value: 'PEG', label: 'PEG' },\r\n { value: 'PS', label: 'P/S' },\r\n { value: 'PB', label: 'P/B' },\r\n { value: 'PC', label: 'P/C' },\r\n { value: 'PFCF', label: 'P/FCF' },\r\n { value: 'roi', label: 'ROI' },\r\n { value: 'roe', label: 'ROE' },\r\n { value: 'roa', label: 'ROA' },\r\n { value: 'grossMargin', label: 'Gross Margin', format: '%' },\r\n { value: 'operMargin', label: 'Operating Margin', format: '%' },\r\n { value: 'netMargin', label: 'Profit Margin', format: '%' },\r\n { value: 'curRatio', label: 'Current Ratio' },\r\n { value: 'quickRatio', label: 'Quick Ratio' },\r\n { value: 'ltdebtEq', label: 'Long Term Debt to Equity' },\r\n { value: 'debtEq', label: 'Total Debt to Equity' },\r\n { value: 'lastChange', label: 'Change', format: '%' },\r\n { value: 'changeOpen', label: 'Change from Open', format: '%' },\r\n { value: 'gap', label: 'Gap', format: '%' },\r\n { value: 'lastVolume', label: 'Volume' },\r\n { value: 'lastVolumeUsd', label: 'Volume USD' },\r\n { value: 'averageVolume', label: 'Average Volume' },\r\n { value: 'averageVolumeUsd', label: 'Average Volume USD' },\r\n { value: 'relativeVolume', label: 'Relative Volume' },\r\n { value: 'perf1w', label: '1 Week Performance', format: '%' },\r\n { value: 'perf4w', label: '1 Month Performance', format: '%' },\r\n { value: 'perf13w', label: '3 Month Performance', format: '%' },\r\n { value: 'perf26w', label: '6 Month Performance', format: '%' },\r\n { value: 'perf52w', label: '1 Year Performance', format: '%' },\r\n { value: 'perfYtd', label: 'Year To Date Performance', format: '%' },\r\n { value: 'volatility1w', label: 'Weekly Volatility', format: '%' },\r\n { value: 'volatility4w', label: 'Monthly Volatlity', format: '%' },\r\n { value: 'beta', label: 'Beta' },\r\n { value: 'low52w', label: '52-Week Low', format: '%' },\r\n { value: 'high52w', label: '52-Week High', format: '%' },\r\n { value: 'sma20', label: 'Simple Moving Average 20', format: '%' },\r\n { value: 'sma50', label: 'Simple Moving Average 50', format: '%' },\r\n { value: 'sma200', label: 'Simple Moving Average 200', format: '%' },\r\n { value: 'rsi', label: 'Relative Strength Index 14' },\r\n { value: 'insiderOwn', label: 'Insider Ownership', format: '%' },\r\n { value: 'insiderTrans', label: 'Insider Transactions', format: '%' },\r\n { value: 'instOwn', label: 'Institutional Ownership', format: '%' },\r\n { value: 'instTrans', label: 'Institutional Transactions', format: '%' },\r\n { value: 'shortInterestShare', label: 'Short Interest Share', format: '%' },\r\n { value: 'shortInterestRatio', label: 'Short Interest Ratio' },\r\n { value: 'consRecom', label: 'Analyst Recommendation' },\r\n { value: 'targetPrice', label: 'Target Price', format: '%' },\r\n]\r\n\r\nvar sizes = [\r\n { value: 'const', label: 'Constant' },\r\n { value: 'marketCap', label: 'Market Capitalization' },\r\n { value: 'lastVolume', label: 'Volume' },\r\n { value: 'lastVolumeUsd', label: 'Volume USD' },\r\n { value: 'averageVolume', label: 'Average Volume' },\r\n { value: 'averageVolumeUsd', label: 'Average Volume USD' },\r\n { value: 'relativeVolume', label: 'Relative Volume' },\r\n]\r\n\r\nvar colors = [\r\n { value: 'const', label: 'Constant' },\r\n { value: 'sector', label: 'Sector' },\r\n { value: 'industry', label: 'Industry' },\r\n { value: 'country', label: 'Country' },\r\n { value: 'marketCap', label: 'Market Capitalization' },\r\n { value: 'lastChange', label: 'Change', format: '%' },\r\n { value: 'perf1w', label: '1 Week Performance', format: '%' },\r\n { value: 'perf4w', label: '1 Month Performance', format: '%' },\r\n { value: 'perf13w', label: '3 Month Performance', format: '%' },\r\n { value: 'perf26w', label: '6 Month Performance', format: '%' },\r\n { value: 'perf52w', label: '1 Year Performance', format: '%' },\r\n { value: 'perfYtd', label: 'Year To Date Performance', format: '%' },\r\n { value: 'lastVolume', label: 'Volume' },\r\n { value: 'lastVolumeUsd', label: 'Volume USD' },\r\n { value: 'averageVolume', label: 'Average Volume' },\r\n { value: 'averageVolumeUsd', label: 'Average Volume USD' },\r\n { value: 'relativeVolume', label: 'Relative Volume' },\r\n { value: 'consRecom', label: 'Analyst Recommendation' },\r\n]\r\n\r\nvar indexes = [\r\n { value: 'any', label: 'Any' },\r\n { value: 'sp500', label: 'S&P 500' },\r\n { value: 'ndx', label: 'NASDAQ 100' },\r\n { value: 'dji', label: 'DJIA' },\r\n { value: 'rut', label: 'RUSSELL 2000' },\r\n]\r\n\r\nvar sectors = [\r\n { value: '', label: 'Any' },\r\n { value: 'basicmaterials', label: 'Basic Materials' },\r\n { value: 'communicationservices', label: 'Communication Services' },\r\n { value: 'consumercyclical', label: 'Consumer Cyclical' },\r\n { value: 'consumerdefensive', label: 'Consumer Defensive' },\r\n { value: 'energy', label: 'Energy' },\r\n { value: ETF_SECTOR_VALUE, label: 'Financial' },\r\n { value: 'healthcare', label: 'Healthcare' },\r\n { value: 'industrials', label: 'Industrials' },\r\n { value: 'realestate', label: 'Real Estate' },\r\n { value: 'technology', label: 'Technology' },\r\n { value: 'utilities', label: 'Utilities' },\r\n]\r\n\r\nvar industries = [\r\n { value: '', label: 'Any' },\r\n { value: 'stocksonly', label: 'Stocks only (ex-Funds)' },\r\n { value: 'exchangetradedfund', label: 'Exchange Traded Fund' },\r\n { value: 'advertisingagencies', label: 'Advertising Agencies' },\r\n { value: 'aerospacedefense', label: 'Aerospace & Defense' },\r\n { value: 'agriculturalinputs', label: 'Agricultural Inputs' },\r\n { value: 'airlines', label: 'Airlines' },\r\n { value: 'airportsairservices', label: 'Airports & Air Services' },\r\n { value: 'aluminum', label: 'Aluminum' },\r\n { value: 'apparelmanufacturing', label: 'Apparel Manufacturing' },\r\n { value: 'apparelretail', label: 'Apparel Retail' },\r\n { value: 'assetmanagement', label: 'Asset Management' },\r\n { value: 'automanufacturers', label: 'Auto Manufacturers' },\r\n { value: 'autoparts', label: 'Auto Parts' },\r\n { value: 'autotruckdealerships', label: 'Auto & Truck Dealerships' },\r\n { value: 'banksdiversified', label: 'Banks - Diversified' },\r\n { value: 'banksregional', label: 'Banks - Regional' },\r\n { value: 'beveragesbrewers', label: 'Beverages - Brewers' },\r\n { value: 'beveragesnonalcoholic', label: 'Beverages - Non-Alcoholic' },\r\n { value: 'beverageswineriesdistilleries', label: 'Beverages - Wineries & Distilleries' },\r\n { value: 'biotechnology', label: 'Biotechnology' },\r\n { value: 'broadcasting', label: 'Broadcasting' },\r\n { value: 'buildingmaterials', label: 'Building Materials' },\r\n { value: 'buildingproductsequipment', label: 'Building Products & Equipment' },\r\n { value: 'businessequipmentsupplies', label: 'Business Equipment & Supplies' },\r\n { value: 'capitalmarkets', label: 'Capital Markets' },\r\n { value: 'chemicals', label: 'Chemicals' },\r\n { value: 'closedendfunddebt', label: 'Closed-End Fund - Debt' },\r\n { value: 'closedendfundequity', label: 'Closed-End Fund - Equity' },\r\n { value: 'closedendfundforeign', label: 'Closed-End Fund - Foreign' },\r\n { value: 'cokingcoal', label: 'Coking Coal' },\r\n { value: 'communicationequipment', label: 'Communication Equipment' },\r\n { value: 'computerhardware', label: 'Computer Hardware' },\r\n { value: 'confectioners', label: 'Confectioners' },\r\n { value: 'conglomerates', label: 'Conglomerates' },\r\n { value: 'consultingservices', label: 'Consulting Services' },\r\n { value: 'consumerelectronics', label: 'Consumer Electronics' },\r\n { value: 'copper', label: 'Copper' },\r\n { value: 'creditservices', label: 'Credit Services' },\r\n { value: 'departmentstores', label: 'Department Stores' },\r\n { value: 'diagnosticsresearch', label: 'Diagnostics & Research' },\r\n { value: 'discountstores', label: 'Discount Stores' },\r\n { value: 'drugmanufacturersgeneral', label: 'Drug Manufacturers - General' },\r\n { value: 'drugmanufacturersspecialtygeneric', label: 'Drug Manufacturers - Specialty & Generic' },\r\n { value: 'educationtrainingservices', label: 'Education & Training Services' },\r\n { value: 'electricalequipmentparts', label: 'Electrical Equipment & Parts' },\r\n { value: 'electroniccomponents', label: 'Electronic Components' },\r\n { value: 'electronicgamingmultimedia', label: 'Electronic Gaming & Multimedia' },\r\n { value: 'electronicscomputerdistribution', label: 'Electronics & Computer Distribution' },\r\n { value: 'engineeringconstruction', label: 'Engineering & Construction' },\r\n { value: 'entertainment', label: 'Entertainment' },\r\n { value: 'farmheavyconstructionmachinery', label: 'Farm & Heavy Construction Machinery' },\r\n { value: 'farmproducts', label: 'Farm Products' },\r\n { value: 'financialconglomerates', label: 'Financial Conglomerates' },\r\n { value: 'financialdatastockexchanges', label: 'Financial Data & Stock Exchanges' },\r\n { value: 'fooddistribution', label: 'Food Distribution' },\r\n { value: 'footwearaccessories', label: 'Footwear & Accessories' },\r\n { value: 'furnishingsfixturesappliances', label: 'Furnishings, Fixtures & Appliances' },\r\n { value: 'gambling', label: 'Gambling' },\r\n { value: 'gold', label: 'Gold' },\r\n { value: 'grocerystores', label: 'Grocery Stores' },\r\n { value: 'healthcareplans', label: 'Healthcare Plans' },\r\n { value: 'healthinformationservices', label: 'Health Information Services' },\r\n { value: 'homeimprovementretail', label: 'Home Improvement Retail' },\r\n { value: 'householdpersonalproducts', label: 'Household & Personal Products' },\r\n { value: 'industrialdistribution', label: 'Industrial Distribution' },\r\n { value: 'informationtechnologyservices', label: 'Information Technology Services' },\r\n { value: 'infrastructureoperations', label: 'Infrastructure Operations' },\r\n { value: 'insurancebrokers', label: 'Insurance Brokers' },\r\n { value: 'insurancediversified', label: 'Insurance - Diversified' },\r\n { value: 'insurancelife', label: 'Insurance - Life' },\r\n { value: 'insurancepropertycasualty', label: 'Insurance - Property & Casualty' },\r\n { value: 'insurancereinsurance', label: 'Insurance - Reinsurance' },\r\n { value: 'insurancespecialty', label: 'Insurance - Specialty' },\r\n { value: 'integratedfreightlogistics', label: 'Integrated Freight & Logistics' },\r\n { value: 'internetcontentinformation', label: 'Internet Content & Information' },\r\n { value: 'internetretail', label: 'Internet Retail' },\r\n { value: 'leisure', label: 'Leisure' },\r\n { value: 'lodging', label: 'Lodging' },\r\n { value: 'lumberwoodproduction', label: 'Lumber & Wood Production' },\r\n { value: 'luxurygoods', label: 'Luxury Goods' },\r\n { value: 'marineshipping', label: 'Marine Shipping' },\r\n { value: 'medicalcarefacilities', label: 'Medical Care Facilities' },\r\n { value: 'medicaldevices', label: 'Medical Devices' },\r\n { value: 'medicaldistribution', label: 'Medical Distribution' },\r\n { value: 'medicalinstrumentssupplies', label: 'Medical Instruments & Supplies' },\r\n { value: 'metalfabrication', label: 'Metal Fabrication' },\r\n { value: 'mortgagefinance', label: 'Mortgage Finance' },\r\n { value: 'oilgasdrilling', label: 'Oil & Gas Drilling' },\r\n { value: 'oilgasep', label: 'Oil & Gas E&P' },\r\n { value: 'oilgasequipmentservices', label: 'Oil & Gas Equipment & Services' },\r\n { value: 'oilgasintegrated', label: 'Oil & Gas Integrated' },\r\n { value: 'oilgasmidstream', label: 'Oil & Gas Midstream' },\r\n { value: 'oilgasrefiningmarketing', label: 'Oil & Gas Refining & Marketing' },\r\n { value: 'otherindustrialmetalsmining', label: 'Other Industrial Metals & Mining' },\r\n { value: 'otherpreciousmetalsmining', label: 'Other Precious Metals & Mining' },\r\n { value: 'packagedfoods', label: 'Packaged Foods' },\r\n { value: 'packagingcontainers', label: 'Packaging & Containers' },\r\n { value: 'paperpaperproducts', label: 'Paper & Paper Products' },\r\n { value: 'personalservices', label: 'Personal Services' },\r\n { value: 'pharmaceuticalretailers', label: 'Pharmaceutical Retailers' },\r\n { value: 'pollutiontreatmentcontrols', label: 'Pollution & Treatment Controls' },\r\n { value: 'publishing', label: 'Publishing' },\r\n { value: 'railroads', label: 'Railroads' },\r\n { value: 'realestatedevelopment', label: 'Real Estate - Development' },\r\n { value: 'realestatediversified', label: 'Real Estate - Diversified' },\r\n { value: 'realestateservices', label: 'Real Estate Services' },\r\n { value: 'recreationalvehicles', label: 'Recreational Vehicles' },\r\n { value: 'reitdiversified', label: 'REIT - Diversified' },\r\n { value: 'reithealthcarefacilities', label: 'REIT - Healthcare Facilities' },\r\n { value: 'reithotelmotel', label: 'REIT - Hotel & Motel' },\r\n { value: 'reitindustrial', label: 'REIT - Industrial' },\r\n { value: 'reitmortgage', label: 'REIT - Mortgage' },\r\n { value: 'reitoffice', label: 'REIT - Office' },\r\n { value: 'reitresidential', label: 'REIT - Residential' },\r\n { value: 'reitretail', label: 'REIT - Retail' },\r\n { value: 'reitspecialty', label: 'REIT - Specialty' },\r\n { value: 'rentalleasingservices', label: 'Rental & Leasing Services' },\r\n { value: 'residentialconstruction', label: 'Residential Construction' },\r\n { value: 'resortscasinos', label: 'Resorts & Casinos' },\r\n { value: 'restaurants', label: 'Restaurants' },\r\n { value: 'scientifictechnicalinstruments', label: 'Scientific & Technical Instruments' },\r\n { value: 'securityprotectionservices', label: 'Security & Protection Services' },\r\n { value: 'semiconductorequipmentmaterials', label: 'Semiconductor Equipment & Materials' },\r\n { value: 'semiconductors', label: 'Semiconductors' },\r\n { value: 'shellcompanies', label: 'Shell Companies' },\r\n { value: 'silver', label: 'Silver' },\r\n { value: 'softwareapplication', label: 'Software - Application' },\r\n { value: 'softwareinfrastructure', label: 'Software - Infrastructure' },\r\n { value: 'solar', label: 'Solar' },\r\n { value: 'specialtybusinessservices', label: 'Specialty Business Services' },\r\n { value: 'specialtychemicals', label: 'Specialty Chemicals' },\r\n { value: 'specialtyindustrialmachinery', label: 'Specialty Industrial Machinery' },\r\n { value: 'specialtyretail', label: 'Specialty Retail' },\r\n { value: 'staffingemploymentservices', label: 'Staffing & Employment Services' },\r\n { value: 'steel', label: 'Steel' },\r\n { value: 'telecomservices', label: 'Telecom Services' },\r\n { value: 'textilemanufacturing', label: 'Textile Manufacturing' },\r\n { value: 'thermalcoal', label: 'Thermal Coal' },\r\n { value: 'tobacco', label: 'Tobacco' },\r\n { value: 'toolsaccessories', label: 'Tools & Accessories' },\r\n { value: 'travelservices', label: 'Travel Services' },\r\n { value: 'trucking', label: 'Trucking' },\r\n { value: 'uranium', label: 'Uranium' },\r\n { value: 'utilitiesdiversified', label: 'Utilities - Diversified' },\r\n { value: 'utilitiesindependentpowerproducers', label: 'Utilities - Independent Power Producers' },\r\n { value: 'utilitiesregulatedelectric', label: 'Utilities - Regulated Electric' },\r\n { value: 'utilitiesregulatedgas', label: 'Utilities - Regulated Gas' },\r\n { value: 'utilitiesregulatedwater', label: 'Utilities - Regulated Water' },\r\n { value: 'utilitiesrenewable', label: 'Utilities - Renewable' },\r\n { value: 'wastemanagement', label: 'Waste Management' },\r\n]\r\n\r\nvar marketCaps = [\r\n { value: '', label: 'Any' },\r\n { value: 'mega', label: 'Mega ($200bln and more)' },\r\n { value: 'large', label: 'Large ($10bln to $200bln)' },\r\n { value: 'mid', label: 'Mid ($2bln to $10bln)' },\r\n { value: 'small', label: 'Small ($300mln to $2bln)' },\r\n { value: 'micro', label: 'Micro ($50mln to $300mln)' },\r\n { value: 'nano', label: 'Nano (under $50mln)' },\r\n { value: 'largeover', label: '+Large (over $10bln)' },\r\n { value: 'midover', label: '+Mid (over $2bln)' },\r\n { value: 'smallover', label: '+Small (over $300mln)' },\r\n { value: 'microover', label: '+Micro (over $50mln)' },\r\n { value: 'largeunder', label: '-Large (under $200bln)' },\r\n { value: 'midunder', label: '-Mid (under $10bln)' },\r\n { value: 'smallunder', label: '-Small (under $2bln)' },\r\n { value: 'microunder', label: '-Micro (under $300mln)' },\r\n]\r\n\r\nvar averageVolumes = [\r\n { value: '', label: 'Any' },\r\n { value: 'u50', label: 'Under 50K' },\r\n { value: 'u100', label: 'Under 100K' },\r\n { value: 'u500', label: 'Under 500K' },\r\n { value: 'u750', label: 'Under 750K' },\r\n { value: 'u1000', label: 'Under 1M' },\r\n { value: 'o50', label: 'Over 50K' },\r\n { value: 'o100', label: 'Over 100K' },\r\n { value: 'o200', label: 'Over 200K' },\r\n { value: 'o300', label: 'Over 300K' },\r\n { value: 'o400', label: 'Over 400K' },\r\n { value: 'o500', label: 'Over 500K' },\r\n { value: 'o750', label: 'Over 750K' },\r\n { value: 'o1000', label: 'Over 1M' },\r\n { value: 'o2000', label: 'Over 2M' },\r\n { value: '100to500', label: '100K to 500K' },\r\n { value: '100to1000', label: '100K to 1M' },\r\n { value: '500to1000', label: '500K to 1M' },\r\n { value: '500to10000', label: '500K to 10M' },\r\n]\r\n\r\nexport { xys, sizes, colors, indexes, sectors, industries, marketCaps, averageVolumes }\r\n","import * as d3 from 'd3'\r\n\r\nimport { ScaleId } from '../maps/types'\r\nimport { decodeQueryString as decode, encodeQueryString } from '../queryString'\r\nimport { GradientDefinition, bubbleGradients } from '../shared/gradients'\r\nimport {\r\n BubbleSelectOption,\r\n averageVolumes,\r\n colors,\r\n indexes,\r\n industries,\r\n marketCaps,\r\n sectors,\r\n sizes,\r\n xys,\r\n} from './selects'\r\nimport { BubbleNode } from './types'\r\n\r\nconst DEFAULT_COLOR_SCALE = [\r\n '#ff4146',\r\n '#ea580c',\r\n '#ff9300',\r\n '#84cc16',\r\n '#34aa00',\r\n '#00d16d',\r\n '#14b8a6',\r\n '#18a3e0',\r\n '#5963d1',\r\n '#4f46e5',\r\n '#9425c2',\r\n '#c026d3',\r\n '#ff80ff',\r\n '#ff5888',\r\n '#ffe100',\r\n]\r\n\r\nfunction getValueWithFallback(values: BubbleSelectOption[], value: string | undefined, fallback: string) {\r\n const v = values.find((v) => v.value === value)\r\n\r\n return v?.value ?? fallback\r\n}\r\n\r\nfunction getDefaultValues(query: Record = {}, extendedFilters: boolean = false) {\r\n let state: Record = {\r\n x: getValueWithFallback(xys, query.x, 'sector'),\r\n y: getValueWithFallback(xys, query.y, 'lastChange'),\r\n size: getValueWithFallback(sizes, query.size, 'marketCap'),\r\n color: getValueWithFallback(colors, query.color, 'sector'),\r\n idx: getValueWithFallback(indexes, query.idx, 'sp500'),\r\n rangeX: query.rangeX ?? '',\r\n rangeY: query.rangeY ?? '',\r\n }\r\n\r\n if (extendedFilters) {\r\n state = {\r\n ...state,\r\n sec: getValueWithFallback(sectors, query.sec, ''),\r\n ind: getValueWithFallback(industries, query.ind, ''),\r\n cap: getValueWithFallback(marketCaps, query.cap, ''),\r\n sh_avgvol: getValueWithFallback(averageVolumes, query.sh_avgvol, ''),\r\n tickers: query.tickers ?? '',\r\n excludeTickers: query.excludeTickers ?? '',\r\n }\r\n }\r\n\r\n return state\r\n}\r\n\r\nfunction decodeQueryString(extendedFilters?: boolean) {\r\n return getDefaultValues(decode(), extendedFilters)\r\n}\r\n\r\nvar percentile = function (arr: number[], excelPercentile: number) {\r\n var sequence = arr.concat().sort(function (a, b) {\r\n return a - b\r\n })\r\n var N = sequence.length\r\n var n = (N - 1) * excelPercentile + 1\r\n\r\n if (n === 1) {\r\n return sequence[0]\r\n } else if (n === N) {\r\n return sequence[N - 1]\r\n } else {\r\n var k = ~~n\r\n var d = n - k\r\n return sequence[k - 1] + d * (sequence[k] - sequence[k - 1])\r\n }\r\n}\r\n\r\nvar getXScale = function (data: BubbleNode[], width: number) {\r\n var x = d3\r\n .scaleLinear()\r\n .range([0, width])\r\n .domain(d3.extent(data, (d: BubbleNode) => d.x) as [number, number])\r\n .nice(10)\r\n if (data.length === 1) {\r\n x.domain([x.domain()[0] * 0.9, x.domain()[0] * 1.1]).nice(10)\r\n }\r\n return x\r\n}\r\n\r\nvar getYScale = function (data: BubbleNode[], height: number) {\r\n var y = d3\r\n .scaleLinear()\r\n .range([height, 0])\r\n .domain(d3.extent(data, (d: BubbleNode) => d.y) as [number, number])\r\n .nice(10)\r\n if (data.length === 1) {\r\n y.domain([y.domain()[0] * 0.9, y.domain()[0] * 1.1]).nice(10)\r\n }\r\n return y\r\n}\r\n\r\nvar _colorScales: Record = {}\r\nfunction getColorScale(data: BubbleNode[], colorOption: string, colorScale = DEFAULT_COLOR_SCALE) {\r\n if (_colorScales[colorOption]) {\r\n return _colorScales[colorOption]\r\n }\r\n\r\n let c: any\r\n let colors: number[]\r\n let min: number\r\n let max: number\r\n let gradient: GradientDefinition\r\n let linearScale: d3.ScaleLinear\r\n switch (colorOption) {\r\n case 'exchange':\r\n case 'sector':\r\n case 'industry':\r\n case 'country':\r\n c = d3.scaleOrdinal().range(colorScale)\r\n break\r\n case 'marketCap':\r\n case 'averageVolume':\r\n case 'relativeVolume':\r\n case 'lastVolume':\r\n case 'averageVolumeUsd':\r\n case 'lastVolumeUsd':\r\n colors = data.map((d) => Number(d.color)).filter(Number.isFinite)\r\n min = percentile(colors, 0.05)\r\n max = percentile(colors, 0.95)\r\n gradient = bubbleGradients['_relvol']\r\n linearScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([0, gradient.colors.length - 1])\r\n c = (d?: number) => {\r\n if (typeof d === 'undefined' || d === null) {\r\n return gradient.nullColor\r\n }\r\n if (d > max) d = max\r\n if (d < min) d = min\r\n var i = Math.round(linearScale(d))\r\n return gradient.colors[i]\r\n }\r\n c.domain = () => [min, max]\r\n break\r\n case 'lastChange':\r\n case 'perf1w':\r\n case 'perf4w':\r\n case 'perf13w':\r\n case 'perf26w':\r\n case 'perf52w':\r\n case 'perfYtd':\r\n colors = data.map((d) => Number(d.color)).filter(Number.isFinite)\r\n\r\n min = percentile(colors, 0.05)\r\n max = percentile(colors, 0.95)\r\n max = Math.max(Math.abs(min), Math.abs(max))\r\n min = -max\r\n\r\n gradient = bubbleGradients[ScaleId.DayPerf]\r\n linearScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([0, gradient.colors.length - 1])\r\n c = (d?: number) => {\r\n if (typeof d === 'undefined' || d === null) {\r\n return gradient.nullColor\r\n }\r\n if (d > max) d = max\r\n if (d < min) d = min\r\n var i = Math.round(linearScale(d))\r\n return gradient.colors[i]\r\n }\r\n c.domain = () => [min, max]\r\n break\r\n case 'consRecom':\r\n min = 5\r\n max = 1\r\n gradient = bubbleGradients[ScaleId.DayPerf]\r\n linearScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([0, gradient.colors.length - 1])\r\n c = (d?: number) => {\r\n if (typeof d === 'undefined' || d === null) {\r\n return gradient.nullColor\r\n }\r\n if (d < max) d = max\r\n if (d > min) d = min\r\n var i = Math.round(linearScale(d))\r\n return gradient.colors[i]\r\n }\r\n c.domain = () => [min, max]\r\n break\r\n case 'const':\r\n default:\r\n c = function () {\r\n return '#18a3e0'\r\n }\r\n c.domain = () => ['Constant']\r\n break\r\n }\r\n\r\n if (data.length > 0) {\r\n _colorScales[colorOption] = c\r\n }\r\n return c\r\n}\r\n\r\nvar getSizeScale = function (data: BubbleNode[]) {\r\n var r = d3\r\n .scaleSqrt()\r\n .range([0, 40])\r\n .domain(d3.extent(data, (d: BubbleNode) => d.size) as [number, number])\r\n .nice(10)\r\n\r\n if (r.domain()[0] === 1 && r.domain()[1] === 1) {\r\n r.domain([0, 50])\r\n }\r\n return r\r\n}\r\n\r\nvar getScales = function (\r\n data: BubbleNode[],\r\n width: number,\r\n height: number,\r\n colorOption: string,\r\n colorScale?: string[]\r\n) {\r\n return {\r\n x: getXScale(data, width),\r\n y: getYScale(data, height),\r\n r: getSizeScale(data),\r\n c: getColorScale(data, colorOption, colorScale),\r\n }\r\n}\r\n\r\nfunction generatePresetUrl(presetConfig: Record, baseQuery?: URLSearchParams) {\r\n const query = encodeQueryString({ ...Object.fromEntries(baseQuery ?? []), ...presetConfig })\r\n\r\n return `${window.location.pathname}?${query}`\r\n}\r\n\r\nfunction formatValue(value: number | string, format?: string, finiteFormatting?: boolean) {\r\n if (finiteFormatting && !Number.isFinite(value)) {\r\n return '—'\r\n }\r\n\r\n if (typeof value === 'number') {\r\n const absValue = Math.abs(value)\r\n\r\n if (absValue < 1000) {\r\n value = value.toFixed(2)\r\n } else if (absValue < 1000 * 1000) {\r\n value = (value / 1000).toFixed(2) + 'K'\r\n } else if (absValue < 1000 * 1000 * 1000) {\r\n value = (value / 1000000).toFixed(2) + 'M'\r\n } else {\r\n value = (value / 1000000000).toFixed(2) + 'B'\r\n }\r\n }\r\n\r\n if (format === '%') {\r\n value += '%'\r\n }\r\n\r\n return value\r\n}\r\n\r\nexport {\r\n getDefaultValues,\r\n encodeQueryString,\r\n decodeQueryString,\r\n percentile,\r\n getXScale,\r\n getYScale,\r\n getColorScale,\r\n getSizeScale,\r\n getScales,\r\n generatePresetUrl,\r\n formatValue,\r\n}\r\n","export enum QuoteQuery {\r\n Ticker = 't',\r\n Type = 'ty',\r\n Period = 'p',\r\n DateRange = 'r',\r\n}\r\n\r\n// Keep in sync with FullViewUrlQuery.cs\r\nexport enum QuoteView {\r\n // Default subviews for views\r\n ChartDetail = 'c',\r\n Financials = 'dv',\r\n Options = 'oc',\r\n}\r\n\r\n// Keep in sync with FullViewUrlQuery.cs\r\nexport enum QuoteSubview {\r\n ComparePerf = 'p',\r\n OptionsChain = 'oc',\r\n OptionsVolatility = 'ocv',\r\n Dividends = 'dv',\r\n Eearnings = 'ea',\r\n Revenue = 'rv',\r\n ShortInterest = 'si',\r\n Traffic = 'tr',\r\n}\r\n","import { QuoteSubview, QuoteView } from './types'\r\n\r\n// Keep in sync with FullViewUrlQuery.cs\r\nexport function getQuoteSubview(type: QuoteSubview | QuoteView) {\r\n return Object.values(QuoteSubview).find((value) => value === type) ?? null\r\n}\r\n\r\n// Keep in sync with FullViewUrlQuery.cs\r\nexport function getQuoteView(type: QuoteView | QuoteSubview) {\r\n switch (getQuoteSubview(type)) {\r\n case QuoteSubview.Dividends:\r\n case QuoteSubview.Eearnings:\r\n case QuoteSubview.Revenue:\r\n return QuoteView.Financials\r\n case QuoteSubview.OptionsChain:\r\n case QuoteSubview.OptionsVolatility:\r\n return QuoteView.Options\r\n case null:\r\n return QuoteView.ChartDetail // No subview is active == chart detail\r\n default:\r\n return null // Eg. Short interest doesn’t belong to any parent group\r\n }\r\n}\r\n","import * as React from 'react'\r\nimport { useSearchParams } from 'react-router-dom'\r\n\r\nimport { TIMEFRAME } from '../charts-lib'\r\nimport { QuoteQuery, QuoteSubview, QuoteView } from './types'\r\nimport { getQuoteSubview, getQuoteView } from './utils'\r\n\r\nexport const QuoteContext = React.createContext<{\r\n index: number\r\n ticker: string\r\n period: TIMEFRAME\r\n view: QuoteView | null\r\n subview: QuoteSubview | null\r\n}>({ index: -1, ticker: '', period: TIMEFRAME.d, view: null, subview: null })\r\n\r\nexport function QuoteContextProvider({\r\n ticker,\r\n index,\r\n children,\r\n}: React.PropsWithChildren<{ ticker: string; index: number }>) {\r\n const [query] = useSearchParams()\r\n const type = query.get(QuoteQuery.Type) as QuoteView | QuoteSubview\r\n const period = query.get(QuoteQuery.Period) as TIMEFRAME\r\n const contextValue = React.useMemo(\r\n () => ({ index, ticker, period, view: getQuoteView(type), subview: getQuoteSubview(type) }),\r\n [index, period, ticker, type]\r\n )\r\n\r\n return {children}\r\n}\r\n","import * as React from 'react'\r\nimport * as ReactDOM from 'react-dom'\r\nimport { ErrorBoundary } from 'react-error-boundary'\r\n\r\nimport { useToggleStaticElements } from '../../../main/hooks/useToggleStaticElement'\r\nimport { QuoteContext } from '../QuoteContext'\r\n\r\ntype AnyElement = Element | Element[] | NodeListOf\r\n\r\ninterface PortalContextProps {\r\n /**\r\n * The root element this component will get rendered into\r\n */\r\n rootElement?: HTMLElement\r\n\r\n /**\r\n * Static (server rendered) element associated with this component.\r\n * Hide this element when the component gets rendered\r\n */\r\n staticElement?: HTMLElement\r\n\r\n toggleStaticElement: () => void\r\n}\r\n\r\nexport const QuotePortalContext = React.createContext({\r\n rootElement: undefined,\r\n staticElement: undefined,\r\n toggleStaticElement: () => {},\r\n})\r\n\r\n/**\r\n * Portal component props\r\n */\r\ninterface QuotePortalProps {\r\n /**\r\n * Override the ticker index from context if you need to skip the first ticker\r\n */\r\n index?: number\r\n\r\n /**\r\n * Server rendered elements to replace with react components\r\n */\r\n staticElements?: AnyElement\r\n\r\n /**\r\n * Immediately replace the static element with react children.\r\n * Turn this off if the child component is suspended\r\n *\r\n * @default true (if root exists)\r\n */\r\n toggleStaticElement?: boolean\r\n\r\n /**\r\n * Elements to render the react components into\r\n */\r\n roots: AnyElement\r\n\r\n /**\r\n * Intentionally restricted to JSX element so that we don’t have to check children is valid react element\r\n */\r\n children: JSX.Element\r\n}\r\n\r\nexport function QuotePortal({ index, toggleStaticElement, staticElements, roots, children }: QuotePortalProps) {\r\n // We might need to offset the index if we want to skip the first ticker (eg. static image chart)\r\n const context = React.useContext(QuoteContext)\r\n const elementIndex = index ?? context.index\r\n\r\n // Get the root and associated static html element, get them by index if array\r\n const staticElement =\r\n staticElements instanceof NodeList || Array.isArray(staticElements) ? staticElements[elementIndex] : staticElements\r\n const rootElement = roots instanceof NodeList || Array.isArray(roots) ? roots[elementIndex] : roots\r\n\r\n /**\r\n * Set up element switching. We might want to hold off if we’re passing a suspendable component.\r\n * We can’t catch the promise here, it might have already been caught down the tree\r\n * and we want to avoid hiding the server-rendered element before the react content is ready\r\n */\r\n const [isEnabled, setIsEnabled] = React.useState(toggleStaticElement ?? (!!staticElement && !!rootElement))\r\n useToggleStaticElements(staticElement, rootElement, isEnabled)\r\n\r\n const portalContextValue = React.useMemo(\r\n () => ({\r\n // Cast here to make it easier to pass any `Element`s as props\r\n rootElement: rootElement as HTMLElement,\r\n staticElement: staticElement as HTMLElement,\r\n // A way to get notified when children get rendered, because they could be suspended and waiting for requests\r\n toggleStaticElement: () => setIsEnabled(true),\r\n }),\r\n [rootElement, staticElement]\r\n )\r\n\r\n if (!rootElement) return null\r\n\r\n return (\r\n setIsEnabled(false)}>\r\n \r\n {ReactDOM.createPortal(children, rootElement)}\r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\ntype QuerySelectorReturn = Element | null\r\ntype AnyElement = QuerySelectorReturn | QuerySelectorReturn[] | NodeListOf\r\n\r\nexport function useToggleStaticElements(elementToHide?: AnyElement, elementToShow: AnyElement = [], enabled = true) {\r\n React.useEffect(() => {\r\n if (!elementToHide) return\r\n\r\n const hideElement = (element?: QuerySelectorReturn) => element?.classList.add('hidden')\r\n const showElement = (element?: QuerySelectorReturn) => element?.classList.remove('hidden')\r\n const toggleElements = (element: AnyElement | undefined, toggleFn: typeof hideElement) => {\r\n if (element instanceof NodeList || Array.isArray(element)) {\r\n element.forEach(toggleFn)\r\n } else {\r\n toggleFn(element)\r\n }\r\n }\r\n\r\n toggleElements(elementToHide, enabled ? hideElement : showElement)\r\n toggleElements(elementToShow, enabled ? showElement : hideElement)\r\n\r\n return () => {\r\n toggleElements(elementToHide, showElement)\r\n toggleElements(elementToShow, hideElement)\r\n }\r\n }, [elementToHide, elementToShow, enabled])\r\n}\r\n","import React from 'react'\r\n\r\nimport { useChartTimeframePathWatch } from '../../use-chart-timeframe-path-watch'\r\nimport { QuotePortalContext } from '../Portal'\r\n\r\nexport type QuoteLinksContextType = ReturnType\r\n\r\nfunction getDefaultContextValue() {\r\n const urlObject = new URL(window.location.href)\r\n\r\n return {\r\n chartLayoutModel: null,\r\n location: urlObject,\r\n }\r\n}\r\n\r\nexport const QuoteLinksContext = React.createContext(getDefaultContextValue())\r\n\r\nexport function QuoteLinksWrapper({ children }: React.PropsWithChildren) {\r\n const { toggleStaticElement } = React.useContext(QuotePortalContext)\r\n const info = useChartTimeframePathWatch()\r\n\r\n React.useEffect(() => toggleStaticElement(), [toggleStaticElement])\r\n\r\n return {children}\r\n}\r\n","import { useChartModelCustomDateRangeValues } from 'finviz-charts/app/controllers/chart-controls/use-chart-model-custom-date-range-values'\r\nimport { useChartLayoutGlobalModelAsync, useModelState } from 'finviz-charts/app/lib-export'\r\n\r\nexport function useChartTimeframePathWatch() {\r\n const isPremium = window.FinvizSettings.hasUserPremium\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const chartModel = useModelState(chartLayoutModel?.activeChart ?? null, {\r\n watchProperties: ['timeframe', 'dateRange'],\r\n })\r\n const { generateChartLayoutRouterPath } = useChartModelCustomDateRangeValues({\r\n chartModel,\r\n isPremium,\r\n })\r\n\r\n if (!chartModel)\r\n return {\r\n location: new URL(`${window.location.pathname}${window.location.search}`, window.location.origin),\r\n chartLayoutModel,\r\n }\r\n\r\n const location = generateChartLayoutRouterPath({\r\n ticker: chartModel?.ticker,\r\n timeframe: chartModel?.timeframe,\r\n dateRange: chartModel?.dateRange,\r\n })\r\n\r\n return { location: new URL(`${location.pathname}${location.search}`, window.location.origin), chartLayoutModel }\r\n}\r\n","import classNames from 'classnames'\r\nimport React from 'react'\r\nimport { Link, LinkProps, To } from 'react-router-dom'\r\n\r\nimport { getNavigationLinkUrl } from '../../../../main/util'\r\nimport { QuoteContext } from '../../QuoteContext'\r\nimport { QuoteQuery, QuoteSubview, QuoteView } from '../../types'\r\nimport { QuoteLinksContext, QuoteLinksContextType } from './QuoteLinksWrapper'\r\n\r\ninterface NavigationLinkProps extends Omit {\r\n /**\r\n * Keys to preserve from the current URL query. Runs first when manipulating the URL\r\n *\r\n * @default [Ticker, Type, Period, DateRange]\r\n */\r\n preserveQueryKeys?: Array\r\n\r\n /**\r\n * Keys to omit from the current URL query. Runs after `preserveQueryKeys`\r\n */\r\n removeQueryKeys?: Array\r\n\r\n /**\r\n * Additional values to set to the URL query after preserving/removing\r\n *\r\n * @default { Type: props.view }\r\n */\r\n additionalQueryValues?: Partial>\r\n\r\n /**\r\n * The view the component links to\r\n */\r\n view: QuoteView | QuoteSubview\r\n\r\n getLink?: never\r\n}\r\n\r\ninterface CustomNavigationLinkProps extends Omit {\r\n view?: never\r\n preserveQueryKeys?: never\r\n removeQueryKeys?: never\r\n additionalQueryValues?: never\r\n\r\n /**\r\n * Custom function to get the link\r\n */\r\n getLink: (context: QuoteLinksContextType) => To\r\n}\r\n\r\nexport function NavigationLink({\r\n view,\r\n getLink,\r\n reloadDocument = true,\r\n preserveQueryKeys = [QuoteQuery.Ticker, QuoteQuery.Type, QuoteQuery.Period, QuoteQuery.DateRange],\r\n removeQueryKeys,\r\n additionalQueryValues,\r\n ...props\r\n}: React.PropsWithChildren) {\r\n const quoteContext = React.useContext(QuoteContext)\r\n const linkContext = React.useContext(QuoteLinksContext)\r\n\r\n const linkUrl = React.useMemo(() => {\r\n if (typeof getLink === 'function') return getLink(linkContext)\r\n\r\n return getNavigationLinkUrl(\r\n linkContext.location,\r\n preserveQueryKeys,\r\n removeQueryKeys,\r\n additionalQueryValues ?? { [QuoteQuery.Type]: view }\r\n ).toString()\r\n }, [additionalQueryValues, linkContext, getLink, preserveQueryKeys, removeQueryKeys, view])\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { Dialog, useDialogState } from '../../../../main/components/dialog'\r\nimport { Spinner } from '../../../../main/components/spinner'\r\nimport { useAsyncModule } from '../../../../main/services/async-modules-utils'\r\nimport { QuoteContext } from '../../QuoteContext'\r\nimport { createAlertAsyncModule } from '../../create-alert/async-modules'\r\nimport { NavigationLink } from './QuoteLinkComponent'\r\n\r\nexport function CreateAlertLink() {\r\n const { ticker } = React.useContext(QuoteContext)\r\n const dialog = useDialogState()\r\n const isVisible = dialog.useState('open')\r\n\r\n const [createAlertModule] = useAsyncModule({\r\n ...createAlertAsyncModule,\r\n shouldLoadModule: isVisible,\r\n })\r\n const CreateAlert = createAlertModule?.CreateAlert\r\n\r\n return (\r\n <>\r\n `/create_alert.ashx?t=${ticker}`}\r\n onClick={(e) => {\r\n window.gtag?.('event', 'click', { event_category: 'create-alert' })\r\n if (e.ctrlKey || e.metaKey) return\r\n e.preventDefault() // needed to prevent opening parent link\r\n dialog.show()\r\n }}\r\n >\r\n Set Alert\r\n \r\n \r\n {CreateAlert ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Dialog, useDialogState } from '../../../../main/components/dialog'\r\nimport { Spinner } from '../../../../main/components/spinner'\r\nimport { useAsyncModule } from '../../../../main/services/async-modules-utils'\r\nimport { QuoteContext } from '../../QuoteContext'\r\nimport { saveToPortfolioAsyncModule } from '../../save-to-portfolio/async-modules'\r\nimport { NavigationLink } from './QuoteLinkComponent'\r\n\r\nexport function SaveToPortfolioLink() {\r\n const { ticker } = React.useContext(QuoteContext)\r\n const dialog = useDialogState()\r\n const isVisible = dialog.useState('open')\r\n\r\n const [saveToPortfolioModule] = useAsyncModule({\r\n ...saveToPortfolioAsyncModule,\r\n shouldLoadModule: isVisible,\r\n })\r\n const SaveToPortfolio = saveToPortfolioModule?.SaveToPortfolio\r\n\r\n return (\r\n <>\r\n `/save_to_portfolio.ashx?t=${ticker}`}\r\n onClick={(e) => {\r\n window.gtag?.('event', 'click', { event_category: 'save-to-portfolio' })\r\n if (e.ctrlKey || e.metaKey) return\r\n e.preventDefault() // needed to prevent opening parent link\r\n dialog.show()\r\n }}\r\n >\r\n Add to Portfolio\r\n \r\n \r\n {SaveToPortfolio ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { CreateAlertLink } from './components/Navigation/CreateAlertLink'\r\nimport { NavigationLink } from './components/Navigation/QuoteLinkComponent'\r\nimport { QuoteLinksWrapper } from './components/Navigation/QuoteLinksWrapper'\r\nimport { SaveToPortfolioLink } from './components/Navigation/SaveToPortfolioLink'\r\nimport { QuotePortalContext } from './components/Portal'\r\nimport { QuoteQuery, QuoteSubview, QuoteView } from './types'\r\n\r\nexport function QuoteNavigation() {\r\n const { rootElement } = React.useContext(QuotePortalContext)\r\n const hasShortInterest = rootElement!.dataset.shortinterest === 'true'\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n Chart\r\n Stock Detail\r\n \r\n •\r\n\r\n \r\n Compare Perf.\r\n \r\n •\r\n\r\n {hasShortInterest && (\r\n <>\r\n Short Interest\r\n •\r\n \r\n )}\r\n\r\n Financials\r\n •\r\n\r\n {FinvizSettings.hasTrafficPageEnabled && (\r\n <>\r\n Traffic\r\n •\r\n \r\n )}\r\n\r\n \r\n Options\r\n \r\n •\r\n\r\n \r\n •\r\n\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import { CHART_ELEMENT_ID } from 'finviz-charts/app/constants/common'\r\nimport ReactDOM from 'react-dom'\r\n\r\nimport { SpecificChartFunctionality, TIMEFRAME } from '../../main/constants'\r\nimport { ChartLayoutWithGlobalState, FREE_DATE_RANGES, Theme } from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { getChartLayoutSizeConfig, useChartLayoutWidthWatch } from './use-chart-layout-width-watch'\r\n\r\nexport function QuoteChart() {\r\n useChartLayoutWidthWatch()\r\n const chartEl = document.getElementById(CHART_ELEMENT_ID)\r\n const chartConfig = window.globalChartConfig\r\n const theme = FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light\r\n\r\n if (chartEl && chartConfig) {\r\n const { p = FinvizSettings.defaultPeriod as TIMEFRAME } = decodeQueryString<{ p?: TIMEFRAME }>()\r\n return ReactDOM.createPortal(\r\n ({\r\n ...chart,\r\n dateRange:\r\n FinvizSettings.hasUserPremium || FREE_DATE_RANGES.includes(chart.dateRange ?? '')\r\n ? chart.dateRange\r\n : null,\r\n })),\r\n theme,\r\n }}\r\n parentElement={chartEl}\r\n />,\r\n chartEl\r\n )\r\n }\r\n return null\r\n}\r\n","import classNames from 'classnames'\r\nimport { isRedesignEnabled } from 'finviz-charts/app/utils'\r\nimport React from 'react'\r\n\r\nimport { Button } from '../../../main/components'\r\nimport { SpecificChartFunctionality } from '../../../main/constants'\r\nimport { ChartTypesSelect, StockDetailTimeframeBar } from '../../charts-lib'\r\nimport { QuoteContext } from '../QuoteContext'\r\n\r\ninterface Props {\r\n isStockDetailUpdating: boolean\r\n}\r\n\r\nconst hasRedesign = isRedesignEnabled()\r\nconst isPremium = window.FinvizSettings.hasUserPremium\r\n\r\nexport function StaticChartHeader({ isStockDetailUpdating }: Props) {\r\n const { index, ticker, period } = React.useContext(QuoteContext)\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Share\r\n \r\n
\r\n
\r\n )\r\n}\r\n","export const etfHoldingsAsyncModule = {\r\n importFn: () => import(/* webpackChunkName: \"etf-holdings-widget\" */ './module-entry'),\r\n cacheKey: 'etf-holdings-widget',\r\n}\r\n","import { withNotificationContext } from '../../../main/components/notification'\r\nimport { Spinner } from '../../../main/components/spinner'\r\nimport { useAsyncModule } from '../../../main/services/async-modules-utils'\r\nimport { etfHoldingsAsyncModule } from './async-modules'\r\n\r\nfunction LoadingFallback() {\r\n const widgetClass =\r\n 'ml-3 mt-3 flex max-h-85 min-h-85 min-w-152 max-w-175 shrink grow basis-0 rounded-md border border-primary justify-center items-center'\r\n return (\r\n
\r\n {Array.from(Array(2)).map((_, index) => (\r\n
\r\n \r\n
\r\n ))}\r\n
\r\n )\r\n}\r\n\r\nfunction ETFHoldings() {\r\n const [etfHoldingsModule] = useAsyncModule({\r\n ...etfHoldingsAsyncModule,\r\n shouldLoadModule: true,\r\n errorSeverity: 'high',\r\n })\r\n const ETFHoldingsComponent = etfHoldingsModule?.ETFHoldings\r\n return ETFHoldingsComponent ? : \r\n}\r\n\r\nexport default withNotificationContext(ETFHoldings)\r\n","import * as d3 from 'd3'\r\nimport { Component, RefObject, createRef } from 'react'\r\n\r\nexport interface Bar {\r\n name: string\r\n value: number\r\n}\r\n\r\ninterface BarChartProps {\r\n title?: string\r\n data: Bar[]\r\n width?: number\r\n height?: number\r\n valueFormatter?: (value: number) => string\r\n xAxisRotate?: boolean\r\n marginRight?: number\r\n className?: string\r\n}\r\n\r\nexport default class BarChart extends Component {\r\n svgRef: RefObject = createRef()\r\n\r\n // @ts-ignore\r\n _prevData: Bar[]\r\n\r\n componentDidMount() {\r\n this.renderChart()\r\n }\r\n\r\n componentDidUpdate() {\r\n this.renderChart()\r\n }\r\n\r\n renderChart() {\r\n const { data, title } = this.props\r\n if (data === this._prevData) {\r\n return\r\n }\r\n this._prevData = data\r\n this.svgRef.current!.innerHTML = ''\r\n\r\n const xAxisRotate = this.props.xAxisRotate === true\r\n\r\n var margin = { top: title ? 20 : 10, right: this.props.marginRight || 60, bottom: xAxisRotate ? 70 : 20, left: 15 }\r\n const totalWidth = this.props.width || 440\r\n const totalHeight = this.props.height || 330\r\n var width = totalWidth - margin.left - margin.right\r\n var height = totalHeight - margin.top - margin.bottom\r\n\r\n const x = d3\r\n .scaleBand()\r\n .domain(data.map((d) => d.name))\r\n .rangeRound([0, width])\r\n .padding(0.1)\r\n\r\n let min = d3.min(data, (d: Bar) => d.value)!\r\n if (min < 0) {\r\n min = d3.min(data, (d: Bar) => Math.min(d.value, -d.value))!\r\n } else {\r\n min = 0\r\n }\r\n\r\n const y = d3\r\n .scaleLinear()\r\n .range([height, 0])\r\n .domain([min, d3.max(data, (d: Bar) => Math.abs(d.value))!])\r\n .nice()\r\n const yFormat = this.props.valueFormatter ? this.props.valueFormatter : y.tickFormat()\r\n\r\n const svg = d3\r\n .select(this.svgRef.current)\r\n .property('value', [])\r\n .append('g')\r\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')\r\n\r\n var xAxis = d3.axisBottom(x)\r\n var yAxis = d3.axisRight(y).ticks(height > 200 ? 10 : 5)\r\n\r\n const makeYLines = () => d3.axisLeft(y)\r\n // @ts-ignore - tickFormat arg can be any string\r\n svg.append('g').attr('class', 'grid').call(makeYLines().tickSize(-width).tickSizeOuter(0).tickFormat(''))\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'x-axis axis')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(xAxis)\r\n\r\n svg\r\n .selectAll('.x-axis text')\r\n .style('text-anchor', xAxisRotate ? 'end' : 'middle')\r\n .attr('dx', xAxisRotate ? '-.8em' : 0)\r\n .attr('dy', xAxisRotate ? '.15em' : '0.8em')\r\n .attr('transform', 'rotate(' + (xAxisRotate ? -65 : 0) + ')')\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'y-axis axis')\r\n .attr('transform', 'translate(' + width + ', 0)')\r\n .call(yAxis)\r\n\r\n if (title) {\r\n svg\r\n .append('text')\r\n .attr('class', 'bar-chart-title')\r\n .attr('x', 4)\r\n .attr('y', -5)\r\n .attr('text-anchor', 'start')\r\n .text(title)\r\n }\r\n\r\n const getHeight = (d: Bar) => {\r\n let height = Math.abs(y(d.value ?? 0) - y(0))\r\n if (d.value > 0 || d.value < 0) {\r\n height = Math.max(height, 0.5)\r\n }\r\n return height\r\n }\r\n const isOutside = (height: number) => height < 14\r\n let bars = svg.selectAll('.bar').data(data)\r\n bars\r\n .enter()\r\n .append('rect')\r\n .attr('class', function (d: Bar) {\r\n return 'bar bar--' + (d.value < 0 ? 'negative' : 'positive')\r\n })\r\n .attr('x', (d: Bar) => x(d.name)!)\r\n .attr('y', (d: Bar) => y(Math.max(0, d.value)))\r\n .attr('height', getHeight)\r\n .attr('width', x.bandwidth())\r\n .attr('ry', FinvizSettings?.hasRedesignEnabled ? 2 : 0)\r\n\r\n svg\r\n .selectAll('.bar-label')\r\n .data(data)\r\n .enter()\r\n .append('text')\r\n .attr('class', 'divergence')\r\n .attr('x', (d: Bar) => x(d.name)! + x.bandwidth() / 2)\r\n .attr('y', (d: Bar) => {\r\n const height = getHeight(d)\r\n const outside = isOutside(height)\r\n if (d.value < 0) {\r\n return y(Math.max(0, d.value)) + height + (outside ? 12 : -4)\r\n }\r\n return y(Math.max(0, d.value)) + (outside ? -4 : 12)\r\n })\r\n .attr('fill', (d: Bar) => (!FinvizSettings.hasDarkTheme && isOutside(getHeight(d)) ? 'black' : 'white'))\r\n .attr('text-anchor', 'middle')\r\n .attr('font-size', '10px')\r\n .text((d: Bar) => (d.value !== null ? yFormat(d.value) : ''))\r\n\r\n this.svgRef.current!.style.width = totalWidth + 'px'\r\n this.svgRef.current!.style.height = totalHeight + 'px'\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { parseRouteInitData } from '../../main/util'\r\nimport { round } from '../backtest/utils'\r\nimport { QuoteContext } from './QuoteContext'\r\nimport BarChart, { Bar } from './barChart'\r\n\r\nfunction convertData(endYear: number, values: any[]) {\r\n return values.map((value, index) => ({ name: endYear - index, value })).reverse() as unknown as Bar[]\r\n}\r\n\r\ninterface FAChartProps {\r\n year: number\r\n data: number[]\r\n title: string\r\n smallRoundPlaces?: number\r\n largeRoundPlaces?: number\r\n smallScale?: number\r\n largeScale?: number\r\n smallTitleSufix?: string\r\n largeTitleSufix?: string\r\n}\r\n\r\nfunction FAChart({\r\n year,\r\n data,\r\n title,\r\n smallRoundPlaces = 2,\r\n largeRoundPlaces = 0,\r\n smallScale = 1,\r\n largeScale = 1,\r\n smallTitleSufix = '',\r\n largeTitleSufix = '',\r\n}: FAChartProps) {\r\n const range = Math.max(...data.map((value) => Math.abs(value)).filter(Number))\r\n const isLarge = Math.abs(range) >= 1000\r\n const scale = isLarge ? largeScale : smallScale\r\n const values = data.map((value) => {\r\n const rounded = round(scale * value, isLarge ? largeRoundPlaces : smallRoundPlaces)\r\n return value == null || Number.isNaN(rounded) ? null : rounded\r\n })\r\n\r\n return (\r\n round(value, isLarge ? largeRoundPlaces : smallRoundPlaces)}\r\n width={280}\r\n height={150}\r\n marginRight={37}\r\n className=\"is-fa\"\r\n />\r\n )\r\n}\r\n\r\nexport default function FundamentalCharts() {\r\n const { index } = React.useContext(QuoteContext)\r\n\r\n const routeData = React.useMemo(\r\n () =>\r\n parseRouteInitData<{ year: number; values: Array }>({\r\n elementId: `fa-init-data-${index}`,\r\n removeElement: false,\r\n }),\r\n [index]\r\n )\r\n\r\n if (!routeData) return null\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n","var _excluded = [\"x1\", \"y1\", \"x2\", \"y2\", \"key\"],\n _excluded2 = [\"offset\"];\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/**\n * @fileOverview Cartesian Grid\n */\nimport React, { PureComponent } from 'react';\nimport isFunction from 'lodash/isFunction';\nimport { isNumber } from '../util/DataUtils';\nimport { filterProps } from '../util/ReactUtils';\nexport var CartesianGrid = /*#__PURE__*/function (_PureComponent) {\n _inherits(CartesianGrid, _PureComponent);\n var _super = _createSuper(CartesianGrid);\n function CartesianGrid() {\n _classCallCheck(this, CartesianGrid);\n return _super.apply(this, arguments);\n }\n _createClass(CartesianGrid, [{\n key: \"renderHorizontal\",\n value:\n /**\n * Draw the horizontal grid lines\n * @param {Array} horizontalPoints either passed in as props or generated from function\n * @return {Group} Horizontal lines\n */\n function renderHorizontal(horizontalPoints) {\n var _this = this;\n var _this$props = this.props,\n x = _this$props.x,\n width = _this$props.width,\n horizontal = _this$props.horizontal;\n if (!horizontalPoints || !horizontalPoints.length) {\n return null;\n }\n var items = horizontalPoints.map(function (entry, i) {\n var props = _objectSpread(_objectSpread({}, _this.props), {}, {\n x1: x,\n y1: entry,\n x2: x + width,\n y2: entry,\n key: \"line-\".concat(i),\n index: i\n });\n return CartesianGrid.renderLineItem(horizontal, props);\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-grid-horizontal\"\n }, items);\n }\n\n /**\n * Draw vertical grid lines\n * @param {Array} verticalPoints either passed in as props or generated from function\n * @return {Group} Vertical lines\n */\n }, {\n key: \"renderVertical\",\n value: function renderVertical(verticalPoints) {\n var _this2 = this;\n var _this$props2 = this.props,\n y = _this$props2.y,\n height = _this$props2.height,\n vertical = _this$props2.vertical;\n if (!verticalPoints || !verticalPoints.length) {\n return null;\n }\n var items = verticalPoints.map(function (entry, i) {\n var props = _objectSpread(_objectSpread({}, _this2.props), {}, {\n x1: entry,\n y1: y,\n x2: entry,\n y2: y + height,\n key: \"line-\".concat(i),\n index: i\n });\n return CartesianGrid.renderLineItem(vertical, props);\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-grid-vertical\"\n }, items);\n }\n\n /**\n * Draw vertical grid stripes filled by colors\n * @param {Array} verticalPoints either passed in as props or generated from function\n * @return {Group} Vertical stripes\n */\n }, {\n key: \"renderVerticalStripes\",\n value: function renderVerticalStripes(verticalPoints) {\n var verticalFill = this.props.verticalFill;\n if (!verticalFill || !verticalFill.length) {\n return null;\n }\n var _this$props3 = this.props,\n fillOpacity = _this$props3.fillOpacity,\n x = _this$props3.x,\n y = _this$props3.y,\n width = _this$props3.width,\n height = _this$props3.height;\n var roundedSortedVerticalPoints = verticalPoints.map(function (e) {\n return Math.round(e + x - x);\n }).sort(function (a, b) {\n return a - b;\n });\n if (x !== roundedSortedVerticalPoints[0]) {\n roundedSortedVerticalPoints.unshift(0);\n }\n var items = roundedSortedVerticalPoints.map(function (entry, i) {\n var lastStripe = !roundedSortedVerticalPoints[i + 1];\n var lineWidth = lastStripe ? x + width - entry : roundedSortedVerticalPoints[i + 1] - entry;\n if (lineWidth <= 0) {\n return null;\n }\n var colorIndex = i % verticalFill.length;\n return /*#__PURE__*/React.createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n x: entry,\n y: y,\n width: lineWidth,\n height: height,\n stroke: \"none\",\n fill: verticalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-vertical\"\n }, items);\n }\n\n /**\n * Draw horizontal grid stripes filled by colors\n * @param {Array} horizontalPoints either passed in as props or generated from function\n * @return {Group} Horizontal stripes\n */\n }, {\n key: \"renderHorizontalStripes\",\n value: function renderHorizontalStripes(horizontalPoints) {\n var horizontalFill = this.props.horizontalFill;\n if (!horizontalFill || !horizontalFill.length) {\n return null;\n }\n var _this$props4 = this.props,\n fillOpacity = _this$props4.fillOpacity,\n x = _this$props4.x,\n y = _this$props4.y,\n width = _this$props4.width,\n height = _this$props4.height;\n var roundedSortedHorizontalPoints = horizontalPoints.map(function (e) {\n return Math.round(e + y - y);\n }).sort(function (a, b) {\n return a - b;\n });\n if (y !== roundedSortedHorizontalPoints[0]) {\n roundedSortedHorizontalPoints.unshift(0);\n }\n var items = roundedSortedHorizontalPoints.map(function (entry, i) {\n var lastStripe = !roundedSortedHorizontalPoints[i + 1];\n var lineHeight = lastStripe ? y + height - entry : roundedSortedHorizontalPoints[i + 1] - entry;\n if (lineHeight <= 0) {\n return null;\n }\n var colorIndex = i % horizontalFill.length;\n return /*#__PURE__*/React.createElement(\"rect\", {\n key: \"react-\".concat(i) // eslint-disable-line react/no-array-index-key\n ,\n y: entry,\n x: x,\n height: lineHeight,\n width: width,\n stroke: \"none\",\n fill: horizontalFill[colorIndex],\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n });\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-gridstripes-horizontal\"\n }, items);\n }\n }, {\n key: \"renderBackground\",\n value: function renderBackground() {\n var fill = this.props.fill;\n if (!fill || fill === 'none') {\n return null;\n }\n var _this$props5 = this.props,\n fillOpacity = _this$props5.fillOpacity,\n x = _this$props5.x,\n y = _this$props5.y,\n width = _this$props5.width,\n height = _this$props5.height;\n return /*#__PURE__*/React.createElement(\"rect\", {\n x: x,\n y: y,\n width: width,\n height: height,\n stroke: \"none\",\n fill: fill,\n fillOpacity: fillOpacity,\n className: \"recharts-cartesian-grid-bg\"\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n x = _this$props6.x,\n y = _this$props6.y,\n width = _this$props6.width,\n height = _this$props6.height,\n horizontal = _this$props6.horizontal,\n vertical = _this$props6.vertical,\n horizontalCoordinatesGenerator = _this$props6.horizontalCoordinatesGenerator,\n verticalCoordinatesGenerator = _this$props6.verticalCoordinatesGenerator,\n xAxis = _this$props6.xAxis,\n yAxis = _this$props6.yAxis,\n offset = _this$props6.offset,\n chartWidth = _this$props6.chartWidth,\n chartHeight = _this$props6.chartHeight,\n syncWithTicks = _this$props6.syncWithTicks,\n horizontalValues = _this$props6.horizontalValues,\n verticalValues = _this$props6.verticalValues;\n if (!isNumber(width) || width <= 0 || !isNumber(height) || height <= 0 || !isNumber(x) || x !== +x || !isNumber(y) || y !== +y) {\n return null;\n }\n var _this$props7 = this.props,\n horizontalPoints = _this$props7.horizontalPoints,\n verticalPoints = _this$props7.verticalPoints;\n\n // No horizontal points are specified\n if ((!horizontalPoints || !horizontalPoints.length) && isFunction(horizontalCoordinatesGenerator)) {\n var isHorizontalValues = horizontalValues && horizontalValues.length;\n horizontalPoints = horizontalCoordinatesGenerator({\n yAxis: yAxis ? _objectSpread(_objectSpread({}, yAxis), {}, {\n ticks: isHorizontalValues ? horizontalValues : yAxis.ticks\n }) : undefined,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n }, isHorizontalValues ? true : syncWithTicks);\n }\n\n // No vertical points are specified\n if ((!verticalPoints || !verticalPoints.length) && isFunction(verticalCoordinatesGenerator)) {\n var isVerticalValues = verticalValues && verticalValues.length;\n verticalPoints = verticalCoordinatesGenerator({\n xAxis: xAxis ? _objectSpread(_objectSpread({}, xAxis), {}, {\n ticks: isVerticalValues ? verticalValues : xAxis.ticks\n }) : undefined,\n width: chartWidth,\n height: chartHeight,\n offset: offset\n }, isVerticalValues ? true : syncWithTicks);\n }\n return /*#__PURE__*/React.createElement(\"g\", {\n className: \"recharts-cartesian-grid\"\n }, this.renderBackground(), horizontal && this.renderHorizontal(horizontalPoints), vertical && this.renderVertical(verticalPoints), horizontal && this.renderHorizontalStripes(horizontalPoints), vertical && this.renderVerticalStripes(verticalPoints));\n }\n }], [{\n key: \"renderLineItem\",\n value: function renderLineItem(option, props) {\n var lineItem;\n if ( /*#__PURE__*/React.isValidElement(option)) {\n lineItem = /*#__PURE__*/React.cloneElement(option, props);\n } else if (isFunction(option)) {\n lineItem = option(props);\n } else {\n var x1 = props.x1,\n y1 = props.y1,\n x2 = props.x2,\n y2 = props.y2,\n key = props.key,\n others = _objectWithoutProperties(props, _excluded);\n var _filterProps = filterProps(others),\n __ = _filterProps.offset,\n restOfFilteredProps = _objectWithoutProperties(_filterProps, _excluded2);\n lineItem = /*#__PURE__*/React.createElement(\"line\", _extends({}, restOfFilteredProps, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n fill: \"none\",\n key: key\n }));\n }\n return lineItem;\n }\n }]);\n return CartesianGrid;\n}(PureComponent);\n_defineProperty(CartesianGrid, \"displayName\", 'CartesianGrid');\n_defineProperty(CartesianGrid, \"defaultProps\", {\n horizontal: true,\n vertical: true,\n // The ordinates of horizontal grid lines\n horizontalPoints: [],\n // The abscissas of vertical grid lines\n verticalPoints: [],\n stroke: '#ccc',\n fill: 'none',\n // The fill of colors of grid lines\n verticalFill: [],\n horizontalFill: []\n});","import colors from '../../../../../config/colors'\r\n\r\nexport const CHART_HEIGHT = 300\r\nexport const BAR_WIDTH = 8\r\nexport const BAR_BORDER_RADIUS: [number, number, number, number] = [2, 2, 0, 0]\r\nexport const STROKE_COLOR = FinvizSettings.hasDarkTheme ? colors.gray[700] : colors.gray[100]\r\nexport const LINE_COLOR = FinvizSettings.hasDarkTheme ? colors.blue[400] : colors.blue[400]\r\nexport const SALE_BAR_COLOR = colors.red[400]\r\nexport const BUY_BAR_COLOR = colors.green[400]\r\nexport const Y_TICK_STYLE = {\r\n fontSize: 10,\r\n fontWeight: 500,\r\n fill: FinvizSettings.hasDarkTheme ? colors.gray[300] : colors.gray[500],\r\n}\r\nexport const X_TICK_STYLE = {\r\n fontSize: 10,\r\n fontWeight: 400,\r\n fill: FinvizSettings.hasDarkTheme ? colors.gray[300] : colors.gray[500],\r\n}\r\nexport const TOOLTIP_WRAPPER_STYLE = { outline: 'none', zIndex: 10 }\r\nexport const CURSOR_STYLE = {\r\n border: 0,\r\n stroke: 0,\r\n fill: FinvizSettings.hasDarkTheme ? colors.gray[700] : colors.gray[50],\r\n opacity: 0.65,\r\n}\r\nexport const TRANSPARENT_CURSOR = { opacity: 0 }\r\n\r\nexport enum BarType {\r\n Buy = 'Buy',\r\n Sale = 'Sale',\r\n}\r\n\r\nexport const BarColorMap: Record = {\r\n [BarType.Buy]: BUY_BAR_COLOR,\r\n [BarType.Sale]: SALE_BAR_COLOR,\r\n}\r\n\r\nexport const BarLabelMap: Record = {\r\n [BarType.Buy]: 'Insider Buy Volume',\r\n [BarType.Sale]: 'Insider Sells Volume',\r\n}\r\n","import classNames from 'classnames'\r\nimport { endOfMonth, startOfMonth } from 'date-fns'\r\n\r\nimport { formatValue } from '../../bubbles/utils'\r\nimport { BarColorMap, BarLabelMap, BarType } from './constants'\r\nimport { ChartData, VolumeChartDataPerTimeframe } from './types'\r\n\r\ntype ChartTooltipProps = {\r\n label?: number\r\n isActive?: boolean\r\n payload?: Array<{ payload?: ChartData }>\r\n activeKey: BarType | null\r\n}\r\n\r\nfunction formatDateTitle(date: number) {\r\n const startDate = startOfMonth(date)\r\n const endDate = endOfMonth(startDate)\r\n\r\n const month = startDate.toLocaleString('en-US', { month: 'short' })\r\n const startDay = startDate.getDate()\r\n const year = startDate.getFullYear()\r\n const endDay = endDate.getDate()\r\n return `${month} ${startDay}-${endDay}, ${year}`\r\n}\r\n\r\nfunction formatDataValue(barType: BarType, payload: Partial = {}) {\r\n const tradeCount = barType === BarType.Buy ? payload.buyTransactionCount : payload.saleTransactionCount\r\n const value = barType === BarType.Buy ? payload.buyAggregated : payload.saleAggregated\r\n return `${formatValue(value ?? 0)} (${tradeCount ?? 0} Trade${tradeCount === 1 ? '' : 's'})`\r\n}\r\n\r\nfunction BarTooltipLabel({\r\n activeKey,\r\n barType,\r\n payload,\r\n}: {\r\n activeKey: BarType | null\r\n barType: BarType\r\n payload?: VolumeChartDataPerTimeframe\r\n}) {\r\n return (\r\n \r\n {BarLabelMap[barType]}\r\n \r\n {formatDataValue(barType, payload)}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default function ChartTooltip({ isActive, activeKey, payload, label }: ChartTooltipProps) {\r\n const cursorPayload = payload?.[0]?.payload?.insider\r\n\r\n if (!isActive) return null\r\n\r\n return (\r\n \r\n {label && (\r\n
\r\n {formatDateTitle(label)}\r\n
\r\n )}\r\n \r\n \r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\nimport { Rectangle } from 'recharts'\r\n\r\nimport { BAR_WIDTH, BarType } from './constants'\r\n\r\nexport function InsiderVolumeBar({ x, width, ...props }: any) {\r\n let newX = x\r\n const value = props.payload[props.dataKey]\r\n const isCenteredBar = props.payload.saleAggregated === 0 || props.payload.buyAggregated === 0\r\n if (isCenteredBar) {\r\n if (props.name === BarType.Sale) newX += width / 2\r\n else newX -= width / 2\r\n }\r\n\r\n if (value === 0 || !Number.isFinite(value)) {\r\n // Needs to return an element, so return an empty node\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n {props.name === BarType.Sale && (\r\n \r\n )}\r\n {props.name === BarType.Buy && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport { endOfMonth, format, startOfMonth } from 'date-fns'\r\nimport { getInstrument } from 'finviz-charts/app/utils/chart'\r\nimport * as React from 'react'\r\nimport {\r\n Bar,\r\n CartesianGrid,\r\n ComposedChart,\r\n Line,\r\n Rectangle,\r\n RectangleProps,\r\n ResponsiveContainer,\r\n Tooltip,\r\n XAxis,\r\n YAxis,\r\n} from 'recharts'\r\n\r\nimport { parseRouteInitData } from '../../../main/util'\r\nimport { formatValue } from '../../bubbles/utils'\r\nimport { Quote, TIMEFRAME } from '../../charts-lib'\r\nimport { getDate } from '../../header/utils'\r\nimport { decodeQueryString } from '../../queryString'\r\nimport { QuoteContext } from '../QuoteContext'\r\nimport ChartTooltip from './ChartTooltip'\r\nimport { InsiderVolumeBar } from './InsiderVolumeBar'\r\nimport {\r\n BAR_BORDER_RADIUS,\r\n BUY_BAR_COLOR,\r\n BarType,\r\n CHART_HEIGHT,\r\n CURSOR_STYLE,\r\n LINE_COLOR,\r\n SALE_BAR_COLOR,\r\n STROKE_COLOR,\r\n TOOLTIP_WRAPPER_STYLE,\r\n TRANSPARENT_CURSOR,\r\n X_TICK_STYLE,\r\n Y_TICK_STYLE,\r\n} from './constants'\r\nimport { ChartData, TradingVolumeChartInit } from './types'\r\nimport { filterDataForChart } from './utils'\r\n\r\ninterface InsiderTradingVolumeChartProps {\r\n className?: string\r\n}\r\n\r\ninterface CustomCursorProps extends Partial> {\r\n numberOfDatapoints: number\r\n isActive: boolean\r\n points?: [{ x: number; y: number }]\r\n}\r\n\r\nfunction CustomCursor({ numberOfDatapoints, points, ...props }: CustomCursorProps) {\r\n const cursorWidth = props.width! / numberOfDatapoints\r\n const x = points![0].x - cursorWidth / 2\r\n const y = points![0].y\r\n return (\r\n \r\n )\r\n}\r\n\r\nfunction xAxisTickFormatter(value: any) {\r\n if (!Number.isFinite(value)) return ''\r\n\r\n const date = getDate(value)\r\n return date.getMonth() === 0 ? date.getFullYear().toString() : format(date, 'MMM')\r\n}\r\n\r\nexport function InsiderTradingVolumeChart({ className }: InsiderTradingVolumeChartProps) {\r\n const { index } = React.useContext(QuoteContext)\r\n const [isActive, setIsActive] = React.useState(false)\r\n const [chartData, setChartData] = React.useState([])\r\n const [activeKey, setActiveKey] = React.useState(null)\r\n\r\n const initData = React.useMemo(() => {\r\n const data = parseRouteInitData({\r\n elementId: `insider-init-data-${index}`,\r\n removeElement: false,\r\n })\r\n\r\n return {\r\n data,\r\n domain: data?.length\r\n ? [\r\n getDate(startOfMonth(getDate(data[0].date))).getTime(),\r\n getDate(endOfMonth(getDate(data[data.length - 1].date))).getTime(),\r\n ]\r\n : [],\r\n }\r\n }, [index])\r\n\r\n const hasInsiderTradingHistory = React.useMemo(\r\n () => initData.data?.some((x) => x.saleTransactionCount > 0 || x.buyTransactionCount > 0),\r\n [initData]\r\n )\r\n\r\n React.useEffect(() => {\r\n const { t: urlTicker } = decodeQueryString()\r\n const ticker = urlTicker.split(',')[index]\r\n async function fetchQuoteData() {\r\n if (!initData.data?.length) return\r\n const quote = await Quote.get({ ticker, instrument: getInstrument(ticker), timeframe: TIMEFRAME.d })\r\n const dateFrom = initData.data[0].date\r\n const dateTo = initData.data[initData.data.length - 1]!.date\r\n const data = filterDataForChart(quote, dateFrom, dateTo)\r\n setChartData(data.map((row, index) => ({ ...row, insider: initData.data?.[index] })))\r\n }\r\n\r\n if (hasInsiderTradingHistory) fetchQuoteData()\r\n }, [initData, hasInsiderTradingHistory, index])\r\n\r\n const commonProps = React.useMemo(\r\n () => ({\r\n bar: {\r\n yAxisId: 'yAxisVolume',\r\n activeBar: false,\r\n shape: InsiderVolumeBar,\r\n radius: BAR_BORDER_RADIUS,\r\n isAnimationActive: false,\r\n onMouseLeave: () => setActiveKey(null),\r\n },\r\n xAxis: {\r\n dataKey: 'date',\r\n scale: 'time' as const,\r\n type: 'number' as const,\r\n dy: 5,\r\n tick: X_TICK_STYLE,\r\n tickLine: false,\r\n axisLine: false,\r\n domain: initData.domain,\r\n tickFormatter: xAxisTickFormatter,\r\n },\r\n yAxis: {\r\n tick: Y_TICK_STYLE,\r\n tickLine: false,\r\n axisLine: false,\r\n tickFormatter: (value: number) => formatValue(value),\r\n },\r\n }),\r\n [initData.domain]\r\n )\r\n\r\n if (!initData.data?.length || !hasInsiderTradingHistory) return null\r\n\r\n return (\r\n
\r\n
\r\n \r\n Insider Trading Volume\r\n \r\n
\r\n setIsActive(true)}\r\n onMouseLeave={() => setIsActive(false)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n content={}\r\n />\r\n \r\n setActiveKey(BarType.Sale)}\r\n />\r\n setActiveKey(BarType.Buy)}\r\n />\r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n","import { endOfMonth, startOfMonth } from 'date-fns'\r\nimport { type Quote } from 'finviz-charts/server/offScreenCanvasRender'\r\n\r\nimport { getDate } from '../../header/utils'\r\nimport { ChartBaseData } from './types'\r\n\r\n/**\r\n * Only get data between from/to range\r\n */\r\nexport function filterDataForChart(quote: Quote, fromDate: number, toDate: number) {\r\n const monthlyData: ChartBaseData[] = []\r\n\r\n const fromTimestamp = getDate(startOfMonth(getDate(fromDate))).getTime()\r\n const toTimestamp = getDate(endOfMonth(getDate(toDate))).getTime()\r\n for (let index = 0; index < quote.date.length; index++) {\r\n const currentTimestamp = quote.date[index] * 1000\r\n const currentClose = quote.close[quote.barToDataIndex[index]]\r\n\r\n if (fromTimestamp > currentTimestamp || currentTimestamp > toTimestamp) continue\r\n\r\n monthlyData.push({ date: currentTimestamp, close: currentClose })\r\n }\r\n\r\n return monthlyData\r\n}\r\n","/* global FinvizQuoteTickers */\r\nimport classnames from 'classnames'\r\nimport * as dateFns from 'date-fns'\r\nimport React, { ChangeEvent, Component, FormEvent } from 'react'\r\n\r\nimport { DatePicker } from '../../main/components/date-picker'\r\nimport { SpecificChartFunctionality } from '../../main/constants'\r\nimport {\r\n ChartElementType,\r\n ChartLayout,\r\n Instrument,\r\n Quote,\r\n QuoteFetchType,\r\n TIMEFRAME,\r\n Theme,\r\n Utils,\r\n} from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { getStaticChartConfig } from '../shared/chartLayoutConfig'\r\nimport { getSanitizedTicker } from '../shared/ticker-sanitizer'\r\nimport { formatDateToStringUS } from '../shared/utils'\r\n\r\nconst redesignEnabled = !!FinvizSettings.hasRedesignEnabled\r\n\r\nvar colorScaleClass = function (value: number) {\r\n if (value < 0) {\r\n return 'color-text is-negative'\r\n } else if (value > 0) {\r\n return 'color-text is-positive'\r\n }\r\n return ''\r\n}\r\n\r\nvar monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\r\n\r\nvar arraysEqual = function (arr1: unknown[], arr2: unknown[]) {\r\n if (arr1.length !== arr2.length) {\r\n return false\r\n }\r\n for (var i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\ninterface ChartProps {\r\n tickers: string[]\r\n fromDay: string\r\n toDay: string\r\n}\r\n\r\nclass Chart extends Component {\r\n containerRef = React.createRef()\r\n\r\n shouldComponentUpdate(nextProps: ChartProps) {\r\n return !arraysEqual(this.props.tickers, nextProps.tickers)\r\n }\r\n\r\n render() {\r\n const theme = FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light\r\n const tickerQuote = Quote.select((q) => q.close.length > 0 && this.props.tickers.includes(q.ticker))\r\n const chartConfig = getStaticChartConfig({\r\n ticker: tickerQuote[0]?.ticker ?? '',\r\n timeframe: TIMEFRAME.d,\r\n paneElements: [\r\n {\r\n type: ChartElementType.PerfChart,\r\n tickers: this.props.tickers,\r\n fromDate: this.props.fromDay,\r\n toDate: this.props.toDay,\r\n overlays: [],\r\n },\r\n ],\r\n width: 1000,\r\n height: 450,\r\n refreshData: false,\r\n specificChartFunctionality: SpecificChartFunctionality.quotePerf,\r\n theme,\r\n })\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\ninterface TableProps {\r\n months: string[]\r\n rows: Array<{\r\n ticker: string\r\n months: string[]\r\n total: string\r\n }>\r\n}\r\n\r\n// mozno vyfarbovat tabulku?\r\nclass Table extends Component {\r\n render() {\r\n var { months, rows } = this.props,\r\n groupsCount = Math.ceil(months.length / 12)\r\n rows = rows.slice()\r\n const tdClasses = classnames('text-center', {\r\n 'body-table-nw font-bold': !redesignEnabled,\r\n })\r\n\r\n var trs = []\r\n for (let g = 0; g < groupsCount; g++) {\r\n trs.push(\r\n \r\n \r\n {months.splice(0, 12).map((month) => (\r\n \r\n {month}\r\n \r\n ))}\r\n {g === groupsCount - 1 && Total}\r\n \r\n )\r\n rows.forEach((row, i) => {\r\n trs.push(\r\n \r\n {row.ticker}\r\n {row.months.splice(0, 12).map((col, monthIndex) => (\r\n \r\n {col}\r\n \r\n ))}\r\n {g === groupsCount - 1 && (\r\n \r\n {row.total}\r\n \r\n )}\r\n \r\n )\r\n })\r\n }\r\n\r\n return (\r\n \r\n {trs}\r\n \r\n )\r\n }\r\n}\r\n\r\ninterface PerfState {\r\n tickersInput: string\r\n tickers: string[]\r\n months: Array<{\r\n value: string\r\n label: string\r\n }>\r\n fromMonth: {\r\n value: string\r\n label: string\r\n }\r\n toMonth: {\r\n value: string\r\n label: string\r\n }\r\n minDate: string\r\n maxDate: string\r\n fromDay: string\r\n toDay: string\r\n loading: boolean\r\n}\r\n\r\nexport class Perf extends Component {\r\n constructor(props: any) {\r\n super(props)\r\n var now = new Date(),\r\n months = []\r\n const startYear = new Date().getFullYear() - 36 // We have 37.25 years of data in DB, so leaving some offset\r\n for (var year = startYear; year <= now.getFullYear(); year++) {\r\n for (var month = 1; month <= 12; month++) {\r\n if (year === now.getFullYear() && month > now.getMonth() + 1) {\r\n break\r\n }\r\n months.push({\r\n value: month.toString().padStart(2, '0') + '/01/' + year,\r\n label: monthNames[month - 1] + ' ' + year.toString().substring(2),\r\n })\r\n }\r\n }\r\n\r\n this.state = {\r\n tickersInput: FinvizQuoteTickers.join(','),\r\n tickers: FinvizQuoteTickers,\r\n months: months,\r\n fromMonth: months[months.length - 12],\r\n toMonth: months[months.length - 1],\r\n /**\r\n * DB_BARS_LIMIT - code below is dependent on amount of data we store for specific timeframes\r\n * Search DB_BARS_LIMIT in the project to find other places with such code.\r\n */\r\n // 2510 bars = ±10 years\r\n minDate: formatDateToStringUS(dateFns.sub(new Date(), { years: 9, months: 11 })),\r\n maxDate: formatDateToStringUS(new Date()),\r\n fromDay: formatDateToStringUS(dateFns.subYears(new Date(), 1)),\r\n toDay: formatDateToStringUS(new Date()),\r\n loading: true,\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n \r\n Loading...\r\n \r\n )\r\n }\r\n\r\n var from = new Date(this.state.fromMonth.value)\r\n var to = new Date(this.state.toMonth.value)\r\n var monthsToShow = this.state.months\r\n .map((month) => month.value)\r\n .filter((month) => new Date(month) >= from && new Date(month) <= to)\r\n\r\n var quotes = Quote.select((q: any) => q.timeframe === 'm')\r\n var quotesPerf = quotes.map((q: any) => {\r\n var obj: { ticker: string; perf: Record } = { ticker: q.ticker, perf: {} }\r\n q.date.forEach((d: any, i: number) => {\r\n if (i === 0) {\r\n return\r\n }\r\n var date = Utils.dateFromUnixTimestamp(d)\r\n var perf = (q.close[i] * 100) / q.close[i - 1] - 100\r\n obj.perf[(date.getMonth() + 1).toString().padStart(2, '0') + '/01/' + date.getFullYear()] = perf\r\n })\r\n return obj\r\n })\r\n\r\n var months = monthsToShow.map(\r\n (month) => monthNames[new Date(month).getMonth()] + ' ' + new Date(month).getFullYear().toString().substring(2)\r\n )\r\n var rows = quotesPerf.map((quote: any) => {\r\n var cols: string[] = []\r\n var total = 1\r\n monthsToShow.forEach((month) => {\r\n var perf = Math.round(quote.perf[month] * 100) / 100\r\n if (!isNaN(perf)) {\r\n total *= quote.perf[month] / 100 + 1\r\n cols.push((perf > 0 ? '+' : '') + perf.toFixed(2) + '%')\r\n } else {\r\n cols.push('N/A')\r\n }\r\n })\r\n total = (total - 1) * 100\r\n return { ticker: quote.ticker, months: cols, total: (total > 0 ? '+' : '') + total.toFixed(2) + '%' }\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 \r\n \r\n
Tickers:\r\n {\r\n this.setState({ tickersInput: e.target.value })\r\n }}\r\n style={{ width: '100%' }}\r\n data-testid=\"quote-compare-perf-tickers-input\"\r\n />\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n {\r\n this._onDatePickerChange('from', formatDateToStringUS(newValue))\r\n }}\r\n >\r\n \r\n \r\n
\r\n {' - '}\r\n
\r\n {\r\n this._onDatePickerChange('to', formatDateToStringUS(newValue))\r\n }}\r\n >\r\n \r\n \r\n
\r\n \r\n\r\n

\r\n Monthly performance from  \r\n \r\n {this.state.months.map((option) => (\r\n \r\n ))}\r\n \r\n   to  \r\n \r\n {this.state.months.map((option) => (\r\n \r\n ))}\r\n \r\n

\r\n \r\n\r\n
\r\n \r\n )\r\n }\r\n\r\n refetchQuotes = () => {\r\n this._fetch(this.state.tickers, false)\r\n }\r\n\r\n componentDidMount() {\r\n this._fetch(this.state.tickers)\r\n\r\n // We have to listen to these events to synchrnously update quote data, if we do after awaiting Quote.getAll in _fetch\r\n // there's a visual glitch because it rerenders with new data from the server (there's a complete refetch after 15 requests with no new data)\r\n // and then it rerenders again after updateQuoteData\r\n Quote.bind('refetch newerData', this.updateQuoteData)\r\n document.addEventListener('quoteFetchEvent', this.refetchQuotes)\r\n }\r\n\r\n componentWillUnmount() {\r\n Quote.unbind('refetch newerData', this.updateQuoteData)\r\n document.removeEventListener('quoteFetchEvent', this.refetchQuotes)\r\n }\r\n\r\n updateQuoteData = () => {\r\n const { fromDay, toDay } = this.state\r\n\r\n if (!fromDay || !toDay) {\r\n return\r\n }\r\n\r\n const dailyQuotes = Quote.select((q: any) => q.timeframe === 'd')\r\n const fromDate = new Date(fromDay + ' 00:00')\r\n const toDate = new Date(toDay + ' 23:59')\r\n dailyQuotes.forEach((q: any) => {\r\n const o = [],\r\n h = [],\r\n l = [],\r\n c = [],\r\n d = [],\r\n v = []\r\n for (let i = 0; i < q.close.length; i++) {\r\n const date = Utils.dateFromUnixTimestamp(q.date[i])\r\n if (fromDate <= date && date <= toDate) {\r\n o.push(q.open[i])\r\n h.push(q.high[i])\r\n l.push(q.low[i])\r\n c.push(q.close[i])\r\n d.push(q.date[i])\r\n v.push(q.volume[i])\r\n }\r\n }\r\n // Clear cache so we'll recalculate values after updating quote data on next line\r\n // Cache invalidates only on quote.fetchedAt change and in this case we mutate quote values and don't change fetchedAt (which is correct)\r\n // Updating quote this way should be an edge case and that's why we have to clear the cache manually\r\n q.clearCachedData()\r\n q.updateAttributes({\r\n open: o,\r\n high: h,\r\n low: l,\r\n close: c,\r\n date: d,\r\n volume: v,\r\n })\r\n })\r\n\r\n // This is to rerender perf table on quote update\r\n this.forceUpdate()\r\n }\r\n\r\n _fetch = async (tickers: string[], isRefetch = true) => {\r\n const { t } = decodeQueryString<{ t: string; p?: TIMEFRAME }>()\r\n if (isRefetch) {\r\n this.setState({ loading: true })\r\n }\r\n\r\n Quote.all().forEach(async (quote) => {\r\n if (quote.ticker === t && quote.timeframe === 'd' && !isRefetch) {\r\n // We don't want to trigger main ticker quote newer data fetch because it's done in withQuotePolling which also triggers this function\r\n // by emmiting quoteFetchEvent\r\n return\r\n }\r\n if (tickers.includes(quote.ticker)) {\r\n await quote.fetchData({ fetchType: isRefetch ? QuoteFetchType.Refetch : QuoteFetchType.NewerData })\r\n this.updateQuoteData()\r\n } else {\r\n quote.destroy()\r\n }\r\n })\r\n\r\n if (isRefetch) {\r\n var d = tickers.map((ticker) => ({ ticker: ticker, timeframe: TIMEFRAME.d, instrument: Instrument.Stock }))\r\n var m = tickers.map((ticker) => ({ ticker: ticker, timeframe: TIMEFRAME.m, instrument: Instrument.Stock }))\r\n await Quote.getAll(d.concat(m))\r\n\r\n this.setState({ loading: false })\r\n }\r\n\r\n this.updateQuoteData()\r\n }\r\n\r\n _onSubmit = (e: FormEvent) => {\r\n e.preventDefault()\r\n const tickersInput = getSanitizedTicker(this.state.tickersInput, true)\r\n const tickers = tickersInput.split(',')\r\n this.setState({ tickers, tickersInput }, () => {\r\n this._fetch(tickers)\r\n })\r\n }\r\n\r\n _onMonthChange = (type: string, e: ChangeEvent) => {\r\n var state: any = {}\r\n state[type + 'Month'] = this.state.months.filter((m) => m.value === e.target.value)[0]\r\n this.setState(state)\r\n }\r\n\r\n _onDatePickerChange = (type: string, date: any) => {\r\n var formattedDate = formatDateToStringUS(new Date(date))\r\n\r\n var state: any = {}\r\n state[type + 'Day'] = formattedDate\r\n state[type + 'DatePickerOpen'] = false\r\n this.setState(state, () => {\r\n this._fetch(this.state.tickers)\r\n })\r\n }\r\n}\r\n","import classnames from 'classnames'\r\n\r\nimport { formatDate } from '../../app/header/utils'\r\nimport { formatNumber } from '../util'\r\nimport { RedGreenMultiline, RedGreenText } from './RedGreenText'\r\n\r\nexport interface QuotePriceProps {\r\n title?: string\r\n date?: Date | null\r\n dateLabel?: string | null\r\n price: number\r\n changeUsd: number\r\n changePct: number\r\n}\r\n\r\nexport function QuotePrice({ title, date, dateLabel, price, changeUsd, changePct }: QuotePriceProps) {\r\n const fractions = !isNaN(price) && price < 1 ? 4 : 2\r\n const hasValue = changeUsd && Number.isFinite(changeUsd)\r\n\r\n return (\r\n
\r\n {title &&
{title}
}\r\n\r\n {(date || dateLabel) && (\r\n \r\n {dateLabel ?? formatDate(date, '', 'MMM dd')}\r\n {date && (\r\n <>\r\n {' '}\r\n • {formatDate(date, '', 'hh:mmaa')} ET\r\n \r\n )}\r\n \r\n )}\r\n\r\n
\r\n {formatNumber(price, { defaultValue: '—', fractions })}\r\n
\r\n \r\n \r\n
Dollar change
\r\n {formatNumber(changeUsd, { showPlusSign: true, fractions })}\r\n
\r\n %}\r\n >\r\n
Percentage change
\r\n {formatNumber(changePct)}\r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import { useModelState } from '../../charts-lib'\r\n\r\nconst CHANGE_UPATE_EVENTS = ['change', 'update']\r\nconst QUOTE_MODEL_CHANGE_EVENTS = [...CHANGE_UPATE_EVENTS, 'refetch', 'newerData']\r\n\r\nexport interface HeaderPricesContext {\r\n prevClose: number\r\n lastClose: number\r\n lastTime: number\r\n lastDate?: number\r\n afterClose: number\r\n afterTime: number\r\n}\r\n\r\nexport function useChartContextPrices(chartLayoutModel: any): HeaderPricesContext | null {\r\n const chartModel = useModelState(chartLayoutModel?.charts().first(), {\r\n watchProperties: ['quote'],\r\n listenOnEvents: CHANGE_UPATE_EVENTS,\r\n })\r\n const quoteModel = useModelState(chartModel?.quote() ?? null, {\r\n watchProperties: ['lastClose', 'prevClose', 'afterClose', 'afterTime'],\r\n listenOnEvents: QUOTE_MODEL_CHANGE_EVENTS,\r\n })\r\n\r\n if (!quoteModel) return null\r\n\r\n return {\r\n prevClose: quoteModel.prevClose,\r\n lastClose: quoteModel.lastClose,\r\n lastTime: quoteModel.lastTime,\r\n lastDate: quoteModel.lastDate,\r\n afterClose: quoteModel.afterClose,\r\n afterTime: quoteModel.afterTime,\r\n }\r\n}\r\n","import * as dateFns from 'date-fns'\r\nimport React from 'react'\r\n\r\nimport { QuotePrice } from '../../../main/components/QuotePrice'\r\nimport { Quote, useChartLayoutGlobalModelAsync, withCompleteLayoutModelInit, withQuotePolling } from '../../charts-lib'\r\nimport { formatDate, getDate } from '../../header/utils'\r\nimport { QuotePortalContext } from '../components/Portal'\r\nimport { HeaderPricesContext, useChartContextPrices } from './hooks'\r\n\r\nexport function ChartContextQuoteHeader() {\r\n const { toggleStaticElement } = React.useContext(QuotePortalContext)\r\n const { chartLayoutModel } = useChartLayoutGlobalModelAsync()\r\n const data = useChartContextPrices(chartLayoutModel)\r\n\r\n React.useEffect(() => toggleStaticElement(), [toggleStaticElement])\r\n\r\n return \r\n}\r\n\r\ninterface QuoteHeaderWithManualInitProps {\r\n chartLayoutModel: any\r\n config: any\r\n}\r\n\r\nfunction ManualInitQuoteHeaderComponent({ chartLayoutModel, config }: QuoteHeaderWithManualInitProps) {\r\n const { toggleStaticElement } = React.useContext(QuotePortalContext)\r\n const data = useChartContextPrices(chartLayoutModel)\r\n\r\n /**\r\n * We need to instantiate layout model in order to use quote refetch on page\r\n * without an actual chart (options.) We also need to manually create a chart model\r\n *\r\n * It is then correctly caught in `useChartContextPrices`\r\n */\r\n React.useEffect(() => {\r\n async function fetchAndMapInitialQuote() {\r\n for (const chartConfig of config.charts) {\r\n const modelProperties = Object.assign({}, chartConfig)\r\n\r\n modelProperties.chart_layout = chartLayoutModel\r\n delete modelProperties.panes\r\n if (modelProperties.refreshData == null) {\r\n modelProperties.refreshData = true\r\n }\r\n chartLayoutModel.charts().create(modelProperties)\r\n }\r\n\r\n const chart = chartLayoutModel.charts().first()\r\n\r\n const quote = await Quote.get({\r\n ticker: chart.ticker,\r\n instrument: chart.instrument,\r\n timeframe: chart.timeframe,\r\n options: { maxBars: 0 },\r\n })\r\n\r\n chart.updateAttributes({ quote })\r\n toggleStaticElement()\r\n }\r\n\r\n fetchAndMapInitialQuote()\r\n }, [chartLayoutModel, config.charts, toggleStaticElement])\r\n\r\n return \r\n}\r\n\r\nexport const ManualInitQuoteHeader = withCompleteLayoutModelInit(withQuotePolling(ManualInitQuoteHeaderComponent))\r\n\r\nexport function QuoteHeaderContent({ data }: { data: HeaderPricesContext | null }) {\r\n if (!data) return null\r\n\r\n const isChange = Number.isFinite(data.prevClose)\r\n const isAfterChange = Number.isFinite(data.afterClose) && data.afterClose !== data.lastClose\r\n const lastTime = data.lastTime ? getDate(data.lastTime * 1000) : null\r\n const lastDate = !lastTime && data.lastDate ? formatDate(data.lastDate, 'yyyyMMdd', 'MMM dd, yyyy') : null\r\n const afterDate = data.afterTime ? getDate(data.afterTime * 1000) : null\r\n\r\n let afterhoursTitle\r\n if (lastTime && afterDate) {\r\n if (dateFns.isBefore(afterDate, lastTime)) afterhoursTitle = 'Premarket'\r\n else afterhoursTitle = 'Aftermarket'\r\n }\r\n\r\n return (\r\n <>\r\n {isChange && (\r\n \r\n )}\r\n {isAfterChange && (\r\n \r\n )}\r\n \r\n )\r\n}\r\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","export enum StatementsDataEnum {\r\n yoyChange = 'yoyChange',\r\n yoyChangePct = 'yoyChangePct',\r\n}\r\n\r\nexport enum StatementsTimeframeEnum {\r\n annual = 'annual',\r\n quarterly = 'quarterly',\r\n}\r\n\r\nexport const SETTINGS_COOKIE_KEY = 'quoteStatementsTableSettings'\r\n\r\nexport const DEFAULT_SETTINGS = {\r\n [StatementsDataEnum.yoyChange]: false,\r\n [StatementsDataEnum.yoyChangePct]: false,\r\n statementsTimeframe: StatementsTimeframeEnum.annual,\r\n}\r\n\r\nexport type StatementsType = {\r\n [StatementsDataEnum.yoyChange]: boolean\r\n [StatementsDataEnum.yoyChangePct]: boolean\r\n statementsTimeframe: StatementsTimeframeEnum\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as d3 from 'd3'\r\nimport { isRedesignEnabled } from 'finviz-charts/app/utils'\r\nimport * as React from 'react'\r\nimport { Component, RefObject, createRef } from 'react'\r\n\r\nimport { ChipSwitch, ChipSwitchButton } from '../../main/components/ChipSwitch'\r\nimport { RedGreenText } from '../../main/components/RedGreenText'\r\nimport { FinancialsTableContextProvider, useFinancialsTableContext } from '../../main/components/financials-table'\r\nimport { Icon } from '../../main/components/icon'\r\nimport { getValue, setValue } from '../../main/services/local-storage'\r\nimport { shortFormatNumber } from '../../main/util'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { AdTag, getInvestingChannelPage } from '../shared/components/Ads'\r\nimport BarChartBig from './barChart'\r\nimport {\r\n DEFAULT_SETTINGS,\r\n SETTINGS_COOKIE_KEY,\r\n StatementsDataEnum,\r\n StatementsTimeframeEnum,\r\n StatementsType,\r\n} from './statements-constants'\r\n\r\ninterface Bar {\r\n name: string\r\n value: number\r\n}\r\n\r\ninterface BarChartProps {\r\n data: Bar[]\r\n}\r\n\r\nclass BarChart extends Component {\r\n svgRef: RefObject\r\n\r\n constructor(props: BarChartProps) {\r\n super(props)\r\n this.svgRef = createRef()\r\n }\r\n\r\n componentDidMount() {\r\n this.renderChart()\r\n }\r\n\r\n componentDidUpdate() {\r\n this.renderChart()\r\n }\r\n\r\n renderChart() {\r\n const data = this.props.data\r\n\r\n const barWidth = 3\r\n const width = data.length * (barWidth + 1)\r\n const height = 16\r\n\r\n const x = d3\r\n .scaleBand()\r\n .domain(data.map((d) => d.name))\r\n .range([0, width])\r\n\r\n let min = d3.min(data, (d: Bar) => d.value)!\r\n if (min < 0) {\r\n min = d3.min(data, (d: Bar) => Math.min(d.value, -d.value))!\r\n } else {\r\n min = 0\r\n }\r\n\r\n const y = d3\r\n .scaleLinear()\r\n .range([height, 0])\r\n .domain([min, d3.max(data, (d: Bar) => Math.abs(d.value))] as [number, number])\r\n .nice()\r\n .unknown(height / 2)\r\n\r\n const svg = d3.select(this.svgRef.current).property('value', [])\r\n\r\n let bars = svg.selectAll('.bar').data(data)\r\n bars\r\n .enter()\r\n .append('rect')\r\n .attr('class', function (d: Bar) {\r\n return 'bar bar--' + (d.value < 0 ? 'negative' : 'positive')\r\n })\r\n .attr('x', function (d: Bar) {\r\n return x(d.name)!\r\n })\r\n .attr('y', function (d: Bar) {\r\n return y(Math.max(0, d.value))\r\n })\r\n .attr('height', function (d: Bar) {\r\n let height = Math.abs(y(d.value) - y(0))\r\n if (d.value > 0 || d.value < 0) {\r\n height = Math.max(height, 0.5)\r\n }\r\n return height\r\n })\r\n .attr('width', barWidth)\r\n bars\r\n .transition()\r\n .attr('class', function (d: Bar) {\r\n return 'bar bar--' + (d.value < 0 ? 'negative' : 'positive')\r\n })\r\n .attr('x', function (d: Bar) {\r\n return x(d.name)!\r\n })\r\n .attr('y', function (d: Bar) {\r\n return y(Math.max(0, d.value))\r\n })\r\n .attr('height', function (d: Bar) {\r\n let height = Math.abs(y(d.value) - y(0))\r\n if (d.value > 0 || d.value < 0) {\r\n height = Math.max(height, 0.5)\r\n }\r\n return height\r\n })\r\n .attr('width', barWidth)\r\n bars.exit().remove()\r\n\r\n this.svgRef.current!.style.width = width + 'px'\r\n this.svgRef.current!.style.height = height + 'px'\r\n }\r\n\r\n render() {\r\n return \r\n }\r\n}\r\n\r\nfunction EliteHoverAd() {\r\n return (\r\n
\r\n
\r\n \r\n

Upgrade your FINVIZ experience

\r\n

\r\n Join thousands of traders who make more informed decisions with our premium features. Real-time\r\n quotes, advanced visualizations, historical statements, and much more.\r\n

\r\n \r\n Learn more\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\ninterface BarChartWrapperProps {\r\n data: Bar[]\r\n}\r\n\r\nclass BarChartWrapper extends Component {\r\n state = {\r\n hover: false,\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n x.value !== null)}>\r\n \r\n \r\n \r\n {FinvizSettings.hasUserPremium ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nconst DEFAULT_SOURCE = 'F'\r\n\r\nconst _getDefaultSource = (): 'F' | 'R' => {\r\n if (!FinvizSettings.hasUserPremium) {\r\n return DEFAULT_SOURCE\r\n }\r\n\r\n return getValue('statements-source', DEFAULT_SOURCE) === 'R' ? 'R' : 'F'\r\n}\r\n\r\nconst getTimeframeFromStatementsSettingsTimeframe = (statementsTimeframe: StatementsTimeframeEnum) => {\r\n if (statementsTimeframe === StatementsTimeframeEnum.quarterly) {\r\n return 'Q'\r\n }\r\n\r\n // statementsTimeframe === StatementsTimeframeEnum.annual or fallback\r\n return 'A'\r\n}\r\n\r\ninterface StatementsState {\r\n source: 'F' | 'R'\r\n sheet: string\r\n currency: string | null\r\n data: Record | null\r\n}\r\n\r\nfunction StatementsComponent() {\r\n const { settings } = useFinancialsTableContext()\r\n const pageRef = React.useRef(getInvestingChannelPage())\r\n\r\n const [state, setState] = React.useState({\r\n source: _getDefaultSource(),\r\n sheet: 'I',\r\n currency: null,\r\n data: null,\r\n })\r\n\r\n const timeframe = getTimeframeFromStatementsSettingsTimeframe(settings.statementsTimeframe)\r\n\r\n const { data } = state\r\n const hasData = data && !data.error && Object.keys(data).length > 0\r\n const hasRedesignEnabled = FinvizSettings?.hasRedesignEnabled\r\n\r\n const _fetch = async () => {\r\n const { source, sheet } = state\r\n const { t } = decodeQueryString()\r\n\r\n try {\r\n const response = await fetch(`/api/statement.ashx?t=${t}&so=${source}&s=${sheet}${timeframe}`)\r\n const json = await response.json()\r\n\r\n setState({\r\n ...state,\r\n currency: json.currency,\r\n data: json.error ? json : json.data,\r\n })\r\n } catch {}\r\n }\r\n\r\n React.useEffect(() => {\r\n pageRef.current = getInvestingChannelPage()\r\n pageRef.current?.create()\r\n\r\n return () => {\r\n pageRef.current?.destroy()\r\n }\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n _fetch()\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [state.sheet, state.source, timeframe])\r\n\r\n const _renderSheetLink = (id: string, text: string) => (\r\n {\r\n e.preventDefault()\r\n setState({\r\n ...state,\r\n sheet: id,\r\n })\r\n }}\r\n >\r\n {text}\r\n \r\n )\r\n\r\n if (data === null) {\r\n return null\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
\r\n {FinvizSettings.hasUserPremium && (\r\n // TODO fix classname when css mixins removal is merged\r\n {\r\n e.preventDefault()\r\n const source = e.target.value === 'R' ? 'R' : 'F'\r\n setState({\r\n ...state,\r\n source: source,\r\n })\r\n setValue('statements-source', source, DEFAULT_SOURCE, false)\r\n }}\r\n >\r\n \r\n \r\n \r\n )}\r\n {FinvizSettings.hasUserPremium && <>   }\r\n\r\n \r\n {_renderSheetLink('I', 'Income Statement')} •{' '}\r\n {_renderSheetLink('B', 'Balance Sheet')} •{' '}\r\n {_renderSheetLink('C', 'Cash Flow')}\r\n \r\n \r\n \r\n
\r\n {hasData && }\r\n {!hasData && (\r\n \r\n \r\n \r\n \r\n The statement is not available. Try switching between FactSet-Reuters source.\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n\r\nfunction Statements() {\r\n return (\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nfunction StatementsSettingsSection() {\r\n const { settings, setSettings } = useFinancialsTableContext()\r\n\r\n const toggleSetting = (key: keyof StatementsType, value: StatementsType[keyof StatementsType]) => {\r\n setSettings({\r\n ...settings,\r\n [key]: value,\r\n })\r\n }\r\n\r\n const yoyGrowthLabel = React.useMemo(() => {\r\n const isQuarterlyTimeframe = settings.statementsTimeframe === StatementsTimeframeEnum.quarterly\r\n\r\n if (isQuarterlyTimeframe) {\r\n return 'QoQ Growth'\r\n }\r\n\r\n return 'YoY Growth'\r\n }, [settings.statementsTimeframe])\r\n\r\n return (\r\n
\r\n \r\n {\r\n toggleSetting(StatementsDataEnum.yoyChange, !settings[StatementsDataEnum.yoyChange])\r\n }}\r\n >\r\n {yoyGrowthLabel}\r\n \r\n {\r\n toggleSetting(StatementsDataEnum.yoyChangePct, !settings[StatementsDataEnum.yoyChangePct])\r\n }}\r\n >\r\n {`${yoyGrowthLabel} %`}\r\n \r\n \r\n\r\n \r\n {\r\n toggleSetting('statementsTimeframe', StatementsTimeframeEnum.annual)\r\n }}\r\n >\r\n Annual\r\n \r\n {\r\n toggleSetting('statementsTimeframe', StatementsTimeframeEnum.quarterly)\r\n }}\r\n >\r\n Quarterly\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nfunction isChartable(label: string) {\r\n switch (label) {\r\n case 'Period End Date':\r\n case 'Period Length':\r\n return false\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction parseData(data: Record, skipFirst: boolean) {\r\n let parsed: any = {}\r\n Object.keys(data).forEach((key) => {\r\n parsed[key] = data[key]\r\n .map((value, index) => {\r\n if (isChartable(key)) {\r\n let parsedValue\r\n if (value === '') {\r\n parsedValue = null\r\n } else {\r\n parsedValue = parseFloat(value.replace(/,/g, ''))\r\n }\r\n return {\r\n name: data['Period End Date'][index],\r\n value: parsedValue,\r\n }\r\n }\r\n return null\r\n })\r\n .slice(skipFirst ? 1 : 0)\r\n })\r\n\r\n return parsed as Record>\r\n}\r\n\r\nfunction isHighlightRow(label: string) {\r\n switch (label) {\r\n case 'Period End Date':\r\n case 'Total Revenue':\r\n case 'Total Premiums Earned':\r\n case 'Interest Income':\r\n case 'Gross Profit':\r\n case 'Total Operating Expense':\r\n case 'Operating Income':\r\n case 'Net Income Before Taxes':\r\n case 'Net Income':\r\n case 'Total Current Assets':\r\n case 'Total Assets':\r\n case 'Total Current Liabilities':\r\n case 'Total Liabilities':\r\n case 'Total Equity':\r\n case 'Total Liabilities and Equity':\r\n case 'Cash from Operating Activities':\r\n case 'Cash from Investing Activities':\r\n case 'Cash from Financing Activities':\r\n case 'Net Change in Cash':\r\n case 'Price To Earnings Ratio':\r\n case 'Price to Book Ratio':\r\n case 'Price to Free Cash Flow':\r\n return true\r\n }\r\n\r\n return false\r\n}\r\n\r\ntype StatementsTableProps = Pick\r\n\r\nfunction StatementsTable({ data, currency }: StatementsTableProps) {\r\n const { settings } = useFinancialsTableContext()\r\n const skipFirst = data?.['Period End Date'][0] === 'TTM'\r\n const parsedData = data ? parseData(data, skipFirst) : null\r\n\r\n const yoyData = React.useMemo(\r\n () =>\r\n parsedData\r\n ? Object.entries(parsedData).reduce<\r\n Record<\r\n string,\r\n {\r\n change: Array\r\n changePct: Array\r\n }\r\n >\r\n >((acc, [key, values]) => {\r\n if (!isChartable(key)) {\r\n return acc\r\n }\r\n const yoyData: Array<{ change: number | null; changePct: number | null }> = []\r\n let lastValue: number | null = null\r\n\r\n // values are in DESC order\r\n const reversedValues = [...values].reverse()\r\n\r\n reversedValues.forEach(({ value }) => {\r\n const isValidValue = typeof value === 'number'\r\n if (!isValidValue || lastValue === null || lastValue === 0) {\r\n yoyData.push({ change: null, changePct: null })\r\n } else {\r\n const change = value - lastValue\r\n yoyData.push({ change, changePct: (change / Math.abs(lastValue)) * 100 })\r\n }\r\n\r\n if (isValidValue) lastValue = value\r\n })\r\n\r\n const reversedYoyData = [...yoyData].reverse()\r\n return {\r\n ...acc,\r\n [key]: {\r\n change: reversedYoyData.map(({ change }) => change),\r\n changePct: reversedYoyData.map(({ changePct }) => changePct),\r\n },\r\n }\r\n }, {})\r\n : {},\r\n [parsedData]\r\n )\r\n\r\n const yoyGrowthLabel = React.useMemo(() => {\r\n const isQuarterlyTimeframe = settings.statementsTimeframe === StatementsTimeframeEnum.quarterly\r\n\r\n if (isQuarterlyTimeframe) {\r\n return 'QoQ Growth'\r\n }\r\n\r\n return 'YoY Growth'\r\n }, [settings.statementsTimeframe])\r\n\r\n if (!data || !parsedData) return null\r\n\r\n const hasRedesignEnabled = FinvizSettings?.hasRedesignEnabled\r\n const cellClass = classnames('align-top', {\r\n 'snapshot-td2 h-6 !leading-4 !pt-[4px]': !hasRedesignEnabled,\r\n })\r\n const adRowIndexStart = !hasRedesignEnabled && data['Period Length'] ? 2 : 1\r\n\r\n return (\r\n <>\r\n \r\n \r\n {Object.keys(data).map((key, rowIndex) => {\r\n const hasYoYData = !!yoyData[key] && data[key].some((value) => value)\r\n return (\r\n \r\n \r\n {key}\r\n {hasYoYData && settings[StatementsDataEnum.yoyChange] && (\r\n <>\r\n
\r\n {yoyGrowthLabel}\r\n \r\n )}\r\n {hasYoYData && settings[StatementsDataEnum.yoyChangePct] && (\r\n <>\r\n
\r\n {`${yoyGrowthLabel} %`}\r\n \r\n )}\r\n \r\n \r\n {isChartable(key) && }\r\n \r\n {data[key].map((value, index) => {\r\n const changeIndex = skipFirst ? index - 1 : index\r\n const yoyChangeValue = yoyData[key]?.change[changeIndex] ?? null\r\n const yoyChangePctValue = yoyData[key]?.changePct[changeIndex] ?? null\r\n if (!FinvizSettings.hasUserPremium) {\r\n if (rowIndex === adRowIndexStart && index === 3) {\r\n return (\r\n \r\n \r\n \r\n

Upgrade your FINVIZ experience

\r\n

\r\n Join thousands of traders who make more informed decisions with our premium\r\n features. Real-time quotes, advanced visualizations, historical statements, and much\r\n more.\r\n

\r\n \r\n Learn more\r\n \r\n \r\n )\r\n }\r\n if (\r\n index > 2 &&\r\n ((hasRedesignEnabled && key !== 'Period End Date') ||\r\n (key !== 'Period End Date' && key !== 'Period Length'))\r\n ) {\r\n return null\r\n }\r\n }\r\n\r\n return (\r\n \r\n {value}\r\n {hasYoYData && settings[StatementsDataEnum.yoyChange] && (\r\n <>\r\n
\r\n \r\n {shortFormatNumber(yoyChangeValue, { defaultValue: '—' })}\r\n \r\n \r\n )}\r\n {hasYoYData && settings[StatementsDataEnum.yoyChangePct] && (\r\n <>\r\n
\r\n \r\n {yoyChangePctValue?.toFixed(2) ?? '—'}\r\n \r\n \r\n )}\r\n \r\n )\r\n })}\r\n \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
values in Millions, {currency}
\r\n \r\n )\r\n}\r\n\r\nexport default Statements\r\n","import * as React from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nimport { decodeQueryString } from '../queryString'\r\n\r\nconst CORRELATION_LINKS_CONTAINER_SELECTOR = 'js-quote-correlation-links-container'\r\nconst MULTITICKER_CHART_ELEMENT_SELECTOR = 'js-multi-ticker-chart'\r\nconst SET_SEARCH_EXT_SELECTOR = 'js-set-search-ext-argument'\r\n\r\nexport function useStockDetailUpdater() {\r\n const location = useLocation()\r\n const { p, ty } = decodeQueryString(location.search)\r\n const isInitializedRef = React.useRef(false)\r\n const [isStockDetailUpdating, setIsStockDetailUpdating] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const multiTickerElements = document.getElementsByClassName(MULTITICKER_CHART_ELEMENT_SELECTOR)\r\n const correlationElements = document.getElementsByClassName(CORRELATION_LINKS_CONTAINER_SELECTOR)\r\n const abortController = new AbortController()\r\n\r\n if (isInitializedRef.current) {\r\n if (multiTickerElements.length > 0) setIsStockDetailUpdating(true)\r\n\r\n fetch(location.pathname + location.search, { signal: abortController.signal })\r\n .then((response) => response.text())\r\n .then((text) => {\r\n const virtualDOM = new DOMParser().parseFromString(text, 'text/html')\r\n\r\n // Multiticker update\r\n if (multiTickerElements.length > 0) {\r\n const multiTickerHtmlElements = Array.from(multiTickerElements) as HTMLImageElement[]\r\n const newMultiTickerHtmlElements = Array.from(\r\n virtualDOM.getElementsByClassName(MULTITICKER_CHART_ELEMENT_SELECTOR)\r\n ) as HTMLImageElement[]\r\n\r\n if (newMultiTickerHtmlElements?.length === multiTickerHtmlElements.length) {\r\n multiTickerHtmlElements.forEach((element, index) => {\r\n element.onload = () => setIsStockDetailUpdating(false)\r\n element.src = newMultiTickerHtmlElements[index].src\r\n })\r\n } else {\r\n setIsStockDetailUpdating(false)\r\n }\r\n }\r\n\r\n // Correlation update\r\n const correlationLinksTableCellHtmlElements = Array.from(correlationElements) as HTMLTableCellElement[]\r\n const newCorrelationLinksTableCellHtmlElements = Array.from(\r\n virtualDOM.getElementsByClassName(CORRELATION_LINKS_CONTAINER_SELECTOR)\r\n ) as HTMLTableCellElement[]\r\n\r\n if (newCorrelationLinksTableCellHtmlElements?.length === correlationLinksTableCellHtmlElements.length) {\r\n correlationLinksTableCellHtmlElements.forEach((element, index) => {\r\n element.innerHTML = newCorrelationLinksTableCellHtmlElements[index].innerHTML\r\n })\r\n }\r\n\r\n // Search function update\r\n const newsearchFunctionWrapperElement = virtualDOM.getElementById(SET_SEARCH_EXT_SELECTOR) as HTMLDivElement\r\n if (newsearchFunctionWrapperElement?.dataset.setSearchExtArgument) {\r\n FinvizSettings.quoteSearchExt = newsearchFunctionWrapperElement.dataset.setSearchExtArgument\r\n }\r\n })\r\n .catch((err) => {\r\n setIsStockDetailUpdating(false)\r\n if (err.name !== 'AbortError') {\r\n Sentry.captureException(err)\r\n }\r\n })\r\n }\r\n isInitializedRef.current = true\r\n return () => {\r\n abortController.abort()\r\n }\r\n // We don't want to trigger effect on any location change just if period or type change\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [p, ty])\r\n\r\n return { isStockDetailUpdating }\r\n}\r\n","import * as React from 'react'\r\nimport ReactDOMClient from 'react-dom/client'\r\nimport { BrowserRouter } from 'react-router-dom'\r\n\r\nimport { NotificationWrapper } from '../../main/components/notification'\r\nimport { useCheckNonIdeaChartMissingConfig } from '../../main/hooks/use-check-non-idea-chart-missing-config'\r\nimport { initIdeaQuotes } from '../../main/modules/charts/util'\r\nimport { Quote } from '../charts-lib'\r\nimport { decodeQueryString } from '../queryString'\r\nimport { getInitChartConfig } from '../shared/getInitChartConfig'\r\nimport { ready } from '../shared/ready'\r\nimport { QuoteNavigation } from './Navigation'\r\nimport { QuoteChart } from './QuoteChart'\r\nimport { QuoteContext, QuoteContextProvider } from './QuoteContext'\r\nimport { QuotePortal } from './components/Portal'\r\nimport { StaticChartHeader } from './components/StaticChartHeader'\r\nimport ETFHoldings from './etf-holdings'\r\nimport FundamentalCharts from './fundamentalCharts'\r\nimport { InsiderTradingVolumeChart } from './insider-trading-volume-chart'\r\nimport { Perf } from './quote'\r\nimport { ChartContextQuoteHeader, ManualInitQuoteHeader } from './quote-header'\r\nimport Statements from './statements'\r\nimport { QuoteQuery, QuoteSubview, QuoteView } from './types'\r\nimport { useStockDetailUpdater } from './use-stock-detail-updater'\r\n\r\nif (FinvizSettings.hasUserPremium || FinvizSettings.hasRedesignEnabled) {\r\n import(/* webpackChunkName: \"recent_quotes\" */ '../shared/recent_quotes').then(({ RenderRecentQuotes }) => {\r\n RenderRecentQuotes()\r\n })\r\n}\r\n\r\nconst PRICE_STATIC = document.querySelectorAll('.js-quote-price-static')\r\nconst PRICE_ROOTS = document.querySelectorAll('.js-quote-price-root')\r\n\r\nconst NAVIGATION_STATIC = document.querySelectorAll('.js-quote-navigation-static')\r\nconst NAVIGATION_ROOTS = document.querySelectorAll('.js-quote-navigation-root')\r\n\r\nconst ETF_HOLDINGS_STATIC = document.querySelectorAll('.js-etf-holdings-static')\r\nconst ETF_HOLDINGS_ROOTS = document.querySelectorAll('.js-etf-holdings-root')\r\nconst isETF = !!ETF_HOLDINGS_ROOTS.length\r\n\r\nconst STATIC_CHART_HEADER_ROOTS = document.querySelectorAll('.quote-menu')\r\n\r\nconst FUNDAMENTAL_CHARTS_ROOTS = document.querySelectorAll('.js-quote-fa')\r\n\r\nconst STATEMENTS_ROOTS = document.querySelectorAll('#statements')\r\n\r\nconst INSIDER_CHART_ROOTS = document.querySelectorAll('.insider-trading-chart')\r\n\r\nfunction ReactComponentsContainer({ isStockDetailUpdating }: { isStockDetailUpdating: boolean }) {\r\n const context = React.useContext(QuoteContext)\r\n\r\n return (\r\n <>\r\n \r\n \r\n {context.view === QuoteView.ChartDetail ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {context.view === QuoteView.ChartDetail && (\r\n \r\n {context.index === 0 && }\r\n\r\n {context.index > 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n\r\n {context.subview === QuoteSubview.ComparePerf && context.index === 0 && }\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nfunction QuoteTickerComponents() {\r\n useCheckNonIdeaChartMissingConfig()\r\n\r\n const query = decodeQueryString()\r\n const tickers = query[QuoteQuery.Ticker].split(',')\r\n const { isStockDetailUpdating } = useStockDetailUpdater()\r\n\r\n return tickers.map((ticker, index) => (\r\n \r\n \r\n \r\n ))\r\n}\r\n\r\nready(() => {\r\n const reactRootElement = document.getElementById('react-root')\r\n\r\n if (!reactRootElement) return\r\n\r\n if (FinvizSettings.quoteData) {\r\n Quote.create(FinvizSettings.quoteData)\r\n }\r\n\r\n if (window.globalChartConfig && !window.globalChartConfig.idea) {\r\n window.globalChartConfig = getInitChartConfig()\r\n\r\n if (window.globalChartConfig?.ideaQuotes) {\r\n initIdeaQuotes(window.globalChartConfig.ideaQuotes, window.globalChartConfig)\r\n }\r\n }\r\n\r\n ReactDOMClient.createRoot(reactRootElement).render(\r\n \r\n \r\n \r\n \r\n \r\n )\r\n})\r\n\r\nconst revealRatingButtonsCollection = document.getElementsByClassName('js-reveal-ratings-button')\r\nconst revealRatingButtons = Array.from(revealRatingButtonsCollection) as HTMLButtonElement[]\r\nrevealRatingButtons.forEach((revealRatingButton) => {\r\n revealRatingButton.onclick = (e) => {\r\n e.preventDefault()\r\n const ratingsRowWithTable = revealRatingButton.previousElementSibling\r\n\r\n ratingsRowWithTable?.querySelectorAll('table tr').forEach((rating, index, rows) => {\r\n if (rating.classList.contains('is-last')) {\r\n rating.classList.remove('is-last')\r\n }\r\n\r\n rating.classList.remove('hidden')\r\n\r\n if (index === rows.length - 1) {\r\n rating.classList.add('is-last')\r\n }\r\n })\r\n\r\n revealRatingButton.classList.add('hidden')\r\n window.gtag && window.gtag('event', 'click', { event_category: 'reveal-ratings' })\r\n }\r\n})\r\n","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 { SpecificChartFunctionality } from '../../main/constants'\r\nimport { ChartConfigChartPaneElement, Instrument, LayoutType, ScaleType, TIMEFRAME, Theme } from '../charts-lib'\r\nimport { getParsedCookies } from './cookie'\r\n\r\ninterface PaneElementProps extends ChartConfigChartPaneElement {\r\n label?: string\r\n fromDate?: string\r\n toDate?: string\r\n min?: number\r\n tickers: string[]\r\n}\r\n\r\ninterface StaticChartConfigProps {\r\n width?: number\r\n height?: number\r\n ticker: string\r\n timeframe: TIMEFRAME\r\n paneElements: PaneElementProps[]\r\n specificChartFunctionality?: SpecificChartFunctionality\r\n colorsOverride?: Array\r\n theme?: Theme\r\n colors?: ReturnType\r\n refreshData?: boolean\r\n}\r\n\r\nexport function getStaticChartConfig({\r\n width = 800,\r\n height = 400,\r\n ticker,\r\n timeframe,\r\n paneElements,\r\n specificChartFunctionality = SpecificChartFunctionality.default,\r\n colorsOverride,\r\n theme,\r\n colors = getCustomColorsFromCookies(),\r\n refreshData = false,\r\n}: StaticChartConfigProps) {\r\n return {\r\n layout: LayoutType['1h1v'],\r\n width,\r\n height,\r\n barWidth: 1,\r\n barMargin: 0,\r\n scrollable: false,\r\n editable: false,\r\n specificChartFunctionality,\r\n colorsOverride,\r\n theme,\r\n colors,\r\n charts: [\r\n {\r\n width: 0,\r\n premarket: false,\r\n aftermarket: false,\r\n dateRange: null,\r\n height,\r\n timeframe,\r\n scale: ScaleType.Linear,\r\n ticker: ticker,\r\n leftOffset: 0,\r\n instrument: Instrument.Stock,\r\n refreshData,\r\n stretch: true,\r\n panes: [\r\n {\r\n height,\r\n elements: paneElements,\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n}\r\n\r\nexport function getCustomColorsFromCookies() {\r\n try {\r\n return JSON.parse(getParsedCookies('customColors') as string)\r\n } catch {\r\n return undefined\r\n }\r\n}\r\n","import * as React from 'react'\r\n\r\nimport * as tracking from '../tracking'\r\n\r\nexport const IC_PUBLISHER_ID = 'df0d0d52-cc7f-11e8-82a5-0abbb61c4a6a'\r\n\r\nenum AdTagName {\r\n IC_TickerInContent = 'IC_D_3x3',\r\n IC_MapsLeftRail = 'IC_D_125x125',\r\n IC_Statements = 'IC_D_300x60',\r\n IC_Groups = 'IC_D_300x250',\r\n}\r\n\r\nconst tagDefinition = {\r\n [AdTagName.IC_TickerInContent]: { placements: 3, style: { width: 970, minHeight: 250 } },\r\n [AdTagName.IC_MapsLeftRail]: { placements: 2, style: { width: 125, minHeight: 125 } },\r\n [AdTagName.IC_Statements]: { placements: 1, style: { width: 300, minHeight: 60 } },\r\n [AdTagName.IC_Groups]: { placements: 1, style: { width: 336, minHeight: 280 } },\r\n}\r\n\r\nconst hasInvestingChannelAds = tracking.getAdsProvider() === tracking.AdsProvider.InvestingChannel\r\n\r\n/**\r\n * Get create/destroy methods to control ads insertion\r\n */\r\nexport function getInvestingChannelPage() {\r\n var page: ICPageReturn\r\n\r\n function create() {\r\n try {\r\n if (hasInvestingChannelAds) {\r\n window.InvestingChannelQueue?.push(() => {\r\n let config = window['FINVIZ_IC_UAT_CONFIG'] ?? {}\r\n page = window.InvestingChannel?.UAT.Run(IC_PUBLISHER_ID, config)\r\n })\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n\r\n function destroy() {\r\n try {\r\n if (hasInvestingChannelAds) {\r\n window.InvestingChannelQueue?.push(() => {\r\n page?.destroy()\r\n })\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n\r\n return { create, destroy }\r\n}\r\n\r\n/**\r\n * Hook which recreates ads on deps change (SPA navigation,…)\r\n */\r\nexport function useInvestingChannelAds(deps: unknown[] = []) {\r\n React.useLayoutEffect(() => {\r\n const page = getInvestingChannelPage()\r\n\r\n page.create()\r\n\r\n return () => page.destroy()\r\n // eslint cannot statically check the dependencies and complains about it\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps)\r\n\r\n return hasInvestingChannelAds\r\n}\r\n\r\ninterface AdTagProps extends Omit, 'name'> {\r\n /**\r\n * Name of the ad tag\r\n */\r\n name: keyof typeof AdTagName\r\n\r\n /**\r\n * Manually set the placement position for this tag\r\n *\r\n * @default 1\r\n */\r\n position?: number\r\n\r\n /**\r\n * Additional class names for the wrapper div\r\n */\r\n className?: string\r\n}\r\n\r\nexport function AdTag({ name, position = 1, ...props }: AdTagProps) {\r\n const tagName = AdTagName[name]\r\n const tagProps = tagDefinition[tagName]\r\n const placementName = `${tagName}_${Math.min(Math.max(position, 1), tagProps.placements)}`\r\n\r\n if (!hasInvestingChannelAds) return null\r\n\r\n return
\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 * as React from 'react'\r\n\r\nimport { Button, ButtonComponentProps, ButtonProps } from './button'\r\nimport { Paragraph } from './typography'\r\n\r\ninterface Props {\r\n children: (React.ReactElement | null)[]\r\n label: string\r\n size?: ButtonProps['size']\r\n rounding?: ButtonProps['rounding']\r\n}\r\n\r\nexport function ChipSwitch({ children, label, size, rounding }: Props) {\r\n return (\r\n
\r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n\r\n {React.Children.map(children, (child: React.ReactElement | null) => {\r\n if (React.isValidElement(child) && child.type === Button) {\r\n return React.cloneElement(child, {\r\n size,\r\n rounding,\r\n theme: child.props.theme ?? 'chipTransparent',\r\n className: classnames(child.props.className, {\r\n // @todo - these style should be applied globally onto all chipTransparent buttons\r\n '!text-gray-600 dark:!text-gray-400': !child.props.active,\r\n '!text-gray-800 dark:!text-white': child.props.active,\r\n }),\r\n })\r\n }\r\n\r\n return child\r\n })}\r\n
\r\n )\r\n}\r\n\r\nexport const ChipSwitchButton = Button\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 React from 'react'\r\n\r\nimport { getCookie } from '../../../app/shared/cookie'\r\nimport { setCookieRequest } from '../../services/api'\r\n\r\n/*\r\n * Context.\r\n */\r\nexport type FinancialsTableSettingsType = Record\r\n\r\nexport type FinancialsTableScrollInfo = {\r\n yPosition: number\r\n}\r\n\r\nexport interface FinancialsTableContextProps {\r\n settings: T\r\n setSettings: (settings: T) => void\r\n scrollInfo?: FinancialsTableScrollInfo\r\n}\r\n\r\nexport const FinancialsTableContext = React.createContext>({\r\n settings: {},\r\n setSettings: () => null,\r\n scrollInfo: undefined,\r\n})\r\n\r\n/*\r\n * Hook.\r\n */\r\n\r\nexport function useFinancialsTableContext() {\r\n return React.useContext(FinancialsTableContext) as FinancialsTableContextProps\r\n}\r\n\r\n/*\r\n * Component.\r\n */\r\n\r\ninterface Props {\r\n children: React.ReactNode\r\n defaultSettings: FinancialsTableSettingsType\r\n cookieKey: string\r\n}\r\n\r\nexport const FinancialsTableContextProvider = ({ children, cookieKey, defaultSettings }: Props) => {\r\n const [scrollInfo, setScrollInfo] = React.useState()\r\n const [settings, setSettings] = React.useState(() => {\r\n const cookieValue = decodeURIComponent(getCookie(cookieKey))\r\n if (cookieValue.length === 0) return defaultSettings\r\n\r\n try {\r\n return { ...defaultSettings, ...JSON.parse(cookieValue) } as FinancialsTableSettingsType\r\n } catch {\r\n return defaultSettings\r\n }\r\n })\r\n\r\n const handleSetSettingsChange = (settings: FinancialsTableSettingsType) => {\r\n setScrollInfo({ yPosition: window.scrollY })\r\n setSettings(settings)\r\n setCookieRequest(cookieKey, JSON.stringify(settings))\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import classNames from 'classnames'\r\n\r\nimport { TableAlign, TableBody, TableCell, TableRow } from '../Table'\r\nimport { Checkbox } from '../checkbox'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsTableRowProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n data: RowDataType\r\n columns: ColumnDefinition[]\r\n subColumns?: Record[]>\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n isFirst: boolean\r\n isLast: boolean\r\n}\r\n\r\nexport default function FinancialsTableRow<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n data,\r\n columns,\r\n subColumns,\r\n onVisibilityChange,\r\n isFirst,\r\n isLast,\r\n}: FinancialsTableRowProps) {\r\n const { id, label, labelElement, labelColumnClassName, isSelected, color, subData } = data\r\n\r\n return (\r\n {\r\n onVisibilityChange(id, !isSelected)\r\n }}\r\n >\r\n \r\n \r\n {label}}\r\n className=\"cursor-pointer\"\r\n color={color}\r\n size=\"none\"\r\n />\r\n \r\n\r\n {columns.map((column) => (\r\n \r\n {column.renderColumn(data)}\r\n \r\n ))}\r\n \r\n {subData.map((item, index, array) => (\r\n \r\n \r\n {item.label}\r\n \r\n {subColumns?.[item.id].map((column) => (\r\n \r\n {column.renderColumn(item as SubColumnDefinition)}\r\n \r\n ))}\r\n \r\n ))}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Table } from '../Table'\r\nimport FinancialsTableRow from './FinancialsTableRow'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsTableProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n tableHead?: React.ReactNode\r\n tableFooter?: React.ReactNode\r\n data: RowDataType[]\r\n columns: ColumnDefinition[]\r\n subColumns?: Record[]>\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n}\r\n\r\nexport default function FinancialsTable<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n tableHead,\r\n tableFooter,\r\n columns,\r\n subColumns,\r\n data,\r\n onVisibilityChange,\r\n}: FinancialsTableProps) {\r\n return (\r\n \r\n {tableHead}\r\n {data.map((row, index) => (\r\n \r\n ))}\r\n {tableFooter}\r\n
\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\ninterface Props {\r\n children: React.ReactElement\r\n className?: string\r\n}\r\n\r\nenum ShadowPosition {\r\n none,\r\n left,\r\n right,\r\n leftAndRight,\r\n}\r\n\r\ninterface TableScrollShadowProps {\r\n position: ShadowPosition.left | ShadowPosition.right\r\n offset: number\r\n className?: string\r\n isVisible: boolean\r\n}\r\n\r\nfunction TableScrollShadow({ className, position, offset, isVisible }: TableScrollShadowProps) {\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport function FinancialsTableStickyColumnWrapper({ children, className }: Props) {\r\n const stickyRef = React.useRef(null)\r\n const [shadowPosition, setShadowPosition] = React.useState(ShadowPosition.none)\r\n const [firstRowTdWidth, setFirstRowTdWidth] = React.useState(0)\r\n\r\n React.useEffect(() => {\r\n const stickyElement = stickyRef.current\r\n if (!stickyElement) return\r\n\r\n const onScroll = throttle(function () {\r\n const stickyElement = stickyRef.current\r\n if (!stickyElement) return\r\n\r\n let newShadowPosition = ShadowPosition.none\r\n const hasScrollSpaceToLeft = stickyElement.scrollLeft > 0\r\n const hasScrollSpaceToRight = stickyElement.offsetWidth + stickyElement.scrollLeft < stickyElement.scrollWidth\r\n if (hasScrollSpaceToLeft && hasScrollSpaceToRight) {\r\n newShadowPosition = ShadowPosition.leftAndRight\r\n } else if (hasScrollSpaceToLeft) {\r\n newShadowPosition = ShadowPosition.left\r\n } else if (hasScrollSpaceToRight) {\r\n newShadowPosition = ShadowPosition.right\r\n }\r\n\r\n setShadowPosition(newShadowPosition)\r\n }, 100)\r\n\r\n onScroll()\r\n\r\n stickyElement.scrollTo({\r\n left: stickyElement.scrollWidth,\r\n })\r\n\r\n const firstRowTd = stickyRef.current?.querySelector('tr > td')\r\n setFirstRowTdWidth(firstRowTd?.clientWidth ?? 0)\r\n\r\n stickyElement.addEventListener('scroll', onScroll)\r\n window.addEventListener('resize', onScroll)\r\n\r\n return () => {\r\n stickyElement.removeEventListener('scroll', onScroll)\r\n window.removeEventListener('resize', onScroll)\r\n }\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\n","import * as React from 'react'\r\n\r\nimport FinancialsTable from './FinancialsTable'\r\nimport { FinancialsTableStickyColumnWrapper } from './FinancialsTableStickyColumnWrapper'\r\nimport {\r\n FinancialsColumnDefinition,\r\n FinancialsRowDataType,\r\n FinancialsSubColumnDefinition,\r\n FinancialsSubRowDataType,\r\n} from './types'\r\n\r\ntype FinancialsWidgetProps<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n> = {\r\n children: React.ReactNode\r\n header?: React.ReactNode\r\n tableHead?: React.ReactNode\r\n tableFooter?: React.ReactNode\r\n data: RowDataType[]\r\n columns: ColumnDefinition[]\r\n hasStickyColumnWrapper?: boolean\r\n stickyColumnWrapperClassName?: string\r\n subColumns?: Record[]>\r\n onVisibilityChange: (area: string, visibility: boolean) => void\r\n}\r\n\r\nexport function FinancialsWidget<\r\n RowDataType extends FinancialsRowDataType,\r\n ColumnDefinition extends FinancialsColumnDefinition,\r\n SubColumnDefinition extends FinancialsSubRowDataType,\r\n>({\r\n children,\r\n tableHead,\r\n tableFooter,\r\n columns,\r\n stickyColumnWrapperClassName,\r\n subColumns,\r\n header,\r\n data,\r\n hasStickyColumnWrapper,\r\n onVisibilityChange,\r\n}: FinancialsWidgetProps) {\r\n const financialsTable = (\r\n \r\n )\r\n return (\r\n
\r\n
\r\n {header}\r\n {children}\r\n
\r\n {hasStickyColumnWrapper ? (\r\n \r\n {financialsTable}\r\n \r\n ) : (\r\n financialsTable\r\n )}\r\n
\r\n )\r\n}\r\n","import { FinancialsRowValue } from './types'\r\n\r\nexport function getYoYData(data: T[]) {\r\n const sortedData = [...data].sort((a, b) => Number.parseInt(a.year) - Number.parseInt(b.year))\r\n return sortedData.reduce<{\r\n change: Record\r\n changePct: Record\r\n }>(\r\n (acc, { year, value }, i) => {\r\n const prev = sortedData[i - 1]?.value ?? null\r\n let change: number | null = null\r\n let changePct: number | null = null\r\n\r\n if (value !== null && prev !== null && value !== 0 && prev !== 0) {\r\n change = value - prev\r\n changePct = ((value - prev) / Math.abs(prev)) * 100\r\n }\r\n\r\n return {\r\n change: {\r\n ...acc.change,\r\n [year]: change,\r\n },\r\n changePct: {\r\n ...acc.changePct,\r\n [year]: changePct,\r\n },\r\n }\r\n },\r\n { change: {}, changePct: {} }\r\n )\r\n}\r\n\r\nexport function getMoMPercentageData(data: T[]) {\r\n const sortedData = [...data].sort((a, b) => Number.parseInt(a.year) - Number.parseInt(b.year))\r\n return sortedData.reduce>((acc, { year, value }, i) => {\r\n const prev = sortedData[i - 1]?.value ?? null\r\n let changePct: number | null = null\r\n\r\n if (value !== null && prev !== null && value !== 0 && prev !== 0) {\r\n changePct = ((value - prev) / Math.abs(prev)) * 100\r\n }\r\n\r\n return {\r\n ...acc,\r\n [year]: changePct,\r\n }\r\n }, {})\r\n}\r\n\r\nexport function getIsCompact(numOfCols: number, barWidth: number) {\r\n // ~1400 is max container width\r\n const maxContainerWidth = Math.min(window.innerWidth, 1400)\r\n\r\n const barsWindowWidthRatio = (barWidth * numOfCols) / maxContainerWidth\r\n return barsWindowWidthRatio > 0.65\r\n}\r\n\r\nexport function getHeatmapClassNames(value: number | null = null) {\r\n if (value === null || value === 0) return 'bg-neutral text-neutral'\r\n\r\n // Negative\r\n if (value < -80) return 'bg-danger-5 text-danger-5'\r\n if (value < -60) return 'bg-danger-4 text-danger-4'\r\n if (value < -40) return 'bg-danger-3 text-danger-3'\r\n if (value < -20) return 'bg-danger-2 text-danger-2'\r\n if (value < 0) return 'bg-danger-1 text-danger-1'\r\n\r\n // Positive\r\n if (value > 80) return 'bg-success-5 text-success-5'\r\n if (value > 60) return 'bg-success-4 text-success-4'\r\n if (value > 40) return 'bg-success-3 text-success-3'\r\n if (value > 20) return 'bg-success-2 text-success-2'\r\n if (value > 0) return 'bg-success-1 text-success-1'\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 React from 'react'\r\nimport { useLocation } from 'react-router-dom'\r\n\r\nimport { decodeQueryString } from '../../app/queryString'\r\n\r\nexport function useCheckNonIdeaChartMissingConfig() {\r\n const location = useLocation()\r\n\r\n React.useEffect(() => {\r\n // Navigation (back/forward) from nonexisting idea page doesn't fully reload the page\r\n // So if we're on non idea page and have still isIdeaNotFoundPage flag we want to reload the page\r\n const { i } = decodeQueryString(location.search)\r\n if (!i && window.isIdeaNotFoundPage) {\r\n window.location.reload()\r\n }\r\n }, [location.search])\r\n}\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","import Quote from 'finviz-charts/app/models/quote'\r\n\r\nimport { convertTa } from '../../../app/charts-lib'\r\nimport { ObjectHash } from '../../components/types'\r\nimport { getInstrumentForTicker } from '../../util'\r\n\r\nconst PADDING = 2 // Border widths\r\n\r\nexport function getChartsDimensions(chartElementId: string) {\r\n const containerElement = document.getElementById(chartElementId)\r\n\r\n const box = containerElement?.getBoundingClientRect()\r\n\r\n return {\r\n width: Math.max((box?.width ?? 0) - PADDING, 0),\r\n height: Math.max((box?.height ?? 0) - PADDING, 0),\r\n }\r\n}\r\n\r\nexport function getChartConfig(idea: any, chartElementId: string) {\r\n const chartsDimensions = getChartsDimensions(chartElementId)\r\n\r\n if (idea) {\r\n const chartConfig = Object.assign({}, FinvizChartsSettings.ideaChart, {\r\n colors: FinvizChartsSettings.colors,\r\n width: chartsDimensions.width,\r\n height: chartsDimensions.height,\r\n scrollable: true,\r\n editors: ['layout', 'settings', 'publish', 'tools'],\r\n })\r\n for (let i = 0; i < chartConfig.charts.length; i++) {\r\n if (!chartConfig.charts[i].instrument) {\r\n chartConfig.charts[i].instrument = 'stock'\r\n }\r\n }\r\n\r\n return chartConfig\r\n }\r\n\r\n return {\r\n newCharts: true,\r\n width: chartsDimensions.width,\r\n height: chartsDimensions.height,\r\n barWidth: 3,\r\n barMargin: 1,\r\n scrollable: true,\r\n alignChartsToRight: true,\r\n theme: FinvizChartsSettings.theme,\r\n colors: FinvizChartsSettings.colors,\r\n editors: ['layout', 'settings', 'publish', 'tools'],\r\n layout: FinvizChartsSettings.layout,\r\n charts: FinvizChartsSettings.tickers.map(function (ticker: string, index: number) {\r\n return {\r\n timeframe: FinvizChartsSettings.periods[index],\r\n dateRange: FinvizChartsSettings.ranges[index],\r\n scale: FinvizChartsSettings.taConfig.scale || 'linear',\r\n ticker: ticker,\r\n instrument: getInstrumentForTicker(ticker),\r\n premarket: FinvizChartsSettings.taConfig.premarket,\r\n aftermarket: FinvizChartsSettings.taConfig.aftermarket,\r\n hasChartEvents: FinvizChartsSettings.taConfig.hasChartEvents,\r\n refreshData: true,\r\n panes: convertTa.getPanes(FinvizChartsSettings.taConfig),\r\n }\r\n }),\r\n }\r\n}\r\n\r\nexport const initIdeaQuotes = (quotes: Array, ideaChart: ObjectHash) => {\r\n const hasPatterns = JSON.stringify(ideaChart).includes('patterns')\r\n\r\n for (let i = 0; i < quotes.length; i++) {\r\n const quote = quotes[i]\r\n\r\n if (quote.timeframe === 'i1' || quote.timeframe === 'i3' || quote.timeframe === 'i5' || quote.timeframe === 'i15') {\r\n if (!quote.hasOwnProperty('drawMinutesPerDay')) {\r\n quote.drawMinutesPerDay = quote.timeframe === 'i15' ? 390 : 420\r\n }\r\n\r\n if (!quote.hasOwnProperty('marketStartMinutes')) {\r\n quote.marketStartMinutes = quote.timeframe === 'i15' ? 570 : 540\r\n }\r\n\r\n if (!quote.hasOwnProperty('premarketLengthMinutes')) {\r\n quote.premarketLengthMinutes = quote.timeframe === 'i15' ? 0 : 30\r\n }\r\n\r\n if (!quote.hasOwnProperty('aftermarketLengthMinutes')) {\r\n quote.aftermarketLengthMinutes = 0\r\n }\r\n }\r\n\r\n if (!quote.hasOwnProperty('hasPatterns')) {\r\n quote.hasPatterns = hasPatterns\r\n }\r\n\r\n quote.ideaID = ideaChart.idea.id\r\n\r\n Quote.create(quote)\r\n }\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