[DE mobile] Fix Bug 47900
This commit is contained in:
		
							parent
							
								
									395445571a
								
							
						
					
					
						commit
						8fdb2109fe
					
				| 
						 | 
				
			
			@ -580,6 +580,14 @@
 | 
			
		|||
        -ms-appearance: none;
 | 
			
		||||
        appearance: none;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Fonts List 
 | 
			
		||||
 | 
			
		||||
    .font-item {
 | 
			
		||||
        .item-content {
 | 
			
		||||
            padding-left: 0;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -545,4 +545,12 @@
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Fonts List 
 | 
			
		||||
 | 
			
		||||
    .font-item {
 | 
			
		||||
        .item-radio:not(.item-radio-icon-end) > .icon-radio {
 | 
			
		||||
            margin-right: 0;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -842,6 +842,17 @@ input[type="number"]::-webkit-inner-spin-button {
 | 
			
		|||
    box-shadow: inset 0 2px red;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Fonts List 
 | 
			
		||||
 | 
			
		||||
.font-item {
 | 
			
		||||
    .item-inner {
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        &:after {
 | 
			
		||||
            left: 16px;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,49 @@ import { EditText } from '../../view/edit/EditText'
 | 
			
		|||
class EditTextController extends Component {
 | 
			
		||||
    constructor(props) {
 | 
			
		||||
        super(props);
 | 
			
		||||
 | 
			
		||||
        this.iconWidth = 302,
 | 
			
		||||
        this.iconHeight = Asc.FONT_THUMBNAIL_HEIGHT || 26,
 | 
			
		||||
        this.thumbCanvas = document.createElement('canvas'),
 | 
			
		||||
        this.thumbContext = this.thumbCanvas.getContext('2d'),
 | 
			
		||||
        this.thumbs = [
 | 
			
		||||
            {ratio: 1, path: '../../../../../../../sdkjs/common/Images/fonts_thumbnail.png', width: this.iconWidth, height: this.iconHeight},
 | 
			
		||||
            {ratio: 1.5, path: '../../../../../../../sdkjs/common/Images/fonts_thumbnail@1.5x.png', width: this.iconWidth * 1.5, height: this.iconHeight * 1.5},
 | 
			
		||||
            {ratio: 2, path: '../../../../../../../sdkjs/common/Images/fonts_thumbnail@2x.png', width: this.iconWidth * 2, height: this.iconHeight * 2}
 | 
			
		||||
        ],
 | 
			
		||||
        this.thumbIdx = 0,
 | 
			
		||||
        this.listItemHeight = 26,
 | 
			
		||||
        this.spriteCols = 1,
 | 
			
		||||
        this.applicationPixelRatio = Common.Utils.applicationPixelRatio();
 | 
			
		||||
 | 
			
		||||
        if (typeof window['AscDesktopEditor'] === 'object') {
 | 
			
		||||
            this.thumbs[0].path = window['AscDesktopEditor'].getFontsSprite('');
 | 
			
		||||
            this.thumbs[1].path = window['AscDesktopEditor'].getFontsSprite('@1.5x');
 | 
			
		||||
            this.thumbs[2].path = window['AscDesktopEditor'].getFontsSprite('@2x');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let bestDistance = Math.abs(this.applicationPixelRatio - this.thumbs[0].ratio);
 | 
			
		||||
        let currentDistance = 0;
 | 
			
		||||
 | 
			
		||||
        for (let i = 1; i < this.thumbs.length; i++) {
 | 
			
		||||
            currentDistance = Math.abs(this.applicationPixelRatio - this.thumbs[i].ratio);
 | 
			
		||||
            if (currentDistance < (bestDistance - 0.0001))
 | 
			
		||||
            {
 | 
			
		||||
                bestDistance = currentDistance;
 | 
			
		||||
                this.thumbIdx = i;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.thumbCanvas.height = this.thumbs[this.thumbIdx].height;
 | 
			
		||||
        this.thumbCanvas.width = this.thumbs[this.thumbIdx].width;
 | 
			
		||||
 | 
			
		||||
        this.loadSprite();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    loadSprite() {
 | 
			
		||||
        this.spriteThumbs = new Image();
 | 
			
		||||
        this.spriteCols = Math.floor(this.spriteThumbs.width / (this.thumbs[this.thumbIdx].width)) || 1;
 | 
			
		||||
        this.spriteThumbs.src = this.thumbs[this.thumbIdx].path;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    componentDidMount() {
 | 
			
		||||
| 
						 | 
				
			
			@ -198,25 +241,34 @@ class EditTextController extends Component {
 | 
			
		|||
 | 
			
		||||
    render() {
 | 
			
		||||
        return (
 | 
			
		||||
            <EditText changeFontSize={this.changeFontSize}
 | 
			
		||||
                      changeFontFamily={this.changeFontFamily}
 | 
			
		||||
                      onTextColorAuto={this.onTextColorAuto}
 | 
			
		||||
                      onTextColor={this.onTextColor}
 | 
			
		||||
                      onBackgroundColor={this.onBackgroundColor}
 | 
			
		||||
                      toggleBold={this.toggleBold}
 | 
			
		||||
                      toggleItalic={this.toggleItalic}
 | 
			
		||||
                      toggleUnderline={this.toggleUnderline}
 | 
			
		||||
                      toggleStrikethrough={this.toggleStrikethrough}
 | 
			
		||||
                      onAdditionalStrikethrough={this.onAdditionalStrikethrough}
 | 
			
		||||
                      onAdditionalCaps={this.onAdditionalCaps}
 | 
			
		||||
                      onAdditionalScript={this.onAdditionalScript}
 | 
			
		||||
                      changeLetterSpacing={this.changeLetterSpacing}
 | 
			
		||||
                      onParagraphAlign={this.onParagraphAlign}
 | 
			
		||||
                      onParagraphMove={this.onParagraphMove}
 | 
			
		||||
                      onBullet={this.onBullet}
 | 
			
		||||
                      onNumber={this.onNumber}
 | 
			
		||||
                      onMultiLevelList={this.onMultiLevelList}
 | 
			
		||||
                      onLineSpacing={this.onLineSpacing}
 | 
			
		||||
            <EditText 
 | 
			
		||||
                changeFontSize={this.changeFontSize}
 | 
			
		||||
                changeFontFamily={this.changeFontFamily}
 | 
			
		||||
                onTextColorAuto={this.onTextColorAuto}
 | 
			
		||||
                onTextColor={this.onTextColor}
 | 
			
		||||
                onBackgroundColor={this.onBackgroundColor}
 | 
			
		||||
                toggleBold={this.toggleBold}
 | 
			
		||||
                toggleItalic={this.toggleItalic}
 | 
			
		||||
                toggleUnderline={this.toggleUnderline}
 | 
			
		||||
                toggleStrikethrough={this.toggleStrikethrough}
 | 
			
		||||
                onAdditionalStrikethrough={this.onAdditionalStrikethrough}
 | 
			
		||||
                onAdditionalCaps={this.onAdditionalCaps}
 | 
			
		||||
                onAdditionalScript={this.onAdditionalScript}
 | 
			
		||||
                changeLetterSpacing={this.changeLetterSpacing}
 | 
			
		||||
                onParagraphAlign={this.onParagraphAlign}
 | 
			
		||||
                onParagraphMove={this.onParagraphMove}
 | 
			
		||||
                onBullet={this.onBullet}
 | 
			
		||||
                onNumber={this.onNumber}
 | 
			
		||||
                onMultiLevelList={this.onMultiLevelList}
 | 
			
		||||
                onLineSpacing={this.onLineSpacing}
 | 
			
		||||
                spriteThumbs={this.spriteThumbs}
 | 
			
		||||
                thumbs={this.thumbs}
 | 
			
		||||
                thumbIdx={this.thumbIdx}
 | 
			
		||||
                iconWidth={this.iconWidth}
 | 
			
		||||
                iconHeight={this.iconHeight}
 | 
			
		||||
                thumbCanvas={this.thumbCanvas}
 | 
			
		||||
                thumbContext={this.thumbContext}
 | 
			
		||||
                spriteCols={this.spriteCols}
 | 
			
		||||
            />
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,11 +14,21 @@ const PageFonts = props => {
 | 
			
		|||
    const displaySize = typeof size === 'undefined' ? t('Edit.textAuto') : size + ' ' + t('Edit.textPt');
 | 
			
		||||
    const curFontName = storeTextSettings.fontName;
 | 
			
		||||
    const fonts = storeTextSettings.fontsArray;
 | 
			
		||||
    const iconWidth = props.iconWidth;
 | 
			
		||||
    const iconHeight = props.iconHeight;
 | 
			
		||||
    const thumbs = props.thumbs;
 | 
			
		||||
    const thumbIdx = props.thumbIdx;
 | 
			
		||||
    const thumbCanvas = props.thumbCanvas;
 | 
			
		||||
    const thumbContext = props.thumbContext;
 | 
			
		||||
    const spriteCols = props.spriteCols;
 | 
			
		||||
    const spriteThumbs = props.spriteThumbs;
 | 
			
		||||
   
 | 
			
		||||
    const [vlFonts, setVlFonts] = useState({
 | 
			
		||||
        vlData: {
 | 
			
		||||
            items: [],
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    const renderExternal = (vl, vlData) => {
 | 
			
		||||
        setVlFonts((prevState) => {
 | 
			
		||||
            let fonts = [...prevState.vlData.items];
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +39,13 @@ const PageFonts = props => {
 | 
			
		|||
        });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    const getImageUri = (font) => {
 | 
			
		||||
        thumbContext.clearRect(0, 0, thumbs[thumbIdx].width, thumbs[thumbIdx].height);
 | 
			
		||||
        thumbContext.drawImage(spriteThumbs, 0, -thumbs[thumbIdx].height * Math.floor(font.imgidx / spriteCols));
 | 
			
		||||
 | 
			
		||||
        return thumbCanvas.toDataURL();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
        <Page>
 | 
			
		||||
            <Navbar title={t('Edit.textFonts')} backLink={t('Edit.textBack')}>
 | 
			
		||||
| 
						 | 
				
			
			@ -63,14 +80,12 @@ const PageFonts = props => {
 | 
			
		|||
            }}>
 | 
			
		||||
                <ul>
 | 
			
		||||
                    {vlFonts.vlData.items.map((item, index) => (
 | 
			
		||||
                        <ListItem
 | 
			
		||||
                            key={index}
 | 
			
		||||
                            radio
 | 
			
		||||
                            checked={curFontName === item.name}
 | 
			
		||||
                            title={item.name}
 | 
			
		||||
                            style={{fontFamily: `${item.name}`}}
 | 
			
		||||
                            onClick={() => {storeTextSettings.changeFontFamily(item.name); props.changeFontFamily(item.name)}}
 | 
			
		||||
                        ></ListItem>
 | 
			
		||||
                        <ListItem className="font-item" key={index} radio checked={curFontName === item.name} onClick={() => {
 | 
			
		||||
                            storeTextSettings.changeFontFamily(item.name); 
 | 
			
		||||
                            props.changeFontFamily(item.name)
 | 
			
		||||
                        }}>
 | 
			
		||||
                            <img src={getImageUri(item)} style={{width: `${iconWidth}px`, height: `${iconHeight}px`}} />
 | 
			
		||||
                        </ListItem>
 | 
			
		||||
                    ))}
 | 
			
		||||
                </ul>
 | 
			
		||||
            </List>
 | 
			
		||||
| 
						 | 
				
			
			@ -500,7 +515,15 @@ const EditText = props => {
 | 
			
		|||
            <List>
 | 
			
		||||
                <ListItem title={fontName} link="/edit-text-fonts/" after={displaySize} routeProps={{
 | 
			
		||||
                    changeFontSize: props.changeFontSize,
 | 
			
		||||
                    changeFontFamily: props.changeFontFamily
 | 
			
		||||
                    changeFontFamily: props.changeFontFamily,
 | 
			
		||||
                    spriteThumbs: props.spriteThumbs,
 | 
			
		||||
                    thumbs: props.thumbs,
 | 
			
		||||
                    thumbIdx: props.thumbIdx,
 | 
			
		||||
                    iconWidth: props.iconWidth,
 | 
			
		||||
                    iconHeight: props.iconHeight,
 | 
			
		||||
                    thumbCanvas: props.thumbCanvas,
 | 
			
		||||
                    thumbContext: props.thumbContext,
 | 
			
		||||
                    spriteCols: props.spriteCols
 | 
			
		||||
                }}/>
 | 
			
		||||
                <ListItem className='buttons'>
 | 
			
		||||
                    <Row>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue