UNPKG

4.49 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4import _objectSpread from "@babel/runtime/helpers/esm/objectSpread";
5import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
6import _createClass from "@babel/runtime/helpers/esm/createClass";
7import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
8import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
9import _inherits from "@babel/runtime/helpers/esm/inherits";
10import { createElement } from "@wordpress/element";
11
12/**
13 * External dependencies
14 */
15import memize from 'memize';
16import { size, map, without } from 'lodash';
17/**
18 * WordPress dependencies
19 */
20
21import { withSelect } from '@wordpress/data';
22import { EditorProvider, ErrorBoundary, PostLockedModal } from '@wordpress/editor';
23import { StrictMode, Component } from '@wordpress/element';
24import { KeyboardShortcuts } from '@wordpress/components';
25/**
26 * Internal dependencies
27 */
28
29import preventEventDiscovery from './prevent-event-discovery';
30import Layout from './components/layout';
31
32var Editor =
33/*#__PURE__*/
34function (_Component) {
35 _inherits(Editor, _Component);
36
37 function Editor() {
38 var _this;
39
40 _classCallCheck(this, Editor);
41
42 _this = _possibleConstructorReturn(this, _getPrototypeOf(Editor).apply(this, arguments));
43 _this.getEditorSettings = memize(_this.getEditorSettings, {
44 maxSize: 1
45 });
46 return _this;
47 }
48
49 _createClass(Editor, [{
50 key: "getEditorSettings",
51 value: function getEditorSettings(settings, hasFixedToolbar, focusMode, hiddenBlockTypes, blockTypes) {
52 settings = _objectSpread({}, settings, {
53 hasFixedToolbar: hasFixedToolbar,
54 focusMode: focusMode
55 }); // Omit hidden block types if exists and non-empty.
56
57 if (size(hiddenBlockTypes) > 0) {
58 // Defer to passed setting for `allowedBlockTypes` if provided as
59 // anything other than `true` (where `true` is equivalent to allow
60 // all block types).
61 var defaultAllowedBlockTypes = true === settings.allowedBlockTypes ? map(blockTypes, 'name') : settings.allowedBlockTypes || [];
62 settings.allowedBlockTypes = without.apply(void 0, [defaultAllowedBlockTypes].concat(_toConsumableArray(hiddenBlockTypes)));
63 }
64
65 return settings;
66 }
67 }, {
68 key: "render",
69 value: function render() {
70 var _this$props = this.props,
71 settings = _this$props.settings,
72 hasFixedToolbar = _this$props.hasFixedToolbar,
73 focusMode = _this$props.focusMode,
74 post = _this$props.post,
75 initialEdits = _this$props.initialEdits,
76 onError = _this$props.onError,
77 hiddenBlockTypes = _this$props.hiddenBlockTypes,
78 blockTypes = _this$props.blockTypes,
79 props = _objectWithoutProperties(_this$props, ["settings", "hasFixedToolbar", "focusMode", "post", "initialEdits", "onError", "hiddenBlockTypes", "blockTypes"]);
80
81 if (!post) {
82 return null;
83 }
84
85 var editorSettings = this.getEditorSettings(settings, hasFixedToolbar, focusMode, hiddenBlockTypes, blockTypes);
86 return createElement(StrictMode, null, createElement(EditorProvider, _extends({
87 settings: editorSettings,
88 post: post,
89 initialEdits: initialEdits
90 }, props), createElement(ErrorBoundary, {
91 onError: onError
92 }, createElement(Layout, null), createElement(KeyboardShortcuts, {
93 shortcuts: preventEventDiscovery
94 })), createElement(PostLockedModal, null)));
95 }
96 }]);
97
98 return Editor;
99}(Component);
100
101export default withSelect(function (select, _ref) {
102 var postId = _ref.postId,
103 postType = _ref.postType;
104
105 var _select = select('core/edit-post'),
106 isFeatureActive = _select.isFeatureActive,
107 getPreference = _select.getPreference;
108
109 var _select2 = select('core'),
110 getEntityRecord = _select2.getEntityRecord;
111
112 var _select3 = select('core/blocks'),
113 getBlockTypes = _select3.getBlockTypes;
114
115 return {
116 hasFixedToolbar: isFeatureActive('fixedToolbar'),
117 focusMode: isFeatureActive('focusMode'),
118 post: getEntityRecord('postType', postType, postId),
119 hiddenBlockTypes: getPreference('hiddenBlockTypes'),
120 blockTypes: getBlockTypes()
121 };
122})(Editor);
123//# sourceMappingURL=editor.js.map
\No newline at end of file