{"version":3,"sources":["../../src/Toggletip.tsx","../../../../foundation/primitives-web/src/Box.tsx","../../../../foundation/primitives-web/src/filterDOMProps.ts","../../../../../node_modules/@emotion/memoize/dist/memoize.esm.js","../../../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js","../../../../foundation/primitives-web/src/Text.tsx","../../../../foundation/primitives-web/src/textTruncation.ts","../../../../foundation/primitives-web/src/Divider.tsx","../../src/useToggletip.ts"],"sourcesContent":["import { forwardRef, useState, useRef, useEffect, useMemo } from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, Divider } from \"@xsolla/xui-primitives\";\nimport {\n  useResolvedTheme,\n  isNative,\n  useOverlayLayer,\n  LAYER_OFFSET,\n  type ThemeOverrideProps,\n} from \"@xsolla/xui-core\";\nimport { useToggletip } from \"./useToggletip\";\nimport type { ToggletipPlacement, ToggletipProps } from \"./types\";\n\nconst getPositionStyles = (placement: ToggletipPlacement, offset: number) => {\n  switch (placement) {\n    case \"bottom\":\n      return {\n        top: `calc(100% + ${offset}px)`,\n        left: \"50%\",\n        transform: \"translateX(-50%)\",\n      };\n    case \"bottom-left\":\n      return { top: `calc(100% + ${offset}px)`, left: 0 };\n    case \"bottom-right\":\n      return { top: `calc(100% + ${offset}px)`, right: 0 };\n    case \"top\":\n      return {\n        bottom: `calc(100% + ${offset}px)`,\n        left: \"50%\",\n        transform: \"translateX(-50%)\",\n      };\n    case \"top-left\":\n      return { bottom: `calc(100% + ${offset}px)`, left: 0 };\n    case \"top-right\":\n      return { bottom: `calc(100% + ${offset}px)`, right: 0 };\n    case \"left\":\n      return {\n        right: `calc(100% + ${offset}px)`,\n        top: \"50%\",\n        transform: \"translateY(-50%)\",\n      };\n    case \"right\":\n      return {\n        left: `calc(100% + ${offset}px)`,\n        top: \"50%\",\n        transform: \"translateY(-50%)\",\n      };\n    default:\n      return {\n        bottom: `calc(100% + ${offset}px)`,\n        left: \"50%\",\n        transform: \"translateX(-50%)\",\n      };\n  }\n};\n\nexport const Toggletip = forwardRef<any, ToggletipProps & ThemeOverrideProps>(\n  (\n    {\n      children,\n      title,\n      content,\n      footer,\n      width = \"288px\",\n      direction = \"top\",\n      autoDirection = true,\n      offset = 12,\n      \"data-testid\": dataTestId,\n      testID,\n      themeMode,\n      themeProductContext,\n    },\n    ref\n  ) => {\n    const [isOpen, setOpen] = useState(false);\n    const containerRef = useRef<HTMLElement | null>(null);\n    const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n    const overlayLayer = useOverlayLayer();\n\n    const { refs, direction: newDirection } = useToggletip({\n      open: isOpen,\n      direction,\n      offset,\n      autoDirection,\n    });\n\n    const toggleOpen = () => setOpen(!isOpen);\n\n    useEffect(() => {\n      if (!isOpen || isNative) return;\n\n      const handleClickOutside = (event: MouseEvent) => {\n        if (\n          containerRef.current &&\n          event.target instanceof Node &&\n          !containerRef.current.contains(event.target)\n        ) {\n          setOpen(false);\n        }\n      };\n\n      const handleEscape = (event: KeyboardEvent) => {\n        if (event.key === \"Escape\") {\n          setOpen(false);\n        }\n      };\n\n      document.addEventListener(\"mousedown\", handleClickOutside);\n      document.addEventListener(\"keydown\", handleEscape);\n\n      return () => {\n        document.removeEventListener(\"mousedown\", handleClickOutside);\n        document.removeEventListener(\"keydown\", handleEscape);\n      };\n    }, [isOpen]);\n\n    const positionStyles = useMemo(\n      () => getPositionStyles(newDirection, offset),\n      [newDirection, offset]\n    );\n\n    return (\n      <Box\n        testID={testID}\n        ref={(node: HTMLElement | null) => {\n          containerRef.current = node;\n          refs.setReference(node);\n          if (typeof ref === \"function\") ref(node);\n          else if (ref) (ref as any).current = node;\n        }}\n        display=\"inline-flex\"\n        position=\"relative\"\n        style={{ height: \"fit-content\" }}\n      >\n        <Box onPress={toggleOpen} style={{ cursor: \"pointer\" }}>\n          {children}\n        </Box>\n        {isOpen && (\n          <Box\n            ref={refs.setFloating}\n            data-testid={dataTestId}\n            position=\"absolute\"\n            backgroundColor={theme.colors.background.primary}\n            borderRadius={theme.shape.tooltip.md.borderRadius}\n            borderColor={theme.colors.border.secondary}\n            padding={12}\n            width={width}\n            zIndex={overlayLayer + LAYER_OFFSET.tooltip}\n            style={{\n              ...positionStyles,\n              boxShadow: theme.shadow.popover,\n            }}\n          >\n            {title && (\n              <Box gap={8}>\n                <Text\n                  color={theme.colors.content.primary}\n                  fontSize={24}\n                  lineHeight=\"28px\"\n                  fontWeight=\"500\"\n                >\n                  {title}\n                </Text>\n                <Divider color={theme.colors.border.secondary} />\n              </Box>\n            )}\n            {content && (\n              <Box marginBottom={16} marginTop={16}>\n                {typeof content === \"string\" || typeof content === \"number\" ? (\n                  <Text\n                    color={theme.colors.content.primary}\n                    fontSize={14}\n                    fontWeight=\"400\"\n                  >\n                    {content}\n                  </Text>\n                ) : (\n                  content\n                )}\n              </Box>\n            )}\n            {footer && (\n              <Box\n                marginTop={20}\n                flexDirection=\"row\"\n                justifyContent=\"flex-end\"\n                gap={12}\n              >\n                {footer}\n              </Box>\n            )}\n          </Box>\n        )}\n      </Box>\n    );\n  }\n);\n\nToggletip.displayName = \"Toggletip\";\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport type { BoxProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledBox = styled(FilteredDiv)<BoxProps>`\n  display: flex;\n  box-sizing: border-box;\n  background-color: ${(props) => props.backgroundColor || \"transparent\"};\n  border-color: ${(props) => props.borderColor || \"transparent\"};\n  border-width: ${(props) =>\n    typeof props.borderWidth === \"number\"\n      ? `${props.borderWidth}px`\n      : props.borderWidth || 0};\n\n  ${(props) =>\n    props.borderBottomWidth !== undefined &&\n    `\n    border-bottom-width: ${typeof props.borderBottomWidth === \"number\" ? `${props.borderBottomWidth}px` : props.borderBottomWidth};\n    border-bottom-color: ${props.borderBottomColor || props.borderColor || \"transparent\"};\n    border-bottom-style: solid;\n  `}\n  ${(props) =>\n    props.borderTopWidth !== undefined &&\n    `\n    border-top-width: ${typeof props.borderTopWidth === \"number\" ? `${props.borderTopWidth}px` : props.borderTopWidth};\n    border-top-color: ${props.borderTopColor || props.borderColor || \"transparent\"};\n    border-top-style: solid;\n  `}\n  ${(props) =>\n    props.borderLeftWidth !== undefined &&\n    `\n    border-left-width: ${typeof props.borderLeftWidth === \"number\" ? `${props.borderLeftWidth}px` : props.borderLeftWidth};\n    border-left-color: ${props.borderLeftColor || props.borderColor || \"transparent\"};\n    border-left-style: solid;\n  `}\n  ${(props) =>\n    props.borderRightWidth !== undefined &&\n    `\n    border-right-width: ${typeof props.borderRightWidth === \"number\" ? `${props.borderRightWidth}px` : props.borderRightWidth};\n    border-right-color: ${props.borderRightColor || props.borderColor || \"transparent\"};\n    border-right-style: solid;\n  `}\n\n  border-style: ${(props) =>\n    props.borderStyle ||\n    (props.borderWidth ||\n    props.borderBottomWidth ||\n    props.borderTopWidth ||\n    props.borderLeftWidth ||\n    props.borderRightWidth\n      ? \"solid\"\n      : \"none\")};\n  border-radius: ${(props) =>\n    typeof props.borderRadius === \"number\"\n      ? `${props.borderRadius}px`\n      : props.borderRadius || 0};\n  height: ${(props) =>\n    typeof props.height === \"number\"\n      ? `${props.height}px`\n      : props.height || \"auto\"};\n  width: ${(props) =>\n    typeof props.width === \"number\"\n      ? `${props.width}px`\n      : props.width || \"auto\"};\n  min-width: ${(props) =>\n    typeof props.minWidth === \"number\"\n      ? `${props.minWidth}px`\n      : props.minWidth || \"auto\"};\n  min-height: ${(props) =>\n    typeof props.minHeight === \"number\"\n      ? `${props.minHeight}px`\n      : props.minHeight || \"auto\"};\n  max-width: ${(props) =>\n    typeof props.maxWidth === \"number\"\n      ? `${props.maxWidth}px`\n      : props.maxWidth || \"none\"};\n  max-height: ${(props) =>\n    typeof props.maxHeight === \"number\"\n      ? `${props.maxHeight}px`\n      : props.maxHeight || \"none\"};\n\n  padding: ${(props) =>\n    typeof props.padding === \"number\"\n      ? `${props.padding}px`\n      : props.padding || 0};\n  ${(props) =>\n    props.paddingHorizontal &&\n    `\n    padding-left: ${typeof props.paddingHorizontal === \"number\" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};\n    padding-right: ${typeof props.paddingHorizontal === \"number\" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};\n  `}\n  ${(props) =>\n    props.paddingVertical &&\n    `\n    padding-top: ${typeof props.paddingVertical === \"number\" ? `${props.paddingVertical}px` : props.paddingVertical};\n    padding-bottom: ${typeof props.paddingVertical === \"number\" ? `${props.paddingVertical}px` : props.paddingVertical};\n  `}\n  ${(props) =>\n    props.paddingTop !== undefined &&\n    `padding-top: ${typeof props.paddingTop === \"number\" ? `${props.paddingTop}px` : props.paddingTop};`}\n  ${(props) =>\n    props.paddingBottom !== undefined &&\n    `padding-bottom: ${typeof props.paddingBottom === \"number\" ? `${props.paddingBottom}px` : props.paddingBottom};`}\n  ${(props) =>\n    props.paddingLeft !== undefined &&\n    `padding-left: ${typeof props.paddingLeft === \"number\" ? `${props.paddingLeft}px` : props.paddingLeft};`}\n  ${(props) =>\n    props.paddingRight !== undefined &&\n    `padding-right: ${typeof props.paddingRight === \"number\" ? `${props.paddingRight}px` : props.paddingRight};`}\n\n  margin: ${(props) =>\n    typeof props.margin === \"number\" ? `${props.margin}px` : props.margin || 0};\n  ${(props) =>\n    props.marginTop !== undefined &&\n    `margin-top: ${typeof props.marginTop === \"number\" ? `${props.marginTop}px` : props.marginTop};`}\n  ${(props) =>\n    props.marginBottom !== undefined &&\n    `margin-bottom: ${typeof props.marginBottom === \"number\" ? `${props.marginBottom}px` : props.marginBottom};`}\n  ${(props) =>\n    props.marginLeft !== undefined &&\n    `margin-left: ${typeof props.marginLeft === \"number\" ? `${props.marginLeft}px` : props.marginLeft};`}\n  ${(props) =>\n    props.marginRight !== undefined &&\n    `margin-right: ${typeof props.marginRight === \"number\" ? `${props.marginRight}px` : props.marginRight};`}\n\n  flex-direction: ${(props) => props.flexDirection || \"column\"};\n  flex-wrap: ${(props) => props.flexWrap || \"nowrap\"};\n  align-items: ${(props) => props.alignItems || \"stretch\"};\n  justify-content: ${(props) => props.justifyContent || \"flex-start\"};\n  cursor: ${(props) =>\n    props.cursor\n      ? props.cursor\n      : props.onClick || props.onPress\n        ? \"pointer\"\n        : \"inherit\"};\n  position: ${(props) => props.position || \"static\"};\n  top: ${(props) =>\n    typeof props.top === \"number\" ? `${props.top}px` : props.top};\n  bottom: ${(props) =>\n    typeof props.bottom === \"number\" ? `${props.bottom}px` : props.bottom};\n  left: ${(props) =>\n    typeof props.left === \"number\" ? `${props.left}px` : props.left};\n  right: ${(props) =>\n    typeof props.right === \"number\" ? `${props.right}px` : props.right};\n  flex: ${(props) => props.flex};\n  flex-shrink: ${(props) => props.flexShrink ?? 1};\n  gap: ${(props) =>\n    typeof props.gap === \"number\" ? `${props.gap}px` : props.gap || 0};\n  align-self: ${(props) => props.alignSelf || \"auto\"};\n  /* Only emit overflow-x/y when explicitly set. Defaulting them to\n     visible after overflow would override the shorthand and break\n     clipping (e.g. OtherCard bottom-right promo image). */\n  overflow: ${(props) => props.overflow || \"visible\"};\n  ${(props) =>\n    props.overflowX != null ? `overflow-x: ${props.overflowX};` : \"\"}\n  ${(props) =>\n    props.overflowY != null ? `overflow-y: ${props.overflowY};` : \"\"}\n  z-index: ${(props) => props.zIndex};\n  opacity: ${(props) =>\n    props.opacity != null ? props.opacity : props.disabled ? 0.5 : 1};\n  pointer-events: ${(props) => (props.disabled ? \"none\" : \"auto\")};\n\n  &:hover {\n    ${(props) =>\n      props.hoverStyle?.backgroundColor &&\n      `background-color: ${props.hoverStyle.backgroundColor};`}\n    ${(props) =>\n      props.hoverStyle?.borderColor &&\n      `border-color: ${props.hoverStyle.borderColor};`}\n  }\n\n  &:active {\n    ${(props) =>\n      props.pressStyle?.backgroundColor &&\n      `background-color: ${props.pressStyle.backgroundColor};`}\n  }\n`;\n\nexport const Box = React.forwardRef<\n  HTMLDivElement | HTMLButtonElement,\n  BoxProps\n>(\n  (\n    {\n      children,\n      onPress,\n      onKeyDown,\n      onKeyUp,\n      role,\n      \"aria-label\": ariaLabel,\n      \"aria-labelledby\": ariaLabelledBy,\n      \"aria-current\": ariaCurrent,\n      \"aria-disabled\": ariaDisabled,\n      \"aria-live\": ariaLive,\n      \"aria-busy\": ariaBusy,\n      \"aria-describedby\": ariaDescribedBy,\n      \"aria-expanded\": ariaExpanded,\n      \"aria-haspopup\": ariaHasPopup,\n      \"aria-pressed\": ariaPressed,\n      \"aria-controls\": ariaControls,\n      tabIndex,\n      as,\n      src,\n      alt,\n      onError,\n      onLoad,\n      type,\n      disabled,\n      id,\n      testID,\n      \"data-testid\": dataTestId,\n      ...props\n    },\n    ref\n  ) => {\n    // Handle as=\"img\" for rendering images with proper border-radius\n    if (as === \"img\" && src) {\n      return (\n        <img\n          src={src}\n          alt={alt || \"\"}\n          onError={onError}\n          onLoad={onLoad}\n          data-testid={dataTestId || testID}\n          style={{\n            display: \"block\",\n            objectFit: \"cover\",\n            width:\n              typeof props.width === \"number\"\n                ? `${props.width}px`\n                : props.width,\n            height:\n              typeof props.height === \"number\"\n                ? `${props.height}px`\n                : props.height,\n            borderRadius:\n              typeof props.borderRadius === \"number\"\n                ? `${props.borderRadius}px`\n                : props.borderRadius,\n            position: props.position,\n            top: typeof props.top === \"number\" ? `${props.top}px` : props.top,\n            left:\n              typeof props.left === \"number\" ? `${props.left}px` : props.left,\n            right:\n              typeof props.right === \"number\"\n                ? `${props.right}px`\n                : props.right,\n            bottom:\n              typeof props.bottom === \"number\"\n                ? `${props.bottom}px`\n                : props.bottom,\n            ...props.style,\n          }}\n        />\n      );\n    }\n\n    return (\n      <StyledBox\n        ref={ref}\n        elementType={as}\n        id={id}\n        type={as === \"button\" ? type || \"button\" : undefined}\n        disabled={as === \"button\" ? disabled : undefined}\n        onClick={onPress}\n        onKeyDown={onKeyDown}\n        onKeyUp={onKeyUp}\n        role={role}\n        aria-label={ariaLabel}\n        aria-labelledby={ariaLabelledBy}\n        aria-current={ariaCurrent}\n        aria-disabled={ariaDisabled}\n        aria-busy={ariaBusy}\n        aria-describedby={ariaDescribedBy}\n        aria-expanded={ariaExpanded}\n        aria-haspopup={ariaHasPopup}\n        aria-pressed={ariaPressed}\n        aria-controls={ariaControls}\n        aria-live={ariaLive}\n        tabIndex={tabIndex !== undefined ? tabIndex : undefined}\n        data-testid={dataTestId || testID}\n        {...props}\n      >\n        {children}\n      </StyledBox>\n    );\n  }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\nimport isPropValid from \"@emotion/is-prop-valid\";\n\n// Props that @emotion/is-prop-valid incorrectly treats as valid HTML.\n// These are React Native or component-specific props that match\n// valid HTML patterns (on* event handlers, SVG attributes).\nexport const ADDITIONAL_BLOCKED_PROPS = new Set([\n  // RN-only event handlers (pass isPropValid's on* pattern)\n  \"onPress\",\n  \"onChangeText\",\n  \"onLayout\",\n  \"onMoveShouldSetResponder\",\n  \"onResponderGrant\",\n  \"onResponderMove\",\n  \"onResponderRelease\",\n  \"onResponderTerminate\",\n  // SVG attributes that pass isPropValid\n  \"strokeWidth\",\n  // CSS properties that pass isPropValid but are used as component props\n  \"overflow\",\n  \"opacity\",\n  \"cursor\",\n  \"fontSize\",\n  \"fontWeight\",\n  \"fontFamily\",\n  \"textDecoration\",\n  // Cross-platform layout prop that Text consumes as CSS, never as an\n  // attribute. Pinned explicitly because it is now spread into the styled\n  // component rather than destructured away before it can reach the DOM.\n  \"numberOfLines\",\n]);\n\nfunction shouldForwardProp(key: string): boolean {\n  if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;\n  return isPropValid(key);\n}\n\n/**\n * Creates a React component that renders the given HTML tag\n * but filters out non-HTML props before they reach the DOM.\n *\n * Uses @emotion/is-prop-valid (same library styled-components v4\n * uses internally) to automatically block invalid HTML attributes,\n * plus a small blocklist for false positives (RN on* handlers, SVG attrs).\n *\n * Usage: `const FilteredDiv = createFilteredElement(\"div\");`\n * Then:  `const StyledBox = styled(FilteredDiv)<BoxProps>\\`...\\`;`\n *\n * styled-components can still read ALL props for CSS interpolation,\n * but only valid HTML attributes are forwarded to the DOM element.\n */\nexport function createFilteredElement(defaultTag: string) {\n  const Component = React.forwardRef<HTMLElement, Record<string, unknown>>(\n    ({ children, elementType, ...props }, ref) => {\n      const Tag = (elementType as string) || defaultTag;\n      const htmlProps: Record<string, unknown> = {};\n      for (const key of Object.keys(props)) {\n        if (shouldForwardProp(key)) {\n          htmlProps[key] = props[key];\n        }\n      }\n      return React.createElement(\n        Tag,\n        { ref, ...htmlProps },\n        children as React.ReactNode\n      );\n    }\n  );\n  Component.displayName = `Filtered(${defaultTag})`;\n  return Component;\n}\n","function memoize(fn) {\n  var cache = {};\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\nimport { truncationStyles } from \"./textTruncation\";\n\nconst FilteredSpan = createFilteredElement(\"span\");\n\nconst StyledText = styled(FilteredSpan)<TextProps>`\n  color: ${(props) => props.color || \"inherit\"};\n  font-size: ${(props) =>\n    typeof props.fontSize === \"number\"\n      ? `${props.fontSize}px`\n      : props.fontSize || \"inherit\"};\n  font-weight: ${(props) => props.fontWeight || \"normal\"};\n  font-family: ${(props) =>\n    props.fontFamily ||\n    '\"Aktiv Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'};\n  line-height: ${(props) =>\n    typeof props.lineHeight === \"number\"\n      ? `${props.lineHeight}px`\n      : props.lineHeight || \"inherit\"};\n  white-space: ${(props) => props.whiteSpace || \"normal\"};\n  text-align: ${(props) => props.textAlign || \"inherit\"};\n  text-decoration: ${(props) => props.textDecoration || \"none\"};\n\n  /* Keep last: single-line truncation has to win over white-space above. */\n  ${(props) => truncationStyles(props.numberOfLines)}\n`;\n\nexport const Text: React.FC<TextProps> = ({\n  style,\n  className,\n  id,\n  role,\n  testID,\n  \"data-testid\": dataTestId,\n  ...props\n}) => {\n  return (\n    <StyledText\n      {...props}\n      style={style}\n      className={className}\n      id={id}\n      role={role}\n      data-testid={dataTestId || testID}\n    />\n  );\n};\n","/**\n * Web implementation of the cross-platform `numberOfLines` text prop.\n *\n * Native maps `numberOfLines` straight onto `RNText`. A web `<span>` has no\n * equivalent, so emit the CSS that produces the same result.\n *\n * Two details matter for the single-line case:\n * - `text-overflow` only takes effect on a block container, so the inline\n *   `<span>` is promoted to `display: block` and capped at `max-width: 100%`.\n * - `min-width: 0` lets the text shrink below its own content width when it\n *   sits in a flex row. Without it a `nowrap` label keeps its full intrinsic\n *   width and pushes its siblings (icons, chevrons) out of a fixed-width field.\n *\n * Returns an empty string when there is nothing to clamp, so the declaration\n * block stays untouched for the majority of callers.\n */\nexport const truncationStyles = (numberOfLines?: number): string => {\n  if (!numberOfLines || numberOfLines < 1) return \"\";\n\n  if (numberOfLines === 1) {\n    return `\n      display: block;\n      max-width: 100%;\n      min-width: 0;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    `;\n  }\n\n  return `\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: ${numberOfLines};\n    line-clamp: ${numberOfLines};\n    max-width: 100%;\n    min-width: 0;\n    overflow: hidden;\n  `;\n};\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { DividerProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledDivider = styled(FilteredDiv)<DividerProps>`\n  background-color: ${(props) =>\n    props.dashStroke\n      ? \"transparent\"\n      : props.color || \"rgba(255, 255, 255, 0.15)\"};\n  width: ${(props) =>\n    props.vertical\n      ? typeof props.width === \"number\"\n        ? `${props.width}px`\n        : props.width || \"1px\"\n      : \"100%\"};\n  height: ${(props) =>\n    props.vertical\n      ? \"100%\"\n      : typeof props.height === \"number\"\n        ? `${props.height}px`\n        : props.height || \"1px\"};\n\n  ${(props) =>\n    props.dashStroke &&\n    `\n    border-style: dashed;\n    border-color: ${props.color || \"rgba(255, 255, 255, 0.15)\"};\n    border-width: 0;\n    ${\n      props.vertical\n        ? `\n      border-left-width: ${typeof props.width === \"number\" ? `${props.width}px` : props.width || \"1px\"};\n      height: 100%;\n    `\n        : `\n      border-top-width: ${typeof props.height === \"number\" ? `${props.height}px` : props.height || \"1px\"};\n      width: 100%;\n    `\n    }\n  `}\n`;\n\nexport const Divider: React.FC<DividerProps> = ({\n  testID,\n  \"data-testid\": dataTestId,\n  ...props\n}) => {\n  return <StyledDivider data-testid={dataTestId || testID} {...props} />;\n};\n","import { useState, useRef, useLayoutEffect, useCallback } from \"react\";\nimport type { ToggletipPlacement } from \"./types\";\n\ninterface UseToggletipOptions {\n  open: boolean;\n  direction: ToggletipPlacement;\n  offset: number;\n  autoDirection?: boolean;\n}\n\ninterface UseToggletipReturn {\n  refs: {\n    setReference: (node: HTMLElement | null) => void;\n    setFloating: (node: HTMLElement | null) => void;\n  };\n  direction: ToggletipPlacement;\n}\n\nconst getScrollParent = (element: HTMLElement | null): HTMLElement => {\n  if (!element || element === document.body) {\n    return document.body;\n  }\n\n  const { overflow, overflowX, overflowY } = window.getComputedStyle(element);\n  const scrollRegex = /(auto|scroll)/;\n  const isScrollable =\n    scrollRegex.test(overflow) ||\n    scrollRegex.test(overflowX) ||\n    scrollRegex.test(overflowY);\n\n  if (\n    isScrollable &&\n    (element.scrollHeight > element.clientHeight ||\n      element.scrollWidth > element.clientWidth)\n  ) {\n    return element;\n  }\n\n  return getScrollParent(element.parentElement);\n};\n\nconst getViewportBounds = (triggerElement: HTMLElement) => {\n  const scrollParent = getScrollParent(triggerElement);\n\n  if (scrollParent === document.body) {\n    return {\n      top: 0,\n      left: 0,\n      right: window.visualViewport?.width || window.innerWidth,\n      bottom: window.visualViewport?.height || window.innerHeight,\n      width: window.visualViewport?.width || window.innerWidth,\n      height: window.visualViewport?.height || window.innerHeight,\n    };\n  }\n\n  const rect = scrollParent.getBoundingClientRect();\n  return {\n    top: rect.top,\n    left: rect.left,\n    right: rect.right,\n    bottom: rect.bottom,\n    width: rect.width,\n    height: rect.height,\n  };\n};\n\nconst checkCollision = (\n  triggerRect: DOMRect,\n  toggletipRect: DOMRect,\n  placement: ToggletipPlacement,\n  offset: number,\n  triggerElement: HTMLElement\n): ToggletipPlacement => {\n  const viewport = getViewportBounds(triggerElement);\n  const buffer = 10;\n\n  const space = {\n    top: triggerRect.top - viewport.top,\n    bottom: viewport.bottom - triggerRect.bottom,\n    left: triggerRect.left - viewport.left,\n    right: viewport.right - triggerRect.right,\n  };\n\n  const centerY = triggerRect.top + triggerRect.height / 2;\n  const centerX = triggerRect.left + triggerRect.width / 2;\n  const halfWidth = toggletipRect.width / 2;\n  const halfHeight = toggletipRect.height / 2;\n  const minSpace = offset + buffer;\n\n  const fits = {\n    top:\n      space.top >= toggletipRect.height + minSpace &&\n      centerX - halfWidth >= viewport.left + buffer &&\n      centerX + halfWidth <= viewport.right - buffer,\n    bottom:\n      space.bottom >= toggletipRect.height + minSpace &&\n      centerX - halfWidth >= viewport.left + buffer &&\n      centerX + halfWidth <= viewport.right - buffer,\n    left:\n      space.left >= toggletipRect.width + minSpace &&\n      centerY - halfHeight >= viewport.top + buffer &&\n      centerY + halfHeight <= viewport.bottom - buffer,\n    right:\n      space.right >= toggletipRect.width + minSpace &&\n      centerY - halfHeight >= viewport.top + buffer &&\n      centerY + halfHeight <= viewport.bottom - buffer,\n  };\n\n  const [primary, secondary] = placement.split(\"-\");\n\n  if (fits[primary as keyof typeof fits]) {\n    return placement;\n  }\n\n  const opposites: Record<string, string> = {\n    top: \"bottom\",\n    bottom: \"top\",\n    left: \"right\",\n    right: \"left\",\n  };\n\n  const opposite = opposites[primary];\n  if (opposite && fits[opposite as keyof typeof fits]) {\n    return secondary\n      ? (`${opposite}-${secondary}` as ToggletipPlacement)\n      : (opposite as ToggletipPlacement);\n  }\n\n  const perpendicular =\n    primary === \"top\" || primary === \"bottom\"\n      ? [\"right\", \"left\"]\n      : [\"bottom\", \"top\"];\n\n  for (const dir of perpendicular) {\n    if (fits[dir as keyof typeof fits]) {\n      return dir as ToggletipPlacement;\n    }\n  }\n\n  const best = Object.entries(space).sort(([, a], [, b]) => b - a)[0];\n  return best[0] as ToggletipPlacement;\n};\n\nexport const useToggletip = ({\n  open,\n  direction,\n  offset,\n  autoDirection = true,\n}: UseToggletipOptions): UseToggletipReturn => {\n  const [newDirection, setNewDirection] = useState(direction);\n  const referenceRef = useRef<HTMLElement | null>(null);\n  const floatingRef = useRef<HTMLElement | null>(null);\n\n  const setReference = useCallback((node: HTMLElement | null) => {\n    referenceRef.current = node;\n  }, []);\n\n  const setFloating = useCallback((node: HTMLElement | null) => {\n    floatingRef.current = node;\n  }, []);\n\n  // Collision detection + continuous updates\n  useLayoutEffect(() => {\n    if (\n      !open ||\n      !autoDirection ||\n      !referenceRef.current ||\n      !floatingRef.current\n    ) {\n      return;\n    }\n\n    let rafId: number | null = null;\n\n    const updatePlacement = () => {\n      rafId = null;\n      if (!referenceRef.current || !floatingRef.current) return;\n\n      const triggerRect = referenceRef.current.getBoundingClientRect();\n      const toggletipRect = floatingRef.current.getBoundingClientRect();\n      const calculatedDirection = checkCollision(\n        triggerRect,\n        toggletipRect,\n        direction,\n        offset,\n        referenceRef.current\n      );\n\n      setNewDirection((prev) =>\n        prev === calculatedDirection ? prev : calculatedDirection\n      );\n    };\n\n    const scheduleUpdate = () => {\n      if (rafId != null) return;\n      rafId = requestAnimationFrame(updatePlacement);\n    };\n\n    updatePlacement();\n\n    // Attach scroll listener to the actual scroll parent for better performance\n    const scrollParent = getScrollParent(referenceRef.current);\n    const scrollTarget = scrollParent === document.body ? window : scrollParent;\n\n    scrollTarget.addEventListener(\"scroll\", scheduleUpdate, {\n      capture: true,\n      passive: true,\n    });\n    window.addEventListener(\"resize\", scheduleUpdate);\n\n    // Safe ResizeObserver usage for SSR compatibility\n    let resizeObserver: ResizeObserver | null = null;\n    if (typeof ResizeObserver !== \"undefined\") {\n      resizeObserver = new ResizeObserver(scheduleUpdate);\n      if (referenceRef.current) {\n        resizeObserver.observe(referenceRef.current);\n      }\n      if (floatingRef.current) {\n        resizeObserver.observe(floatingRef.current);\n      }\n    }\n\n    return () => {\n      if (rafId != null) cancelAnimationFrame(rafId);\n      scrollTarget.removeEventListener(\"scroll\", scheduleUpdate, {\n        capture: true,\n      } as EventListenerOptions);\n      window.removeEventListener(\"resize\", scheduleUpdate);\n      if (resizeObserver) resizeObserver.disconnect();\n    };\n  }, [open, autoDirection, direction, offset]);\n\n  useLayoutEffect(() => {\n    if (!open) {\n      setNewDirection(direction);\n    }\n  }, [open, direction]);\n\n  return {\n    refs: {\n      setReference,\n      setFloating,\n    },\n    direction: newDirection,\n  };\n};\n"],"mappings":"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","names":["useState","useRef","React","React","styled","jsx","styled","styled","jsx","FilteredDiv","styled","jsx","useState","useRef"]}