@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
108 lines (107 loc) • 5.97 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ReactMediaGroupNode = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _react = _interopRequireDefault(require("react"));
var _hooks = require("@atlaskit/editor-common/hooks");
var _providerFactory = require("@atlaskit/editor-common/provider-factory");
var _reactNodeView = _interopRequireDefault(require("@atlaskit/editor-common/react-node-view"));
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
var _useMediaProvider = require("../ui/hooks/useMediaProvider");
var _mediaGroupNext = require("./mediaGroupNext");
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
var selector = function selector(states) {
var _states$editorDisable, _states$editorViewMod;
return {
editorDisabled: (_states$editorDisable = states.editorDisabledState) === null || _states$editorDisable === void 0 ? void 0 : _states$editorDisable.editorDisabled,
editorViewMode: (_states$editorViewMod = states.editorViewModeState) === null || _states$editorViewMod === void 0 ? void 0 : _states$editorViewMod.mode
};
};
function MediaGroupNodeViewInternal(_ref) {
var renderFn = _ref.renderFn,
pluginInjectionApi = _ref.pluginInjectionApi;
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(pluginInjectionApi, ['editorDisabled', 'editorViewMode'], selector),
editorDisabled = _useSharedPluginState.editorDisabled,
editorViewMode = _useSharedPluginState.editorViewMode;
var mediaProvider = (0, _useMediaProvider.useMediaProvider)(pluginInjectionApi);
return renderFn({
editorDisabled: editorDisabled,
editorViewMode: editorViewMode,
mediaProvider: mediaProvider
});
}
var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
function MediaGroupNodeView() {
(0, _classCallCheck2.default)(this, MediaGroupNodeView);
return _callSuper(this, MediaGroupNodeView, arguments);
}
(0, _inherits2.default)(MediaGroupNodeView, _ReactNodeView);
return (0, _createClass2.default)(MediaGroupNodeView, [{
key: "render",
value: function render(props, forwardRef) {
var _this = this;
var providerFactory = props.providerFactory,
mediaOptions = props.mediaOptions,
pluginInjectionApi = props.pluginInjectionApi;
var getPos = this.getPos;
return /*#__PURE__*/_react.default.createElement(_providerFactory.WithProviders
// eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed)
, {
providers: ['contextIdentifierProvider'],
providerFactory: providerFactory
// eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed)
,
renderNode: function renderNode(_ref2) {
var contextIdentifierProvider = _ref2.contextIdentifierProvider;
var renderFn = function renderFn(_ref3) {
var mediaProviderFromState = _ref3.mediaProvider,
editorDisabled = _ref3.editorDisabled,
editorViewMode = _ref3.editorViewMode;
var mediaProvider = mediaProviderFromState ? Promise.resolve(mediaProviderFromState) : undefined;
if (!mediaProvider && !(0, _expValEquals.expValEquals)('platform_editor_media_vc_fixes', 'isEnabled', true)) {
return null;
}
return /*#__PURE__*/_react.default.createElement(_mediaGroupNext.MediaGroupNext, {
node: _this.node,
getPos: getPos,
view: _this.view,
forwardRef: forwardRef,
disabled: editorDisabled,
allowLazyLoading: mediaOptions.allowLazyLoading,
mediaProvider: mediaProvider,
contextIdentifierProvider: contextIdentifierProvider,
isCopyPasteEnabled: mediaOptions.isCopyPasteEnabled,
anchorPos: _this.view.state.selection.$anchor.pos,
headPos: _this.view.state.selection.$head.pos,
mediaOptions: mediaOptions,
editorViewMode: editorViewMode === 'view'
});
};
return /*#__PURE__*/_react.default.createElement(MediaGroupNodeViewInternal, {
renderFn: renderFn,
pluginInjectionApi: pluginInjectionApi
});
}
});
}
}]);
}(_reactNodeView.default);
var ReactMediaGroupNode = exports.ReactMediaGroupNode = function ReactMediaGroupNode(portalProviderAPI, eventDispatcher, providerFactory) {
var mediaOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
var pluginInjectionApi = arguments.length > 4 ? arguments[4] : undefined;
return function (node, view, getPos) {
return new MediaGroupNodeView(node, view, getPos, portalProviderAPI, eventDispatcher, {
providerFactory: providerFactory,
mediaOptions: mediaOptions,
pluginInjectionApi: pluginInjectionApi
}).init();
};
};