UNPKG

@wordpress/editor

Version:
98 lines (94 loc) 2.99 kB
"use strict"; 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