UNPKG

@guestbell/react-page-plugins

Version:

Plugins we use in GuestBell for working with amazing react-page package

193 lines 10.3 kB
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } import * as React from 'react'; import FormControlLabel from '@mui/material/FormControlLabel'; import Switch from '@mui/material/Switch'; import ColorComponent from './sub/Color'; import LinearGradientComponent from './sub/LinearGradient'; import ImageComponent from './sub/Image'; import Tabs from '@mui/material/Tabs'; import Tab from '@mui/material/Tab'; import ImageIcon from '@mui/icons-material/Landscape'; import ColorIcon from '@mui/icons-material/ColorLens'; import GradientIcon from '@mui/icons-material/Gradient'; import Typography from '@mui/material/Typography'; import { ModeEnum } from '../types/ModeEnum'; import Slider from '@mui/material/Slider'; import { useBackgroundApi, useBackgroundPreviewState } from '../Provider/BackgroundProvider'; var BackgroundControls = function BackgroundControls(props) { var _React$useState = React.useState(props.defaultMode), _React$useState2 = _slicedToArray(_React$useState, 2), mode = _React$useState2[0], setMode = _React$useState2[1]; var _props$data = props.data, _props$data$hasPaddin = _props$data.hasPadding, hasPadding = _props$data$hasPaddin === void 0 ? props.defaultHasPadding : _props$data$hasPaddin, _props$data$modeFlag = _props$data.modeFlag, modeFlag = _props$data$modeFlag === void 0 ? props.defaultModeFlag : _props$data$modeFlag, _props$data$darken = _props$data.darken, darken = _props$data$darken === void 0 ? props.defaultDarken : _props$data$darken, _props$data$lighten = _props$data.lighten, lighten = _props$data$lighten === void 0 ? props.defaultLighten : _props$data$lighten; var previewState = useBackgroundPreviewState(); var _useBackgroundApi = useBackgroundApi(), handleChangeBackgroundColorPreview = _useBackgroundApi.handleChangeBackgroundColorPreview, handleChangeDarken = _useBackgroundApi.handleChangeDarken, handleChangeDarkenPreview = _useBackgroundApi.handleChangeDarkenPreview, handleChangeGradientColorPreview = _useBackgroundApi.handleChangeGradientColorPreview, handleChangeGradientDegPreview = _useBackgroundApi.handleChangeGradientDegPreview, handleChangeGradientOpacityPreview = _useBackgroundApi.handleChangeGradientOpacityPreview, handleChangeHasPadding = _useBackgroundApi.handleChangeHasPadding, handleChangeLighten = _useBackgroundApi.handleChangeLighten, handleChangeLightenPreview = _useBackgroundApi.handleChangeLightenPreview, handleChangeModeSwitch = _useBackgroundApi.handleChangeModeSwitch; var darkenFinal = previewState.darkenPreview !== undefined ? previewState.darkenPreview : darken; var lightenFinal = previewState.lightenPreview !== undefined ? previewState.lightenPreview : lighten; var ModeSwitch = React.useCallback(function () { var label = 'ON/OFF'; switch (mode) { case ModeEnum.COLOR_MODE_FLAG: // label = 'Use color' break; case ModeEnum.IMAGE_MODE_FLAG: // label = 'Use image' break; case ModeEnum.GRADIENT_MODE_FLAG: // label = 'Use gradient' break; default: label = 'Unknown mode'; break; } return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormControlLabel, { control: /*#__PURE__*/React.createElement(Switch, { onChange: handleChangeModeSwitch(mode, modeFlag), checked: Boolean(modeFlag & mode) }), label: label })); }, [modeFlag, mode, handleChangeModeSwitch]); var ensureModeOn = React.useCallback(function (mode) { return function () { if ((modeFlag & mode) === 0) { handleChangeModeSwitch(mode, modeFlag)(); } }; }, [handleChangeModeSwitch, modeFlag]); var renderUI = function renderUI() { switch (mode) { case ModeEnum.COLOR_MODE_FLAG: return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ColorComponent, _extends({}, props, { ensureModeOn: ensureModeOn(ModeEnum.COLOR_MODE_FLAG), onChangeBackgroundColorPreview: handleChangeBackgroundColorPreview, backgroundColorPreview: previewState.backgroundColorPreview }))); case ModeEnum.GRADIENT_MODE_FLAG: return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LinearGradientComponent, _extends({}, props, { ensureModeOn: ensureModeOn(ModeEnum.GRADIENT_MODE_FLAG), gradientDegPreview: previewState.gradientDegPreview, gradientDegPreviewIndex: previewState.gradientDegPreviewIndex, gradientOpacityPreview: previewState.gradientOpacityPreview, gradientOpacityPreviewIndex: previewState.gradientOpacityPreviewIndex, gradientColorPreview: previewState.gradientColorPreview, gradientColorPreviewIndex: previewState.gradientColorPreviewIndex, gradientColorPreviewColorIndex: previewState.gradientColorPreviewColorIndex, onChangeGradientDegPreview: handleChangeGradientDegPreview, onChangeGradientOpacityPreview: handleChangeGradientOpacityPreview, onChangeGradientColorPreview: handleChangeGradientColorPreview }))); case ModeEnum.IMAGE_MODE_FLAG: default: return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ImageComponent, _extends({}, props, { ensureModeOn: ensureModeOn(ModeEnum.IMAGE_MODE_FLAG) }))); } }; var handleChangeMode = React.useCallback(function (e, mode) { return setMode(mode); }, []); return /*#__PURE__*/React.createElement("div", { className: "backgroundControls" }, /*#__PURE__*/React.createElement(Tabs, { value: mode, onChange: handleChangeMode, centered: true }, (props.enabledModes & ModeEnum.IMAGE_MODE_FLAG) > 0 && /*#__PURE__*/React.createElement(Tab, { icon: /*#__PURE__*/React.createElement(ImageIcon, { color: (modeFlag & ModeEnum.IMAGE_MODE_FLAG) > 0 ? 'primary' : 'action' }), label: "Image", value: ModeEnum.IMAGE_MODE_FLAG }), (props.enabledModes & ModeEnum.COLOR_MODE_FLAG) > 0 && /*#__PURE__*/React.createElement(Tab, { icon: /*#__PURE__*/React.createElement(ColorIcon, { color: (modeFlag & ModeEnum.COLOR_MODE_FLAG) > 0 ? 'primary' : 'action' }), label: "Color", value: ModeEnum.COLOR_MODE_FLAG }), (props.enabledModes & ModeEnum.GRADIENT_MODE_FLAG) > 0 && /*#__PURE__*/React.createElement(Tab, { icon: /*#__PURE__*/React.createElement(GradientIcon, { color: (modeFlag & ModeEnum.GRADIENT_MODE_FLAG) > 0 ? 'primary' : 'action' }), label: "Gradient", value: ModeEnum.GRADIENT_MODE_FLAG })), /*#__PURE__*/React.createElement("div", { className: "py-3" }, renderUI()), /*#__PURE__*/React.createElement("div", { style: { display: 'flex' } }, /*#__PURE__*/React.createElement("div", { style: { flex: '1', marginRight: '8px' } }, /*#__PURE__*/React.createElement(Typography, { variant: "body1", id: "linear-gradient-darken-label" }, "Darken (", (darkenFinal * 100).toFixed(0), "%)"), /*#__PURE__*/React.createElement(Slider, { "aria-labelledby": "linear-gradient-darken-label", value: darkenFinal, onChange: function onChange(e, value) { return handleChangeDarkenPreview(value instanceof Array ? value[0] : value); }, onChangeCommitted: handleChangeDarken, step: 0.01, min: 0, max: 1 })), /*#__PURE__*/React.createElement("div", { style: { flex: '1', marginLeft: '8px' } }, /*#__PURE__*/React.createElement(Typography, { variant: "body1", id: "linear-gradient-lighten-label" }, "Lighten (", (lightenFinal * 100).toFixed(0), "%)"), /*#__PURE__*/React.createElement(Slider, { "aria-labelledby": "linear-gradient-lighten-label", value: lightenFinal, onChange: function onChange(e, value) { return handleChangeLightenPreview(value instanceof Array ? value[0] : value); }, onChangeCommitted: handleChangeLighten, step: 0.01, min: 0, max: 1 }))), /*#__PURE__*/React.createElement("div", { style: { display: 'flex' } }, /*#__PURE__*/React.createElement(ModeSwitch, null), /*#__PURE__*/React.createElement(FormControlLabel, { control: /*#__PURE__*/React.createElement(Switch, { onChange: handleChangeHasPadding, checked: hasPadding }), label: "Use padding" }))); }; export default BackgroundControls; //# sourceMappingURL=BackgroundDefaultControls.js.map