UNPKG

reanimated-color-picker

Version:
212 lines (210 loc) 6.36 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); exports.Preview = Preview; var _react = _interopRequireWildcard(require('react')); var _reactNative = require('react-native'); var _reactNativeReanimated = _interopRequireWildcard(require('react-native-reanimated')); var _index = _interopRequireDefault(require('../colorKit/index')); var _AppContext = _interopRequireDefault(require('../AppContext')); var _styles = require('../styles'); var _utils = require('../utils'); var _PreviewText = require('./PreviewText'); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _interopRequireWildcard(e, t) { if ('function' == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || ('object' != typeof e && 'function' != typeof e)) return f; if ((o = t ? n : r)) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) 'default' !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : (f[t] = e[t])); return f; })(e, t); } /** @see [Preview](https://alabsi91.github.io/reanimated-color-picker/api/preview/preview/) */ function Preview({ style = {}, textStyle = {}, colorFormat = 'hex', hideInitialColor = false, hideText = false, disableOpacityTexture = false, }) { const { hueValue, saturationValue, brightnessValue, alphaValue, colorResult: returnedResults, value, } = (0, _AppContext.default)(); const justifyContent = (0, _utils.getStyle)(style, 'justifyContent') ?? 'center'; const [initialValueFormatted, setInitialValueFormatted] = (0, _react.useState)(''); const alphaStaleValue = (0, _react.useRef)(0); (0, _react.useEffect)(() => { setInitialValueFormatted(returnedResults()[colorFormat]); alphaStaleValue.current = alphaValue.value; }, [value, colorFormat]); const initialTextColor = (() => { if (alphaStaleValue.current < 0.5) { return '#000000'; } const isDark = _index.default.isDark(initialValueFormatted); return isDark ? '#ffffff' : '#000000'; })(); const previewColor = (0, _reactNativeReanimated.useDerivedValue)(() => { return _index.default.runOnUI().HEX({ h: hueValue.value, s: saturationValue.value, v: brightnessValue.value, a: alphaValue.value, }); }, [hueValue, saturationValue, brightnessValue, alphaValue]); const previewColorStyle = (0, _reactNativeReanimated.useAnimatedStyle)( () => ({ backgroundColor: previewColor.value, }), [previewColor], ); const previewTextColor = (0, _reactNativeReanimated.useDerivedValue)(() => { if (alphaValue.value < 0.5) { return '#000000'; } const currentColor = { h: hueValue.value, s: saturationValue.value, v: brightnessValue.value, a: alphaValue.value, }; const isDark = _index.default.runOnUI().isDark(currentColor); return isDark ? '#ffffff' : '#000000'; }, [hueValue, saturationValue, brightnessValue, alphaValue]); const previewTextStyle = (0, _reactNativeReanimated.useAnimatedStyle)( () => ({ color: previewTextColor.value, }), [previewTextColor], ); return /*#__PURE__*/ _react.default.createElement( Wrapper, { disableTexture: disableOpacityTexture, style: style, }, /*#__PURE__*/ _react.default.createElement( _utils.ConditionalRendering, { if: !hideInitialColor, }, /*#__PURE__*/ _react.default.createElement( _reactNative.View, { style: [ _styles.styles.previewContainer, { backgroundColor: value, justifyContent, }, ], }, /*#__PURE__*/ _react.default.createElement( _utils.ConditionalRendering, { if: !hideText, }, /*#__PURE__*/ _react.default.createElement( _reactNativeReanimated.default.Text, { style: [ _styles.styles.previewText, textStyle, { color: initialTextColor, }, ], accessibilityLiveRegion: 'none', }, initialValueFormatted, ), ), ), ), /*#__PURE__*/ _react.default.createElement( _reactNativeReanimated.default.View, { style: [ _styles.styles.previewContainer, { justifyContent, }, previewColorStyle, ], }, /*#__PURE__*/ _react.default.createElement( _utils.ConditionalRendering, { if: !hideText, }, /*#__PURE__*/ _react.default.createElement(_PreviewText.PreviewText, { colorFormat: colorFormat, style: [textStyle, previewTextStyle], }), ), ), ); } function Wrapper({ children, disableTexture, style }) { if (disableTexture) { return /*#__PURE__*/ _react.default.createElement( _reactNative.View, { style: [_styles.styles.previewWrapper, style], }, children, ); } if (_utils.isWeb) { return /*#__PURE__*/ _react.default.createElement( _reactNative.View, { style: [_styles.styles.previewWrapper, previewWrapperWebStyle, style], }, children, ); } return /*#__PURE__*/ _react.default.createElement( _reactNative.ImageBackground, { source: require('../assets/transparent-texture.png'), imageStyle: { width: '100%', height: '100%', }, resizeMode: 'repeat', style: [_styles.styles.previewWrapper, style], }, children, ); } const previewWrapperWebStyle = { backgroundImage: 'repeating-linear-gradient(45deg, #c1c1c1 25%, transparent 25%, transparent 75%, #c1c1c1 75%, #c1c1c1), repeating-linear-gradient(45deg, #c1c1c1 25%, #fff 25%, #fff 75%, #c1c1c1 75%, #c1c1c1)', backgroundPosition: '0px 0px, 8px 8px', backgroundSize: '16px 16px', };