PATH:
home
/
letacommog
/
camarsac
/
wp-content
/
plugins
/
jet-engine
/
assets
/
js
/
admin
/
blocks-views
/
src
/
components
const className = 'jet-guten-image-slector'; const { __ } = wp.i18n; const { Button, SelectControl } = wp.components; const { MediaUpload, } = wp.editor; const { select } = wp.data; const { getMedia } = select('core'); const { Component, } = wp.element; const { compose } = wp.compose; const { withSelect } = wp.data; const { get, isEmpty, map, startCase, findKey } = lodash; class ImageSlector extends Component { getAvailableSizes() { return get(this.props.imageData, ['media_details', 'sizes'], {}); } checkImage() { if (!this.props.image.url) { let size = this.props.image.size ? this.props.image.size : 'full', urlData = get(this.props.imageData.media_details.sizes, [size]), url = urlData ? urlData.source_url : this.props.imageData.media_details.sizes.full.source_url; this.updateImage({ url, size }); } } updateImage(imageData) { this.props.onChangeImage(Object.assign( this.props.image, imageData )); } render() { const availableSizes = this.getAvailableSizes(); let imageID, imageURL; if (this.props.imageData) { imageID = this.props.imageData.id; imageURL = this.props.imageData.media_details.sizes.full.source_url; this.checkImage(this.props.image); } return ( <div className={className}> <MediaUpload onSelect={media => this.updateImage({ id:media.id, url: '' }) } type="image" value={imageID} render={({ open }) => [ !imageURL && !this.props.image.url && ( <Button className={`button button-large ${className}__btn`} onClick={open} > {__("Select Image")} </Button> ), imageURL && ( <Button onClick={open} > <img className={`${className}__img`} src={imageURL} alt={ __( 'Selected image' ) } /> </Button> ) ]} /> { ! isEmpty( availableSizes ) && ( <SelectControl label={ __( 'Image Size' ) } value={ this.props.image.url } options={ map( availableSizes, ( size, name ) => ( { value: size.source_url, label: startCase( name ), } ) ) } onChange={ newImageUrl => { let size = findKey(availableSizes, keyData => { return keyData.source_url === newImageUrl; }); this.updateImage({ url: newImageUrl, size: size }) } } /> ) } { imageURL && ( <Button className="components-button is-link is-destructive" onClick={()=> this.updateImage({ id: null, url: '' })} > {__( 'Remove featured image' )} </Button> )} </div> ); } } export default compose([ withSelect((select, props) => { const { getMedia } = select('core'); const { image } = props; const imageID = get(image, ['id']); return { imageData: imageID ? getMedia(imageID) : null, } }) ])(ImageSlector);
[+]
..
[-] inline-svg.js
[edit]
[-] image-slector.js
[edit]
[-] grouped-select-control.js
[edit]