@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
98 lines (94 loc) • 2.99 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = PostTextEditor;
var _reactAutosizeTextarea = _interopRequireDefault(require("react-autosize-textarea"));
var _i18n = require("@wordpress/i18n");
var _coreData = require("@wordpress/core-data");
var _element = require("@wordpress/element");
var _blocks = require("@wordpress/blocks");
var _data = require("@wordpress/data");
var _compose = require("@wordpress/compose");
var _components = require("@wordpress/components");
var _store = require("../../store");
var _jsxRuntime = require("react/jsx-runtime");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Displays the Post Text Editor along with content in Visual and Text mode.
*
* @return {JSX.Element|null} The rendered PostTextEditor component.
*/function PostTextEditor() {
const instanceId = (0, _compose.useInstanceId)(PostTextEditor);
const {
content,
blocks,
type,
id
} = (0, _data.useSelect)(select => {
const {
getEditedEntityRecord
} = select(_coreData.store);
const {
getCurrentPostType,
getCurrentPostId
} = select(_store.store);
const _type = getCurrentPostType();
const _id = getCurrentPostId();
const editedRecord = getEditedEntityRecord('postType', _type, _id);
return {
content: editedRecord?.content,
blocks: editedRecord?.blocks,
type: _type,
id: _id
};
}, []);
const {
editEntityRecord
} = (0, _data.useDispatch)(_coreData.store);
// Replicates the logic found in getEditedPostContent().
const value = (0, _element.useMemo)(() => {
if (content instanceof Function) {
return content({
blocks
});
} else if (blocks) {
// If we have parsed blocks already, they should be our source of truth.
// Parsing applies block deprecations and legacy block conversions that
// unparsed content will not have.
return (0, _blocks.__unstableSerializeAndClean)(blocks);
}
return content;
}, [content, blocks]);
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.VisuallyHidden, {
as: "label",
htmlFor: `post-content-${instanceId}`,
children: (0, _i18n.__)('Type text or HTML')
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactAutosizeTextarea.default, {
autoComplete: "off",
dir: "auto",
value: value,
onChange: event => {
editEntityRecord('postType', type, id, {
content: event.target.value,
blocks: undefined,
selection: undefined
});
},
className: "editor-post-text-editor",
id: `post-content-${instanceId}`,
placeholder: (0, _i18n.__)('Start writing with text or HTML')
})]
});
}
//# sourceMappingURL=index.js.map