UNPKG

@wordpress/edit-post

Version:
181 lines (154 loc) 5.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@wordpress/element"); var _lodash = require("lodash"); var _i18n = require("@wordpress/i18n"); var _components = require("@wordpress/components"); var _data = require("@wordpress/data"); var _compose = require("@wordpress/compose"); var _editor = require("@wordpress/editor"); var _url = require("@wordpress/url"); /** * External dependencies */ /** * WordPress dependencies */ /** * Module Constants */ var PANEL_NAME = 'post-link'; function PostLink(_ref) { var isOpened = _ref.isOpened, onTogglePanel = _ref.onTogglePanel, isEditable = _ref.isEditable, postLink = _ref.postLink, permalinkParts = _ref.permalinkParts, editPermalink = _ref.editPermalink, forceEmptyField = _ref.forceEmptyField, setState = _ref.setState, postTitle = _ref.postTitle, postSlug = _ref.postSlug, postID = _ref.postID; var prefix = permalinkParts.prefix, suffix = permalinkParts.suffix; var prefixElement, postNameElement, suffixElement; var currentSlug = (0, _url.safeDecodeURIComponent)(postSlug) || (0, _editor.cleanForSlug)(postTitle) || postID; if (isEditable) { prefixElement = prefix && (0, _element.createElement)("span", { className: "edit-post-post-link__link-prefix" }, prefix); postNameElement = currentSlug && (0, _element.createElement)("span", { className: "edit-post-post-link__link-post-name" }, currentSlug); suffixElement = suffix && (0, _element.createElement)("span", { className: "edit-post-post-link__link-suffix" }, suffix); } return (0, _element.createElement)(_components.PanelBody, { title: (0, _i18n.__)('Permalink'), opened: isOpened, onToggle: onTogglePanel }, isEditable && (0, _element.createElement)("div", { className: "editor-post-link" }, (0, _element.createElement)(_components.TextControl, { label: (0, _i18n.__)('URL Slug'), value: forceEmptyField ? '' : currentSlug, onChange: function onChange(newValue) { editPermalink(newValue); // When we delete the field the permalink gets // reverted to the original value. // The forceEmptyField logic allows the user to have // the field temporarily empty while typing. if (!newValue) { if (!forceEmptyField) { setState({ forceEmptyField: true }); } return; } if (forceEmptyField) { setState({ forceEmptyField: false }); } }, onBlur: function onBlur(event) { editPermalink((0, _editor.cleanForSlug)(event.target.value)); if (forceEmptyField) { setState({ forceEmptyField: false }); } } }), (0, _element.createElement)("p", null, (0, _i18n.__)('The last part of the URL. '), (0, _element.createElement)(_components.ExternalLink, { href: "https://codex.wordpress.org/Posts_Add_New_Screen" }, (0, _i18n.__)('Read about permalinks')))), (0, _element.createElement)("p", { className: "edit-post-post-link__preview-label" }, (0, _i18n.__)('Preview')), (0, _element.createElement)(_components.ExternalLink, { className: "edit-post-post-link__link", href: postLink, target: "_blank" }, isEditable ? (0, _element.createElement)(_element.Fragment, null, prefixElement, postNameElement, suffixElement) : postLink)); } var _default = (0, _compose.compose)([(0, _data.withSelect)(function (select) { var _select = select('core/editor'), isEditedPostNew = _select.isEditedPostNew, isPermalinkEditable = _select.isPermalinkEditable, getCurrentPost = _select.getCurrentPost, isCurrentPostPublished = _select.isCurrentPostPublished, getPermalinkParts = _select.getPermalinkParts, getEditedPostAttribute = _select.getEditedPostAttribute; var _select2 = select('core/edit-post'), isEditorPanelEnabled = _select2.isEditorPanelEnabled, isEditorPanelOpened = _select2.isEditorPanelOpened; var _select3 = select('core'), getPostType = _select3.getPostType; var _getCurrentPost = getCurrentPost(), link = _getCurrentPost.link, id = _getCurrentPost.id; var postTypeName = getEditedPostAttribute('type'); var postType = getPostType(postTypeName); return { isNew: isEditedPostNew(), postLink: link, isEditable: isPermalinkEditable(), isPublished: isCurrentPostPublished(), isOpened: isEditorPanelOpened(PANEL_NAME), permalinkParts: getPermalinkParts(), isEnabled: isEditorPanelEnabled(PANEL_NAME), isViewable: (0, _lodash.get)(postType, ['viewable'], false), postTitle: getEditedPostAttribute('title'), postSlug: getEditedPostAttribute('slug'), postID: id }; }), (0, _compose.ifCondition)(function (_ref2) { var isEnabled = _ref2.isEnabled, isNew = _ref2.isNew, postLink = _ref2.postLink, isViewable = _ref2.isViewable, permalinkParts = _ref2.permalinkParts; return isEnabled && !isNew && postLink && isViewable && permalinkParts; }), (0, _data.withDispatch)(function (dispatch) { var _dispatch = dispatch('core/edit-post'), toggleEditorPanelOpened = _dispatch.toggleEditorPanelOpened; var _dispatch2 = dispatch('core/editor'), editPost = _dispatch2.editPost; return { onTogglePanel: function onTogglePanel() { return toggleEditorPanelOpened(PANEL_NAME); }, editPermalink: function editPermalink(newSlug) { editPost({ slug: newSlug }); } }; }), (0, _compose.withState)({ forceEmptyField: false })])(PostLink); exports.default = _default; //# sourceMappingURL=index.js.map