File "index.js"
Full Path: /home/warrior1/public_html/languages/wp-content/plugins/astra-sites/inc/lib/onboarding/assets/src/components/media-uploader/index.js
File size: 5.33 KB
MIME-type: text/plain
Charset: utf-8
import React, { useEffect } from 'react';
import { __ } from '@wordpress/i18n';
import { addFilter } from '@wordpress/hooks';
import { RangeControl } from '@wordpress/components';
import { MediaUpload } from '@wordpress/media-utils';
import Button from '../button/button';
import { useStateValue } from '../../store/store';
import { sendPostMessage, getDataUri } from '../../utils/functions';
import { initialState } from '../../store/reducer';
import './style.scss';
import ICONS from '../../../icons';
const MediaUploader = () => {
const replaceMediaUpload = () => MediaUpload;
const [ { siteLogo }, dispatch ] = useStateValue();
addFilter(
'editor.MediaUpload',
'core/edit-post/components/media-upload/replace-media-upload',
replaceMediaUpload
);
const onSelectImage = ( media ) => {
const mediaData = {
id: media.id,
url: media.url,
width: siteLogo.width,
};
if ( window.location.protocol === 'http:' ) {
getDataUri( media.url, function ( data ) {
mediaData.dataUri = data;
updateValues( mediaData );
} );
} else {
updateValues( mediaData );
}
};
const updateValues = ( data ) => {
dispatch( {
type: 'set',
siteLogo: data,
} );
sendPostMessage( {
param: 'siteLogo',
data,
} );
};
const removeImage = () => {
updateValues( initialState.siteLogo );
};
const onWidthChange = ( width ) => {
const newLogoOptions = {
...siteLogo,
width,
};
dispatch( {
type: 'set',
siteLogo: newLogoOptions,
} );
sendPostMessage( {
param: 'siteLogo',
data: newLogoOptions,
} );
};
const resetLogoWidth = ( event ) => {
if ( ! siteLogo.url ) {
return;
}
event.stopPropagation();
onWidthChange( initialState.siteLogo.width );
};
useEffect( () => {
if ( !! astraSitesVars.isRTLEnabled ) {
const rangeControl = document.querySelector(
'.components-range-control__wrapper'
);
// Range control slider styling for RTL.
const currentValue = rangeControl.children[ 3 ].style.left;
rangeControl.children[ 3 ].style.marginRight = '-10px';
rangeControl.children[ 3 ].style.removeProperty( 'margin-left' );
rangeControl.children[ 3 ].style.right = currentValue;
rangeControl.children[ 4 ].style.removeProperty( 'transform' );
rangeControl.children[ 4 ].style.removeProperty( 'left' );
rangeControl.children[ 4 ].style.right = currentValue;
rangeControl.children[ 4 ].style.transform = 'translateX(50%)';
}
} );
return (
<MediaUpload
onSelect={ ( media ) => onSelectImage( media ) }
allowedTypes={ [ 'image' ] }
value={ siteLogo.id }
render={ ( { open } ) => (
<>
{ '' !== siteLogo.url && undefined !== siteLogo.url ? (
<div className="ist-logo-wrapper">
<div
className="ist-remove-logo"
onClick={ removeImage }
title={ __( 'Remove Logo', 'astra-sites' ) }
>
<svg
xmlns="http://www.w3.org/2000/svg"
width="8"
height="8"
viewBox="0 0 8 8"
fill="#333333"
>
<path
d="M8 0.7L7.3 0L4 3.3L0.7 0L0 0.7L3.3 4L0 7.3L0.7 8L4 4.7L7.3 8L8 7.3L4.7 4L8 0.7Z"
fill="#333333"
/>
</svg>
</div>
<div
className="ist-selected-image"
onClick={ open }
>
<div
onClick={ open }
className="ist-logo-preview-wrap"
>
<img
alt={ __( 'Site Logo', 'astra-sites' ) }
src={ siteLogo.url }
/>
<div
className="ist-change-logo"
onClick={ open }
>
{ __( 'Change Logo', 'astra-sites' ) }
</div>
</div>
</div>
</div>
) : (
''
) }
{ '' === siteLogo.url ? (
<div>
<Button
className="ist-button ist-button-outline ist-logo-button"
onClick={ open }
>
<h5>
{ __( 'Upload File Here', 'astra-sites' ) }
</h5>
<p>
{ __(
'Suggested Dimensions: 180x60 pixels',
'astra-sites'
) }
</p>
</Button>
</div>
) : (
''
) }
{ '' === siteLogo.url && (
<div className="logo-skip-info">
<h5>
{ __(
'Don’t have a logo? No problem!',
'astra-sites'
) }
</h5>
<p>
{ __(
'You can upload it later',
'astra-sites'
) }
</p>
</div>
) }
<div className="astra-sites-ai-logo-wrap">
<div className="label">
{ __( 'Logo Width', 'astra-sitess' ) }
</div>
<div
className={ `control-reset ${
siteLogo.width === initialState.siteLogo.width
? 'disabled'
: ''
}` }
onClick={ resetLogoWidth }
>
{ ICONS.reset }
</div>
</div>
<div className="astra-sites-ai-rangecontrol-wrap">
<RangeControl
value={ siteLogo.width }
min={ 0 }
max={ 500 }
step={ 1 }
onChange={ ( width ) => {
onWidthChange( width );
} }
trackColor="#4361ee"
disabled={ '' !== siteLogo.url ? false : true }
/>
</div>
</>
) }
/>
);
};
export default MediaUploader;