%PDF- %PDF-
| Direktori : /home/dopla/www/wp-content/plugins/ml-slider/admin/assets/js/gutenberg/components/ |
| Current File : /home/dopla/www/wp-content/plugins/ml-slider/admin/assets/js/gutenberg/components/block-edit.js |
// @codingStandardsIgnoreFile
import icon from './metaslider-icon'
import MetaSliderPreview from './preview'
import BlockStretchToolbar from './stretch-toolbar'
import SlideshowSelector from './slideshow-selector'
import RefreshButton from './refresh-button'
import {
InspectorAdvancedControls,
InspectorControls,
BlockControls
} from '@wordpress/block-editor'
const wp = window.wp
const { __ } = wp.i18n
const { Fragment } = wp.element
const { withSelect } = wp.data
const {
TextControl,
// SelectControl,
Placeholder,
Spinner,
PanelBody,
BaseControl
} = wp.components
const blockConfig = window.metaslider_block_config || {}
/**
* Edit function - renders the block
*
* @param {object} props
* @return {object}
*/
const edit = (props) => {
let {slideshows, className, isSelected, wideControlsEnabled = false} = props
let slideshowId = props.attributes.slideshowId
let stretch = props.attributes.stretch
let containerClass = props.attributes.containerClass
let isLoading = slideshows.isLoading
let hasSlideshows = slideshows.items.length || false
let refreshPreview = props.attributes.refreshPreview
/**
* inspectorControls contains the different block controls
* - InspectorControls: controls in the sidebar
* - BlockControls: action controls on the block
*/
const inspectorControls = isSelected && (
<Fragment key='inspectorControls'>
<InspectorControls key='inspector'>
<PanelBody title={__('Slideshow settings', 'ml-slider')}>
{hasSlideshows && <SlideshowSelector
props={props}
/>}
{slideshowId !== 0 && <a
href={blockConfig.plugin_page + '&id=' + slideshowId}
target="_blank"
className={'ms-edit-current-slideshow'}
>{__('Edit slideshow', 'ml-slider')}</a>}
{wideControlsEnabled && <BaseControl
label={__('Slideshow width', 'ml-slider')}>
<BlockStretchToolbar
value={ stretch }
onChange={ (nextStretch) => {
setTimeout(() => {
window.dispatchEvent(new Event('resize'))
}, 50)
props.setAttributes({ stretch: nextStretch })
}}
/>
</BaseControl>}
</PanelBody>
</InspectorControls>
<InspectorAdvancedControls>
<BaseControl
label={__('Additional CSS Class', 'ml-slider')}>
<TextControl
value={ containerClass }
onChange={(nextcontainerClass) => {
props.setAttributes({ containerClass: nextcontainerClass })
}}/>
</BaseControl>
</InspectorAdvancedControls>
<BlockControls key='controls'>
{wideControlsEnabled && <BlockStretchToolbar
label={__('Slideshow width', 'ml-slider')}
value={ stretch }
onChange={ (nextStretch) => {
setTimeout(() => {
window.dispatchEvent(new Event('resize'))
}, 50)
props.setAttributes({ stretch: nextStretch })
}}
/>}
{slideshowId !== 0 && <RefreshButton
key='refresh'
label={__('Refresh preview', 'ml-slider')}
onClick={ () => {
props.setAttributes({ refreshPreview: !refreshPreview })
}}
/>}
</BlockControls>
</Fragment>
)
// The slideshows list is loading
if (!hasSlideshows && !slideshowId && isLoading) {
return <Placeholder
className={className}
label={[icon, ' MetaSlider']}>
<Spinner key="spinner" /> {__('Loading slideshows list...', 'ml-slider')}
</Placeholder>
// No slideshows were found
} else if (!hasSlideshows && !slideshowId && !isLoading) {
return <Placeholder
className={className}
label={[icon, ' MetaSlider']}>
{__('No slideshows found.', 'ml-slider')} <a target='_blank' href={blockConfig.plugin_page}>{__('Create one now!', 'ml-slider')}</a>
</Placeholder>
}
/**
* - inspectorControls
* - MetaSliderPreview: the iframe component
* - Placeholder: a placeholder with the select if no slideshow is selected
*
* @return {array}
*/
return [
inspectorControls,
!!slideshowId && <MetaSliderPreview
key="preview"
className={className}
src={blockConfig.preview_url + '&slideshow_id=' + slideshowId}
slideshowId={slideshowId}
isSelected={isSelected}
refresh={refreshPreview}
/>,
!slideshowId && <Placeholder
key="instructions"
className={props.className}
label={[icon, ' MetaSlider']}
>
<SlideshowSelector
key="slidehow-selector"
props={props}
/>
</Placeholder>
]
}
/**
* withSelect - Gutenberg store / data management
*
* Fetches the 'alignWide' setting (defined by add_theme_support())
*/
export default withSelect(
(select) => ({
wideControlsEnabled: select('core/editor').getEditorSettings().alignWide
})
)(edit)