{"version":3,"sources":["../src/index.ts","../src/geomVLine.tsx","../src/tooltip/Tooltip.tsx","../src/tooltip/DefaultTooltip.tsx"],"sourcesContent":["export { GeomVLine, GeomAes, GeomProps } from './geomVLine'\n","import React, {\n  useEffect,\n  useMemo,\n  SVGAttributes,\n  useRef,\n  useState,\n} from 'react'\nimport {\n  useGG,\n  themeState,\n  EventArea,\n  Aes,\n  DataValue,\n  usePageVisibility,\n} from '@graphique/graphique'\nimport { NodeGroup } from 'react-move'\nimport { useAtom } from 'jotai'\nimport { easeCubic } from 'd3-ease'\nimport { interpolate } from 'd3-interpolate'\nimport { Tooltip } from './tooltip'\n\nexport type GeomAes<Datum> = Omit<Aes<Datum>, 'x' | 'y' | 'fill' | 'size'> & {\n  x?: DataValue<Datum>\n}\n\nconst DEFAULT_TICK_SIZE = 6\n\nexport interface GeomProps<Datum> {\n  /**\n   * **data used by this Geom**\n   *\n   * This will overwrite top-level `data` passed to `GG` as it relates to mappings defined in `aes`.\n   */\n  data?: Datum[]\n  /**\n   * **functional mapping applied to `data` for this Geom**\n   *\n   * This extends the top-level `aes` passed to `GG`. Any repeated mappings defined here will take precedence within the Geom.\n   */\n  aes?: GeomAes<Datum>\n  /** attributes passed to the underlying SVG elements */\n  attr?: SVGAttributes<SVGLineElement>\n  /** should this Geom have a tooltip associated with it (_default_: `true`) */\n  showTooltip?: boolean\n  /** callback called for mousemove events on the drawing area when focusing data */\n  onDatumFocus?: (data: Datum[], index: number[]) => void\n  /** callback called for click events on the drawing area when selecting focused data */\n  onDatumSelection?: (data: Datum[], index: number[]) => void\n  /** callback called for mouseleave events on the drawing area */\n  onExit?: () => void\n  /** should elements enter/update/exit with animated transitions (_default_: `true`) */\n  isAnimated?: boolean\n}\n\nconst GeomVLine = <Datum,>({\n  data: localData,\n  aes: localAes,\n  attr,\n  showTooltip = true,\n  onDatumFocus,\n  onDatumSelection,\n  onExit,\n  isAnimated = true,\n}: GeomProps<Datum>) => {\n  const { ggState } = useGG<Datum>() || {}\n  const { data, aes, scales, copiedScales, height, margin } = ggState || {}\n\n  const geomData = localData || data\n  const geomAes = useMemo(() => {\n    if (localAes) {\n      return {\n        ...aes,\n        ...localAes,\n      }\n    }\n    return aes\n  }, [aes, localAes])\n\n  const [theme, setTheme] = useAtom(themeState)\n\n  const isVisible = usePageVisibility()\n\n  const baseAttr: SVGAttributes<SVGLineElement> = {\n    strokeOpacity: 1,\n    strokeWidth: 1.5,\n  }\n\n  const geomAttr: SVGAttributes<SVGLineElement> = {\n    ...baseAttr,\n    ...attr,\n  }\n\n  const { defaultStroke, animationDuration: duration } = theme\n\n  const [firstRender, setFirstRender] = useState(true)\n  useEffect(() => {\n    const timeout = setTimeout(() => setFirstRender(false), 0)\n    return () => clearTimeout(timeout)\n  }, [])\n\n  const bottomPos = useMemo(\n    () =>\n      height && margin\n        ? height - margin.bottom + DEFAULT_TICK_SIZE\n        : DEFAULT_TICK_SIZE,\n    [height, margin],\n  )\n\n  useEffect(() => {\n    setTheme((prev) => ({\n      ...prev,\n      geoms: {\n        ...prev.geoms,\n        vline: {\n          strokeWidth: geomAttr?.style?.strokeWidth || geomAttr?.strokeWidth,\n          strokeOpacity:\n            geomAttr?.style?.strokeOpacity || geomAttr?.strokeOpacity,\n          strokeDasharray: geomAttr?.strokeDasharray,\n          stroke: geomAttr?.stroke,\n        },\n      },\n    }))\n  }, [setTheme, attr])\n\n  const stroke = useMemo(\n    () => (d: Datum) =>\n      geomAttr.stroke ||\n      (geomAes?.stroke && copiedScales?.strokeScale\n        ? (copiedScales.strokeScale(geomAes.stroke(d) as any) as\n            | string\n            | undefined)\n        : defaultStroke),\n    [geomAes, copiedScales, geomAttr, defaultStroke],\n  )\n\n  const x = useMemo(\n    () => (d: Datum) =>\n      (scales?.xScale && geomAes?.x && scales.xScale(geomAes.x(d))) ?? 0,\n    [scales, geomAes],\n  )\n\n  const xAdj = useMemo(\n    () =>\n      scales?.xScale?.bandwidth\n        ? (scales.xScale.bandwidth() * scales.xScale.paddingInner()) / 2\n        : 0,\n    [scales],\n  )\n\n  const checkIsOutisdeDomain = useMemo(\n    () => (d: Datum) => {\n      const domain = scales?.xScale && scales.xScale.domain()\n\n      if (\n        scales.xScale?.bandwidth?.() &&\n        geomAes.x &&\n        (domain as unknown as string[]).includes(String(geomAes.x(d)))\n      ) {\n        return false\n      }\n\n      return (\n        domain &&\n        ((x(d) as number) < scales.xScale(domain[0]) ||\n          (x(d) as number) > scales.xScale(domain[1]))\n      )\n    },\n    [scales, x, geomAes],\n  )\n\n  const keyAccessor = useMemo(\n    () => (d: Datum, i: number) =>\n      geomAes?.key\n        ? geomAes.key(d)\n        : (`${geomAes?.x && geomAes.x(d)}-${geomAes?.y && geomAes.y(d)}-${\n            scales?.groupAccessor && scales.groupAccessor(d)\n          }-${i}` as string),\n    [geomAes, scales],\n  )\n\n  const groupRef = useRef<SVGGElement>(null)\n\n  return (\n    <>\n      <g ref={groupRef}>\n        {!firstRender && isVisible && (\n          <NodeGroup\n            data={[...geomData]}\n            keyAccessor={keyAccessor}\n            start={(d) => ({\n              x1: x(d) - xAdj,\n              x2: x(d) - xAdj,\n              y1: bottomPos,\n              y2: bottomPos,\n              stroke: stroke(d),\n              strokeOpacity: 0,\n            })}\n            enter={(d) => {\n              const isOutsideDomain = checkIsOutisdeDomain(d)\n              const thisStrokeOpacity = isOutsideDomain\n                ? 0\n                : geomAttr?.strokeOpacity\n\n              return {\n                x1: isAnimated ? [x(d) - xAdj] : x(d) - xAdj,\n                x2: isAnimated ? [x(d) - xAdj] : x(d) - xAdj,\n                y1: isAnimated ? [bottomPos] : bottomPos,\n                y2: isAnimated\n                  ? [(margin?.top || 0) - DEFAULT_TICK_SIZE]\n                  : (margin?.top || 0) - DEFAULT_TICK_SIZE,\n                stroke: isAnimated ? [stroke(d)] : stroke(d),\n                strokeOpacity: isAnimated\n                  ? [thisStrokeOpacity]\n                  : thisStrokeOpacity,\n                timing: { duration, ease: easeCubic },\n              }\n            }}\n            update={(d) => {\n              const isOutsideDomain = checkIsOutisdeDomain(d)\n              const thisStrokeOpacity = isOutsideDomain\n                ? 0\n                : geomAttr?.strokeOpacity\n\n              return {\n                x1: isAnimated ? [x(d) - xAdj] : x(d) - xAdj,\n                x2: isAnimated ? [x(d) - xAdj] : x(d) - xAdj,\n                y1: isAnimated ? [bottomPos] : bottomPos,\n                y2: isAnimated\n                  ? [(margin?.top || 0) - DEFAULT_TICK_SIZE]\n                  : (margin?.top || 0) - DEFAULT_TICK_SIZE,\n                stroke: isAnimated ? [stroke(d)] : stroke(d),\n                strokeOpacity: isAnimated\n                  ? [thisStrokeOpacity]\n                  : thisStrokeOpacity,\n                timing: { duration, ease: easeCubic },\n              }\n            }}\n            leave={() => ({\n              stroke: isAnimated ? ['transparent'] : 'transparent',\n              y1: isAnimated ? [bottomPos] : bottomPos,\n              y2: isAnimated ? [bottomPos] : bottomPos,\n              timing: { duration, ease: easeCubic },\n            })}\n            interpolation={(begVal, endVal) => interpolate(begVal, endVal)}\n          >\n            {(nodes) => (\n              <>\n                {nodes.map(({ state, key }) => (\n                  <line\n                    key={key}\n                    // eslint-disable-next-line react/jsx-props-no-spreading\n                    {...attr}\n                    x1={state.x1}\n                    x2={state.x2}\n                    y1={state.y1}\n                    y2={state.y2}\n                    stroke={state.stroke}\n                    strokeWidth={geomAttr?.strokeWidth}\n                    strokeOpacity={state.strokeOpacity}\n                    style={{ pointerEvents: 'none' }}\n                    data-testid=\"__gg_geom_vline\"\n                  />\n                ))}\n              </>\n            )}\n          </NodeGroup>\n        )}\n      </g>\n      {showTooltip && (\n        <>\n          <EventArea\n            data={geomData?.filter((d) => !checkIsOutisdeDomain(d))}\n            aes={geomAes}\n            x={x}\n            y={() => 0}\n            group=\"x\"\n            onDatumFocus={onDatumFocus}\n            onClick={\n              onDatumSelection\n                ? ({ d, i }: { d: Datum[]; i: number[] }) => {\n                    onDatumSelection(d, i)\n                  }\n                : undefined\n            }\n            onMouseLeave={() => {\n              if (onExit) onExit()\n            }}\n          />\n          <Tooltip aes={geomAes} />\n        </>\n      )}\n    </>\n  )\n}\n\nGeomVLine.displayName = 'GeomVLine'\nexport { GeomVLine }\n","import React, { useMemo } from 'react'\nimport { useAtom } from 'jotai'\nimport {\n  useGG,\n  tooltipState,\n  TooltipContent,\n  YTooltip,\n  Aes,\n  DataValue,\n  TooltipProps,\n} from '@graphique/graphique'\nimport { DefaultTooltip } from './DefaultTooltip'\n\ninterface Props<Datum> {\n  aes: Aes<Datum>\n  group?: DataValue<Datum>\n}\n\nexport const Tooltip = <Datum,>({ aes, group }: Props<Datum>) => {\n  const { ggState } = useGG<Datum>() || {}\n  const { id, scales, height, width } = ggState || {\n    width: 0,\n    height: 0,\n  }\n\n  const [{ datum: tooltipDatum, xFormat, yFormat, measureFormat, content }] =\n    useAtom<TooltipProps<Datum>>(tooltipState)\n\n  const datum = useMemo(() => tooltipDatum && tooltipDatum[0], [tooltipDatum])\n\n  const label = useMemo(() => {\n    const labelResolution = {\n      given: datum && aes?.label && aes.label(datum),\n      keyed: datum && aes?.key && aes.key(datum),\n    }\n\n    return labelResolution?.given ?? labelResolution?.keyed\n  }, [aes, datum])\n\n  const xScale: any = scales?.xScale\n  const yScale: any = scales?.yScale\n\n  const xAdj = useMemo(\n    () => (scales?.xScale.bandwidth ? scales?.xScale.bandwidth() / 2 : 0),\n    [scales]\n  )\n\n  const thisGroup = useMemo(\n    () => datum && group && group(datum),\n    [datum, group]\n  )\n\n  const tooltipContents: TooltipContent<Datum>[] = [\n    {\n      x: datum && aes?.x && xScale && xScale(aes.x(datum)),\n      y: datum && aes?.y && yScale && yScale(aes.y(datum)),\n      formattedX:\n        datum &&\n        aes?.x &&\n        ((xFormat ? xFormat(aes.x(datum)) : aes.x(datum)) as string),\n      formattedY:\n        datum &&\n        aes?.y &&\n        ((yFormat ? yFormat(aes.y(datum)) : aes.y(datum)) as string),\n      group: thisGroup,\n      label,\n      formattedMeasure:\n        measureFormat &&\n        (label || String(thisGroup)) &&\n        measureFormat(label || thisGroup),\n      datum: tooltipDatum,\n      containerWidth: width,\n    },\n  ]\n\n  const tooltipValue = content\n    ? tooltipDatum && <div>{content(tooltipContents)}</div>\n    : tooltipDatum && <DefaultTooltip data={tooltipContents} />\n\n  const shouldShow = tooltipDatum && tooltipContents[0].x !== undefined\n\n  return shouldShow ? (\n    <div>\n      <YTooltip\n        id={id as string}\n        left={(tooltipContents[0].x || 0) + xAdj}\n        top={-height}\n        value={tooltipValue}\n      />\n    </div>\n  ) : null\n}\n","import React from 'react'\nimport { useAtom } from 'jotai'\nimport {\n  labelsState,\n  TooltipContent,\n  TooltipContainer,\n  themeState,\n} from '@graphique/graphique'\n\ninterface Props<Datum> {\n  data: TooltipContent<Datum>[]\n}\n\nexport const DefaultTooltip = <Datum,>({ data }: Props<Datum>) => {\n  const [{ x: xLab }] = useAtom(labelsState)\n  const [{ tooltip }] = useAtom(themeState)\n\n  return data ? (\n    <TooltipContainer>\n      {data.map(d => (\n        <div key={`group-tooltip-${d.label ?? ''}`}>\n          <div\n            style={{\n              marginTop: 4,\n              marginBottom: 4,\n            }}\n          >\n            {d.label && (\n              <>\n                {d.mark}\n                <div\n                  style={{\n                    display: 'flex',\n                    alignItems: 'flex-end',\n                    fontWeight: 500,\n                  }}\n                >\n                  <div style={{ marginBottom: 4 }}>\n                    <span\n                      style={{\n                        fontSize:\n                          tooltip?.groupLabel?.fontSize || tooltip?.font?.size,\n                      }}\n                    >\n                      {d.formattedMeasure}\n                    </span>\n                  </div>\n                </div>\n              </>\n            )}\n            <div\n              style={{\n                display: 'flex',\n                marginBottom: 2,\n                alignItems: 'flex-end',\n              }}\n            >\n              {d.label ? (\n                <div\n                  style={{\n                    fontSize:\n                      tooltip?.groupLabel?.fontSize || tooltip?.font?.size,\n                    marginRight: 2,\n                  }}\n                >\n                  {`${d.label}:`}\n                </div>\n              ) : (\n                xLab && (\n                  <div\n                    style={{\n                      fontSize:\n                        tooltip?.groupLabel?.fontSize || tooltip?.font?.size,\n                      marginRight: 2,\n                    }}\n                  >\n                    {`${xLab}:`}\n                  </div>\n                )\n              )}\n              <div\n                style={{\n                  marginLeft: 1,\n                  fontWeight: 500,\n                  fontSize:\n                    tooltip?.xLabel?.fontSize ||\n                    (tooltip?.font?.size || 12) + 1,\n                }}\n              >\n                {d.formattedX}\n              </div>\n            </div>\n          </div>\n        </div>\n      ))}\n    </TooltipContainer>\n  ) : null\n}\n"],"mappings":"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","names":["src_exports","__export","GeomVLine","__toCommonJS","import_react","import_graphique","import_react_move","import_jotai","import_d3_ease","import_d3_interpolate","import_react","import_jotai","import_graphique","import_react","import_jotai","import_graphique","DefaultTooltip","data","xLab","tooltip","React","d","Tooltip","aes","group","ggState","id","scales","height","width","tooltipDatum","xFormat","yFormat","measureFormat","content","datum","label","labelResolution","xScale","yScale","xAdj","thisGroup","tooltipContents","tooltipValue","React","DefaultTooltip","DEFAULT_TICK_SIZE","GeomVLine","localData","localAes","attr","showTooltip","onDatumFocus","onDatumSelection","onExit","isAnimated","ggState","data","aes","scales","copiedScales","height","margin","geomData","geomAes","theme","setTheme","isVisible","geomAttr","defaultStroke","duration","firstRender","setFirstRender","timeout","bottomPos","prev","stroke","d","x","xAdj","checkIsOutisdeDomain","domain","keyAccessor","i","groupRef","React","thisStrokeOpacity","begVal","endVal","nodes","state","key","Tooltip"]}