import React, {Fragment, useState} from 'react'; import {observer, inject} from "mobx-react"; import {f7, List, ListItem, Icon, Row, Button, Page, Navbar, NavRight, Segmented, BlockTitle, Link} from 'framework7-react'; import { useTranslation } from 'react-i18next'; import {Device} from '../../../../../common/mobile/utils/device'; import { ThemeColorPalette, CustomColorPicker } from '../../../../../common/mobile/lib/component/ThemeColorPalette.jsx'; const EditText = props => { const isAndroid = Device.android; const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); const storeTextSettings = props.storeTextSettings; const textIn = storeTextSettings.textIn; const fontName = storeTextSettings.fontName || _t.textFonts; const fontSize = storeTextSettings.fontSize; const fontColor = storeTextSettings.textColor; const displaySize = typeof fontSize === 'undefined' ? _t.textAuto : fontSize + ' ' + _t.textPt; const isBold = storeTextSettings.isBold; const isItalic = storeTextSettings.isItalic; const isUnderline = storeTextSettings.isUnderline; const paragraphAlign = storeTextSettings.paragraphAlign; const paragraphValign = storeTextSettings.paragraphValign; const fontColorPreview = fontColor !== 'auto' ? : ; return ( {props.toggleBold(!isBold)}}>B {props.toggleItalic(!isItalic)}}>I {props.toggleUnderline(!isUnderline)}} style={{textDecoration: "underline"}}>U {!isAndroid ? {fontColorPreview} : fontColorPreview } {textIn === 2 ? ( {props.onParagraphAlign('left')}}> {props.onParagraphAlign('center')}}> {props.onParagraphAlign('right')}}> {props.onParagraphAlign('justify')}}> {props.onParagraphValign('top')}}> {props.onParagraphValign('center')}}> {props.onParagraphValign('bottom')}}> ) : null} ); }; const PageFonts = props => { const isAndroid = Device.android; const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); const storeTextSettings = props.storeTextSettings; const size = storeTextSettings.fontSize; const displaySize = typeof size === 'undefined' ? _t.textAuto : size + ' ' + _t.textPt; const curFontName = storeTextSettings.fontName; const fonts = storeTextSettings.fontsArray; const [vlFonts, setVlFonts] = useState({ vlData: { items: [], } }); const renderExternal = (vl, vlData) => { setVlFonts((prevState) => { let fonts = [...prevState.vlData.items]; fonts.splice(vlData.fromIndex, vlData.toIndex, ...vlData.items); return {vlData: { items: fonts, }}; }); }; return ( {Device.phone && } {!isAndroid && {displaySize}} {props.changeFontSize(size, true)}}> {isAndroid ? : ' - '} {isAndroid && {displaySize}} {props.changeFontSize(size, false)}}> {isAndroid ? : ' + '} {_t.textFonts} {vlFonts.vlData.items.map((item, index) => ( {props.changeFontFamily(item.name)}} > ))} ); }; const PageFontColor = props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); const storeTextSettings = props.storeTextSettings; const storePalette = props.storePalette; const textColor = storeTextSettings.textColor; const customColors = storePalette.customColors; const changeColor = (color, effectId, effectValue) => { if (color !== 'empty') { if (effectId !== undefined) { const newColor = {color: color, effectId: effectId, effectValue: effectValue}; props.onTextColor(newColor); storeTextSettings.changeTextColor(newColor); } else { props.onTextColor(color); storeTextSettings.changeTextColor(color); } } else { // open custom color menu props.f7router.navigate('/edit-text-custom-font-color/', {props: {onTextColor: props.onTextColor}}); } }; return ( {Device.phone && } ); }; const PageCustomFontColor = props => { const { t } = useTranslation(); const _t = t('View.Edit', {returnObjects: true}); const storeTextSettings = props.storeTextSettings; const storePalette = props.storePalette; let textColor = storeTextSettings.textColor; if (typeof textColor === 'object') { textColor = textColor.color; } const autoColor = textColor === 'auto' ? window.getComputedStyle(document.getElementById('font-color-auto')).backgroundColor : null; const onAddNewColor = (colors, color) => { storePalette.changeCustomColors(colors); storeTextSettings.changeTextColor(color); props.onTextColor(color); props.f7router.back(); }; return ( {Device.phone && } ) }; const EditTextContainer = inject("storeTextSettings", "storeFocusObjects")(observer(EditText)); const PageTextFonts = inject("storeTextSettings", "storeFocusObjects")(observer(PageFonts)); const PageTextFontColor = inject("storeTextSettings", "storePalette")(observer(PageFontColor)); const PageTextCustomFontColor = inject("storeTextSettings", "storePalette")(observer(PageCustomFontColor)); export { EditTextContainer as EditText, PageTextFonts, PageTextFontColor, PageTextCustomFontColor };