UNPKG

@vnmfify/core

Version:

```shell npm i @vnmfify/core -S ```

100 lines (84 loc) 4.92 kB
import _isString from "lodash/isString"; var _excluded = ["className", "style", "value", "disabled", "icon", "name", "description", "onClick"]; function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import { cloneIconElement, isIconElement } from "@vnmfify/icons/utils"; import { View } from "@vnxjs/components"; import classNames from "classnames"; import * as React from "react"; import { cloneElement, isValidElement, useContext, useMemo } from "react"; import ButtonBase from "../button-base"; import Image from "../image"; import { useSheetProps } from "../sheet"; import { prefixClassname } from "../styles"; import ShareSheetContext from "./share-sheet.context"; var PRESET_ICONS = ["qq", "link", "weibo", "wechat", "poster", "qrcode", "weapp-qrcode", "wechat-moments"]; function renderShareSheetOptionIcon(node) { if (! /*#__PURE__*/isValidElement(node)) { if (_isString(node) && PRESET_ICONS.includes(node)) { return renderShareSheetOptionIcon( /*#__PURE__*/React.createElement(Image, { src: "https://img.yzcdn.cn/vant/share-sheet-".concat(node, ".png") })); } return node; } var element = node; if (element.type === Image) { return /*#__PURE__*/cloneElement(element, { className: classNames(element.props.className, prefixClassname("share-sheet__option-icon")) }); } else if (isIconElement(element)) { return cloneIconElement(element, { className: prefixClassname("share-sheet__option-icon") }); } return node; } function useShareSheetOptionIcon(node) { return useMemo(() => renderShareSheetOptionIcon(node), [node]); } export function ShareSheetOption(mixedProps) { var [buttonProps, _ref] = useSheetProps(mixedProps); var { className, style, value, disabled, icon, name, description, onClick: _onClick } = _ref, restProps = _objectWithoutProperties(_ref, _excluded); var { onSelect } = useContext(ShareSheetContext); var image = useShareSheetOptionIcon(icon); return /*#__PURE__*/React.createElement(View, _objectSpread({ className: classNames(prefixClassname("share-sheet__option"), className), style: style, onClick: event => { _onClick === null || _onClick === void 0 ? void 0 : _onClick(event); onSelect === null || onSelect === void 0 ? void 0 : onSelect({ value, disabled, icon, name, description }); } }, restProps), icon && image, name && /*#__PURE__*/React.createElement(View, { className: prefixClassname("share-sheet__option-name"), children: name }), description && /*#__PURE__*/React.createElement(View, { className: prefixClassname("share-sheet__option-description"), children: description }), /*#__PURE__*/React.createElement(ButtonBase, _objectSpread({ className: prefixClassname("share-sheet__button") }, buttonProps))); } export default ShareSheetOption; //# sourceMappingURL=share-sheet-option.js.map