{"version":3,"file":"chart-events.29554a52.js","mappings":"4sCAQO,SAASA,EAA6BC,GAKK,IALJ,MAC5CC,EAAQC,EAAAA,GAAMC,MAAK,MACnBC,EAAQC,EAAAA,qBAAqBC,QAAO,MACpCC,EAAK,SACLC,GAAW,GACmCR,EAC9C,MAAM,YAAES,EAAW,YAAEC,EAAW,UAAEC,EAAS,SAAEC,IAAaC,EAAAA,EAAAA,0BAAyB,CACjFZ,QACAG,QACAU,QAAQC,EAAAA,EAAAA,yBAAwBP,EAAW,SAAW,UAMxD,MAAO,mHAIMD,qBACCA,2GAGoDE,YAAsBA,sEAC5BE,wEACED,yIAC6BE,uBAG7F,CC7BO,MAAMI,EAAsBC,OAAOC,OAAO,CAC/C,CAACC,EAAAA,GAAoBC,OCDhB,SAAoCpB,GAIjB,IAJkB,MAC1CC,EAAQC,EAAAA,GAAMC,MAAK,MACnBC,EAAQC,EAAAA,qBAAqBC,QAAO,MACpCC,GACsBP,EACtB,MAAM,YAAES,EAAW,YAAEC,EAAW,UAAEC,EAAS,SAAEC,IAAaC,EAAAA,EAAAA,0BAAyB,CACjFZ,QACAG,QACAU,QAAQC,EAAAA,EAAAA,yBAAwB,YAMlC,MAAO,mHAIMR,qBACCA,8GAGuDE,YAAsBA,sEAC/BE,wEACED,i1BAIhDE,8BAIhB,ED9BE,CAACO,EAAAA,GAAoBE,WEFhB,SAAwCrB,GAIrB,IAJsB,MAC9CC,EAAQC,EAAAA,GAAMC,MAAK,MACnBC,EAAQC,EAAAA,qBAAqBC,QAAO,MACpCC,GACsBP,EACtB,MAAM,YAAES,EAAW,YAAEC,EAAW,UAAEC,EAAS,SAAEC,IAAaC,EAAAA,EAAAA,0BAAyB,CACjFZ,QACAG,QACAU,QAAQC,EAAAA,EAAAA,yBAAwB,UAMlC,MAAO,mHAIMR,qBACCA,8GAGuDE,YAAsBA,sEAC/BE,wEACED,6ZAIhDE,8BAIhB,EF7BE,CAACO,EAAAA,GAAoBG,kBGHhB,SAA+CtB,GAI5B,IAJ6B,MACrDC,EAAQC,EAAAA,GAAMC,MAAK,MACnBC,EAAQC,EAAAA,qBAAqBC,QAAO,MACpCC,GACsBP,EACtB,MAAM,YAAES,EAAW,YAAEC,EAAW,UAAEC,EAAS,SAAEC,IAAaC,EAAAA,EAAAA,0BAAyB,CACjFZ,QACAG,QACAU,QAAQC,EAAAA,EAAAA,yBAAwB,WAMlC,MAAO,mHAIMR,qBACCA,qOAKEE,qBACFA,oMAKAE,uBACED,4GAE2EE,uBAG7F,EHhCE,CAACO,EAAAA,GAAoBI,kBIJhB,SAA+CvB,GAI5B,IAJ6B,MACrDC,EAAQC,EAAAA,GAAMC,MAAK,MACnBC,EAAQC,EAAAA,qBAAqBC,QAAO,MACpCC,GACsBP,EACtB,MAAM,YAAES,EAAW,YAAEC,EAAW,UAAEC,EAAS,SAAEC,IAAaC,EAAAA,EAAAA,0BAAyB,CACjFZ,QACAG,QACAU,QAAQC,EAAAA,EAAAA,yBAAwB,SAMlC,MAAO,mHAIMR,qBACCA,8NAKEE,qBACFA,uMAKAE,uBACED,4GAE2EE,uBAG7F,EJ/BE,CAACO,EAAAA,GAAoBK,iBKVhB,SAA+CC,GACpD,OAAO1B,EAA8B,IAAK0B,EAAMjB,UAAU,GAC5D,ELSE,CAACW,EAAAA,GAAoBO,gBMXhB,SAA8CD,GACnD,OAAO1B,EAA8B,IAAK0B,EAAMjB,UAAU,GAC5D,I,2DCCO,MAAMmB,EAA6BC,IACxC,MAAMC,EAAgBb,EAAoBY,EAAME,WAAWF,GAE3D,OAAOG,EAAAA,EAAAA,KAAA,QAAMC,wBAAyB,CAAEC,OAAQJ,IAAwB,E,uBCHnE,SAASK,EAAyBlC,GAA0C,IAAzC,KAAEmC,GAAqCnC,EAC/E,OACE+B,EAAAA,EAAAA,KAAA,MAAAK,SACGD,EAAKE,KAAI,CAAAC,EAAsCC,KAAK,IAA1C,MAAEC,EAAK,UAAEC,EAAS,QAAEC,EAAO,KAAEC,GAAML,EAAA,OAC5CP,EAAAA,EAAAA,KAAA,MAA8BW,QAASA,EAAQN,UAC7CL,EAAAA,EAAAA,KAACa,EAAAA,IAAS,CACRC,GAAIF,EAAO,SAAMG,EACjBH,KAAMA,EACNI,KAAK,QACLN,UAAWO,IACT,CACE,yBAAoC,IAAVT,EAC1B,oCAAqCE,GAAuB,IAAVF,GAEpDE,GACAL,SAEDI,KAbI,GAAGD,KAASC,IAehB,KAIb,CCdO,SAASS,EAAiCjD,GAQ9C,IAR+C,UAChD8B,EAAS,QACToB,EAAO,MACPjD,GAKDD,EACC,MAAMmC,EAAOgB,EAAAA,SAAc,KACzB,MAAMC,EAAmC,CACvC,CAAC,CAAEZ,MAAO,WAAa,CAAEA,OAAOa,EAAAA,EAAAA,uBAAsBH,EAAQI,kBAchE,OAZIJ,EAAQK,SAAW,GACrBH,EAAUI,KAAK,CACb,CAAEhB,MAAO,UACT,CAAEA,OAAOiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAOU,EAAQK,WAAad,UAAW,kBAGpES,EAAQQ,QAAU,GACpBN,EAAUI,KAAK,CACb,CAAEhB,MAAO,WACT,CAAEA,OAAOiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAOU,EAAQQ,UAAYjB,UAAW,kBAGhEW,CAAS,GACf,CAACF,IAEJ,OACES,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAxB,SAAA,EACEuB,EAAAA,EAAAA,MAAA,OAAKlB,UAAU,wBAAuBL,SAAA,CACnCT,EAA0B,CACzB1B,MAAOA,EACPG,MAAOC,EAAAA,qBAAqBC,QAC5BC,MAAOsD,EAAAA,GACP/B,cACE,KACJC,EAAAA,EAAAA,KAAC+B,EAAAA,IAAO,CAACC,MAAO,EAAGtB,UAAU,iBAAgBL,SAC1C4B,EAAAA,GAAiBlC,SAGtBC,EAAAA,EAAAA,KAAA,SAAAK,UACEL,EAAAA,EAAAA,KAAA,SAAAK,SACGD,EAAKE,KAAI,CAAC4B,EAAM1B,KACfR,EAAAA,EAAAA,KAACG,EAAyB,CAACC,KAAM8B,GAAW,GAAG1B,KAAS0B,EAAK,cAMzE,C,eChDA,MAAMC,EAA0B,qCAC1BC,EAA0B,iCAEhC,SAASC,EAAyBC,GAChC,MAAMC,EAAeD,EAAgBE,cACrC,GAAID,EAAaE,SAAS,KAAM,CAC9B,MAAOC,EAAMC,GAAWJ,EAAaK,MAAM,KAC3C,MAAO,GAAGF,MAASC,GACrB,CACA,GAAIJ,EAAaE,SAAS,KAAM,CAC9B,MAAOC,EAAMG,GAAYN,EAAaK,MAAM,KAC5C,MAAO,GAAGF,MAASG,GACrB,CACA,OAAOP,CACT,CAEA,SAASQ,EAAsBrC,EAAesC,GAC5C,GAAmB,IAAfA,EACF,MAAO,GAET,MAAMC,EAAWvC,EAAQsC,EAAc,IACjCE,EAAeC,MAAMF,GAAW,EAAIG,KAAKC,IAAIJ,GAEnD,MAAO,KAAItB,EAAAA,EAAAA,mBAAkB,CAC3BjB,MAAOwC,EACPI,iBAAkB,OAEtB,CAEO,SAASC,EAAgCrF,GAQ7C,IAR8C,UAC/C8B,EAAS,QACToB,EAAO,MACPjD,GAKDD,EACC,MAAMsF,EAAYC,OAAOC,eAAeC,eAClCtD,EAAOgB,EAAAA,SAAc,KACzB,MAAMC,EAAmC,CACvC,CACE,CAAEZ,MAAO,iBACT,CACEA,OAAOa,EAAAA,EAAAA,uBAAsBH,EAAQI,eAAe,KAGxD,CACE,CAAEd,MAAO,iBACT,CACEA,MAAO4B,EAAyBlB,EAAQoB,gBAG5C,CACE,CAAE9B,MAAO,iBACT,CACEA,OAAOa,EAAAA,EAAAA,uBAAsBH,EAAQwC,eAAe,EAAO,CACzDC,MAAO,QACPC,SAAK9C,OAqBb,QAf0BA,IAAtBI,EAAQ2C,gBAAmD/C,IAAxBI,EAAQ4C,aAC7C1C,EAAUI,KAAK,CAAC,CAAEhB,MAAO,MAAOC,UAAW,2BAEnBK,IAAtBI,EAAQ2C,WACVzC,EAAUI,KAAK,CACb,CAAEhB,MAAO,YACT,CAAEA,OAAOiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAOU,EAAQ2C,YAAcpD,UAAW,uBAG7CK,IAAxBI,EAAQ4C,aACV1C,EAAUI,KAAK,CACb,CAAEhB,MAAO,YACT,CAAEA,OAAOiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAOU,EAAQ4C,cAAgBrD,UAAW,uBAGjDK,IAAtBI,EAAQ2C,gBAAmD/C,IAAxBI,EAAQ4C,YAA2B,CACxE,MAAMC,EAAc7C,EAAQ2C,UAAY3C,EAAQ4C,YAC1CE,EAAmBD,EAAc,EAAI5B,EAA0BD,EAC/D+B,EAAkBpB,EAAsBkB,EAAa7C,EAAQ4C,aAEnE1C,EAAUI,KAAK,CACb,CAAEhB,MAAO,WAAYC,UAAWuD,GAChC,CACExD,MAAO,IAAGiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAOuD,OAAkBE,IACvDxD,UAAW,gBAAgBuD,MAGjC,CAEA,QAAkClD,IAA9BI,EAAQgD,mBAAmChD,EAAQ2C,YAAc3C,EAAQgD,kBAG3E,GAFA9C,EAAUI,KAAK,CAAC,CAAEhB,MAAO,aAAcC,UAAW,sBAE9C6C,GAGF,GAFAlC,EAAUI,KAAK,CAAC,CAAEhB,MAAO,YAAc,CAAEA,OAAOiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAOU,EAAQgD,4BAE/CpD,IAAhCI,EAAQiD,oBAAmC,CAC7C,MAAMC,EAAsBlD,EAAQgD,kBAAoBhD,EAAQiD,oBAC1DE,EAA2BD,EAAsB,EAAIjC,EAA0BD,EAC/E+B,EAAkBpB,EAAsBuB,EAAqBlD,EAAQiD,qBAE3E/C,EAAUI,KACR,CAAC,CAAEhB,MAAO,YAAc,CAAEA,OAAOiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAOU,EAAQiD,wBACpE,CACE,CAAE3D,MAAO,WAAYC,UAAW4D,GAChC,CACE7D,MAAO,IAAGiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAO4D,OAA0BH,IAC/DxD,UAAW,gBAAgB4D,MAInC,OAEAjD,EAAUI,KAAK,CACb,CACEhB,MAAO,oBACPC,UAAW,gGACXC,QAAS,EACTC,KAAM,gBAAe2D,EAAAA,EAAAA,KAAkB,CACrCC,WAAY,SACZC,WAAY,SACZC,aAAc,mCA4BxB,QArB4B3D,IAAxBI,EAAQwD,kBAAuD5D,IAA1BI,EAAQyD,eAC/CvD,EAAUI,KAAK,CAAC,CAAEhB,MAAO,UAAWC,UAAW,2BAErBK,IAAxBI,EAAQwD,aACVtD,EAAUI,KAAK,CACb,CAAEhB,MAAO,YACT,CACEA,OAAOiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAOU,EAAQwD,YAAaE,cAAeC,EAAAA,GAAUC,UAChFrE,UAAW,uBAIaK,IAA1BI,EAAQyD,eACVvD,EAAUI,KAAK,CACb,CAAEhB,MAAO,YACT,CACEA,OAAOiB,EAAAA,EAAAA,mBAAkB,CAAEjB,MAAOU,EAAQyD,cAAeC,cAAeC,EAAAA,GAAUC,UAClFrE,UAAW,uBAIWK,IAAxBI,EAAQwD,kBAAuD5D,IAA1BI,EAAQyD,cAA6B,CAC5E,MAAMI,EAAkB7D,EAAQwD,YAAcxD,EAAQyD,cAChDK,EAAuBD,EAAkB,EAAI5C,EAA0BD,EACvE+B,EAAkBpB,EAAsBkC,EAAiB7D,EAAQyD,eAEvEvD,EAAUI,KAAK,CACb,CAAEhB,MAAO,WAAYC,UAAWuE,GAChC,CACExE,MAAO,IAAGiB,EAAAA,EAAAA,mBAAkB,CAC1BjB,MAAOuE,EACPH,cAAeC,EAAAA,GAAUC,aACrBb,IACNxD,UAAW,gBAAgBuE,MAGjC,CAEA,OAAO5D,CAAS,GACf,CAACF,EAASoC,IAEb,OACE3B,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAxB,SAAA,EACEuB,EAAAA,EAAAA,MAAA,OAAKlB,UAAU,wBAAuBL,SAAA,CACnCT,EAA0B,CACzB1B,MAAOA,EACPG,MAAOC,EAAAA,qBAAqBC,QAC5BC,MAAOsD,EAAAA,GACP/B,cACE,KACJC,EAAAA,EAAAA,KAAC+B,EAAAA,IAAO,CAACC,MAAO,EAAGtB,UAAU,iBAAgBL,SAC1C4B,EAAAA,GAAiBlC,SAGtBC,EAAAA,EAAAA,KAAA,SAAAK,UACEL,EAAAA,EAAAA,KAAA,SAAAK,SACGD,EAAKE,KAAI,CAAC4B,EAAM1B,KACfR,EAAAA,EAAAA,KAACG,EAAyB,CAACC,KAAM8B,GAAW,GAAG1B,KAAS0B,EAAK,cAMzE,CC1MO,SAASgD,EAA6BjH,GAQ1C,IAR2C,UAC5C8B,EAAS,QACToB,EAAO,MACPjD,GAKDD,EACC,OACE2D,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAAxB,SAAA,EACEuB,EAAAA,EAAAA,MAAA,OAAKlB,UAAU,wBAAuBL,SAAA,CACnCT,EAA0B,CACzB1B,MAAOA,EACPG,MAAOC,EAAAA,qBAAqBC,QAC5BC,MAAOsD,EAAAA,GACP/B,cACE,KACJC,EAAAA,EAAAA,KAAC+B,EAAAA,IAAO,CACNC,MAAO,EACPtB,UAAU,iBAAgBL,SAC1B,GAAG4B,EAAAA,GAAiBlC,OAAeoB,EAAQgE,cAAchE,EAAQiE,iBAErEpF,EAAAA,EAAAA,KAAA,SAAAK,UACEL,EAAAA,EAAAA,KAAA,SAAAK,UACEL,EAAAA,EAAAA,KAAA,MAAAK,UACEL,EAAAA,EAAAA,KAAA,MAAAK,UACEL,EAAAA,EAAAA,KAACa,EAAAA,IAAS,CAACG,KAAK,QAAOX,UAAEiB,EAAAA,EAAAA,uBAAsBH,EAAQI,2BAOrE,CC5BO,SAAS8D,EAAwBpH,GAA0C,IAAzC,UAAE8B,EAAS,KAAEK,EAAI,MAAElC,GAAoBD,EAC9E,OAAQ8B,GACN,KAAKX,EAAAA,GAAoBC,MACvB,OAAOW,EAAAA,EAAAA,KAACkF,EAA6B,CAACnF,UAAWA,EAAWoB,QAASf,EAAgBlC,MAAOA,IAC9F,KAAKkB,EAAAA,GAAoBE,UACvB,OAAOU,EAAAA,EAAAA,KAACkB,EAAiC,CAACnB,UAAWA,EAAWoB,QAASf,EAAoBlC,MAAOA,IACtG,KAAKkB,EAAAA,GAAoBG,iBACzB,KAAKH,EAAAA,GAAoBI,iBACzB,KAAKJ,EAAAA,GAAoBO,eACzB,KAAKP,EAAAA,GAAoBK,gBACvB,OAAOO,EAAAA,EAAAA,KAACsD,EAAgC,CAACvD,UAAWA,EAAWoB,QAASf,EAAmBlC,MAAOA,IACpG,QACE,OAAO,KAEb,C","sources":["webpack://@finviz/website/../charts/app/controllers/chart-events/badges/earnings.ts","webpack://@finviz/website/../charts/app/controllers/chart-events/badges/chart-badges-svg-by-type.ts","webpack://@finviz/website/../charts/app/controllers/chart-events/badges/split.ts","webpack://@finviz/website/../charts/app/controllers/chart-events/badges/dividends.ts","webpack://@finviz/website/../charts/app/controllers/chart-events/badges/earnings-positive.ts","webpack://@finviz/website/../charts/app/controllers/chart-events/badges/earnings-negative.ts","webpack://@finviz/website/../charts/app/controllers/chart-events/badges/earnings-neutral.ts","webpack://@finviz/website/../charts/app/controllers/chart-events/badges/earnings-future.ts","webpack://@finviz/website/../charts/app/controllers/chart-events/badges/get-chart-event-badge-element.tsx","webpack://@finviz/website/../charts/app/controllers/chart-events/chart-event-popover/chart-event-popover-table-row.tsx","webpack://@finviz/website/../charts/app/controllers/chart-events/chart-event-popover/dividends-popover-content.tsx","webpack://@finviz/website/../charts/app/controllers/chart-events/chart-event-popover/earnings-popover-content.tsx","webpack://@finviz/website/../charts/app/controllers/chart-events/chart-event-popover/split-popover-content.tsx","webpack://@finviz/website/../charts/app/controllers/chart-events/chart-event-popover/chart-event-popover-content.tsx"],"sourcesContent":["import { Theme } from '../../../../types/shared'\r\nimport {\r\n ChartEventBadgeState,\r\n IChartEventBadgeProps,\r\n getChartEventBadgeColors,\r\n getChartEventBageColors,\r\n} from '../../../utils/chart-events-utils'\r\n\r\nexport function getChartEventEarningSvgString({\r\n theme = Theme.light,\r\n state = ChartEventBadgeState.default,\r\n width,\r\n isFuture = false,\r\n}: IChartEventBadgeProps & { isFuture: boolean }) {\r\n const { outerStroke, innerStroke, innerFill, textFill } = getChartEventBadgeColors({\r\n theme,\r\n state,\r\n colors: getChartEventBageColors(isFuture ? 'purple' : 'gray'),\r\n })\r\n\r\n // browsers have issue rendering non-straight paths when one have same edge as other,\r\n // outer stroke line edge is same as inner fill edge and when browser rasterize diagonal line it breaks it down to pixels with variable opacity/color\r\n // but if there aren't opacity pixels on same place render is correct, due that adding fill solve incorrect color of colliding opacity pixels\r\n return `\r\n \r\n \r\n \r\n \r\n \r\n \r\n `\r\n}\r\n","import { ChartEventBadgeType } from '../../../constants/common'\r\nimport { getChartEventDividendsSvgString } from './dividends'\r\nimport { getChartEventEarningsFutureSvgString } from './earnings-future'\r\nimport { getChartEventEarningsNegativeSvgString } from './earnings-negative'\r\nimport { getChartEventEarningsNeutralSvgString } from './earnings-neutral'\r\nimport { getChartEventEarningsPositiveSvgString } from './earnings-positive'\r\nimport { getChartEventSplitSvgString } from './split'\r\n\r\nexport const chartBadgeSvgByType = Object.freeze({\r\n [ChartEventBadgeType.Split]: getChartEventSplitSvgString,\r\n [ChartEventBadgeType.Dividends]: getChartEventDividendsSvgString,\r\n [ChartEventBadgeType.EarningsPositive]: getChartEventEarningsPositiveSvgString,\r\n [ChartEventBadgeType.EarningsNegative]: getChartEventEarningsNegativeSvgString,\r\n [ChartEventBadgeType.EarningsNeutral]: getChartEventEarningsNeutralSvgString,\r\n [ChartEventBadgeType.EarningsFuture]: getChartEventEarningsFutureSvgString,\r\n})\r\n","import { Theme } from '../../../../types/shared'\r\nimport {\r\n ChartEventBadgeState,\r\n IChartEventBadgeProps,\r\n getChartEventBadgeColors,\r\n getChartEventBageColors,\r\n} from '../../../utils/chart-events-utils'\r\n\r\nexport function getChartEventSplitSvgString({\r\n theme = Theme.light,\r\n state = ChartEventBadgeState.default,\r\n width,\r\n}: IChartEventBadgeProps) {\r\n const { outerStroke, innerStroke, innerFill, textFill } = getChartEventBadgeColors({\r\n theme,\r\n state,\r\n colors: getChartEventBageColors('violet'),\r\n })\r\n\r\n // browsers have issue rendering non-straight paths when one have same edge as other,\r\n // outer stroke line edge is same as inner fill edge and when browser rasterize diagonal line it breaks it down to pixels with variable opacity/color\r\n // but if there aren't opacity pixels on same place render is correct, due that adding fill solve incorrect color of colliding opacity pixels\r\n return `\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n `\r\n}\r\n","import { Theme } from '../../../../types/shared'\r\nimport {\r\n ChartEventBadgeState,\r\n IChartEventBadgeProps,\r\n getChartEventBadgeColors,\r\n getChartEventBageColors,\r\n} from '../../../utils/chart-events-utils'\r\n\r\nexport function getChartEventDividendsSvgString({\r\n theme = Theme.light,\r\n state = ChartEventBadgeState.default,\r\n width,\r\n}: IChartEventBadgeProps) {\r\n const { outerStroke, innerStroke, innerFill, textFill } = getChartEventBadgeColors({\r\n theme,\r\n state,\r\n colors: getChartEventBageColors('blue'),\r\n })\r\n\r\n // browsers have issue rendering non-straight paths when one have same edge as other,\r\n // outer stroke line edge is same as inner fill edge and when browser rasterize diagonal line it breaks it down to pixels with variable opacity/color\r\n // but if there aren't opacity pixels on same place render is correct, due that adding fill solve incorrect color of colliding opacity pixels\r\n return `\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n `\r\n}\r\n","import { Theme } from '../../../../types/shared'\r\nimport {\r\n ChartEventBadgeState,\r\n IChartEventBadgeProps,\r\n getChartEventBadgeColors,\r\n getChartEventBageColors,\r\n} from '../../../utils/chart-events-utils'\r\n\r\nexport function getChartEventEarningsPositiveSvgString({\r\n theme = Theme.light,\r\n state = ChartEventBadgeState.default,\r\n width,\r\n}: IChartEventBadgeProps) {\r\n const { outerStroke, innerStroke, innerFill, textFill } = getChartEventBadgeColors({\r\n theme,\r\n state,\r\n colors: getChartEventBageColors('green'),\r\n })\r\n\r\n // browsers have issue rendering non-straight paths when one have same edge as other,\r\n // outer stroke line edge is same as inner fill edge and when browser rasterize diagonal line it breaks it down to pixels with variable opacity/color\r\n // but if there aren't opacity pixels on same place render is correct, due that adding fill solve incorrect color of colliding opacity pixels\r\n return `\r\n \r\n \r\n \r\n \r\n \r\n `\r\n}\r\n","import { Theme } from '../../../../types/shared'\r\nimport {\r\n ChartEventBadgeState,\r\n IChartEventBadgeProps,\r\n getChartEventBadgeColors,\r\n getChartEventBageColors,\r\n} from '../../../utils/chart-events-utils'\r\n\r\nexport function getChartEventEarningsNegativeSvgString({\r\n theme = Theme.light,\r\n state = ChartEventBadgeState.default,\r\n width,\r\n}: IChartEventBadgeProps) {\r\n const { outerStroke, innerStroke, innerFill, textFill } = getChartEventBadgeColors({\r\n theme,\r\n state,\r\n colors: getChartEventBageColors('red'),\r\n })\r\n\r\n // browsers have issue rendering non-straight paths when one have same edge as other,\r\n // outer stroke line edge is same as inner fill edge and when browser rasterize diagonal line it breaks it down to pixels with variable opacity/color\r\n // but if there aren't opacity pixels on same place render is correct, due that adding fill solve incorrect color of colliding opacity pixels\r\n return `\r\n \r\n \r\n \r\n \r\n \r\n `\r\n}\r\n","import { IChartEventBadgeProps } from '../../../utils/chart-events-utils'\r\nimport { getChartEventEarningSvgString } from './earnings'\r\n\r\nexport function getChartEventEarningsNeutralSvgString(args: IChartEventBadgeProps) {\r\n return getChartEventEarningSvgString({ ...args, isFuture: false })\r\n}\r\n","import { IChartEventBadgeProps } from '../../../utils/chart-events-utils'\r\nimport { getChartEventEarningSvgString } from './earnings'\r\n\r\nexport function getChartEventEarningsFutureSvgString(args: IChartEventBadgeProps) {\r\n return getChartEventEarningSvgString({ ...args, isFuture: true })\r\n}\r\n","import React from 'react'\r\n\r\nimport { ChartEventBadgeType } from '../../../constants/common'\r\nimport { IChartEventBadgeProps } from '../../../utils/chart-events-utils'\r\nimport { chartBadgeSvgByType } from './chart-badges-svg-by-type'\r\n\r\nexport const getChartEventBadgeElement = (props: IChartEventBadgeProps & { badgeType: ChartEventBadgeType }) => {\r\n const svgHtmlString = chartBadgeSvgByType[props.badgeType](props)\r\n\r\n return \r\n}\r\n","import { Paragraph } from '@finviz/website'\r\nimport classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nexport type PopoverTableRowData = Array<{ value: string | number; className?: string; colSpan?: number; href?: string }>\r\n\r\nexport function ChartEventPopoverTableRow({ data }: { data: PopoverTableRowData }) {\r\n return (\r\n \r\n {data.map(({ value, className, colSpan, href }, index) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n ))}\r\n \r\n )\r\n}\r\n","import { Heading } from '@finviz/website'\r\nimport React from 'react'\r\n\r\nimport { Theme } from '../../../../types/shared'\r\nimport { ChartEventBadgeType, ChartEventLabels } from '../../../constants/common'\r\nimport { CHART_EVENT_BADGE_SIZE } from '../../../models/constants'\r\nimport {\r\n ChartEventBadgeState,\r\n IDividends,\r\n getFormattedEventDate,\r\n getFormattedValue,\r\n} from '../../../utils/chart-events-utils'\r\nimport { getChartEventBadgeElement } from '../badges/get-chart-event-badge-element'\r\nimport { ChartEventPopoverTableRow, PopoverTableRowData } from './chart-event-popover-table-row'\r\n\r\nexport function ChartEventDividendsPopoverContent({\r\n badgeType,\r\n rawData,\r\n theme,\r\n}: {\r\n badgeType: ChartEventBadgeType\r\n rawData: IDividends\r\n theme: Theme\r\n}) {\r\n const data = React.useMemo(() => {\r\n const dataArray: PopoverTableRowData[] = [\r\n [{ value: 'Ex-date' }, { value: getFormattedEventDate(rawData.dateTimestamp) }],\r\n ]\r\n if (rawData.ordinary > 0) {\r\n dataArray.push([\r\n { value: 'Amount' },\r\n { value: getFormattedValue({ value: rawData.ordinary }), className: 'tabular-nums' },\r\n ])\r\n }\r\n if (rawData.special > 0) {\r\n dataArray.push([\r\n { value: 'Special' },\r\n { value: getFormattedValue({ value: rawData.special }), className: 'tabular-nums' },\r\n ])\r\n }\r\n return dataArray\r\n }, [rawData])\r\n\r\n return (\r\n <>\r\n
\r\n {getChartEventBadgeElement({\r\n theme: theme,\r\n state: ChartEventBadgeState.default,\r\n width: CHART_EVENT_BADGE_SIZE,\r\n badgeType,\r\n })}{' '}\r\n \r\n {ChartEventLabels[badgeType]}\r\n \r\n
\r\n \r\n \r\n {data.map((item, index) => (\r\n \r\n ))}\r\n \r\n
\r\n \r\n )\r\n}\r\n","import { Heading } from '@finviz/website'\r\nimport React from 'react'\r\n\r\nimport { Theme } from '../../../../types/shared'\r\nimport { ChartEventBadgeType, ChartEventLabels } from '../../../constants/common'\r\nimport { BigNumber } from '../../../helpers/math'\r\nimport { CHART_EVENT_BADGE_SIZE } from '../../../models/constants'\r\nimport {\r\n ChartEventBadgeState,\r\n IEarnings,\r\n getFormattedEventDate,\r\n getFormattedValue,\r\n} from '../../../utils/chart-events-utils'\r\nimport { encodeQueryString } from '../../../utils/query_string'\r\nimport { getChartEventBadgeElement } from '../badges/get-chart-event-badge-element'\r\nimport { ChartEventPopoverTableRow, PopoverTableRowData } from './chart-event-popover-table-row'\r\n\r\nconst SURPRISE_POSITIVE_COLOR = 'text-green-500 dark:text-green-400'\r\nconst SURPRISE_NEGATIVE_COLOR = 'text-red-500 dark:text-red-400'\r\n\r\nfunction getFormattedFiscalPeriod(fiscalPeriodRaw: string) {\r\n const fiscalPeriod = fiscalPeriodRaw.toLowerCase()\r\n if (fiscalPeriod.includes('q')) {\r\n const [year, quarter] = fiscalPeriod.split('q')\r\n return `${year} Q${quarter}`\r\n }\r\n if (fiscalPeriod.includes('s')) {\r\n const [year, semester] = fiscalPeriod.split('s')\r\n return `${year} S${semester}`\r\n }\r\n return fiscalPeriodRaw\r\n}\r\n\r\nfunction getPercentValueString(value: number, totalValue: number) {\r\n if (totalValue === 0) {\r\n return ''\r\n }\r\n const percent = (value / totalValue) * 100\r\n const percentValue = isNaN(percent) ? 0 : Math.abs(percent)\r\n\r\n return `(${getFormattedValue({\r\n value: percentValue,\r\n maxDecimalPlaces: 2,\r\n })}%)`\r\n}\r\n\r\nexport function ChartEventEarningsPopoverContent({\r\n badgeType,\r\n rawData,\r\n theme,\r\n}: {\r\n badgeType: ChartEventBadgeType\r\n rawData: IEarnings\r\n theme: Theme\r\n}) {\r\n const isPremium = window.FinvizSettings.hasUserPremium\r\n const data = React.useMemo(() => {\r\n const dataArray: PopoverTableRowData[] = [\r\n [\r\n { value: 'Earnings Date' },\r\n {\r\n value: getFormattedEventDate(rawData.dateTimestamp, true),\r\n },\r\n ],\r\n [\r\n { value: 'Fiscal Period' },\r\n {\r\n value: getFormattedFiscalPeriod(rawData.fiscalPeriod),\r\n },\r\n ],\r\n [\r\n { value: 'Period Ending' },\r\n {\r\n value: getFormattedEventDate(rawData.fiscalEndDate, false, {\r\n month: 'short',\r\n day: undefined,\r\n }),\r\n },\r\n ],\r\n ]\r\n\r\n if (rawData.epsActual !== undefined || rawData.epsEstimate !== undefined) {\r\n dataArray.push([{ value: 'EPS', className: 'font-medium pt-4' }])\r\n }\r\n if (rawData.epsActual !== undefined) {\r\n dataArray.push([\r\n { value: 'Reported' },\r\n { value: getFormattedValue({ value: rawData.epsActual }), className: 'tabular-nums' },\r\n ])\r\n }\r\n if (rawData.epsEstimate !== undefined) {\r\n dataArray.push([\r\n { value: 'Estimate' },\r\n { value: getFormattedValue({ value: rawData.epsEstimate }), className: 'tabular-nums' },\r\n ])\r\n }\r\n if (rawData.epsActual !== undefined && rawData.epsEstimate !== undefined) {\r\n const epsSurprise = rawData.epsActual - rawData.epsEstimate\r\n const epsSurpriseColor = epsSurprise < 0 ? SURPRISE_NEGATIVE_COLOR : SURPRISE_POSITIVE_COLOR\r\n const percentageValue = getPercentValueString(epsSurprise, rawData.epsEstimate)\r\n\r\n dataArray.push([\r\n { value: 'Surprise', className: epsSurpriseColor },\r\n {\r\n value: `${getFormattedValue({ value: epsSurprise })} ${percentageValue}`,\r\n className: `tabular-nums ${epsSurpriseColor}`,\r\n },\r\n ])\r\n }\r\n\r\n if (rawData.epsReportedActual !== undefined && rawData.epsActual !== rawData.epsReportedActual) {\r\n dataArray.push([{ value: 'EPS (GAAP)', className: 'font-medium pt-4' }])\r\n\r\n if (isPremium) {\r\n dataArray.push([{ value: 'Reported' }, { value: getFormattedValue({ value: rawData.epsReportedActual }) }])\r\n\r\n if (rawData.epsReportedEstimate !== undefined) {\r\n const epsReportedSurprise = rawData.epsReportedActual - rawData.epsReportedEstimate\r\n const epsReportedSurpriseColor = epsReportedSurprise < 0 ? SURPRISE_NEGATIVE_COLOR : SURPRISE_POSITIVE_COLOR\r\n const percentageValue = getPercentValueString(epsReportedSurprise, rawData.epsReportedEstimate)\r\n\r\n dataArray.push(\r\n [{ value: 'Estimate' }, { value: getFormattedValue({ value: rawData.epsReportedEstimate }) }],\r\n [\r\n { value: 'Surprise', className: epsReportedSurpriseColor },\r\n {\r\n value: `${getFormattedValue({ value: epsReportedSurprise })} ${percentageValue}`,\r\n className: `tabular-nums ${epsReportedSurpriseColor}`,\r\n },\r\n ]\r\n )\r\n }\r\n } else {\r\n dataArray.push([\r\n {\r\n value: 'Finviz*Elite only',\r\n className: 'text-gray-500 dark:text-gray-300 hover:underline hover:text-gray-600 dark:hover:text-gray-200',\r\n colSpan: 2,\r\n href: `/elite.ashx?${encodeQueryString({\r\n utm_source: 'finviz',\r\n utm_medium: 'banner',\r\n utm_campaign: 'chart-event-earnings-gaap',\r\n })}`,\r\n },\r\n ])\r\n }\r\n }\r\n\r\n if (rawData.salesActual !== undefined || rawData.salesEstimate !== undefined) {\r\n dataArray.push([{ value: 'Revenue', className: 'font-medium pt-4' }])\r\n }\r\n if (rawData.salesActual !== undefined) {\r\n dataArray.push([\r\n { value: 'Reported' },\r\n {\r\n value: getFormattedValue({ value: rawData.salesActual, bigNumberUnit: BigNumber.Million }),\r\n className: 'tabular-nums',\r\n },\r\n ])\r\n }\r\n if (rawData.salesEstimate !== undefined) {\r\n dataArray.push([\r\n { value: 'Estimate' },\r\n {\r\n value: getFormattedValue({ value: rawData.salesEstimate, bigNumberUnit: BigNumber.Million }),\r\n className: 'tabular-nums',\r\n },\r\n ])\r\n }\r\n if (rawData.salesActual !== undefined && rawData.salesEstimate !== undefined) {\r\n const revenueSurprise = rawData.salesActual - rawData.salesEstimate\r\n const revenueSurpriseColor = revenueSurprise < 0 ? SURPRISE_NEGATIVE_COLOR : SURPRISE_POSITIVE_COLOR\r\n const percentageValue = getPercentValueString(revenueSurprise, rawData.salesEstimate)\r\n\r\n dataArray.push([\r\n { value: 'Surprise', className: revenueSurpriseColor },\r\n {\r\n value: `${getFormattedValue({\r\n value: revenueSurprise,\r\n bigNumberUnit: BigNumber.Million,\r\n })} ${percentageValue}`,\r\n className: `tabular-nums ${revenueSurpriseColor}`,\r\n },\r\n ])\r\n }\r\n\r\n return dataArray\r\n }, [rawData, isPremium])\r\n\r\n return (\r\n <>\r\n
\r\n {getChartEventBadgeElement({\r\n theme: theme,\r\n state: ChartEventBadgeState.default,\r\n width: CHART_EVENT_BADGE_SIZE,\r\n badgeType,\r\n })}{' '}\r\n \r\n {ChartEventLabels[badgeType]}\r\n \r\n
\r\n \r\n \r\n {data.map((item, index) => (\r\n \r\n ))}\r\n \r\n
\r\n \r\n )\r\n}\r\n","import { Heading, Paragraph } from '@finviz/website'\r\nimport React from 'react'\r\n\r\nimport { Theme } from '../../../../types/shared'\r\nimport { ChartEventBadgeType, ChartEventLabels } from '../../../constants/common'\r\nimport { CHART_EVENT_BADGE_SIZE } from '../../../models/constants'\r\nimport { ChartEventBadgeState, ISplit, getFormattedEventDate } from '../../../utils/chart-events-utils'\r\nimport { getChartEventBadgeElement } from '../badges/get-chart-event-badge-element'\r\n\r\nexport function ChartEventSplitPopoverContent({\r\n badgeType,\r\n rawData,\r\n theme,\r\n}: {\r\n badgeType: ChartEventBadgeType\r\n rawData: ISplit\r\n theme: Theme\r\n}) {\r\n return (\r\n <>\r\n
\r\n {getChartEventBadgeElement({\r\n theme: theme,\r\n state: ChartEventBadgeState.default,\r\n width: CHART_EVENT_BADGE_SIZE,\r\n badgeType,\r\n })}{' '}\r\n {`${ChartEventLabels[badgeType]}: ${rawData.factorFrom}/${rawData.factorTo}`}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {getFormattedEventDate(rawData.dateTimestamp)}\r\n
\r\n \r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Theme } from '../../../../types/shared'\r\nimport { ChartEventBadgeType } from '../../../constants/common'\r\nimport { IDividends, IEarnings, ISplit } from '../../../utils/chart-events-utils'\r\nimport { ChartEventDividendsPopoverContent } from './dividends-popover-content'\r\nimport { ChartEventEarningsPopoverContent } from './earnings-popover-content'\r\nimport { ChartEventSplitPopoverContent } from './split-popover-content'\r\n\r\ninterface INoteDialog {\r\n badgeType: ChartEventBadgeType\r\n data: ISplit | IDividends | IEarnings\r\n theme: Theme\r\n}\r\n\r\nexport function ChartEventPopoverContent({ badgeType, data, theme }: INoteDialog) {\r\n switch (badgeType) {\r\n case ChartEventBadgeType.Split:\r\n return \r\n case ChartEventBadgeType.Dividends:\r\n return \r\n case ChartEventBadgeType.EarningsPositive:\r\n case ChartEventBadgeType.EarningsNegative:\r\n case ChartEventBadgeType.EarningsFuture:\r\n case ChartEventBadgeType.EarningsNeutral:\r\n return \r\n default:\r\n return null\r\n }\r\n}\r\n"],"names":["getChartEventEarningSvgString","_ref","theme","Theme","light","state","ChartEventBadgeState","default","width","isFuture","outerStroke","innerStroke","innerFill","textFill","getChartEventBadgeColors","colors","getChartEventBageColors","chartBadgeSvgByType","Object","freeze","ChartEventBadgeType","Split","Dividends","EarningsPositive","EarningsNegative","EarningsNeutral","args","EarningsFuture","getChartEventBadgeElement","props","svgHtmlString","badgeType","_jsx","dangerouslySetInnerHTML","__html","ChartEventPopoverTableRow","data","children","map","_ref2","index","value","className","colSpan","href","Paragraph","as","undefined","size","classnames","ChartEventDividendsPopoverContent","rawData","React","dataArray","getFormattedEventDate","dateTimestamp","ordinary","push","getFormattedValue","special","_jsxs","_Fragment","CHART_EVENT_BADGE_SIZE","Heading","level","ChartEventLabels","item","SURPRISE_POSITIVE_COLOR","SURPRISE_NEGATIVE_COLOR","getFormattedFiscalPeriod","fiscalPeriodRaw","fiscalPeriod","toLowerCase","includes","year","quarter","split","semester","getPercentValueString","totalValue","percent","percentValue","isNaN","Math","abs","maxDecimalPlaces","ChartEventEarningsPopoverContent","isPremium","window","FinvizSettings","hasUserPremium","fiscalEndDate","month","day","epsActual","epsEstimate","epsSurprise","epsSurpriseColor","percentageValue","epsReportedActual","epsReportedEstimate","epsReportedSurprise","epsReportedSurpriseColor","encodeQueryString","utm_source","utm_medium","utm_campaign","salesActual","salesEstimate","bigNumberUnit","BigNumber","Million","revenueSurprise","revenueSurpriseColor","ChartEventSplitPopoverContent","factorFrom","factorTo","ChartEventPopoverContent"],"sourceRoot":""}