UNPKG

@react-native-ohos/masked-view

Version:

React Native MaskedView component

87 lines (86 loc) 4.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var React = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _RNCMaskedViewNativeComponent = _interopRequireDefault(require("./RNCMaskedViewNativeComponent")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * * @format */ const RNCMaskedView = _RNCMaskedViewNativeComponent.default; /** * Renders the child view with a mask specified in the `maskElement` prop. * * ``` * import React from 'react'; * import { Text, View } from 'react-native'; * import MaskedView from 'react-native-masked-view'; * * class MyMaskedView extends React.Component { * render() { * return ( * <MaskedView * style={{ flex: 1 }} * maskElement={ * <View style={styles.maskContainerStyle}> * <Text style={styles.maskTextStyle}> * Basic Mask * </Text> * </View> * } * > * <View style={{ flex: 1, backgroundColor: 'blue' }} /> * </MaskedView> * ); * } * } * ``` * * The above example will render a view with a blue background that fills its * parent, and then mask that view with text that says "Basic Mask". * * The alpha channel of the view rendered by the `maskElement` prop determines how * much of the view's content and background shows through. Fully or partially * opaque pixels allow the underlying content to show through but fully * transparent pixels block that content. * */ class MaskedView extends React.Component { constructor(...args) { super(...args); _defineProperty(this, "_hasWarnedInvalidRenderMask", false); } render() { const { maskElement, children, ...otherViewProps } = this.props; if (! /*#__PURE__*/React.isValidElement(maskElement)) { if (!this._hasWarnedInvalidRenderMask) { console.warn('MaskedView: Invalid `maskElement` prop was passed to MaskedView. ' + 'Expected a React Element. No mask will render.'); this._hasWarnedInvalidRenderMask = true; } return /*#__PURE__*/React.createElement(_reactNative.View, otherViewProps, children); } return /*#__PURE__*/React.createElement(RNCMaskedView, otherViewProps, /*#__PURE__*/React.createElement(_reactNative.View, { pointerEvents: "none", style: _reactNative.StyleSheet.absoluteFill }, maskElement), children); } } exports.default = MaskedView; //# sourceMappingURL=MaskedView.js.map