@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
82 lines (81 loc) • 2.44 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import React from 'react';
import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
import { BrowserWrapper } from './BrowserWrapper';
import { ClipboardWrapper } from './ClipboardWrapper';
import { DropzoneWrapper } from './DropzoneWrapper';
const MediaPicker = ({
api,
isPopupOpened,
appearance,
mediaState,
onBrowseFn,
editorDomElement
}) => {
const {
focusState
} = useSharedPluginState(api, ['focus']);
const featureFlags = mediaState.mediaOptions && mediaState.mediaOptions.featureFlags;
const container = editorDomElement;
const clipboard = focusState !== null && focusState !== void 0 && focusState.hasFocus ? /*#__PURE__*/React.createElement(ClipboardWrapper, {
mediaState: mediaState,
featureFlags: featureFlags,
container: container
}) : null;
return /*#__PURE__*/React.createElement(React.Fragment, null, clipboard, /*#__PURE__*/React.createElement(DropzoneWrapper, {
mediaState: mediaState,
isActive: !isPopupOpened,
featureFlags: featureFlags,
editorDomElement: editorDomElement,
appearance: appearance
}), /*#__PURE__*/React.createElement(BrowserWrapper, {
onBrowseFn: onBrowseFn,
mediaState: mediaState,
featureFlags: featureFlags
}));
};
// eslint-disable-next-line @repo/internal/react/no-class-components
export class MediaPickerComponents extends React.Component {
constructor(...args) {
super(...args);
_defineProperty(this, "state", {
isPopupOpened: false
});
_defineProperty(this, "onBrowseFn", nativeBrowseFn => {
const {
mediaState
} = this.props;
mediaState && mediaState.setBrowseFn(nativeBrowseFn);
});
}
componentDidMount() {
const {
mediaState
} = this.props;
mediaState.onPopupToggle(isPopupOpened => {
this.setState({
isPopupOpened
});
});
}
render() {
const {
api,
mediaState,
editorDomElement,
appearance
} = this.props;
const {
isPopupOpened
} = this.state;
return /*#__PURE__*/React.createElement(MediaPicker, {
mediaState: mediaState,
editorDomElement: editorDomElement,
appearance: appearance,
isPopupOpened: isPopupOpened,
onBrowseFn: this.onBrowseFn,
api: api
});
}
}
_defineProperty(MediaPickerComponents, "displayName", 'MediaPickerComponents');