// Copyright (C) 2017-2022 Smart code 203358507 const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const filterInvalidDOMProps = require('filter-invalid-dom-props').default; const Icon = require('@stremio/stremio-icons/dom'); const Button = require('stremio/common/Button'); const Image = require('stremio/common/Image'); const Multiselect = require('stremio/common/Multiselect'); const PlayIconCircleCentered = require('stremio/common/PlayIconCircleCentered'); const useBinaryState = require('stremio/common/useBinaryState'); const { ICON_FOR_TYPE } = require('stremio/common/CONSTANTS'); const styles = require('./styles'); const MetaItem = React.memo(({ className, type, name, poster, posterShape, playIcon, progress, options, deepLinks, dataset, optionOnSelect, ...props }) => { const [menuOpen, onMenuOpen, onMenuClose] = useBinaryState(false); const href = React.useMemo(() => { return deepLinks ? typeof deepLinks.player === 'string' ? deepLinks.player : typeof deepLinks.metaDetailsStreams === 'string' ? deepLinks.metaDetailsStreams : typeof deepLinks.metaDetailsVideos === 'string' ? deepLinks.metaDetailsVideos : null : null; }, [deepLinks]); const metaItemOnClick = React.useCallback((event) => { if (typeof props.onClick === 'function') { props.onClick(event); } if (event.nativeEvent.selectPrevented) { event.preventDefault(); } }, [props.onClick]); const menuOnClick = React.useCallback((event) => { event.nativeEvent.selectPrevented = true; }, []); const menuOnSelect = React.useCallback((event) => { if (typeof optionOnSelect === 'function') { optionOnSelect({ type: 'select-option', value: event.value, dataset: dataset, reactEvent: event.reactEvent, nativeEvent: event.nativeEvent }); } }, [dataset, optionOnSelect]); const renderPosterFallback = React.useCallback(() => ( ), [type]); const renderMenuLabelContent = React.useCallback(() => ( ), []); return ( { playIcon ? : null } { progress > 0 ? : null } { (typeof name === 'string' && name.length > 0) || (Array.isArray(options) && options.length > 0) ? {typeof name === 'string' && name.length > 0 ? name : ''} { Array.isArray(options) && options.length > 0 ? : null } : null } ); }); MetaItem.displayName = 'MetaItem'; MetaItem.propTypes = { className: PropTypes.string, type: PropTypes.string, name: PropTypes.string, poster: PropTypes.string, posterShape: PropTypes.oneOf(['poster', 'landscape', 'square']), playIcon: PropTypes.bool, progress: PropTypes.number, options: PropTypes.array, deepLinks: PropTypes.shape({ metaDetailsVideos: PropTypes.string, metaDetailsStreams: PropTypes.string, player: PropTypes.string }), dataset: PropTypes.object, optionOnSelect: PropTypes.func, onClick: PropTypes.func }; module.exports = MetaItem;