{"version":3,"file":"2403.3c3f2ab9.js","mappings":"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UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAEPC,EAAmB,CAAEF,OAAQD,EAAiBC,OAAOG,QAAQC,UAAWH,UAAWF,EAAiBE,WACpGI,EAAc,CAAEL,OAAQD,EAAiBC,OAAOG,MAAM,EAAG,IAAIC,UAAWH,UAAWF,EAAiBE,WACpGK,EAAgB,CAAEN,OAAQD,EAAiBC,OAAOG,MAAM,IAAKF,UAAWF,EAAiBE,WA49DzFM,EAA0B,CAC9BP,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,QAg/BAO,EAAiD,CAC5D,CAACC,EAAAA,GAAQC,iBAAkBX,EAC3B,CAACU,EAAAA,GAAQE,SAAUZ,EACnBa,GAAIb,EACJc,IAAKd,EACLe,IAAKf,EACLgB,IAAKhB,EACLiB,IAAKjB,EACLkB,QA97HmB,CACnBjB,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAo9FXiB,IAAKhB,EACLiB,KAAMjB,EACNkB,KAAMlB,EACNmB,IAAKnB,EACLoB,IAAKpB,EACLqB,KAAMjB,EACNkB,OAAQzB,EACR0B,OAAQpB,EACRqB,KAAM3B,EACN4B,UA39FuB,CACvB3B,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,WAi/DX2B,cAAe7B,EACf8B,cAAe9B,GAGJ+B,EAAuD,CAClE,CAACrB,EAAAA,GAAQC,iBAAkBH,EAC3B,CAACE,EAAAA,GAAQE,SAAUJ,EACnBK,GAAIL,EACJM,IAAKN,EACLO,IAAKP,EACLQ,IAAKR,EACLS,IAAKT,EACLU,QA7gC0B,CAC1BjB,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,QAmCXiB,IAAKX,EACLY,KAAMZ,EACNa,KAAMb,EACNc,IAAKd,EACLe,IAAKf,EACLgB,KAAMhB,EACNiB,OAAQjB,EACRkB,OAAQlB,EACRmB,KAAMnB,EACNoB,UAAWpB,EACXqB,cAAerB,EACfsB,cAAetB,GAGJwB,EAziIiB,CAC5B/B,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAEFC,UAAW,yCCtBN,SAASlB,EAAUlC,GACxB,OAAO,IAAImF,SAAQ,CAACC,EAASC,KAC3B,IAAIC,EAAQ,IAAIC,MAEhBD,EAAME,OAAS,WACbJ,EAAQE,EACV,EAEAA,EAAMG,QAAU,WACdJ,GACF,EAEAC,EAAMtF,IAAMA,CAAG,GAEnB,gDCjBO,SAASsB,IAAgB,IAAAoE,EAC9B,OAA8B,QAA9BA,EAAOC,OAAOC,wBAAgB,IAAAF,EAAAA,EAAI,CACpC,CAEO,SAASG,EACdpE,EACAE,EACAJ,EACAC,GAEA,IAAKC,IAAWE,EAAS,OAEzB,MAAMN,EAAQC,IAQd,OANAG,EAAOF,MAAQA,EAAQF,EACvBI,EAAOD,OAASA,EAASH,EACzBI,EAAOqE,MAAMvE,MAAQA,EAAQ,KAC7BE,EAAOqE,MAAMtE,OAASA,EAAS,KAC/BG,EAAQoE,MAAM1E,EAAOA,GAEdA,CACT,4IChBO,IAAK2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","sources":["webpack://@finviz/website/./js/app/maps/components/MapSelect.tsx","webpack://@finviz/website/./js/app/maps/components/Topbar/Topbar.tsx","webpack://@finviz/website/./js/app/shared/components/Share.tsx","webpack://@finviz/website/./js/app/shared/drawShareMap.ts","webpack://@finviz/website/./js/app/shared/getTextFontFamily.ts","webpack://@finviz/website/./js/app/shared/gradients.ts","webpack://@finviz/website/./js/app/shared/loadImage.ts","webpack://@finviz/website/./js/app/shared/retinafy.ts","webpack://@finviz/website/./js/main/components/checkbox.tsx","webpack://@finviz/website/./js/main/components/color-picker/draggable.tsx","webpack://@finviz/website/./js/main/components/color-picker/pointer.tsx","webpack://@finviz/website/./js/main/components/color-picker/util.ts","webpack://@finviz/website/./js/main/components/color-picker/alpha.tsx","webpack://@finviz/website/./js/main/components/color-picker/color-palette.tsx","webpack://@finviz/website/./js/main/components/color-picker/hue-saturation.tsx","webpack://@finviz/website/./js/main/components/color-picker/lightness.tsx","webpack://@finviz/website/./js/main/components/color-picker/color-preview.tsx","webpack://@finviz/website/./js/main/components/color-picker/picker-input.tsx","webpack://@finviz/website/./js/main/components/color-picker/picker.tsx","webpack://@finviz/website/./js/main/components/color-picker/picker-button.tsx","webpack://@finviz/website/./js/main/components/copy-to-clipboard/copy-to-clipboard.tsx","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/dropdown/dropdown.tsx","webpack://@finviz/website/./js/main/components/dropdown/dropdown-item.tsx","webpack://@finviz/website/./js/main/components/dropdown/hooks.ts","webpack://@finviz/website/./js/main/components/context-menu/context-menu.tsx","webpack://@finviz/website/./js/main/components/grid/grid.tsx","webpack://@finviz/website/./js/main/components/inner-state/inner-state.tsx","webpack://@finviz/website/./js/main/components/range.tsx","webpack://@finviz/website/./js/main/components/toolbar/interfaces.ts","webpack://@finviz/website/./js/main/components/toolbar/hooks.ts","webpack://@finviz/website/./js/main/components/toolbar/toolbar.tsx","webpack://@finviz/website/./js/main/components/toolbar/toolbar-button.tsx","webpack://@finviz/website/./js/main/components/toolbar/toolbar-group.tsx","webpack://@finviz/website/./js/main/components/toolbar/toolbar-item.tsx","webpack://@finviz/website/./js/main/components/toolbar/toolbar-divider.tsx","webpack://@finviz/website/./js/main/components/tour/step-content.tsx","webpack://@finviz/website/./js/main/components/tour/utils.ts","webpack://@finviz/website/./js/main/components/tour/hooks.tsx","webpack://@finviz/website/./js/main/components/tabs/tab.tsx","webpack://@finviz/website/./js/main/components/tabs/tab-list.tsx","webpack://@finviz/website/./js/main/components/tabs/tab-panel.tsx","webpack://@finviz/website/./js/main/components/tabs/tabs.tsx","webpack://@finviz/website/./js/main/components/badge.tsx","webpack://@finviz/website/./js/main/components/loading.tsx","webpack://@finviz/website/./js/main/components/notification/hooks.ts","webpack://@finviz/website/./js/main/components/notification/notification-wrapper.tsx","webpack://@finviz/website/./js/main/components/notification/with-notification-context.tsx","webpack://@finviz/website/./js/main/components/notification/notification.tsx","webpack://@finviz/website/./js/main/components/tooltip-input.tsx","webpack://@finviz/website/./js/main/hooks/use-previous.ts","webpack://@finviz/website/../node_modules/flux/index.js","webpack://@finviz/website/../node_modules/flux/lib/Dispatcher.js","webpack://@finviz/website/../node_modules/flux/lib/invariant.js","webpack://@finviz/website/../node_modules/jsonp/index.js","webpack://@finviz/website/../node_modules/jsonp/node_modules/debug/src/browser.js","webpack://@finviz/website/../node_modules/jsonp/node_modules/debug/src/debug.js","webpack://@finviz/website/../node_modules/jsonp/node_modules/ms/index.js","webpack://@finviz/website/../node_modules/keymirror/index.js","webpack://@finviz/website/../node_modules/react-router-dom/dist/index.js","webpack://@finviz/website/../node_modules/@tanstack/query-core/build/lib/mutationObserver.mjs","webpack://@finviz/website/../node_modules/@tanstack/react-query/build/lib/useMutation.mjs","webpack://@finviz/website/../node_modules/react-share/dist/index.js"],"sourcesContent":["import classnames from 'classnames'\r\nimport classNames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Select, SelectListProps, SelectProps } from '../../../main/components'\r\nimport { ButtonHTMLProps, ButtonProps } from '../../../main/components/button'\r\nimport { Icon } from '../../../main/components/icon'\r\nimport { isSelectItemGroup } from '../../../main/components/select/utils'\r\n\r\nexport enum MapSelectTheme {\r\n light,\r\n dark,\r\n}\r\n\r\ninterface MapSelectThemeReturn {\r\n label: React.HTMLProps\r\n button: ButtonProps & ButtonHTMLProps\r\n popover: SelectListProps\r\n}\r\n\r\nconst hasRedesign = FinvizSettings.hasRedesignEnabled\r\n\r\nfunction getMapSelectTheme(theme: MapSelectTheme): MapSelectThemeReturn | undefined {\r\n switch (theme) {\r\n case MapSelectTheme.dark:\r\n return {\r\n label: {\r\n className: 'text-gray-400',\r\n },\r\n button: {\r\n theme: 'transparent',\r\n rounding: 'none',\r\n className: 'w-full border border-[#585f72] bg-[#4a505f] hover:border-[#707990] hover:bg-[#535a6b]',\r\n rightContent: ,\r\n },\r\n popover: {\r\n rounding: 'none',\r\n theme: 'none',\r\n className:\r\n 'border border-[#585f72] bg-[#4a505f] [--bg-primary:74_80_95] [--border-primary:103,111,133] [--scrollbar-radius:0] dark:[--thumb-bg-hover:#262931] dark:[--thumb-bg:#363a46] dark:[--track-bg-hover:transparent] dark:[--track-bg:transparent]',\r\n },\r\n }\r\n\r\n case MapSelectTheme.light:\r\n return {\r\n label: { className: 'text-gray-500' },\r\n button: {\r\n rounding: 'none',\r\n className: 'w-full bg-primary',\r\n },\r\n popover: {\r\n rounding: 'none',\r\n className: classnames('overflow-y-auto max-h-80', {\r\n '[--scrollbar-radius:0]': !hasRedesign,\r\n }),\r\n },\r\n }\r\n }\r\n}\r\n\r\ninterface MapSelectProps extends Omit, 'theme'> {\r\n /**\r\n * Theme for the map select\r\n *\r\n * @default dark\r\n */\r\n theme?: keyof typeof MapSelectTheme\r\n}\r\n\r\nexport function MapSelect({\r\n label,\r\n 'aria-label': ariaLabel,\r\n theme = 'dark',\r\n items,\r\n onChange,\r\n ...props\r\n}: MapSelectProps) {\r\n const selectTheme = React.useMemo(() => getMapSelectTheme(MapSelectTheme[theme]), [theme])\r\n const itemOptions = React.useMemo(\r\n () =>\r\n items?.map((item) => {\r\n if (isSelectItemGroup(item)) {\r\n return {\r\n ...item,\r\n hasBorder: false,\r\n className: 'border-t border-gray-100 dark:border-gray-700',\r\n }\r\n }\r\n\r\n return item\r\n }),\r\n [items]\r\n )\r\n\r\n return (\r\n
\r\n {label && (\r\n

{label}

\r\n )}\r\n \r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\ninterface TopbarProps {\r\n className?: string\r\n navContent?: React.ReactNode\r\n mapControls?: React.ReactNode\r\n}\r\n\r\nexport function Topbar(props: React.PropsWithChildren) {\r\n return (\r\n
\r\n {props.navContent && (\r\n
\r\n {props.navContent}\r\n
\r\n )}\r\n
{props.children}
\r\n {props.mapControls}\r\n
\r\n )\r\n}\r\n","/* eslint-disable import/first */\r\nimport { UseMutationResult } from '@tanstack/react-query'\r\nimport * as React from 'react'\r\nimport { FacebookIcon, FacebookShareButton, TwitterIcon, TwitterShareButton } from 'react-share'\r\n\r\nimport { Button } from '../../../main/components/button'\r\nimport { CopyToClipboard } from '../../../main/components/copy-to-clipboard'\r\nimport {\r\n Dialog,\r\n DialogBody,\r\n DialogDismiss,\r\n DialogFooter,\r\n DialogHeader,\r\n useDialogState,\r\n} from '../../../main/components/dialog'\r\nimport { ErrorView } from '../../../main/components/error-view'\r\nimport { Loading } from '../../../main/components/loading'\r\nimport { Heading } from '../../../main/components/typography'\r\n\r\ninterface ShareResponse {\r\n imgUrl: string\r\n shareUrl: string\r\n}\r\n\r\ninterface ShareProps {\r\n state: UseMutationResult\r\n onShareClick: () => void\r\n className?: string\r\n disabled?: boolean\r\n}\r\n\r\nexport function Share(props: ShareProps) {\r\n const dialogState = useDialogState()\r\n\r\n return (\r\n <>\r\n {\r\n props.onShareClick()\r\n dialogState.show()\r\n }}\r\n >\r\n Share map\r\n \r\n\r\n \r\n Share map\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\ninterface ShareDialogBodyProps {\r\n isError: boolean\r\n isLoading: boolean\r\n data?: ResponseType\r\n}\r\n\r\nfunction ShareDialogBody(props: ShareDialogBodyProps) {\r\n if (props.isLoading) {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\r\n\r\n if (props.isError || !props.data) {\r\n return (\r\n
\r\n \r\n There’s been an error sharing the map.\r\n
\r\n Please try sharing the map again and if the problem persists, please contact support.\r\n \r\n }\r\n />\r\n
\r\n )\r\n }\r\n\r\n return (\r\n <>\r\n {document.title}\r\n
\r\n \r\n Copy and paste link in email, website, or forum\r\n \r\n }\r\n text={props.data.shareUrl}\r\n bottomLeftContent={\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","import logoBase64 from './assets/logo.png'\r\nimport { getTextFontFamily } from './getTextFontFamily'\r\nimport { isFirefoxDesktop } from './isMobile'\r\nimport { loadImage } from './loadImage'\r\nimport { getScaleRatio } from './retinafy'\r\n\r\nexport async function drawShareMap(canvasEl: HTMLCanvasElement, text: string[]) {\r\n const fontFamily = getTextFontFamily()\r\n\r\n const ratio = getScaleRatio()\r\n const width = canvasEl.width / ratio\r\n const height = canvasEl.height / ratio\r\n\r\n const canvas = document.createElement('canvas')\r\n const context = canvas.getContext('2d', isFirefoxDesktop() ? { willReadFrequently: true } : undefined)!\r\n canvas.width = width\r\n canvas.height = height + 22\r\n\r\n // Background\r\n context.fillStyle = '#fff'\r\n context.fillRect(0, 0, width, height)\r\n\r\n // Logo\r\n const logo = await loadImage(logoBase64)\r\n context.drawImage(logo, 2, 4)\r\n\r\n // Labels\r\n const label = text.map((t) => t.toUpperCase())\r\n let x = width\r\n const y = 11\r\n\r\n context.textBaseline = 'middle'\r\n context.textAlign = 'right'\r\n context.font = '9pt ' + fontFamily\r\n for (let i = label.length - 1; i >= 0; i--) {\r\n const text = label[i]\r\n let textWidth = context.measureText(text).width\r\n\r\n context.fillStyle = '#4c5261'\r\n context.fillText(text, x, y)\r\n\r\n if (i > 0) {\r\n const divider = ' • '\r\n context.fillStyle = '#5faaf4'\r\n context.fillText(divider, x - textWidth, y)\r\n textWidth = textWidth + context.measureText(divider).width\r\n }\r\n\r\n x = x - textWidth\r\n }\r\n\r\n context.drawImage(canvasEl, 0, 0, width * ratio, height * ratio, 0, 22, width, height)\r\n\r\n return canvas.toDataURL()\r\n}\r\n","export function getTextFontFamily() {\r\n return 'Lato'\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","/**\r\n * Load image before we can render it in canvas\r\n */\r\nexport function loadImage(src: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n var image = new Image()\r\n\r\n image.onload = function () {\r\n resolve(image)\r\n }\r\n\r\n image.onerror = function () {\r\n reject()\r\n }\r\n\r\n image.src = src\r\n })\r\n}\r\n","export function getScaleRatio() {\r\n return window.devicePixelRatio ?? 1\r\n}\r\n\r\nexport function retinafy(\r\n canvas: HTMLCanvasElement | undefined | null,\r\n context: CanvasRenderingContext2D | undefined,\r\n width: number,\r\n height: number\r\n) {\r\n if (!canvas || !context) return\r\n\r\n const ratio = getScaleRatio()\r\n\r\n canvas.width = width * ratio\r\n canvas.height = height * ratio\r\n canvas.style.width = width + 'px'\r\n canvas.style.height = height + 'px'\r\n context.scale(ratio, ratio)\r\n\r\n return ratio\r\n}\r\n","import classnames from 'classnames'\r\nimport { ForwardedRef, HTMLProps, PropsWithChildren, ReactNode, forwardRef } from 'react'\r\n\r\nimport { Icon } from './icon'\r\n\r\nexport enum ColorVariant {\r\n violet = 'violet',\r\n emerald = 'emerald',\r\n orange = 'orange',\r\n teal = 'teal',\r\n pink = 'pink',\r\n lime = 'lime',\r\n purple = 'purple',\r\n green = 'green',\r\n yellow = 'yellow',\r\n blue = 'blue',\r\n red = 'red',\r\n gray = 'gray',\r\n default = 'default',\r\n}\r\n\r\nexport enum CheckboxSize {\r\n none = '', // Do not set fixed size\r\n small = 'min-h-6 text-2xs', // 24px\r\n regular = 'min-h-7 text-sm', // 28px\r\n}\r\nexport type CheckboxSizeType = keyof typeof CheckboxSize\r\n\r\ninterface CheckboxProps extends Omit, 'label' | 'size'> {\r\n /**\r\n * Text that gets displayed on the right side of the checkbox\r\n */\r\n label?: ReactNode\r\n\r\n checked: boolean\r\n\r\n /**\r\n * Size of the checkbox\r\n *\r\n * @default \"regular\"\r\n */\r\n size?: CheckboxSizeType\r\n\r\n /**\r\n * Color of the checkbox\r\n *\r\n * @default \"default\"\r\n */\r\n color?: ColorVariant\r\n}\r\n\r\nfunction CheckboxComponent(\r\n {\r\n className,\r\n label,\r\n size = 'regular',\r\n color = ColorVariant.default,\r\n children,\r\n ...props\r\n }: PropsWithChildren,\r\n ref: ForwardedRef\r\n) {\r\n const checked = props.checked ?? props.defaultChecked\r\n\r\n return (\r\n \r\n
\r\n \r\n {checked && (\r\n \r\n )}\r\n
\r\n {label ?? children}\r\n \r\n )\r\n}\r\n\r\nexport const Checkbox = forwardRef(CheckboxComponent)\r\n","import classnames from 'classnames'\r\nimport { HTMLProps, PropsWithChildren, memo, useCallback, useLayoutEffect, useRef, useState } from 'react'\r\n\r\nexport interface Interaction {\r\n left: number\r\n top: number\r\n}\r\n\r\n/**\r\n * Clamp value between two bounds\r\n */\r\nfunction clamp(num: number, min = 0, max = 1) {\r\n return num > max ? max : num < min ? min : num\r\n}\r\n\r\n/**\r\n * Check if an event was triggered by touch\r\n */\r\nfunction isTouch(event: MouseEvent | TouchEvent): event is TouchEvent {\r\n return 'touches' in event\r\n}\r\n\r\n/**\r\n * Returns a relative position of the pointer inside the node's bounding box\r\n */\r\nfunction getRelativePosition(node: HTMLDivElement, event: MouseEvent | TouchEvent): Interaction {\r\n const rect = node.getBoundingClientRect()\r\n\r\n // Get user's pointer position from `touches` array if it's a `TouchEvent`\r\n const pointer = isTouch(event) ? event.touches[0] : (event as MouseEvent)\r\n\r\n return {\r\n left: clamp((pointer.pageX - (rect.left + window.pageXOffset)) / rect.width),\r\n top: clamp((pointer.pageY - (rect.top + window.pageYOffset)) / rect.height),\r\n }\r\n}\r\n\r\n/**\r\n * Browsers introduced an intervention, making touch events passive by default.\r\n * This workaround removes `preventDefault` call from the touch handlers.\r\n * @see https://github.com/facebook/react/issues/19651\r\n */\r\nfunction preventDefaultMove(event: MouseEvent | TouchEvent) {\r\n !isTouch(event) && event.preventDefault()\r\n}\r\n\r\ninterface Props {\r\n onMove: (interaction: Interaction) => void\r\n onKey: (offset: Interaction) => void\r\n}\r\n\r\nfunction DraggablePickerComponent({\r\n onMove,\r\n onKey,\r\n className,\r\n ...props\r\n}: PropsWithChildren & HTMLProps) {\r\n const container = useRef(null)\r\n const hasTouched = useRef(false)\r\n const [isDragging, setDragging] = useState(false)\r\n\r\n /**\r\n * Prevent mobile browsers from handling mouse events (conflicting with touch ones).\r\n * If we detected a touch interaction before, we prefer reacting to touch events only.\r\n */\r\n const isValid = useRef((event: MouseEvent | TouchEvent): boolean => {\r\n if (hasTouched.current && !isTouch(event)) return false\r\n if (!hasTouched.current) hasTouched.current = isTouch(event)\r\n return true\r\n })\r\n\r\n const handleMove = useCallback(\r\n (event: MouseEvent | TouchEvent) => {\r\n preventDefaultMove(event)\r\n\r\n // If user moves the pointer outside of the window or iframe bounds and release it there,\r\n // `mouseup`/`touchend` won't be fired. In order to stop the picker from following the cursor\r\n // after the user has moved the mouse/finger back to the document, we check `event.buttons`\r\n // and `event.touches`. It allows us to detect that the user is just moving his pointer\r\n // without pressing it down\r\n const isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0\r\n\r\n if (isDown && container.current) {\r\n onMove(getRelativePosition(container.current, event))\r\n } else {\r\n setDragging(false)\r\n }\r\n },\r\n [onMove]\r\n )\r\n\r\n const handleMoveStart = useCallback(\r\n ({ nativeEvent }: React.MouseEvent | React.TouchEvent) => {\r\n preventDefaultMove(nativeEvent)\r\n\r\n if (!isValid.current(nativeEvent)) return\r\n\r\n // The node/ref must actually exist when user start an interaction.\r\n // We won't suppress the ESLint warning though, as it should probably be something to be aware of.\r\n onMove(getRelativePosition(container.current!, nativeEvent))\r\n setDragging(true)\r\n },\r\n [onMove]\r\n )\r\n\r\n const handleKeyDown = useCallback(\r\n (event: React.KeyboardEvent) => {\r\n const keyCode = event.which || event.keyCode\r\n\r\n // Ignore all keys except arrow ones\r\n if (keyCode < 37 || keyCode > 40) return\r\n // Do not scroll page by arrow keys when document is focused on the element\r\n event.preventDefault()\r\n // Send relative offset to the parent component.\r\n // We use codes (37←, 38↑, 39→, 40↓) instead of keys ('ArrowRight', 'ArrowDown', etc)\r\n // to reduce the size of the library\r\n onKey({\r\n left: keyCode === 39 ? 0.05 : keyCode === 37 ? -0.05 : 0,\r\n top: keyCode === 40 ? 0.05 : keyCode === 38 ? -0.05 : 0,\r\n })\r\n },\r\n [onKey]\r\n )\r\n\r\n const handleMoveEnd = useCallback(() => setDragging(false), [])\r\n\r\n const toggleDocumentEvents = useCallback(\r\n (state: boolean) => {\r\n // add or remove additional pointer event listeners\r\n const toggleEvent = state ? window.addEventListener : window.removeEventListener\r\n toggleEvent(hasTouched.current ? 'touchmove' : 'mousemove', handleMove)\r\n toggleEvent(hasTouched.current ? 'touchend' : 'mouseup', handleMoveEnd)\r\n },\r\n [handleMove, handleMoveEnd]\r\n )\r\n\r\n useLayoutEffect(() => {\r\n toggleDocumentEvents(isDragging)\r\n return () => {\r\n isDragging && toggleDocumentEvents(false)\r\n }\r\n }, [isDragging, toggleDocumentEvents])\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport const DraggablePicker = memo(DraggablePickerComponent)\r\n","interface PointerProps {\r\n className?: string\r\n top?: number\r\n left: number\r\n color: string\r\n}\r\n\r\nexport function Pointer({ color, left, top = 0.5 }: PointerProps) {\r\n return (\r\n \r\n
\r\n
\r\n )\r\n}\r\n","/**\r\n * Keep this file in sync with `app/utils/colors.ts` in charts repo\r\n * */\r\n\r\nexport interface RGBA {\r\n r: number\r\n g: number\r\n b: number\r\n a: number\r\n}\r\n\r\nexport interface HSVA {\r\n h: number\r\n s: number\r\n v: number\r\n a: number\r\n}\r\n\r\nexport interface HSLA {\r\n h: number\r\n s: number\r\n l: number\r\n a: number\r\n}\r\n\r\n/**\r\n * Convert Hex string to RGBA object.\r\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\r\n *\r\n * Input: color in hex3, hex4, hex6 or hex8 format (#fff)\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hexStringToRGBA(hexString: string): RGBA {\r\n const hexColor = removeHashSymbol(hexString)\r\n let r: string | number = 0\r\n let g: string | number = 0\r\n let b: string | number = 0\r\n let a: string | number = 255\r\n\r\n // 3 digits\r\n if (hexColor.length === 3 || hexColor.length === 4) {\r\n r = '0x' + hexColor[0] + hexColor[0]\r\n g = '0x' + hexColor[1] + hexColor[1]\r\n b = '0x' + hexColor[2] + hexColor[2]\r\n // Get channel if defined\r\n a = hexColor.length === 4 ? '0x' + hexColor[3] + hexColor[3] : a\r\n\r\n // 6 digits\r\n } else if (hexColor.length === 6 || hexColor.length === 8) {\r\n r = '0x' + hexColor[0] + hexColor[1]\r\n g = '0x' + hexColor[2] + hexColor[3]\r\n b = '0x' + hexColor[4] + hexColor[5]\r\n // Get channel if defined\r\n a = hexColor.length === 8 ? '0x' + hexColor[6] + hexColor[7] : a\r\n }\r\n\r\n return { r: Number(r), g: Number(g), b: Number(b), a: Math.min(Math.round((Number(a) / 255) * 100) / 100, 1) }\r\n}\r\n\r\n/**\r\n * Convert HEX string to HSVA color representation.\r\n *\r\n * Input: color in hex3, hex4, hex6 or hex8 format (#fff)\r\n *\r\n * Output: { h: [0,360], s: [0,1], v: [0,1], a: [0,1]}\r\n */\r\nexport function hexStringToHSVA(hexString: string) {\r\n return rgbaToHSVA(hexStringToRGBA(hexString))\r\n}\r\n\r\n/**\r\n * Convert HEX string to HSLA color representation.\r\n *\r\n * Input: color in hex3, hex4, hex6 or hex8 format (#fff)\r\n *\r\n * Output: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n */\r\nexport function hexStringToHSLA(hexString: string) {\r\n return rgbaToHSLA(hexStringToRGBA(hexString))\r\n}\r\n\r\n/**\r\n * Convert alpha value to hex value\r\n *\r\n * Input: [0,1]\r\n *\r\n * Output: alpha in HEX format\r\n */\r\nexport function alphaToHex(alpha: number) {\r\n return Math.max(Math.min(Math.round(alpha * 255), 255), 0)\r\n .toString(16)\r\n .padStart(2, '0')\r\n}\r\n\r\n/**\r\n * Convert RGBA color to HEX string.\r\n *\r\n * Input: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n *\r\n * Output: color in hex6 or hex8 depending on whether or not alpha is enabled\r\n */\r\nexport function rgbaToHexString(color: RGBA, alpha = false) {\r\n const r = color.r.toString(16)\r\n const g = color.g.toString(16)\r\n const b = color.b.toString(16)\r\n const hexString = '#' + r.padStart(2, '0') + g.padStart(2, '0') + b.padStart(2, '0')\r\n\r\n if (!alpha || color.a === 1) {\r\n return hexString\r\n }\r\n\r\n return `${hexString}${alphaToHex(color.a)}`\r\n}\r\n\r\n/**\r\n * Convert HSVA object to HEX string\r\n *\r\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\r\n *\r\n * Input: { h: [0,360], s: [0,1], v: [0,1], a: [0,1]}\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hsvaToHEXString(color: HSVA, alpha = false) {\r\n const rgbaColor = hsvaToRGBA(color)\r\n\r\n return rgbaToHexString(rgbaColor, alpha)\r\n}\r\n\r\n/**\r\n * Convert HSLA object to HEX string\r\n *\r\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\r\n *\r\n * Input: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hslaToHexString(color: HSLA, alpha = false) {\r\n const rgbaColor = hslaToRGBA(color)\r\n\r\n return rgbaToHexString(rgbaColor, alpha)\r\n}\r\n\r\n/**\r\n * Convert RGBA color to HSVA\r\n * @see https://stackoverflow.com/a/54070620/6662683\r\n *\r\n * Input: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n *\r\n * Output: { h: [0,360], s: [0,1], v: [0,1], a: [0,1]}\r\n */\r\nexport function rgbaToHSVA(color: RGBA): HSVA {\r\n const r = color.r / 255\r\n const g = color.g / 255\r\n const b = color.b / 255\r\n\r\n const v = Math.max(r, g, b)\r\n const c = v - Math.min(r, g, b)\r\n const h = c && (v === r ? (g - b) / c : v === g ? 2 + (b - r) / c : 4 + (r - g) / c)\r\n\r\n return {\r\n h: 60 * (h < 0 ? h + 6 : h),\r\n s: v ? c / v : 0,\r\n v: v,\r\n a: color.a,\r\n }\r\n}\r\n\r\n/**\r\n * Convert RGBA to HSLA\r\n * @see https://stackoverflow.com/a/54071699/6662683\r\n *\r\n * Input: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n *\r\n * Output: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n */\r\nexport function rgbaToHSLA(color: RGBA): HSLA {\r\n const r = color.r / 255\r\n const g = color.g / 255\r\n const b = color.b / 255\r\n\r\n const v = Math.max(r, g, b)\r\n const c = v - Math.min(r, g, b)\r\n const f = 1 - Math.abs(v + v - c - 1)\r\n const h = c && (v === r ? (g - b) / c : v === g ? 2 + (b - r) / c : 4 + (r - g) / c)\r\n\r\n return {\r\n h: 60 * (h < 0 ? h + 6 : h),\r\n s: f ? c / f : 0,\r\n l: (v + v - c) / 2,\r\n a: color.a,\r\n }\r\n}\r\n\r\n/**\r\n * Convert HSVA color to RGBA\r\n * @see https://stackoverflow.com/a/54024653/6662683\r\n *\r\n * Input: { h: [0,360], s: [0,1], v: [0,1], a: [0,1]}\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hsvaToRGBA(color: HSVA): RGBA {\r\n const f = (n: number, k = (n + color.h / 60) % 6) => color.v - color.v * color.s * Math.max(Math.min(k, 4 - k, 1), 0)\r\n\r\n return {\r\n r: Math.round(f(5) * 255),\r\n g: Math.round(f(3) * 255),\r\n b: Math.round(f(1) * 255),\r\n a: Math.round(color.a * 100) / 100,\r\n }\r\n}\r\n\r\n/**\r\n * Convert HSLA color to RGBA\r\n * @see https://stackoverflow.com/a/54014428/6662683\r\n *\r\n * Input: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function hslaToRGBA(color: HSLA): RGBA {\r\n const a = color.s * Math.min(color.l, 1 - color.l)\r\n const f = (n: number, k = (n + color.h / 30) % 12) => color.l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)\r\n\r\n return {\r\n r: Math.round(f(0) * 255),\r\n g: Math.round(f(8) * 255),\r\n b: Math.round(f(4) * 255),\r\n a: color.a,\r\n }\r\n}\r\n\r\n/**\r\n * Convert RGBA color to rgba() string\r\n *\r\n * Input: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n *\r\n * Output: rgba(r, g, b, a)\r\n */\r\nexport function rgbaToRGBAString(color: RGBA) {\r\n return `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`\r\n}\r\n\r\n/**\r\n * Convert rgba() string to RGBA color\r\n *\r\n * Input: rgba(r, g, b, a)\r\n *\r\n * Output: { r: [0,255], g: [0,255], b: [0,255], a: [0,1]}\r\n */\r\nexport function rgbaStringToObject(color: string) {\r\n const colorParts = /^rgba?\\(([0-9]{1,3})[ ,]+([0-9]{1,3})[ ,]+([0-9]{1,3})[ ,]*([01].?[0-9]*)?\\)$/.exec(color)\r\n const [red, green, blue, alpha = '1'] = colorParts?.slice(1) || [0, 0, 0, 1].map(String)\r\n return {\r\n r: Number.parseInt(red),\r\n g: Number.parseInt(green),\r\n b: Number.parseInt(blue),\r\n a: Number.parseFloat(alpha),\r\n }\r\n}\r\n\r\n/**\r\n * Convert HSLA color to hsla() string\r\n *\r\n * Input: { h: [0,360], s: [0,1], l: [0,1], a: [0,1]}\r\n *\r\n * Output: hsla(h, s, l, a)\r\n */\r\nexport function hslaToHSLAString(color: HSLA) {\r\n return `hsla(${Math.round(color.h)}, ${Math.round(color.s * 10000) / 100}%, ${Math.round(color.l * 10000) / 100}%, ${\r\n color.a\r\n })`\r\n}\r\n\r\nexport function removeHashSymbol(strColor: string) {\r\n return strColor.replace(/#/g, '')\r\n}\r\n\r\n/**\r\n * Check if the param is a valid color by setting it as style\r\n */\r\nexport function isValidColor(strColor: string) {\r\n const isRgb = strColor.startsWith('rgba')\r\n const s = new Option().style\r\n\r\n s.color = isRgb ? strColor : `#${removeHashSymbol(strColor)}`\r\n\r\n return s.color !== ''\r\n}\r\n\r\n/**\r\n * Normalize color to be a hex value\r\n */\r\nexport function convertColorToHEX(strColor: string) {\r\n const isRgb = getIsRgb(strColor)\r\n\r\n if (isRgb) {\r\n return rgbaToHexString(rgbaStringToObject(strColor), true)\r\n }\r\n\r\n return strColor\r\n}\r\n\r\n/**\r\n * Returns true if color is rgb or rgba\r\n */\r\nexport function getIsRgb(strColor: string, isAlphaAllowed = true) {\r\n const rgbKeys = ['rgb']\r\n if (isAlphaAllowed) {\r\n rgbKeys.push('rgba')\r\n }\r\n return rgbKeys.some((startsWith) => strColor.startsWith(startsWith))\r\n}\r\n\r\n/**\r\n * Convert any color format to HSVA (internal color picker representation)\r\n */\r\nexport function getHSVAFromColor(strColor: string) {\r\n if (getIsRgb(strColor)) {\r\n return rgbaToHSVA(rgbaStringToObject(strColor))\r\n }\r\n\r\n return hexStringToHSVA(strColor)\r\n}\r\n\r\n/**\r\n * Stringify HSVA color representation into a output format\r\n */\r\nexport function stringifyHSVAColor(color: HSVA, output: 'rgba' | 'hex', canSelectAlpha?: boolean) {\r\n switch (output) {\r\n case 'rgba':\r\n return rgbaToRGBAString(hsvaToRGBA(color))\r\n default:\r\n return hsvaToHEXString(color, canSelectAlpha)\r\n }\r\n}\r\n\r\n/**\r\n * Get luma value from RGBA color using the Rec. 709 coefficients\r\n * @see https://en.wikipedia.org/wiki/Luma_%28video%29\r\n *\r\n * If luma is >= 165 the foreground color should be dark\r\n */\r\nexport function getLumaFromRGBA(color: RGBA) {\r\n return 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b\r\n}\r\n\r\n/**\r\n * Checks if luma is >= 165 or alpha < 0.3\r\n */\r\nexport function getIsColorTooLightOrTransparent(color: RGBA) {\r\n return getLumaFromRGBA(color) >= 165 || color.a < 0.5\r\n}\r\n\r\n/**\r\n * Set specific alpha for a hex color\r\n */\r\nexport function getHEXWithSpecificAplha(color: string, alpha = 1) {\r\n const rgbaColor = hexStringToRGBA(color)\r\n return rgbaToHexString({ ...rgbaColor, a: alpha }, true)\r\n}\r\n\r\n/**\r\n * Get rgba from valid color string\r\n */\r\nexport function getRGBAValueFromValidColorString(value: string) {\r\n if (getIsRgb(value)) return rgbaToRGBAString(rgbaStringToObject(value))\r\n return rgbaToRGBAString(hexStringToRGBA(value))\r\n}\r\n","import { useCallback, useMemo } from 'react'\r\n\r\nimport { DraggablePicker, Interaction } from './draggable'\r\nimport { Pointer } from './pointer'\r\nimport { HSVA, hsvaToHEXString } from './util'\r\n\r\ninterface LightnessProps {\r\n color: HSVA\r\n onChange: (color: HSVA) => void\r\n}\r\n\r\nexport function Alpha({ color, onChange }: LightnessProps) {\r\n const changeLightness = useCallback((pos: Interaction) => onChange({ ...color, a: 1 - pos.left }), [onChange, color])\r\n\r\n const gradientPreview = useMemo(() => {\r\n const gradientFrom = hsvaToHEXString({ ...color, a: 1 })\r\n const gradientTo = hsvaToHEXString({ ...color, a: 0 }, true)\r\n\r\n return `linear-gradient(90deg, ${gradientFrom}, ${gradientTo})`\r\n // Don’t recalculate when alpha changes\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [color.h, color.s, color.v])\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n )\r\n}\r\n","import { Icon } from '../icon'\r\nimport { HSVA, hexStringToHSVA } from './util'\r\n\r\nconst DEFAULT_COLORS = [\r\n { title: 'Rose', value: '#f43f5e' },\r\n { title: 'Pink', value: '#db2777' },\r\n { title: 'Fuchsia', value: '#c026d3' },\r\n { title: 'Purple', value: '#9333ea' },\r\n { title: 'Violet', value: '#7c3aed' },\r\n { title: 'Indigo', value: '#4f46e5' },\r\n { title: 'Blue', value: '#2563eb' },\r\n { title: 'Light Blue', value: '#0284c7' },\r\n { title: 'Cyan', value: '#0891b2' },\r\n { title: 'Teal', value: '#0d9488' },\r\n { title: 'Emerald', value: '#059669' },\r\n { title: 'Green', value: '#16a34a' },\r\n { title: 'Lime', value: '#65a30d' },\r\n { title: 'Yellow', value: '#eab308' },\r\n { title: 'Amber', value: '#d97706' },\r\n { title: 'Red', value: '#dc2626' },\r\n]\r\n\r\ninterface ColorItem {\r\n /**\r\n * Name of the color\r\n */\r\n title: string\r\n\r\n /**\r\n * Hex value\r\n */\r\n value: string\r\n}\r\n\r\ninterface ColorPaletteProps {\r\n /**\r\n * Current selected color in HEX format (supports HEX8 for alpha)\r\n */\r\n color: string\r\n\r\n /**\r\n * List of colors to display in the palette\r\n *\r\n * @default DEFAULT_COLORS\r\n */\r\n colors?: ColorItem[]\r\n\r\n /**\r\n * Callback when user picks a color\r\n */\r\n onChange: (color: string, originalColor: HSVA) => void\r\n}\r\n\r\nexport function ColorPalette({ color, colors = DEFAULT_COLORS, onChange }: ColorPaletteProps) {\r\n const lowerCaseColor = color.toLowerCase()\r\n\r\n return (\r\n
\r\n {colors.map((colorObj) => {\r\n const isSelected = lowerCaseColor.startsWith(colorObj.value)\r\n return (\r\n onChange(colorObj.value, hexStringToHSVA(colorObj.value))}\r\n >\r\n {isSelected && }\r\n
\r\n )\r\n })}\r\n
\r\n )\r\n}\r\n","import { useCallback, useMemo } from 'react'\r\n\r\nimport { DraggablePicker, Interaction } from './draggable'\r\nimport { Pointer } from './pointer'\r\nimport { HSVA, hsvaToHEXString } from './util'\r\n\r\ninterface HueSaturationProps {\r\n color: HSVA\r\n onChange: (color: HSVA) => void\r\n}\r\n\r\nfunction getPositionFromHSLA(color: HSVA) {\r\n return {\r\n left: color.h / 360,\r\n top: 1 - color.s,\r\n }\r\n}\r\n\r\nexport function HueSaturation({ color, onChange }: HueSaturationProps) {\r\n const position = useMemo(() => getPositionFromHSLA(color), [color])\r\n\r\n const colorPreview = useMemo(() => hsvaToHEXString({ h: color.h, s: color.s, v: 1, a: 1 }), [color.h, color.s])\r\n\r\n const changeSaturation = useCallback(\r\n (pos: Interaction) =>\r\n onChange({\r\n h: Math.round(pos.left * 360),\r\n s: 1 - pos.top,\r\n v: 1,\r\n a: color.a,\r\n }),\r\n [color.a, onChange]\r\n )\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n )\r\n}\r\n","import { useCallback, useMemo } from 'react'\r\n\r\nimport { DraggablePicker, Interaction } from './draggable'\r\nimport { Pointer } from './pointer'\r\nimport { HSVA, hsvaToHEXString } from './util'\r\n\r\ninterface LightnessProps {\r\n color: HSVA\r\n onChange: (color: HSVA) => void\r\n}\r\n\r\nexport function Lightness({ color, onChange }: LightnessProps) {\r\n const changeLightness = useCallback((pos: Interaction) => onChange({ ...color, v: 1 - pos.left }), [onChange, color])\r\n\r\n const colorPreview = useMemo(\r\n () => hsvaToHEXString({ h: color.h, s: color.s, v: color.v, a: 1 }),\r\n [color.h, color.s, color.v]\r\n )\r\n\r\n const gradientPreview = useMemo(() => {\r\n const gradientFrom = hsvaToHEXString({ h: color.h, s: color.s, v: 1, a: 1 })\r\n const gradientTo = hsvaToHEXString({ h: color.h, s: color.s, v: 0, a: 1 })\r\n\r\n return `linear-gradient(90deg, ${gradientFrom}, ${gradientTo})`\r\n }, [color.h, color.s])\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { Icon, IconNameType, isValidIconName } from '../icon'\r\nimport { getIsColorTooLightOrTransparent, hexStringToRGBA } from './util'\r\n\r\ninterface ColorPreviewProps {\r\n /**\r\n * Name of an icon or JSX.Element\r\n */\r\n icon?: JSX.Element | IconNameType\r\n\r\n /**\r\n * One or more colors to show in the preview\r\n */\r\n color: string | string[]\r\n\r\n /**\r\n * Wrapper classname\r\n */\r\n className?: string\r\n}\r\n\r\nexport function ColorPreview({ icon, color, className }: ColorPreviewProps) {\r\n const colors = Array.isArray(color) ? color : [color]\r\n const isTooLight = getIsColorTooLightOrTransparent(hexStringToRGBA(colors[0]))\r\n return (\r\n \r\n {icon && (\r\n
\r\n {isValidIconName(icon) ? (\r\n \r\n ) : (\r\n icon\r\n )}\r\n
\r\n )}\r\n {colors.map((color, index) => (\r\n //   has to be there because of a bug on safari which ignores h-full when empty element\r\n
\r\n  \r\n
\r\n ))}\r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React, { ForwardedRef, useCallback, useEffect, useState } from 'react'\r\n\r\nimport { Input, InputComponentProps } from '../input'\r\nimport { ColorPreview } from './color-preview'\r\nimport { ColorPickerProps } from './picker'\r\nimport * as colorUtil from './util'\r\n\r\ninterface PickerInputProps extends Omit {\r\n color: ColorPickerProps['color']\r\n onChange: ColorPickerProps['onChange']\r\n\r\n /*\r\n * Is color preview square visible\r\n *\r\n * @default true\r\n * */\r\n hasColorPreview?: boolean\r\n}\r\nexport const PickerInput = React.forwardRef(\r\n (\r\n { color, inputClass, hasColorPreview = true, onChange, ...props }: PickerInputProps,\r\n ref: ForwardedRef\r\n ) => {\r\n const [colorInput, setColorInput] = useState(colorUtil.removeHashSymbol(color))\r\n const isRgba = colorUtil.getIsRgb(colorInput)\r\n\r\n useEffect(() => {\r\n setColorInput(colorUtil.removeHashSymbol(color))\r\n }, [color])\r\n\r\n const handleColorInputChange = useCallback(\r\n (event: React.KeyboardEvent) => {\r\n const value = colorUtil.removeHashSymbol(event.currentTarget.value)\r\n const isRgba = value.startsWith('rgba')\r\n const colorValue = isRgba ? value : `#${value}`\r\n\r\n setColorInput(value)\r\n if ((value.length >= 6 || (isRgba && value.length >= 16)) && colorUtil.isValidColor(colorValue)) {\r\n onChange(colorValue, colorUtil.hexStringToHSVA(colorValue))\r\n }\r\n },\r\n [onChange]\r\n )\r\n return (\r\n \r\n {hasColorPreview && (\r\n
\r\n \r\n
\r\n )}\r\n {!isRgba && #}\r\n
\r\n }\r\n onChange={handleColorInputChange}\r\n />\r\n )\r\n }\r\n)\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport React, { ReactNode, useCallback, useEffect, useRef, useState } from 'react'\r\n\r\nimport { isMobile } from '../../../app/shared/isMobile'\r\nimport { Button } from '../button'\r\nimport { Popover, PopoverTrigger, usePopoverState } from '../popover'\r\nimport { Alpha } from './alpha'\r\nimport { ColorPalette } from './color-palette'\r\nimport { HueSaturation } from './hue-saturation'\r\nimport { Lightness } from './lightness'\r\nimport { PickerInput } from './picker-input'\r\nimport * as colorUtil from './util'\r\n\r\nexport interface ColorPickerProps {\r\n /**\r\n * The selected color in HEX format (supports HEX8 for alpha)\r\n */\r\n color: string\r\n\r\n /**\r\n * Whether or not the user is able to select custom color\r\n *\r\n * @default true\r\n */\r\n canSelectCustom?: boolean\r\n\r\n /**\r\n * Whether or not the user is able to change alpha channel. Only applicable\r\n * when `canSelectCustom` is true\r\n *\r\n * @default true\r\n */\r\n canSelectAlpha?: boolean\r\n\r\n /**\r\n * Sets the output format for the color picker\r\n *\r\n * @default 'hex'\r\n */\r\n outputFormat?: 'hex' | 'rgba'\r\n\r\n /**\r\n * Callback when user changes color. Use the second parameter to do color space\r\n * conversions otherwise the color could differ due to rounding\r\n */\r\n onChange: (color: string, originalColor: colorUtil.HSVA) => void\r\n\r\n /**\r\n * Callback when user clicks on a palette item. Used to close popover\r\n */\r\n onPaletteItemClick?: () => void\r\n}\r\n\r\nexport function ColorPicker({\r\n color,\r\n canSelectCustom = true,\r\n canSelectAlpha = true,\r\n outputFormat = 'hex',\r\n onChange,\r\n onPaletteItemClick,\r\n}: ColorPickerProps) {\r\n const cachedColor = useRef(color)\r\n const [hsvaColor, setColor] = useState(colorUtil.getHSVAFromColor(color))\r\n const popover = Ariakit.usePopoverContext()\r\n const input = popover?.useState('disclosureElement')\r\n\r\n /**\r\n * Update state if the color from outside changed\r\n */\r\n useEffect(() => {\r\n const currentColor = colorUtil.removeHashSymbol(cachedColor.current)\r\n const newColor = colorUtil.removeHashSymbol(color)\r\n\r\n if (currentColor === newColor || !colorUtil.isValidColor(newColor)) return\r\n\r\n cachedColor.current = color\r\n setColor(colorUtil.getHSVAFromColor(color))\r\n }, [color])\r\n\r\n /**\r\n * Handle color change\r\n * 1. update cache so we can correctly check when outside color updates\r\n * 2. Update internal color representation\r\n * 3. call onChange with string color\r\n */\r\n const onChangeCallback = useCallback(\r\n (color: colorUtil.HSVA) => {\r\n const stringColor = colorUtil.stringifyHSVAColor(color, outputFormat, canSelectAlpha)\r\n cachedColor.current = stringColor\r\n onChange(stringColor, color)\r\n setColor(color)\r\n },\r\n [onChange, canSelectAlpha, outputFormat]\r\n )\r\n\r\n const onSetCustomCodeClick = useCallback(() => {\r\n const value = prompt('Enter a color code')?.trim()\r\n\r\n if (!value) return\r\n\r\n const isValid = colorUtil.isValidColor(value)\r\n\r\n if (!isValid) {\r\n return alert('The code is not a valid color')\r\n }\r\n\r\n onChangeCallback(colorUtil.getHSVAFromColor(value))\r\n }, [onChangeCallback])\r\n\r\n return (\r\n
\r\n {canSelectCustom && (\r\n <>\r\n {isMobile() && (\r\n \r\n )}\r\n \r\n \r\n\r\n {canSelectAlpha && }\r\n \r\n )}\r\n\r\n \r\n {\r\n input?.focus({ preventScroll: true })\r\n onPaletteItemClick?.()\r\n onChangeCallback({ ...orignalColor, a: hsvaColor.a })\r\n }}\r\n />\r\n
\r\n \r\n )\r\n}\r\n\r\ninterface InputColorPickerProps extends ColorPickerProps {\r\n /**\r\n * Label for the input\r\n */\r\n label?: ReactNode\r\n inputDataTestId?: string\r\n}\r\n\r\nexport function InputColorPicker({ label, inputDataTestId, onChange, ...props }: InputColorPickerProps) {\r\n const popoverState = usePopoverState()\r\n const canSelectCustom = props.canSelectCustom !== false\r\n const isMobileDevice = isMobile()\r\n\r\n return (\r\n <>\r\n \r\n }\r\n />\r\n \r\n \r\n {\r\n if (canSelectCustom) return\r\n popoverState.hide()\r\n }}\r\n />\r\n \r\n \r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { isMobile } from '../../../app/shared/isMobile'\r\nimport { Button, ButtonComponentProps, ButtonRounding, ButtonSizeType } from '../button'\r\nimport { ButtonGroup } from '../button-group'\r\nimport { IconNameType } from '../icon'\r\nimport { Popover, PopoverTrigger, usePopoverState } from '../popover'\r\nimport { ColorPreview } from './color-preview'\r\nimport { ColorPicker, ColorPickerProps } from './picker'\r\nimport { PickerInput } from './picker-input'\r\nimport * as colorUtil from './util'\r\n\r\ninterface MultiColorPickerProps extends ColorPickerProps {\r\n /**\r\n * Label for color text input\r\n *\r\n * @default undefined\r\n */\r\n colorInputLabel?: string\r\n}\r\n\r\nexport function MultiColorPicker({\r\n colorInputLabel,\r\n onChange,\r\n canSelectCustom = true,\r\n ...props\r\n}: MultiColorPickerProps) {\r\n const isMobileDevice = isMobile()\r\n\r\n return (\r\n <>\r\n {canSelectCustom && !isMobileDevice && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n {}} />\r\n \r\n \r\n )\r\n}\r\n\r\ninterface ColorTabButtonProps extends ButtonComponentProps {\r\n /*\r\n * Preview color\r\n * */\r\n color: string\r\n}\r\n\r\nexport function ColorTabButton({ color, children, ...props }: ColorTabButtonProps) {\r\n return (\r\n }\r\n {...props}\r\n >\r\n {children}\r\n \r\n )\r\n}\r\n\r\ntype ButtonColorProperties = { color: string; label: string }\r\n\r\ninterface ButtonColorPickerProps\r\n extends Omit {\r\n /**\r\n * Temporary prop to enable/disable multi picker funcionality,\r\n * in the future we'll only use secondaryColor prop to decide if the picker is multi picker or not\r\n *\r\n * @default undefined\r\n */\r\n isMultiPicker?: boolean\r\n\r\n /**\r\n * Button classname\r\n */\r\n className?: string\r\n\r\n /**\r\n * Array of objects with color and value\r\n */\r\n colors: ColorType[]\r\n\r\n /**\r\n * Color onchange callback\r\n */\r\n onChange: (colors: ColorType[], originalColor: colorUtil.HSVA) => void\r\n\r\n /**\r\n * Button size\r\n *\r\n * @default undefined\r\n */\r\n size?: ButtonSizeType\r\n /**\r\n * Label for color text input\r\n *\r\n * @default undefined\r\n */\r\n colorInputLabel?: string\r\n\r\n /**\r\n * Name of an icon or JSX.Element\r\n */\r\n icon?: JSX.Element | IconNameType\r\n\r\n /**\r\n * Identifier for e2e testing\r\n *\r\n * @default undefined\r\n */\r\n buttonPickerDataTestId?: string\r\n}\r\n\r\nexport function ButtonColorPicker({\r\n size,\r\n icon,\r\n colors,\r\n className,\r\n onChange,\r\n buttonPickerDataTestId,\r\n ...props\r\n}: ButtonColorPickerProps) {\r\n const popoverState = usePopoverState()\r\n const isOpen = popoverState.useState('open')\r\n const isMultiPicker = !!props.isMultiPicker && colors.length > 1\r\n const [activeColorIndex, setActiveColorIndex] = React.useState(0)\r\n const handleColorChange = React.useCallback(\r\n (color: string, originalColor: colorUtil.HSVA) => {\r\n onChange(\r\n colors.map((colorObject, index) => (index === activeColorIndex ? { ...colorObject, color } : colorObject)),\r\n originalColor\r\n )\r\n },\r\n [activeColorIndex, colors, onChange]\r\n )\r\n return (\r\n <>\r\n \r\n color)}\r\n className={classnames('h-full w-full', ButtonRounding.small)}\r\n />\r\n \r\n \r\n {isMultiPicker && (\r\n
\r\n \r\n {colors.map(({ color, label }, index) => (\r\n setActiveColorIndex(index)}\r\n >\r\n {label}\r\n \r\n ))}\r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n )\r\n}\r\n","import copy from 'copy-to-clipboard'\r\nimport React from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { InputProps, Textarea } from '../input'\r\n\r\ninterface Props extends Pick {\r\n className?: string\r\n text: string\r\n bottomLeftContent?: React.ReactNode\r\n}\r\n\r\nexport const CopyToClipboard: React.FC = ({ className, label, text, bottomLeftContent }) => {\r\n const [isCopied, setIsCopied] = React.useState(false)\r\n\r\n const handleCopyToClipboard = React.useCallback(() => {\r\n setIsCopied(true)\r\n copy(text)\r\n }, [text])\r\n\r\n React.useEffect(() => {\r\n let timeout: number\r\n const resetTimer = () => {\r\n if (!timeout) return\r\n clearTimeout(timeout)\r\n }\r\n if (isCopied) {\r\n resetTimer()\r\n timeout = window.setTimeout(() => {\r\n setIsCopied(false)\r\n }, 2000)\r\n }\r\n\r\n return () => {\r\n resetTimer()\r\n }\r\n }, [isCopied])\r\n\r\n return (\r\n
\r\n e.currentTarget.select()}\r\n inputClass=\"h-12\"\r\n data-testid=\"copy-to-clipboard-textarea\"\r\n value={text}\r\n />\r\n
\r\n {bottomLeftContent &&
{bottomLeftContent}
}\r\n \r\n {isCopied ? 'Copied' : 'Copy'}\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nexport interface DelayedProps {\r\n /**\r\n * The delay in milliseconds before the component is rendered.\r\n *\r\n * @default 300\r\n */\r\n delay?: number\r\n\r\n /**\r\n * Delay in milliseconds before rendering timeout state.\r\n */\r\n timeout?: number\r\n\r\n /**\r\n * Throw on timeout (suspense)\r\n */\r\n throwOnTimeout?: boolean\r\n\r\n /**\r\n * Component visible during the delay.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n delayComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when timeout is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n timeoutComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when delay is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n children?: React.ReactNode\r\n}\r\n\r\nexport function Delayed({\r\n delay = 300,\r\n timeout = 0,\r\n throwOnTimeout = false,\r\n delayComponent,\r\n timeoutComponent,\r\n children,\r\n}: DelayedProps) {\r\n const [visible, setVisible] = React.useState(false)\r\n const [hasTimedOut, setHasTimedOut] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const visibilityTimeout = window.setTimeout(() => setVisible(true), delay)\r\n\r\n let failedTimeout: number\r\n if (timeout > 0) {\r\n failedTimeout = window.setTimeout(() => {\r\n setHasTimedOut(true)\r\n if (throwOnTimeout) throw new Error()\r\n }, timeout)\r\n }\r\n\r\n return () => {\r\n clearTimeout(visibilityTimeout)\r\n clearTimeout(failedTimeout)\r\n }\r\n }, [delay, timeout, throwOnTimeout])\r\n\r\n if (!visible) return <>{delayComponent}\r\n\r\n if (hasTimedOut) {\r\n return <>{timeoutComponent}\r\n }\r\n\r\n return <>{children}\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classNames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { usePrevious } from '../../hooks/use-previous'\r\nimport { focusWithoutScroll, preventDefault } from '../../util'\r\nimport { useZIndex } from '../dialog'\r\n\r\nenum DropdownRounding {\r\n none = '',\r\n regular = 'rounded-lg',\r\n}\r\n\r\nenum DropdownTheme {\r\n none = '',\r\n default = 'border border-primary bg-primary',\r\n}\r\n\r\ninterface StatelessDropdownProps\r\n extends Omit, 'ref'>,\r\n Pick {\r\n /**\r\n * Trigger button for the dropdown\r\n */\r\n trigger: JSX.Element | null\r\n\r\n /**\r\n * Disable interaction with other page elements when the dropdown is open\r\n *\r\n * @default true\r\n */\r\n modal?: boolean\r\n\r\n /**\r\n * When true, the dropdown will show when dropdown is hovered. Combine with\r\n * `backdrop={false}` to make the popover hide on mouse out\r\n */\r\n showOnHover?: boolean\r\n\r\n /**\r\n * Placement of the dropdown\r\n *\r\n */\r\n placement?: Ariakit.MenuProviderProps['placement']\r\n\r\n /**\r\n * Orientation in which the items are laid out. Changes which arrows control next/prev item\r\n *\r\n * @default vertical\r\n */\r\n orientation?: 'vertical' | 'horizontal'\r\n\r\n /**\r\n * Set rounding for the dropdown list\r\n *\r\n * @default regular\r\n */\r\n rounding?: keyof typeof DropdownRounding\r\n\r\n /**\r\n * Dropdown theme\r\n *\r\n * @default default\r\n */\r\n theme?: keyof typeof DropdownTheme\r\n\r\n /**\r\n * The amount of space between button and its popover\r\n *\r\n * @default 4\r\n */\r\n gutter?: number\r\n\r\n /**\r\n * Show backdrop on the dialog. Provide your own element if you want to add background or animation\r\n *\r\n */\r\n backdrop?: false | JSX.Element\r\n\r\n /**\r\n * Do not render the items when the popover is not visible\r\n *\r\n * @default true\r\n */\r\n unmountOnHide?: boolean\r\n\r\n /**\r\n * If true, the dropdown will overlay the trigger if necessary instead of going\r\n * out of bounds and overflowing\r\n */\r\n overlap?: boolean\r\n\r\n /**\r\n * Callback before the menu starts hiding. Event can be prevented which keeps the menu open\r\n * This callback isn’t called on backdrop click. Use `backdrop={
}` to react on backdrop clicks\r\n */\r\n onClose?: (ev: Event) => void\r\n\r\n /**\r\n * Used to provide virtual anchor, useful for context menu, etc\r\n */\r\n getAnchorRect?: () => { x: number; y: number }\r\n\r\n /**\r\n * Set which element gets focus when the dialog visibility changes. If `false`, the focus stays on the previous element.\r\n * Defaults to focusing without scrolling the page or keeping the focus on trigger if input-like.\r\n */\r\n autoFocusOnShow?: false | ((element: HTMLElement) => boolean)\r\n\r\n /**\r\n * Set which element gets focus when the dialog visibility changes. If `false`, the focus stays on the previous element.\r\n * Defaults to focusing without scrolling the page or keeping the focus on trigger if input-like.\r\n */\r\n autoFocusOnHide?: false | ((element: HTMLElement) => boolean)\r\n\r\n /**\r\n * Callback which is called when the dialog opens and all animations complete\r\n */\r\n onFullyOpen?: () => void\r\n\r\n /**\r\n * Callback which is called when the dialog closes and all animations complete\r\n */\r\n onFullyClosed?: () => void\r\n}\r\n\r\nexport const StatelessDropdown = React.forwardRef(function DropdownComponent(\r\n {\r\n trigger,\r\n modal = true,\r\n rounding = 'regular',\r\n theme = 'default',\r\n gutter,\r\n unmountOnHide = true,\r\n children,\r\n backdrop,\r\n showOnHover,\r\n hideOnInteractOutside,\r\n autoFocusOnShow,\r\n autoFocusOnHide,\r\n onFullyOpen,\r\n onFullyClosed,\r\n ...props\r\n }: React.PropsWithChildren,\r\n ref: React.ForwardedRef\r\n) {\r\n const zIndex = useZIndex()\r\n const store = Ariakit.useMenuContext()\r\n const currentPlacement = store?.useState('currentPlacement')\r\n const isOpen = store?.useState('open')\r\n const [isFullyOpen, setIsFullyOpen] = React.useState(false)\r\n const isMounted = store?.useState('mounted')\r\n const wasMounted = usePrevious(isMounted)\r\n const menuGutter = gutter ?? (store?.parent ? 6 : 4)\r\n\r\n React.useEffect(() => {\r\n if (wasMounted && !isMounted) {\r\n onFullyClosed?.()\r\n }\r\n // We want to call it only on isMounted change\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isMounted])\r\n\r\n return (\r\n <>\r\n {trigger && (\r\n \r\n )}\r\n }\r\n // E2E tests don’t wait for transitions to complete and it could lead to bugs with other popover components (ResizeObserver loop exceeded)\r\n // or visual diffs due a screenshot being captured while the dropdown still in transition\r\n // If you encounter this problem, just do `cy.get('[data-fully-open=true]').should('exist')` before continuing to wait for the dropdown\r\n data-fully-open={isFullyOpen}\r\n className={classNames(\r\n props.className,\r\n zIndex,\r\n DropdownRounding[rounding],\r\n DropdownTheme[theme],\r\n 'custom-scrollbar absolute flex flex-col overflow-hidden shadow-modal outline-none dark:shadow-modal-dark',\r\n // These are set by popper, we just need to make sure we don’t encroach on the safe insets\r\n 'min-w-[--popover-anchor-width] max-w-[--popover-available-width]',\r\n // Animations\r\n 'opacity-0 transition duration-[250ms] data-[enter]:translate-y-0 data-[enter]:opacity-100',\r\n {\r\n // When in combobox mode, the padding is smaller so we can render a gradient under the combobox input.\r\n // Change the custom scrollbar offset so the top of the first item fits the top of our scrollbar\r\n '[--scrollbar-radius:0]': DropdownRounding[rounding] === DropdownRounding.none,\r\n // Direction based styles\r\n 'max-h-[calc(var(--popover-available-height)-env(safe-area-inset-bottom))] motion-safe:-translate-y-1':\r\n currentPlacement?.startsWith('bottom'),\r\n 'max-h-[calc(var(--popover-available-height)-env(safe-area-inset-top))] motion-safe:translate-y-1':\r\n currentPlacement?.startsWith('top'),\r\n }\r\n )}\r\n onTransitionEnd={(ev) => {\r\n if (ev.target === ev.currentTarget && isOpen) {\r\n setIsFullyOpen(true)\r\n onFullyOpen?.()\r\n }\r\n }}\r\n >\r\n \r\n {children}\r\n
\r\n \r\n \r\n )\r\n})\r\n\r\nexport interface DropdownProps extends StatelessDropdownProps {\r\n state?: Ariakit.MenuStore\r\n}\r\n\r\nexport const Dropdown = React.forwardRef(\r\n (\r\n { state, placement, orientation = 'vertical', ...props }: React.PropsWithChildren,\r\n ref: React.ForwardedRef\r\n ) => (\r\n \r\n \r\n \r\n )\r\n)\r\n","import * as Ariakit from '@ariakit/react'\r\nimport * as React from 'react'\r\n\r\nimport { OptionButton, OptionButtonProps } from '../OptionButton'\r\nimport { BUTTON_DEFAULT_ELEMENT } from '../button'\r\nimport { PropsWithAs } from '../types'\r\n\r\ninterface DropdownItemProps extends OptionButtonProps {\r\n store?: Ariakit.MenuStore\r\n\r\n subtitle?: React.ReactNode\r\n\r\n /**\r\n * Whether clicking the item should also close the dropdown. Only applies to\r\n * items without a submenu\r\n *\r\n * @default true\r\n */\r\n hideOnClick?: boolean\r\n}\r\n\r\nfunction DropdownItemComponent(\r\n { as: asComponent, ...props }: PropsWithAs & DropdownItemProps,\r\n ref: React.ForwardedRef\r\n) {\r\n return } />\r\n}\r\n\r\n/**\r\n * We need to forward ref to the function, but typescript looses the type of the\r\n * props param so we need to typecast to get suggestions to work\r\n */\r\nexport const DropdownItem = React.forwardRef(DropdownItemComponent) as <\r\n TagType extends React.ElementType = typeof BUTTON_DEFAULT_ELEMENT,\r\n>(\r\n props: PropsWithAs & DropdownItemProps & { ref?: React.ForwardedRef }\r\n) => ReturnType\r\n","import * as Ariakit from '@ariakit/react'\r\n\r\nexport const useDropdownState = Ariakit.useMenuStore\r\n","import * as React from 'react'\r\n\r\nimport { PartialBy } from '../../types'\r\nimport { MenuGroup } from '../MenuGroup'\r\nimport { Dropdown, DropdownItem, DropdownProps } from '../dropdown'\r\nimport { ObjectHash } from '../types'\r\n\r\nexport interface IContextMenuOption {\r\n type?: never\r\n id: string\r\n label: React.ReactNode\r\n onClick?: () => void\r\n options?: ContextMenuItem[]\r\n gtag?: ObjectHash\r\n}\r\n\r\ninterface IContextMenuDivider {\r\n type: 'divider'\r\n label?: React.ReactNode\r\n}\r\n\r\nexport type ContextMenuItem = IContextMenuOption | IContextMenuDivider\r\n\r\ninterface ContextMenuInnerProps extends PartialBy {\r\n /**\r\n * Items visible in the menu\r\n */\r\n items: ContextMenuItem[]\r\n}\r\n\r\nexport function ContextMenuInner(\r\n { trigger, items, onClose, ...props }: ContextMenuInnerProps,\r\n ref: React.ForwardedRef\r\n) {\r\n return (\r\n ev.preventDefault()}\r\n >\r\n {items?.map((item, index) => {\r\n if (item.type === 'divider') {\r\n return \r\n }\r\n\r\n if (item?.options !== undefined) {\r\n return (\r\n \r\n {item.label}\r\n \r\n }\r\n />\r\n )\r\n }\r\n\r\n return (\r\n {\r\n item.onClick?.()\r\n window.gtag?.('event', 'context-menu', Object.assign({ menu_option: item.id }, item.gtag))\r\n }}\r\n data-testid={`dropdown-menu-${item.id}`}\r\n >\r\n {item.label}\r\n \r\n )\r\n })}\r\n \r\n )\r\n}\r\n\r\nexport const ContextMenu = React.forwardRef(ContextMenuInner)\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\ninterface GridLayoutProps extends React.HTMLProps {\r\n /**\r\n * Number of columns\r\n */\r\n columns?: number\r\n\r\n /**\r\n * Number of rows\r\n */\r\n rows?: number\r\n\r\n /**\r\n * Whether or not a border is rendered between and around items. eg. charts\r\n * on HP won’t have a border\r\n *\r\n * @default false\r\n */\r\n border?: boolean\r\n}\r\n\r\nexport const ChartGridCell = React.forwardRef(\r\n ({ children, gridArea, className, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n )\r\n)\r\n\r\ninterface ChartGridCellProps extends React.HTMLProps {\r\n /**\r\n * Css grid-area value\r\n */\r\n gridArea?: string\r\n}\r\n\r\nexport function GridLayout({ columns = 1, rows = 1, border = false, children, className, ...props }: GridLayoutProps) {\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\ninterface ChartGridProps extends GridLayoutProps {\r\n isResizable?: boolean\r\n}\r\n\r\nexport const ChartGrid: React.FC = (props) => \r\n","import * as React from 'react'\r\n\r\nimport { PropsWithAs, RequireByKey } from '../types'\r\n\r\nconst defaultValueAccessor: ValueAccessor = (data) => data\r\n\r\nconst DEFAULT_VALUE_KEY = 'value'\r\nconst DEFAULT_CHANGE_KEY = 'onChange'\r\n\r\ntype ValueAccessor<\r\n TagType extends React.ElementType,\r\n ValueKey extends keyof React.ComponentProps = typeof DEFAULT_VALUE_KEY,\r\n ChangeKey extends keyof React.ComponentProps = typeof DEFAULT_CHANGE_KEY,\r\n> = (...args: Parameters[ChangeKey]>) => React.ComponentProps[ValueKey]\r\n\r\nexport type InnerStateProps<\r\n TagType extends React.ElementType,\r\n ValueKey extends keyof React.ComponentProps,\r\n ChangeKey extends keyof React.ComponentProps,\r\n> = RequireByKey, 'as'> & {\r\n valueKey?: ValueKey\r\n changeKey?: ChangeKey\r\n valueAccessor?: ValueAccessor\r\n}\r\n\r\nexport function InnerState<\r\n TagType extends React.ElementType,\r\n ValueKey extends keyof React.ComponentProps = typeof DEFAULT_VALUE_KEY,\r\n ChangeKey extends keyof React.ComponentProps = typeof DEFAULT_CHANGE_KEY,\r\n>({\r\n as: asComponent,\r\n valueKey = 'value' as ValueKey,\r\n changeKey = 'onChange' as ChangeKey,\r\n valueAccessor = defaultValueAccessor,\r\n ...props\r\n}: InnerStateProps) {\r\n const { [valueKey]: value, [changeKey]: onChange } = props\r\n const [state, setState] = React.useState[ValueKey]>(value)\r\n\r\n const handleChange = React.useCallback>(\r\n (...args) => {\r\n setState(valueAccessor(...args))\r\n onChange(...args)\r\n },\r\n [onChange, valueAccessor]\r\n )\r\n\r\n return React.createElement(asComponent, {\r\n ...props,\r\n [valueKey]: state,\r\n [changeKey]: handleChange,\r\n })\r\n}\r\n","import classnames from 'classnames'\r\nimport { HTMLProps, ReactNode, useEffect, useMemo, useRef, useState } from 'react'\r\n\r\nimport { Label } from './typography'\r\n\r\nexport enum RangeSize {\r\n small = 'sm:h-6', // 24px height\r\n regular = 'sm:h-7', // 28px height\r\n medium = 'sm:h-8', // 32px height\r\n large = 'sm:h-9', // 36px height\r\n}\r\n\r\ntype InputProps = HTMLProps\r\n\r\ninterface RangeSliderProps extends Omit {\r\n /**\r\n * Label which is rendered above the select\r\n */\r\n label?: ReactNode\r\n\r\n /**\r\n * Range size. All inputs have forced height on mobile to avoid zoom\r\n *\r\n * @default regular\r\n */\r\n size?: keyof typeof RangeSize\r\n\r\n /**\r\n * Element which will be rendered on the left side of the slider\r\n */\r\n leftContent?: ReactNode\r\n\r\n /**\r\n * Element which will be rendered on the right side of the slider\r\n */\r\n rightContent?: ReactNode\r\n\r\n /**\r\n * Class name for the wrapper element\r\n */\r\n className?: string\r\n\r\n /**\r\n * Class name for the input element\r\n */\r\n inputClassName?: string\r\n\r\n /**\r\n * Min value for the input\r\n *\r\n * @default 0\r\n */\r\n min?: number\r\n\r\n /**\r\n * Max value for the input\r\n *\r\n * @default 100\r\n */\r\n max?: number\r\n\r\n /**\r\n * Step value for the input\r\n *\r\n * @default 1\r\n */\r\n step?: number\r\n\r\n /**\r\n * Current value\r\n */\r\n value: number\r\n\r\n /**\r\n * Callback when value changes\r\n */\r\n onChange: InputProps['onChange']\r\n}\r\n\r\nexport function RangeSlider({\r\n label,\r\n size = 'regular',\r\n leftContent,\r\n rightContent,\r\n min = 0,\r\n max = 100,\r\n step = 1,\r\n className,\r\n inputClassName,\r\n ...props\r\n}: RangeSliderProps) {\r\n const [hasTrack, setHasTrack] = useState(false)\r\n const trackRef = useRef(null)\r\n const thumbRef = useRef(null)\r\n\r\n useEffect(() => {\r\n setHasTrack(Boolean(trackRef.current && thumbRef.current))\r\n }, [])\r\n\r\n const thumbLeft = useMemo(() => {\r\n const track = trackRef.current\r\n const thumb = thumbRef.current\r\n const valuePercent = (props.value - min) / (max - min)\r\n\r\n if (!hasTrack || !track || !thumb) return\r\n\r\n const trackBox = track.getBoundingClientRect()\r\n const thumbBox = thumb.getBoundingClientRect()\r\n\r\n return ((valuePercent * (trackBox.width - thumbBox.width)) / trackBox.width) * 100\r\n }, [min, max, props.value, hasTrack])\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import { ButtonRoundingType, ButtonThemeType } from '../button'\r\nimport { IconNameType } from '../icon'\r\n\r\nexport enum ToolbarTheme {\r\n chipTransparent, // (default)\r\n alternative,\r\n}\r\n\r\nexport enum ToolbarDirection {\r\n vertical,\r\n horizontal,\r\n}\r\n\r\nexport type ToolbarDirectionType = keyof typeof ToolbarDirection\r\n\r\nexport interface IButtonThemeSettings {\r\n className?: string\r\n theme: ButtonThemeType\r\n rounding: ButtonRoundingType\r\n}\r\n\r\nexport interface IToolbarItem {\r\n id: string\r\n icon: IconNameType\r\n iconActive?: IconNameType\r\n iconAction?: IconNameType\r\n title: string\r\n titleActive?: string\r\n titleAction?: string\r\n}\r\n\r\nexport type ToolbarThemeType = keyof typeof ToolbarTheme\r\n","import * as React from 'react'\r\n\r\nimport { ToolbarDirection, ToolbarTheme } from './interfaces'\r\n\r\nexport interface IToolbarContext {\r\n direction: ToolbarDirection\r\n theme: ToolbarTheme\r\n isWrapped: boolean\r\n isStretched: boolean\r\n isMobile: boolean\r\n}\r\n\r\nexport const ToolbarContext = React.createContext({\r\n direction: ToolbarDirection.vertical,\r\n theme: ToolbarTheme.chipTransparent,\r\n isWrapped: false,\r\n isStretched: false,\r\n isMobile: false,\r\n})\r\n\r\nexport function useToolbarContext() {\r\n return React.useContext(ToolbarContext)\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport throttle from 'lodash.throttle'\r\nimport React from 'react'\r\n\r\nimport { isSafariDesktop } from '../../../app/shared/isMobile'\r\nimport { StatelessDropdown } from '../dropdown'\r\nimport { IToolbarContext, ToolbarContext } from './hooks'\r\nimport { ToolbarDirection, ToolbarDirectionType, ToolbarTheme, ToolbarThemeType } from './interfaces'\r\n\r\nconst getToolbarSettings = ({\r\n direction,\r\n isWrapped,\r\n isMobile,\r\n theme,\r\n}: IToolbarContext): React.HTMLProps => {\r\n switch (isWrapped) {\r\n case true:\r\n return {\r\n className: classnames('shrink-0 items-center bg-white dark:bg-gray-800', {\r\n 'flex flex-wrap justify-between': direction === ToolbarDirection.vertical,\r\n 'grid border border-gray-100 dark:border-gray-600 p-1.5 gap-1 border-box rounded-md grid-cols-2':\r\n FinvizSettings.hasRedesignEnabled,\r\n }),\r\n }\r\n\r\n default:\r\n return {\r\n className: classnames('flex shrink-0 items-center bg-white dark:bg-gray-800', {\r\n 'p-1.5': !isMobile,\r\n 'space-x-1.5 px-1.5': direction === ToolbarDirection.horizontal && FinvizSettings.hasRedesignEnabled,\r\n 'flex-col overflow-hidden overflow-y-auto [--inset-l:0.5rem] landscape-primary:pl-inset-left':\r\n direction === ToolbarDirection.vertical,\r\n 'space-y-2': direction === ToolbarDirection.vertical && !isMobile,\r\n 'pb-inset-bottom [--inset-b:0.5rem]': theme !== ToolbarTheme.alternative && !isMobile,\r\n 'w-screen space-x-2 overflow-hidden overflow-x-auto':\r\n direction === ToolbarDirection.horizontal && theme !== ToolbarTheme.alternative,\r\n 'overflow-x-hidden': theme === ToolbarTheme.alternative,\r\n }),\r\n }\r\n }\r\n}\r\n\r\nexport interface ToolbarProps {\r\n /**\r\n * Toolbar direction\r\n *\r\n * @default vertical\r\n */\r\n direction?: ToolbarDirectionType\r\n\r\n /**\r\n * Toolbar buttons theme\r\n *\r\n * @default light\r\n */\r\n theme?: ToolbarThemeType\r\n\r\n /**\r\n * Charts mobile design\r\n *\r\n * @default false\r\n */\r\n isMobile?: boolean\r\n\r\n className?: string\r\n}\r\n\r\nexport function Toolbar({\r\n direction = 'vertical',\r\n theme = 'chipTransparent',\r\n isMobile = false,\r\n children,\r\n className,\r\n}: React.PropsWithChildren) {\r\n const hasFocusRings = React.useRef(false)\r\n const toolbarRef = React.useRef(null)\r\n const contextProviderValue = React.useMemo(\r\n () => ({\r\n direction: ToolbarDirection[direction],\r\n theme: ToolbarTheme[theme],\r\n isWrapped:\r\n ToolbarDirection[direction] === ToolbarDirection.vertical && ToolbarTheme[theme] === ToolbarTheme.alternative,\r\n isStretched:\r\n ToolbarDirection[direction] === ToolbarDirection.horizontal && ToolbarTheme[theme] === ToolbarTheme.alternative,\r\n isMobile,\r\n }),\r\n [direction, theme, isMobile]\r\n )\r\n const toolbarSettings = getToolbarSettings(contextProviderValue)\r\n\r\n React.useLayoutEffect(() => {\r\n // Workaround for Safari scrollbar bug https://github.com/finvizhq/charts/issues/1038\r\n // Safari injects scrollbar after layout render and doesn't trigger reflow\r\n if (ToolbarTheme[theme] !== ToolbarTheme.alternative && isSafariDesktop()) {\r\n const forceReflow = throttle(() => {\r\n if (toolbarRef.current !== null) {\r\n const originalWidth = toolbarRef.current.style.width\r\n toolbarRef.current.style.width = '0'\r\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\r\n toolbarRef.current.offsetWidth\r\n toolbarRef.current.style.width = originalWidth\r\n }\r\n }, 200)\r\n\r\n forceReflow()\r\n window.addEventListener('resize', forceReflow)\r\n\r\n return () => {\r\n window.removeEventListener('resize', forceReflow)\r\n }\r\n }\r\n }, [theme])\r\n\r\n return (\r\n \r\n \r\n {children}\r\n {\r\n hasFocusRings.current = !!document.querySelector('[data-focus-visible]')\r\n return true\r\n }}\r\n autoFocusOnHide={(el: HTMLElement) => {\r\n // Only call focus when we previously had focus rings to prevent sticky focus rings\r\n if (hasFocusRings.current) el.focus({ preventScroll: true })\r\n hasFocusRings.current = false\r\n return false\r\n }}\r\n />\r\n \r\n \r\n )\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button, ButtonHTMLProps, ButtonProps } from '../button'\r\nimport { Delayed } from '../delayed'\r\nimport { Icon } from '../icon'\r\nimport { Spinner } from '../spinner'\r\nimport { PropsWithAs } from '../types'\r\nimport { useToolbarContext } from './hooks'\r\nimport { IToolbarItem, ToolbarTheme } from './interfaces'\r\n\r\nfunction getButtonThemeSettings({\r\n className,\r\n theme,\r\n isActive,\r\n isStretched,\r\n isInAction,\r\n}: {\r\n className: string\r\n theme: ToolbarTheme\r\n isStretched: boolean\r\n isActive?: boolean\r\n isInAction?: boolean\r\n}): Omit & ButtonProps {\r\n const includeRedesign = FinvizSettings.hasRedesignEnabled\r\n switch (theme) {\r\n case ToolbarTheme.alternative:\r\n return {\r\n className: classnames(\r\n className,\r\n {\r\n grow: isStretched,\r\n 'h-10 w-10': !isStretched && !includeRedesign,\r\n 'animate-pulse': isInAction,\r\n },\r\n\r\n !includeRedesign && {\r\n 'active:bg-white disabled:bg-white disabled:text-gray-300 disabled:hover:text-gray-300': true,\r\n 'border border-white text-gray-500 hover:border-gray-100 hover:text-gray-900': !isActive,\r\n 'border border-gray-900 text-gray-900': isActive,\r\n }\r\n ),\r\n theme: includeRedesign ? 'chipTransparent' : 'transparent',\r\n rounding: includeRedesign ? undefined : 'none',\r\n size: isStretched || includeRedesign ? undefined : 'none',\r\n }\r\n default:\r\n return {\r\n className: classnames(\r\n className,\r\n 'border dark:disabled:bg-gray-800 dark:disabled:text-gray-600 disabled:text-gray-300 disabled:bg-white dark:disabled:hover:bg-gray-800 dark:disabled:hover:text-gray-600 disabled:hover:text-gray-300 disabled:hover:bg-white',\r\n {\r\n 'animate-pulse': isInAction,\r\n 'border-transparent text-gray-500 hover:bg-gray-200/30 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-500/30 dark:hover:text-gray-200':\r\n !isActive,\r\n 'border-blue-400 bg-blue-50 text-gray-900 dark:bg-gray-700 dark:text-white': isActive,\r\n }\r\n ),\r\n theme: 'transparent',\r\n rounding: 'small',\r\n }\r\n }\r\n}\r\n\r\nexport interface ToolbarButtonProps extends Omit {\r\n rowId?: number\r\n item: IToolbarItem\r\n disabledTooltip?: string\r\n isInAction?: boolean\r\n isLoading?: boolean\r\n}\r\n\r\nexport const ToolbarButton = React.forwardRef(function ToolbarButton(\r\n { item, disabledTooltip, isInAction: isInActionProp, isLoading, ...props }: PropsWithAs & ToolbarButtonProps,\r\n ref: React.ForwardedRef\r\n) {\r\n const context = Ariakit.useMenuContext()\r\n const { theme, isStretched } = useToolbarContext()\r\n const isInAction = isInActionProp && item.iconAction !== undefined\r\n const buttonSettings = getButtonThemeSettings({\r\n className: props.className,\r\n theme,\r\n isStretched,\r\n isActive: props.active,\r\n isInAction: isInAction,\r\n })\r\n\r\n const getMainIcon = () => (\r\n \r\n )\r\n\r\n return (\r\n }\r\n store={context?.menubar || undefined}\r\n blurOnHoverEnd\r\n render={\r\n \r\n {isLoading ? (\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n {props.children ??\r\n (isInAction ? (\r\n \r\n \r\n \r\n ) : (\r\n getMainIcon()\r\n ))}\r\n \r\n )}\r\n \r\n }\r\n />\r\n )\r\n})\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { isMobile } from '../../../app/shared/isMobile'\r\nimport { DropdownItem } from '../dropdown'\r\nimport { Icon } from '../icon'\r\nimport { NativeSelect } from '../select/NativeSelect'\r\nimport { useToolbarContext } from './hooks'\r\nimport { IToolbarItem, ToolbarTheme } from './interfaces'\r\nimport { ToolbarButton } from './toolbar-button'\r\n\r\nconst isMobileBrowser = isMobile()\r\n\r\nexport interface ToolbarGroupProps {\r\n /**\r\n * Main button item\r\n */\r\n defaultItem: IToolbarItem\r\n\r\n /**\r\n * Shows spinner instead of icon\r\n */\r\n isLoading?: boolean\r\n\r\n /**\r\n * Current selected item id\r\n */\r\n isActive: boolean\r\n\r\n /**\r\n * Should indicate some action in progress\r\n */\r\n isInAction?: boolean\r\n\r\n /**\r\n * Array of items\r\n */\r\n groupItems: IToolbarItem[]\r\n\r\n /**\r\n * Expand group button label\r\n */\r\n groupTitle?: string\r\n\r\n /**\r\n * On item select callback\r\n */\r\n onChange: (id: string, trigger: 'button' | 'select' | 'group') => void\r\n\r\n /**\r\n * Use native select for mobile devices\r\n *\r\n * @default true\r\n */\r\n useNativeSelect?: boolean\r\n\r\n /**\r\n * Is item disabled\r\n */\r\n disabled?: boolean\r\n\r\n /**\r\n * Tooltip message if item is disabled\r\n */\r\n disabledTooltip?: string\r\n\r\n rowId?: number\r\n}\r\n\r\nexport const ToolbarGroup = React.forwardRef(function ToolbarGroup(\r\n {\r\n defaultItem,\r\n isActive,\r\n isLoading,\r\n groupItems,\r\n groupTitle,\r\n onChange,\r\n useNativeSelect = isMobileBrowser,\r\n disabled,\r\n disabledTooltip,\r\n rowId,\r\n }: ToolbarGroupProps,\r\n ref: React.ForwardedRef\r\n) {\r\n const { theme, isStretched } = useToolbarContext()\r\n const [selectedItem, setSelectedItem] = React.useState(defaultItem)\r\n const groupId = groupTitle?.replace(/\\s/g, '-').toLocaleLowerCase()\r\n const isAlternativeTheme = theme === ToolbarTheme.alternative\r\n\r\n // Setup states, pass Menubar context to this menu so we can control the shared menu\r\n const context = Ariakit.useMenuContext()\r\n const menu = Ariakit.useMenuStore({ store: context })\r\n\r\n // We have multiple menu triggers but just one shared menu so we need a way to know which button has been hovered\r\n const [menuButton, setMenuButton] = React.useState(null)\r\n const open = menu.useState((state) => state.mounted && state.anchorElement === menuButton)\r\n\r\n // Find the element to render the menu into using Portal\r\n const parentMenu = menu.useState('contentElement')\r\n const menuContentElement = React.useMemo(() => parentMenu?.querySelector('div'), [parentMenu])\r\n\r\n /**\r\n * Charts prevent bubling mouseover so we need to hide the menu manually\r\n */\r\n const hideMenu = menu.hide\r\n React.useEffect(() => {\r\n const onMouseLeave = () => hideMenu()\r\n\r\n parentMenu?.addEventListener('mouseleave', onMouseLeave)\r\n return () => parentMenu?.removeEventListener('mouseleave', onMouseLeave)\r\n }, [hideMenu, parentMenu])\r\n\r\n const showMenu = menu.show\r\n const handleMenuOpen = React.useCallback(\r\n (ev: React.SyntheticEvent) => {\r\n menu.setDisclosureElement(ev.currentTarget)\r\n menu.setAnchorElement(ev.currentTarget)\r\n showMenu()\r\n },\r\n [menu, showMenu]\r\n )\r\n\r\n const trigger = (\r\n \r\n \r\n \r\n \r\n )\r\n\r\n if (useNativeSelect) {\r\n return (\r\n \r\n {trigger}\r\n ({ value: item.id, label: item.title }))}\r\n onChange={(option) => {\r\n setSelectedItem(groupItems![groupItems!.findIndex((item) => item.id === option.value)])\r\n onChange(option.value, 'select')\r\n }}\r\n onClick={() => onChange(selectedItem.id, 'select')}\r\n />\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n ) => {\r\n // Preventing this means the dropdown will only open on hover not by a click\r\n ev.preventDefault()\r\n }}\r\n onPointerDown={(ev: React.PointerEvent) => {\r\n // Finally, pre-select the current group tool\r\n onChange(selectedItem.id, 'group')\r\n handleMenuOpen(ev)\r\n }}\r\n />\r\n {open && (\r\n // Render this menu's contents into the parent menu.\r\n }>\r\n {groupItems.map((item) => (\r\n }\r\n data-testid={`toolbar-group-${groupId}-${item.id}`}\r\n rounding={theme === ToolbarTheme.alternative && !FinvizSettings.hasRedesignEnabled ? 'none' : undefined}\r\n onPointerDown={() => {\r\n setSelectedItem(item)\r\n onChange(item.id, 'select')\r\n }}\r\n >\r\n {item.title}\r\n \r\n ))}\r\n \r\n )}\r\n \r\n )\r\n})\r\n","import { PartialBy } from '../../types'\r\nimport { ToolbarButton } from './toolbar-button'\r\nimport { ToolbarGroup, ToolbarGroupProps } from './toolbar-group'\r\n\r\nexport function ToolbarItem({\r\n defaultItem,\r\n isLoading,\r\n isActive,\r\n isInAction,\r\n groupItems,\r\n groupTitle,\r\n onChange,\r\n useNativeSelect,\r\n disabled,\r\n disabledTooltip,\r\n rowId,\r\n}: PartialBy) {\r\n const isItemActive = isActive && !disabled\r\n\r\n if (!!groupItems?.length) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n {\r\n onChange(defaultItem.id, 'button')\r\n }}\r\n />\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { useToolbarContext } from './hooks'\r\nimport { ToolbarDirection, ToolbarTheme } from './interfaces'\r\n\r\ntype ToolbarDividerProps = {\r\n className?: string\r\n}\r\n\r\nexport function ToolbarDivider({ className }: ToolbarDividerProps) {\r\n const { direction, theme } = useToolbarContext()\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import { Box } from '../box'\r\nimport { Heading, Paragraph } from '../typography'\r\nimport { TourStep } from './types'\r\n\r\nexport function StepContent({ step }: { step: TourStep }) {\r\n return (\r\n \r\n {step.title && (\r\n \r\n {step.title}\r\n \r\n )}\r\n {step.body && {step.body}}\r\n \r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\nimport * as ReactDOM from 'react-dom/server'\r\nimport Shepherd from 'shepherd.js'\r\n\r\nimport {\r\n BUTTON_BASE_CLASS,\r\n BUTTON_FOCUS_STYLES,\r\n ButtonPadding,\r\n ButtonRounding,\r\n ButtonSize,\r\n ButtonTheme,\r\n getButtonTheme,\r\n} from '../button'\r\nimport { StepContent } from './step-content'\r\nimport { TourDefinition, TourStep } from './types'\r\n\r\ntype ExcludesFalse = (x: T | false) => x is T\r\n\r\n/**\r\n * Async load Shepherd module when we need it\r\n */\r\nlet shepherdLibrary: typeof Shepherd\r\nexport async function loadShepherdLibrary(setLoading: (state: boolean) => void) {\r\n if (shepherdLibrary) return shepherdLibrary\r\n\r\n try {\r\n setLoading(true)\r\n const shepherdPromise = await import('shepherd.js')\r\n shepherdLibrary = shepherdPromise.default\r\n setLoading(false)\r\n\r\n return shepherdLibrary\r\n } catch {}\r\n}\r\n\r\n/**\r\n * Get buttons based on index in the step array\r\n */\r\nconst buttonClasses = classnames(BUTTON_BASE_CLASS, BUTTON_FOCUS_STYLES, ButtonSize.regular, ButtonRounding.regular)\r\nfunction getStepButtons(tour: Shepherd.Tour, step: TourStep, index: number, arr: TourStep[]) {\r\n return [\r\n {\r\n action: tour.complete,\r\n classes: classnames(buttonClasses, 'mr-auto', getButtonTheme(ButtonTheme.light).button, ButtonPadding.regular),\r\n text: 'Exit',\r\n },\r\n index > 0 && {\r\n action: tour.back,\r\n classes: classnames(buttonClasses, getButtonTheme(ButtonTheme.light).button, ButtonPadding.regular),\r\n text: step.backButton ?? 'Back',\r\n },\r\n {\r\n classes: classnames(buttonClasses, getButtonTheme(ButtonTheme.blue).button, ButtonPadding.regular),\r\n action: tour.next,\r\n text: step.nextButton ?? (index === arr.length - 1 ? 'Finish' : 'Next'),\r\n },\r\n ].filter(Boolean as unknown as ExcludesFalse)\r\n}\r\n\r\n/**\r\n * Convert tour steps to Shepherd steps\r\n */\r\nexport function processSteps(tour: Shepherd.Tour, steps: TourStep[]): Shepherd.Step.StepOptions[] {\r\n return steps.map((step, index) => ({\r\n attachTo: { element: step.target, on: step.placement ?? 'auto' },\r\n classes: 'z-dialog',\r\n // Add offset\r\n popperOptions: {\r\n modifiers: [\r\n {\r\n name: 'offset',\r\n options: {\r\n offset: step.offset ?? [0, 10],\r\n },\r\n },\r\n ],\r\n },\r\n // Render the body\r\n text: ReactDOM.renderToString(React.createElement(StepContent, { step })),\r\n // Add buttons\r\n buttons: getStepButtons(tour, step, index, steps),\r\n modalOverlayOpeningRadius: step.overlayRadius ?? 8,\r\n modalOverlayOpeningPadding: step.overlayPadding ?? 0,\r\n }))\r\n}\r\n\r\nexport function getTourKey() {\r\n return `tour${window.location.pathname.replace(/[/.]/g, '-')}`\r\n}\r\n\r\nexport function getStepsForUser(tours: TourDefinition[]) {\r\n const lastFinishedTour = localStorage?.getItem(getTourKey())\r\n const lastTourIndex = tours.findIndex((tour) => tour.id === lastFinishedTour)\r\n const allToursViewed = lastTourIndex === tours.length - 1 || tours.slice(lastTourIndex + 1).every((item) => item.skip)\r\n const toursToView = allToursViewed ? tours : tours.slice(lastTourIndex + 1)\r\n const userTour = toursToView.reduce(\r\n (acc, current) =>\r\n current.skip\r\n ? acc\r\n : {\r\n ...acc,\r\n id: current.id,\r\n steps: [...acc.steps, ...current.steps],\r\n },\r\n { id: 'tour', steps: [], initialTour: toursToView[0].id }\r\n )\r\n\r\n return { hasNewTours: !allToursViewed, tour: userTour }\r\n}\r\n\r\nexport function completeTour(key: string) {\r\n localStorage?.setItem(getTourKey(), key)\r\n}\r\n","import * as React from 'react'\r\nimport Shepherd from 'shepherd.js'\r\n\r\nimport { TourDefinition } from './types'\r\nimport * as tourUtils from './utils'\r\n\r\nexport const DEFAULT_OPTIONS = {\r\n exitOnEsc: true,\r\n useModalOverlay: true,\r\n}\r\n\r\n/**\r\n * Hook which controls shepherd.js. The library is lazy-loaded when the tour starts\r\n *\r\n * Returns:\r\n * - `isLoading`: state of the library loading\r\n * - `currentTour`: tour object, only defined after library has loaded\r\n * - `startTour`: load the library and start tour. Returns `currentTour`\r\n * - `getStepsForUser`: returns a list of tour steps based on tours the user finished\r\n * - `completeTour`: persists the last finished tour to local storage\r\n */\r\nexport function useTour(options?: Shepherd.Tour.TourOptions) {\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n const [currentTour, setTour] = React.useState(null)\r\n\r\n /**\r\n * We’re loading shepherd asynchronously and want to have loading state so we use\r\n * AbortController to check if the component is still mounted.\r\n */\r\n const controller = React.useRef('AbortController' in window ? new AbortController() : undefined)\r\n const loadingSetter = React.useRef((state: boolean) => {\r\n if (controller.current?.signal.aborted) return\r\n\r\n setIsLoading(state)\r\n })\r\n // Cleanup effect to abort the controller\r\n React.useEffect(() => () => controller.current?.abort(), [])\r\n\r\n const startTour = React.useCallback(\r\n async (definition: TourDefinition, setComplete = true) => {\r\n const shepherdLibrary = await tourUtils.loadShepherdLibrary(loadingSetter.current)\r\n\r\n if (shepherdLibrary && !controller.current?.signal.aborted) {\r\n const tour = currentTour ?? new shepherdLibrary.Tour({ ...DEFAULT_OPTIONS, ...options })\r\n\r\n if (!currentTour) setTour(tour)\r\n\r\n // Reset the tour steps in case they were updated\r\n Array.from(tour.steps).forEach((step) => tour.removeStep(step.id))\r\n\r\n const processedSteps = tourUtils.processSteps(tour, definition.steps)\r\n tour.addSteps(processedSteps)\r\n\r\n if (setComplete) {\r\n tourUtils.completeTour(definition.id)\r\n }\r\n\r\n tour.start()\r\n window.gtag?.('event', 'tour-start', { event_label: definition.initialTour ?? definition.id })\r\n\r\n return tour\r\n }\r\n },\r\n [currentTour, options]\r\n )\r\n\r\n return {\r\n isLoading,\r\n currentTour,\r\n startTour,\r\n getStepsForUser: tourUtils.getStepsForUser,\r\n completeTour: tourUtils.completeTour,\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-duplicate-enum-values */\r\nimport * as Ariakit from '@ariakit/react'\r\nimport classNames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { BUTTON_DEFAULT_ELEMENT, Button, ButtonComponentProps } from '../button'\r\nimport { Icon, IconNameType, isValidIconName } from '../icon'\r\n\r\n// Must have the same keys as ButtonSize\r\nexport enum TabSpacing {\r\n xxsmall = 'space-x-0.5', // 2px spacing\r\n xsmall = 'space-x-1', // 4px spacing\r\n none = 'space-x-1.5', // 6px spacing\r\n small = 'space-x-1.5', // 6px spacing\r\n regular = 'space-x-1.5', // 6px spacing\r\n medium = 'space-x-2', // 8px spacing\r\n large = 'space-x-2', // 8px spacing\r\n}\r\n\r\nfunction getRightContent(content: JSX.Element | IconNameType | undefined, isActive: boolean) {\r\n if (isValidIconName(content)) return \r\n else if (React.isValidElement(content))\r\n return React.cloneElement(content as React.ReactElement<{ active: boolean }>, {\r\n active: isActive,\r\n })\r\n else return content\r\n}\r\n\r\nconst InternalTab = React.forwardRef(function InternalTab<\r\n TagType extends React.ElementType = typeof BUTTON_DEFAULT_ELEMENT,\r\n>(\r\n {\r\n rounding = 'none',\r\n theme = 'tab',\r\n size = 'medium',\r\n 'aria-selected': ariaSelected,\r\n children,\r\n ...props\r\n }: Omit, 'theme'>,\r\n ref: React.ForwardedRef\r\n) {\r\n const spacing = TabSpacing[size]\r\n const active = Boolean(ariaSelected)\r\n const rightContent = getRightContent(props.rightContent, active)\r\n\r\n return (\r\n )}\r\n ref={ref}\r\n active={active}\r\n theme={theme}\r\n size={size}\r\n rounding={rounding}\r\n rightContent={undefined}\r\n className={classNames('group/badge', props.className)}\r\n contentClass={classNames(spacing, 'flex', props.contentClass)}\r\n >\r\n {children}\r\n {rightContent}\r\n \r\n )\r\n})\r\n\r\nexport function Tab(\r\n props: React.PropsWithChildren>\r\n) {\r\n return } />\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classNames from 'classnames'\r\n\r\nexport function TabList(props: Ariakit.TabListProps) {\r\n return (\r\n \r\n )\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport React from 'react'\r\n\r\nexport function TabPanel(props: Ariakit.TabPanelProps) {\r\n return \r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport React from 'react'\r\n\r\nexport function Tabs({ children }: React.PropsWithChildren) {\r\n return (\r\n \r\n
{children}
\r\n
\r\n )\r\n}\r\n","import classNames from 'classnames'\r\nimport React from 'react'\r\n\r\nenum BadgeSize {\r\n small = 'h-4 min-w-4', // 16px height\r\n medium = 'h-5 min-w-5', // 20px height\r\n}\r\ntype BadgeSizeType = keyof typeof BadgeSize\r\n\r\nenum BadgePadding {\r\n small = 'px-[5px] py-0', // 16px height\r\n medium = 'px-1.5 py-0.5', // 20px height\r\n}\r\ntype BadgePaddingType = keyof typeof BadgePadding\r\n\r\ntype BadgeProps = {\r\n size?: BadgeSizeType\r\n padding?: BadgePaddingType\r\n active?: boolean\r\n}\r\n\r\nexport function Badge({ size = 'medium', padding = size, active, children }: React.PropsWithChildren) {\r\n const badgePadding = BadgePadding[padding]\r\n const badgeSize = BadgeSize[size]\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n","import { link } from '../services/routing'\r\nimport { Delayed, DelayedProps } from './delayed'\r\nimport { ErrorView } from './error-view'\r\nimport { Spinner } from './spinner'\r\n\r\ntype LoadingProps = Pick\r\n\r\nexport function Loading({ delay, timeout, throwOnTimeout }: LoadingProps) {\r\n return (\r\n \r\n There’s been an error loading the application.\r\n
\r\n Please make sure your internet connection is stable and refresh the page. If the error persists, please{' '}\r\n \r\n contact support\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\nexport function LoadingScreen(props: LoadingProps) {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nexport type NotificationContextType = ReturnType\r\n\r\nexport enum NotificationPosition {\r\n TopLeft,\r\n TopRight,\r\n BottomLeft,\r\n BottomRight,\r\n}\r\n\r\nexport interface NotificationOptions {\r\n position?: NotificationPosition\r\n inline?: boolean\r\n}\r\n\r\nexport const NotificationContext = React.createContext<{\r\n show: (element: JSX.Element, options?: NotificationOptions) => void\r\n hide: () => void\r\n}>({\r\n show: () => {},\r\n hide: () => {},\r\n})\r\n\r\nexport function useNotification() {\r\n return React.useContext(NotificationContext)\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { getVisualViewport, useVisualViewport } from '../../hooks/useVisualViewport'\r\nimport { NotificationContext, NotificationOptions, NotificationPosition } from './hooks'\r\n\r\ninterface NotificationState {\r\n element: JSX.Element\r\n options: Partial\r\n}\r\n\r\nexport function NotificationWrapper(props: React.PropsWithChildren) {\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [notification, setNotification] = React.useState(null)\r\n const { viewport, setViewport } = useVisualViewport({ enabled: !!notification })\r\n\r\n const context = React.useRef({\r\n show: (element: JSX.Element, options: Partial = {}) => {\r\n setViewport(() => getVisualViewport(window.visualViewport))\r\n setNotification({ element, options })\r\n setIsOpen(true)\r\n },\r\n hide: () => setIsOpen(false),\r\n })\r\n\r\n const positionClass = React.useMemo(() => {\r\n const { position = NotificationPosition.BottomLeft } = notification?.options ?? {}\r\n return {\r\n '[--inset-t:1rem] items-start pt-inset-top': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.TopRight,\r\n ].includes(position),\r\n '[--inset-r:1rem] justify-end landscape-secondary:pr-inset-right': [\r\n NotificationPosition.TopRight,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-b:1rem] items-end pb-inset-bottom': [\r\n NotificationPosition.BottomLeft,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-l:1rem] justify-start landscape-primary:pl-inset-left': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.BottomLeft,\r\n ].includes(position),\r\n }\r\n }, [notification?.options])\r\n\r\n const WrapperComponent = React.useMemo(\r\n () => (notification?.options.inline ? React.Fragment : Ariakit.Portal),\r\n [notification?.options.inline]\r\n )\r\n\r\n return (\r\n \r\n {props.children}\r\n {isOpen && (\r\n \r\n \r\n {notification?.element}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { NotificationContextType, useNotification } from './hooks'\r\n\r\nexport function withNotificationContext(\r\n WrappedComponent: React.ComponentType\r\n) {\r\n const displayName = WrappedComponent.displayName ?? WrappedComponent.name ?? 'Component'\r\n const WithNotificationContext = (props: Omit) => {\r\n const notification = useNotification()\r\n return \r\n }\r\n\r\n WithNotificationContext.displayName = `withNotificationContext(${displayName})`\r\n\r\n return WithNotificationContext\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { useNotification } from './hooks'\r\n\r\ninterface NotificationProps {\r\n className?: string\r\n /**\r\n * Default button text\r\n * @default Close\r\n */\r\n closeText?: string\r\n\r\n /**\r\n * Custom buttons. Overrides `closeText`\r\n */\r\n actions?: JSX.Element\r\n\r\n /**\r\n * When set, the notification will automatically close\r\n */\r\n timeoutInMs?: number\r\n}\r\n\r\nexport function Notification({\r\n className,\r\n closeText = 'Close',\r\n actions,\r\n timeoutInMs,\r\n children,\r\n}: React.PropsWithChildren) {\r\n const notification = useNotification()\r\n\r\n React.useEffect(() => {\r\n let timeoutId: number\r\n if (timeoutInMs) {\r\n timeoutId = window.setTimeout(() => {\r\n notification.hide()\r\n }, timeoutInMs)\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId)\r\n }\r\n }\r\n }, [notification, timeoutInMs])\r\n\r\n return (\r\n \r\n
{children}
\r\n
\r\n {actions ?? (\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport * as React from 'react'\r\n\r\nimport { Input, InputComponentProps } from './input'\r\nimport { Tooltip, TooltipColor, TooltipProps, TooltipTrigger } from './tooltip'\r\n\r\ninterface TooltipSettingsProps\r\n extends Pick,\r\n Pick {\r\n color?: keyof typeof TooltipColor\r\n}\r\n\r\ninterface TooltipInputProps extends InputComponentProps {\r\n /**\r\n * Optimization to turn off the tooltip functionality if the input isn’t visible on screen\r\n *\r\n * @default true\r\n */\r\n isInteractive?: boolean\r\n\r\n /**\r\n * Settings for Tooltip component and useTooltipStore\r\n */\r\n tooltipSettings?: TooltipSettingsProps\r\n}\r\n\r\nfunction TooltipInputComponent(\r\n { tooltipSettings, isInteractive = true, name, children, ...props }: React.PropsWithChildren,\r\n ref: React.ForwardedRef\r\n) {\r\n const { color, gutter, placement = 'bottom', isPointerEventsEnabled } = tooltipSettings ?? {}\r\n\r\n const input = \r\n\r\n if (!isInteractive || !children) {\r\n return input\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n )\r\n}\r\n\r\nexport const TooltipInput = React.forwardRef(TooltipInputComponent)\r\n","import React from 'react'\r\n\r\nexport function usePrevious(value: TValue) {\r\n const ref = React.useRef()\r\n\r\n React.useEffect(() => {\r\n ref.current = value\r\n }, [value])\r\n\r\n return ref.current\r\n}\r\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher')\n","/*\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * @typechecks\n */\n\n\"use strict\";\n\nvar invariant = require('./invariant');\n\nvar _lastID = 1;\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n *\n * case 'city-update':\n * FlightPriceStore.price =\n * FlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\n function Dispatcher() {\n this.$Dispatcher_callbacks = {};\n this.$Dispatcher_isPending = {};\n this.$Dispatcher_isHandled = {};\n this.$Dispatcher_isDispatching = false;\n this.$Dispatcher_pendingPayload = null;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n *\n * @param {function} callback\n * @return {string}\n */\n Dispatcher.prototype.register=function(callback) {\n var id = _prefix + _lastID++;\n this.$Dispatcher_callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n *\n * @param {string} id\n */\n Dispatcher.prototype.unregister=function(id) {\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.unregister(...): `%s` does not map to a registered callback.',\n id\n );\n delete this.$Dispatcher_callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n *\n * @param {array} ids\n */\n Dispatcher.prototype.waitFor=function(ids) {\n invariant(\n this.$Dispatcher_isDispatching,\n 'Dispatcher.waitFor(...): Must be invoked while dispatching.'\n );\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this.$Dispatcher_isPending[id]) {\n invariant(\n this.$Dispatcher_isHandled[id],\n 'Dispatcher.waitFor(...): Circular dependency detected while ' +\n 'waiting for `%s`.',\n id\n );\n continue;\n }\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.',\n id\n );\n this.$Dispatcher_invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n *\n * @param {object} payload\n */\n Dispatcher.prototype.dispatch=function(payload) {\n invariant(\n !this.$Dispatcher_isDispatching,\n 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.'\n );\n this.$Dispatcher_startDispatching(payload);\n try {\n for (var id in this.$Dispatcher_callbacks) {\n if (this.$Dispatcher_isPending[id]) {\n continue;\n }\n this.$Dispatcher_invokeCallback(id);\n }\n } finally {\n this.$Dispatcher_stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n *\n * @return {boolean}\n */\n Dispatcher.prototype.isDispatching=function() {\n return this.$Dispatcher_isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @param {string} id\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_invokeCallback=function(id) {\n this.$Dispatcher_isPending[id] = true;\n this.$Dispatcher_callbacks[id](this.$Dispatcher_pendingPayload);\n this.$Dispatcher_isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @param {object} payload\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_startDispatching=function(payload) {\n for (var id in this.$Dispatcher_callbacks) {\n this.$Dispatcher_isPending[id] = false;\n this.$Dispatcher_isHandled[id] = false;\n }\n this.$Dispatcher_pendingPayload = payload;\n this.$Dispatcher_isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_stopDispatching=function() {\n this.$Dispatcher_pendingPayload = null;\n this.$Dispatcher_isDispatching = false;\n };\n\n\nmodule.exports = Dispatcher;\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (false) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Module dependencies\n */\n\nvar debug = require('debug')('jsonp');\n\n/**\n * Module exports.\n */\n\nmodule.exports = jsonp;\n\n/**\n * Callback index.\n */\n\nvar count = 0;\n\n/**\n * Noop function.\n */\n\nfunction noop(){}\n\n/**\n * JSONP handler\n *\n * Options:\n * - param {String} qs parameter (`callback`)\n * - prefix {String} qs parameter (`__jp`)\n * - name {String} qs parameter (`prefix` + incr)\n * - timeout {Number} how long after a timeout error is emitted (`60000`)\n *\n * @param {String} url\n * @param {Object|Function} optional options / callback\n * @param {Function} optional callback\n */\n\nfunction jsonp(url, opts, fn){\n if ('function' == typeof opts) {\n fn = opts;\n opts = {};\n }\n if (!opts) opts = {};\n\n var prefix = opts.prefix || '__jp';\n\n // use the callback name that was passed if one was provided.\n // otherwise generate a unique name by incrementing our counter.\n var id = opts.name || (prefix + (count++));\n\n var param = opts.param || 'callback';\n var timeout = null != opts.timeout ? opts.timeout : 60000;\n var enc = encodeURIComponent;\n var target = document.getElementsByTagName('script')[0] || document.head;\n var script;\n var timer;\n\n\n if (timeout) {\n timer = setTimeout(function(){\n cleanup();\n if (fn) fn(new Error('Timeout'));\n }, timeout);\n }\n\n function cleanup(){\n if (script.parentNode) script.parentNode.removeChild(script);\n window[id] = noop;\n if (timer) clearTimeout(timer);\n }\n\n function cancel(){\n if (window[id]) {\n cleanup();\n }\n }\n\n window[id] = function(data){\n debug('jsonp got', data);\n cleanup();\n if (fn) fn(null, data);\n };\n\n // add qs component\n url += (~url.indexOf('?') ? '&' : '?') + param + '=' + enc(id);\n url = url.replace('?&', '?');\n\n debug('jsonp req \"%s\"', url);\n\n // create script\n script = document.createElement('script');\n script.src = url;\n target.parentNode.insertBefore(script, target);\n\n return cancel;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n if (!(obj instanceof Object && !Array.isArray(obj))) {\n throw new Error('keyMirror(...): Argument must be an object.');\n }\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n","/**\n * React Router DOM v6.16.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 { UNSAFE_mapRouteProperties, Router, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, UNSAFE_DataRouterStateContext, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, unstable_useBlocker, UNSAFE_DataRouterContext } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, RouterProvider, 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, resolvePath, unstable_useBlocker, useActionData, useAsyncError, useAsyncValue, 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 } 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