/**
 * Copyright (c) 2026 Huawei Technologies Co., Ltd.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

/**
 * @format
 */

import { BaseScrollViewNativeComponentDelegate } from './BaseScrollViewNativeComponentDelegate';

export default class ScrollViewNativeComponentDelegate extends BaseScrollViewNativeComponentDelegate {
  override getInternalViewConfig() {
    return {
      uiViewClassName: 'RCTScrollView',
      bubblingEventTypes: {},
      directEventTypes: {
        topMomentumScrollBegin: {
          registrationName: 'onMomentumScrollBegin',
        },
        topMomentumScrollEnd: {
          registrationName: 'onMomentumScrollEnd',
        },
        topScroll: {
          registrationName: 'onScroll',
        },
        topScrollBeginDrag: {
          registrationName: 'onScrollBeginDrag',
        },
        topScrollEndDrag: {
          registrationName: 'onScrollEndDrag',
        },
      },
      validAttributes: {
        alwaysBounceHorizontal: true,
        alwaysBounceVertical: true,
        bounces: true,
        centerContent: true,
        contentOffset: {
          diff: require('../../../Utilities/differ/pointsDiffer'),
        },
        decelerationRate: true,
        disableIntervalMomentum: true,
        indicatorStyle: true,
        inverted: true,
        keyboardDismissMode: true,
        maintainVisibleContentPosition: true,
        pagingEnabled: true,
        scrollEnabled: true,
        showsHorizontalScrollIndicator: true,
        showsVerticalScrollIndicator: true,
        snapToAlignment: true,
        snapToEnd: true,
        snapToInterval: true,
        snapToOffsets: true,
        snapToStart: true,
        borderBottomLeftRadius: true,
        borderBottomRightRadius: true,
        sendMomentumEvents: true,
        borderRadius: true,
        nestedScrollEnabled: true,
        scrollEventThrottle: true,
        scrollToOverflowEnabled: true,
        borderStyle: true,
        borderRightColor: {
          process: require('../../../StyleSheet/processColor').default,
        },
        borderColor: {
          process: require('../../../StyleSheet/processColor').default,
        },
        borderBottomColor: {
          process: require('../../../StyleSheet/processColor').default,
        },
        persistentScrollbar: true,
        horizontal: true,
        endFillColor: {
          process: require('../../../StyleSheet/processColor').default,
        },
        overScrollMode: true,
        flingSpeedLimit: true,
        borderTopLeftRadius: true,
        borderTopColor: {
          process: require('../../../StyleSheet/processColor').default,
        },
        removeClippedSubviews: true,
        borderTopRightRadius: true,
        borderLeftColor: {
          process: require('../../../StyleSheet/processColor').default,
        },
        pointerEvents: true,
        isInvertedVirtualizedList: true,
      },
    };
  }
}