{"mappings":"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","sources":["packages/@adobe/react-spectrum/src/table/Resizer.tsx","node_modules/@parcel/runtime-js/lib/bundles/runtime-96c30823227c9e14.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-1e556012f386dd31.js","node_modules/@parcel/runtime-js/lib/bundles/runtime-96cb931524e8b46d.js"],"sourcesContent":["import {classNames} from '../utils/classNames';\nimport {ColumnSize, TableColumnResizeState} from 'react-stately/useTableState';\nimport eCursor from 'bundle-text:./cursors/Cur_MoveToRight_9_9.svg';\nimport ewCursor from 'bundle-text:./cursors/Cur_MoveHorizontal_9_9.svg';\nimport {FocusRing} from 'react-aria/FocusRing';\nimport {GridNode} from 'react-stately/private/grid/GridCollection';\nimport intlMessages from '../../intl/table/*.json';\n// @ts-ignore\nimport {isWebKit} from 'react-aria/private/utils/platform';\nimport {Key, RefObject} from '@react-types/shared';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport React, {createContext, ForwardedRef, useContext, useEffect, useState} from 'react';\nimport ReactDOM from 'react-dom';\nimport styles from '@adobe/spectrum-css-temp/components/table/vars.css';\nimport {useLocale} from 'react-aria/I18nProvider';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useObjectRef} from 'react-aria/useObjectRef';\nimport {useTableColumnResize} from 'react-aria/useTable';\nimport {useTableContext, useVirtualizerContext} from './TableViewBase';\nimport {useUNSAFE_PortalContext} from 'react-aria/PortalProvider';\n// @ts-ignore\nimport wCursor from 'bundle-text:./cursors/Cur_MoveToLeft_9_9.svg';\n\nfunction getCursor(svg: string, fallback: string) {\n  // WebKit renders SVG cursors blurry on 2x screens: https://bugs.webkit.org/show_bug.cgi?id=160657\n  // To work around this, we generate two SVGs at different sizes and use image-set to pick between them.\n  // Only do this in WebKit to avoid Firefox rendering the cursor at twice the size.\n  if (isWebKit()) {\n    return `image-set(url(\"data:image/svg+xml,${encodeURIComponent(svg)}\") 1x, url(\"data:image/svg+xml,${encodeURIComponent(svg.replace('width=\"32\" height=\"32\"', 'width=\"64\" height=\"64\"'))}\") 2x) 8 8, ${fallback}`;\n  } else {\n    return `url(\"data:image/svg+xml,${encodeURIComponent(svg)}\") 8 8, ${fallback}`;\n  }\n}\n\ninterface ResizerProps<T> {\n  column: GridNode<T>;\n  showResizer: boolean;\n  triggerRef: RefObject<HTMLDivElement | null>;\n  onResizeStart?: (widths: Map<Key, ColumnSize>) => void;\n  onResize?: (widths: Map<Key, ColumnSize>) => void;\n  onResizeEnd?: (widths: Map<Key, ColumnSize>) => void;\n}\n\nconst CURSORS = {\n  ew: getCursor(ewCursor, 'ew-resize'),\n  w: getCursor(wCursor, 'w-resize'),\n  e: getCursor(eCursor, 'e-resize')\n};\n\nexport const ResizeStateContext = createContext<TableColumnResizeState<unknown> | null>(null);\n\nexport const Resizer = React.forwardRef(function Resizer<T>(\n  props: ResizerProps<T>,\n  ref: ForwardedRef<HTMLInputElement | null>\n) {\n  let {column, showResizer} = props;\n  let objectRef = useObjectRef(ref);\n  let {isEmpty, onFocusedResizer} = useTableContext();\n  let layout = useContext(ResizeStateContext)!;\n  // Virtualizer re-renders, but these components are all cached\n  // in order to get around that and cause a rerender here, we use context\n  // but we don't actually need any value, they are available on the layout object\n  useVirtualizerContext();\n  let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/table');\n  let {direction} = useLocale();\n\n  let [isPointerDown, setIsPointerDown] = useState(false);\n  useEffect(() => {\n    let setDown = e => {\n      if (e.pointerType === 'mouse') {\n        setIsPointerDown(true);\n      }\n    };\n    let setUp = e => {\n      if (e.pointerType === 'mouse') {\n        setIsPointerDown(false);\n      }\n    };\n    document.addEventListener('pointerdown', setDown, {capture: true});\n    document.addEventListener('pointerup', setUp, {capture: true});\n    return () => {\n      document.removeEventListener('pointerdown', setDown, {capture: true});\n      document.removeEventListener('pointerup', setUp, {capture: true});\n    };\n  }, []);\n\n  let {inputProps, resizerProps} = useTableColumnResize<unknown>(\n    mergeProps(props, {\n      'aria-label': stringFormatter.format('columnResizer'),\n      isDisabled: isEmpty\n    }),\n    layout,\n    objectRef\n  );\n\n  let isEResizable = layout.getColumnMinWidth(column.key) >= layout.getColumnWidth(column.key);\n  let isWResizable = layout.getColumnMaxWidth(column.key) <= layout.getColumnWidth(column.key);\n  let isResizing = layout.resizingColumn === column.key;\n  let cursor = '';\n  if (isEResizable) {\n    cursor = direction === 'rtl' ? CURSORS.w : CURSORS.e;\n  } else if (isWResizable) {\n    cursor = direction === 'rtl' ? CURSORS.e : CURSORS.w;\n  } else {\n    cursor = CURSORS.ew;\n  }\n\n  let style = {\n    ...resizerProps.style,\n    height: '100%',\n    display: showResizer ? undefined : 'none',\n    cursor\n  };\n\n  return (\n    <>\n      <FocusRing within focusRingClass={classNames(styles, 'focus-ring')}>\n        <div\n          {...resizerProps}\n          role=\"presentation\"\n          style={style}\n          className={classNames(styles, 'spectrum-Table-columnResizer')}>\n          <input ref={objectRef} {...mergeProps(inputProps, {onFocus: onFocusedResizer})} />\n        </div>\n      </FocusRing>\n      {/* Placeholder so that the title doesn't intersect with space reserved by the resizer when it appears. */}\n      <div\n        aria-hidden\n        role=\"presentation\"\n        className={classNames(styles, 'spectrum-Table-columnResizerPlaceholder')}\n      />\n      <CursorOverlay show={isResizing && isPointerDown}>\n        <div style={{position: 'fixed', top: 0, left: 0, bottom: 0, right: 0, cursor}} />\n      </CursorOverlay>\n    </>\n  );\n});\n\nfunction CursorOverlay(props) {\n  let {show, children} = props;\n  let {getContainer} = useUNSAFE_PortalContext();\n  return show ? ReactDOM.createPortal(children, getContainer?.() ?? document.body) : null;\n}\n","module.exports = \"4fe63754c7a84f61\";","module.exports = \"6c9660e3f3d24938\";","module.exports = \"bdcfe3ac172df5f0\";"],"names":[],"version":3,"file":"Resizer.mjs.map"}