{
  "mappings": "AAAA,OAAO,WAAW;AAClB,SAAS,WAAW,iBAAiB;AAOrC,iBAAiB,2BAA2B,UAAU;CACpD;;;;;CAKA;CACA;;AAiBF,OAAO,cAAM,eAAe,MAAM,0BAChC,qBAAqB,MAAM,cAAc",
  "names": [],
  "sources": [
    "src/PressBoundary.tsx"
  ],
  "version": 3,
  "sourcesContent": [
    "import React from 'react'\nimport { View, type ViewProps } from 'react-native'\nimport {\n  claimExternalPressOwnership,\n  releaseExternalPressOwnership,\n  type ExternalPressOwnershipToken,\n} from './gestureState'\n\nexport interface PressBoundaryProps extends ViewProps {\n  enabled?: boolean\n  /**\n   * Alias for enabling the boundary. The behavior is limited to Tamagui's\n   * shared press ownership and does not patch arbitrary RN bubbling.\n   */\n  stopPropagation?: boolean\n  debugName?: string | null\n}\n\nfunction composeFirst<T extends (...args: any[]) => void>(ours: T, theirs?: T) {\n  return (...args: Parameters<T>) => {\n    ours(...args)\n    theirs?.(...args)\n  }\n}\n\nfunction composeLast<T extends (...args: any[]) => void>(theirs: T | undefined, ours: T) {\n  return (...args: Parameters<T>) => {\n    theirs?.(...args)\n    ours(...args)\n  }\n}\n\nexport const PressBoundary: React.ForwardRefExoticComponent<\n  PressBoundaryProps & React.RefAttributes<View>\n> = React.forwardRef<View, PressBoundaryProps>(function PressBoundary(\n  {\n    enabled,\n    stopPropagation,\n    debugName,\n    onTouchStart,\n    onTouchEnd,\n    onTouchCancel,\n    onResponderGrant,\n    onResponderRelease,\n    onResponderTerminate,\n    ...props\n  },\n  forwardedRef\n) {\n  const tokenRef = React.useRef<ExternalPressOwnershipToken | null>(null)\n  const isEnabled = enabled ?? stopPropagation ?? true\n\n  const claim = React.useCallback((): void => {\n    if (!isEnabled) return\n    if (tokenRef.current) {\n      releaseExternalPressOwnership(tokenRef.current, debugName)\n    }\n    tokenRef.current = claimExternalPressOwnership(debugName)\n  }, [debugName, isEnabled])\n\n  const release = React.useCallback((): void => {\n    if (!tokenRef.current) return\n    releaseExternalPressOwnership(tokenRef.current, debugName)\n    tokenRef.current = null\n  }, [debugName])\n\n  React.useEffect(() => release, [release])\n\n  return (\n    <View\n      ref={forwardedRef}\n      {...props}\n      onTouchStart={composeFirst(claim, onTouchStart)}\n      onTouchEnd={composeLast(onTouchEnd, release)}\n      onTouchCancel={composeLast(onTouchCancel, release)}\n      onResponderGrant={composeFirst(claim, onResponderGrant)}\n      onResponderRelease={composeLast(onResponderRelease, release)}\n      onResponderTerminate={composeLast(onResponderTerminate, release)}\n    />\n  )\n})\n"
  ]
}