WordPress/wp-includes/js/dist/format-library.js

1419 lines
44 KiB
JavaScript
Raw Normal View History

this["wp"] = this["wp"] || {}; this["wp"]["formatLibrary"] =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 313);
/******/ })
/************************************************************************/
/******/ ({
/***/ 0:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["element"]; }());
/***/ }),
/***/ 1:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["i18n"]; }());
/***/ }),
/***/ 10:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; });
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
/***/ }),
/***/ 12:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _possibleConstructorReturn; });
/* harmony import */ var _helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28);
/* harmony import */ var _assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
function _possibleConstructorReturn(self, call) {
if (call && (Object(_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(call) === "object" || typeof call === "function")) {
return call;
}
return Object(_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(self);
}
/***/ }),
/***/ 13:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _getPrototypeOf; });
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
/***/ }),
/***/ 14:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _inherits; });
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
if (superClass) _setPrototypeOf(subClass, superClass);
}
/***/ }),
/***/ 16:
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
Copyright (c) 2017 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/* global define */
(function () {
'use strict';
var hasOwn = {}.hasOwnProperty;
function classNames () {
var classes = [];
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (!arg) continue;
var argType = typeof arg;
if (argType === 'string' || argType === 'number') {
classes.push(arg);
} else if (Array.isArray(arg) && arg.length) {
var inner = classNames.apply(null, arg);
if (inner) {
classes.push(inner);
}
} else if (argType === 'object') {
for (var key in arg) {
if (hasOwn.call(arg, key) && arg[key]) {
classes.push(key);
}
}
}
}
return classes.join(' ');
}
if ( true && module.exports) {
classNames.default = classNames;
module.exports = classNames;
} else if (true) {
// register as 'classnames', consistent with npm package name
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
return classNames;
}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {}
}());
/***/ }),
/***/ 17:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["keycodes"]; }());
/***/ }),
/***/ 2:
/***/ (function(module, exports) {
(function() { module.exports = this["lodash"]; }());
/***/ }),
/***/ 20:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["richText"]; }());
/***/ }),
/***/ 21:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectWithoutProperties; });
function _objectWithoutProperties(source, excluded) {
if (source == null) return {};
var target = _objectWithoutPropertiesLoose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for (i = 0; i < sourceSymbolKeys.length; i++) {
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
target[key] = source[key];
}
}
return target;
}
/***/ }),
/***/ 22:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["dom"]; }());
/***/ }),
/***/ 24:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["url"]; }());
/***/ }),
/***/ 28:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _typeof; });
function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
function _typeof(obj) {
if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
_typeof = function _typeof(obj) {
return _typeof2(obj);
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
};
}
return _typeof(obj);
}
/***/ }),
/***/ 3:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _assertThisInitialized; });
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
/***/ }),
/***/ 313:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js + 1 modules
var objectWithoutProperties = __webpack_require__(21);
// EXTERNAL MODULE: external {"this":["wp","element"]}
var external_this_wp_element_ = __webpack_require__(0);
// EXTERNAL MODULE: external {"this":["wp","i18n"]}
var external_this_wp_i18n_ = __webpack_require__(1);
// EXTERNAL MODULE: external {"this":["wp","richText"]}
var external_this_wp_richText_ = __webpack_require__(20);
// EXTERNAL MODULE: external {"this":["wp","editor"]}
var external_this_wp_editor_ = __webpack_require__(6);
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/bold/index.js
/**
* WordPress dependencies
*/
var bold_name = 'core/bold';
var bold = {
name: bold_name,
title: Object(external_this_wp_i18n_["__"])('Bold'),
tagName: 'strong',
className: null,
edit: function edit(_ref) {
var isActive = _ref.isActive,
value = _ref.value,
onChange = _ref.onChange;
var onToggle = function onToggle() {
return onChange(Object(external_this_wp_richText_["toggleFormat"])(value, {
type: bold_name
}));
};
return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextShortcut"], {
type: "primary",
character: "b",
onUse: onToggle
}), Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextToolbarButton"], {
name: "bold",
icon: "editor-bold",
title: Object(external_this_wp_i18n_["__"])('Bold'),
onClick: onToggle,
isActive: isActive,
shortcutType: "primary",
shortcutCharacter: "b"
}));
}
};
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/code/index.js
/**
* WordPress dependencies
*/
var code_name = 'core/code';
var code = {
name: code_name,
title: Object(external_this_wp_i18n_["__"])('Code'),
tagName: 'code',
className: null,
edit: function edit(_ref) {
var value = _ref.value,
onChange = _ref.onChange;
var onToggle = function onToggle() {
return onChange(Object(external_this_wp_richText_["toggleFormat"])(value, {
type: code_name
}));
};
return Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextShortcut"], {
type: "access",
character: "x",
onUse: onToggle
});
}
};
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
var classCallCheck = __webpack_require__(10);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
var createClass = __webpack_require__(9);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
var possibleConstructorReturn = __webpack_require__(12);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
var getPrototypeOf = __webpack_require__(13);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js + 1 modules
var inherits = __webpack_require__(14);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
var assertThisInitialized = __webpack_require__(3);
// EXTERNAL MODULE: external {"this":["wp","components"]}
var external_this_wp_components_ = __webpack_require__(4);
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/image/index.js
/**
* WordPress dependencies
*/
var ALLOWED_MEDIA_TYPES = ['image'];
var image_name = 'core/image';
var image_image = {
name: image_name,
title: Object(external_this_wp_i18n_["__"])('Image'),
keywords: [Object(external_this_wp_i18n_["__"])('photo'), Object(external_this_wp_i18n_["__"])('media')],
object: true,
tagName: 'img',
className: null,
attributes: {
className: 'class',
style: 'style',
url: 'src',
alt: 'alt'
},
edit:
/*#__PURE__*/
function (_Component) {
Object(inherits["a" /* default */])(ImageEdit, _Component);
function ImageEdit() {
var _this;
Object(classCallCheck["a" /* default */])(this, ImageEdit);
_this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(ImageEdit).apply(this, arguments));
_this.openModal = _this.openModal.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.closeModal = _this.closeModal.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.state = {
modal: false
};
return _this;
}
Object(createClass["a" /* default */])(ImageEdit, [{
key: "openModal",
value: function openModal() {
this.setState({
modal: true
});
}
}, {
key: "closeModal",
value: function closeModal() {
this.setState({
modal: false
});
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _this$props = this.props,
value = _this$props.value,
onChange = _this$props.onChange;
return Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["MediaUploadCheck"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextInserterItem"], {
name: image_name,
icon: Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 24 24"
}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
d: "M4 16h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2zM4 5h10v9H4V5zm14 9v2h4v-2h-4zM2 20h20v-2H2v2zm6.4-8.8L7 9.4 5 12h8l-2.6-3.4-2 2.6z"
})),
title: Object(external_this_wp_i18n_["__"])('Inline Image'),
onClick: this.openModal
}), this.state.modal && Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["MediaUpload"], {
allowedTypes: ALLOWED_MEDIA_TYPES,
onSelect: function onSelect(_ref) {
var id = _ref.id,
url = _ref.url,
alt = _ref.alt,
width = _ref.width;
_this2.closeModal();
onChange(Object(external_this_wp_richText_["insertObject"])(value, {
type: image_name,
attributes: {
className: "wp-image-".concat(id),
style: "width: ".concat(Math.min(width, 150), "px;"),
url: url,
alt: alt
}
}));
},
onClose: this.closeModal,
render: function render(_ref2) {
var open = _ref2.open;
open();
return null;
}
}));
}
}]);
return ImageEdit;
}(external_this_wp_element_["Component"])
};
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/italic/index.js
/**
* WordPress dependencies
*/
var italic_name = 'core/italic';
var italic = {
name: italic_name,
title: Object(external_this_wp_i18n_["__"])('Italic'),
tagName: 'em',
className: null,
edit: function edit(_ref) {
var isActive = _ref.isActive,
value = _ref.value,
onChange = _ref.onChange;
var onToggle = function onToggle() {
return onChange(Object(external_this_wp_richText_["toggleFormat"])(value, {
type: italic_name
}));
};
return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextShortcut"], {
type: "primary",
character: "i",
onUse: onToggle
}), Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextToolbarButton"], {
name: "italic",
icon: "editor-italic",
title: Object(external_this_wp_i18n_["__"])('Italic'),
onClick: onToggle,
isActive: isActive,
shortcutType: "primary",
shortcutCharacter: "i"
}));
}
};
// EXTERNAL MODULE: external {"this":["wp","url"]}
var external_this_wp_url_ = __webpack_require__(24);
// EXTERNAL MODULE: ./node_modules/classnames/index.js
var classnames = __webpack_require__(16);
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
// EXTERNAL MODULE: external {"this":["wp","keycodes"]}
var external_this_wp_keycodes_ = __webpack_require__(17);
// EXTERNAL MODULE: external {"this":["wp","dom"]}
var external_this_wp_dom_ = __webpack_require__(22);
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/link/positioned-at-selection.js
/**
* WordPress dependencies
*/
/**
* Returns a style object for applying as `position: absolute` for an element
* relative to the bottom-center of the current selection. Includes `top` and
* `left` style properties.
*
* @return {Object} Style object.
*/
function getCurrentCaretPositionStyle() {
var selection = window.getSelection(); // Unlikely, but in the case there is no selection, return empty styles so
// as to avoid a thrown error by `Selection#getRangeAt` on invalid index.
if (selection.rangeCount === 0) {
return {};
} // Get position relative viewport.
var rect = Object(external_this_wp_dom_["getRectangleFromRange"])(selection.getRangeAt(0));
var top = rect.top + rect.height;
var left = rect.left + rect.width / 2; // Offset by positioned parent, if one exists.
var offsetParent = Object(external_this_wp_dom_["getOffsetParent"])(selection.anchorNode);
if (offsetParent) {
var parentRect = offsetParent.getBoundingClientRect();
top -= parentRect.top;
left -= parentRect.left;
}
return {
top: top,
left: left
};
}
/**
* Component which renders itself positioned under the current caret selection.
* The position is calculated at the time of the component being mounted, so it
* should only be mounted after the desired selection has been made.
*
* @type {WPComponent}
*/
var positioned_at_selection_PositionedAtSelection =
/*#__PURE__*/
function (_Component) {
Object(inherits["a" /* default */])(PositionedAtSelection, _Component);
function PositionedAtSelection() {
var _this;
Object(classCallCheck["a" /* default */])(this, PositionedAtSelection);
_this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PositionedAtSelection).apply(this, arguments));
_this.state = {
style: getCurrentCaretPositionStyle()
};
return _this;
}
Object(createClass["a" /* default */])(PositionedAtSelection, [{
key: "render",
value: function render() {
var children = this.props.children;
var style = this.state.style;
return Object(external_this_wp_element_["createElement"])("div", {
className: "editor-format-toolbar__selection-position",
style: style
}, children);
}
}]);
return PositionedAtSelection;
}(external_this_wp_element_["Component"]);
/* harmony default export */ var positioned_at_selection = (positioned_at_selection_PositionedAtSelection);
// EXTERNAL MODULE: external "lodash"
var external_lodash_ = __webpack_require__(2);
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/link/utils.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Check for issues with the provided href.
*
* @param {string} href The href.
*
* @return {boolean} Is the href invalid?
*/
function isValidHref(href) {
if (!href) {
return false;
}
var trimmedHref = href.trim();
if (!trimmedHref) {
return false;
} // Does the href start with something that looks like a URL protocol?
if (/^\S+:/.test(trimmedHref)) {
var protocol = Object(external_this_wp_url_["getProtocol"])(trimmedHref);
if (!Object(external_this_wp_url_["isValidProtocol"])(protocol)) {
return false;
} // Add some extra checks for http(s) URIs, since these are the most common use-case.
// This ensures URIs with an http protocol have exactly two forward slashes following the protocol.
if (Object(external_lodash_["startsWith"])(protocol, 'http') && !/^https?:\/\/[^\/\s]/i.test(trimmedHref)) {
return false;
}
var authority = Object(external_this_wp_url_["getAuthority"])(trimmedHref);
if (!Object(external_this_wp_url_["isValidAuthority"])(authority)) {
return false;
}
var path = Object(external_this_wp_url_["getPath"])(trimmedHref);
if (path && !Object(external_this_wp_url_["isValidPath"])(path)) {
return false;
}
var queryString = Object(external_this_wp_url_["getQueryString"])(trimmedHref);
if (queryString && !Object(external_this_wp_url_["isValidQueryString"])(queryString)) {
return false;
}
var fragment = Object(external_this_wp_url_["getFragment"])(trimmedHref);
if (fragment && !Object(external_this_wp_url_["isValidFragment"])(fragment)) {
return false;
}
} // Validate anchor links.
if (Object(external_lodash_["startsWith"])(trimmedHref, '#') && !Object(external_this_wp_url_["isValidFragment"])(trimmedHref)) {
return false;
}
return true;
}
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/link/inline.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
var stopKeyPropagation = function stopKeyPropagation(event) {
return event.stopPropagation();
};
/**
* Generates the format object that will be applied to the link text.
*
* @param {string} url The href of the link.
* @param {boolean} opensInNewWindow Whether this link will open in a new window.
* @param {Object} text The text that is being hyperlinked.
*
* @return {Object} The final format object.
*/
function createLinkFormat(_ref) {
var url = _ref.url,
opensInNewWindow = _ref.opensInNewWindow,
text = _ref.text;
var format = {
type: 'core/link',
attributes: {
url: url
}
};
if (opensInNewWindow) {
// translators: accessibility label for external links, where the argument is the link text
var label = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('%s (opens in a new tab)'), text);
format.attributes.target = '_blank';
format.attributes.rel = 'noreferrer noopener';
format.attributes['aria-label'] = label;
}
return format;
}
function isShowingInput(props, state) {
return props.addingLink || state.editLink;
}
var inline_LinkEditor = function LinkEditor(_ref2) {
var value = _ref2.value,
onChangeInputValue = _ref2.onChangeInputValue,
onKeyDown = _ref2.onKeyDown,
submitLink = _ref2.submitLink,
autocompleteRef = _ref2.autocompleteRef;
return (// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
Object(external_this_wp_element_["createElement"])("form", {
className: "editor-format-toolbar__link-container-content",
onKeyPress: stopKeyPropagation,
onKeyDown: onKeyDown,
onSubmit: submitLink
}, Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["URLInput"], {
value: value,
onChange: onChangeInputValue,
autocompleteRef: autocompleteRef
}), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
icon: "editor-break",
label: Object(external_this_wp_i18n_["__"])('Apply'),
type: "submit"
}))
/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */
);
};
var inline_LinkViewerUrl = function LinkViewerUrl(_ref3) {
var url = _ref3.url;
var prependedURL = Object(external_this_wp_url_["prependHTTP"])(url);
var linkClassName = classnames_default()('editor-format-toolbar__link-container-value', {
'has-invalid-link': !isValidHref(prependedURL)
});
if (!url) {
return Object(external_this_wp_element_["createElement"])("span", {
className: linkClassName
});
}
return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ExternalLink"], {
className: linkClassName,
href: url
}, Object(external_this_wp_url_["filterURLForDisplay"])(Object(external_this_wp_url_["safeDecodeURI"])(url)));
};
var inline_LinkViewer = function LinkViewer(_ref4) {
var url = _ref4.url,
editLink = _ref4.editLink;
return (// Disable reason: KeyPress must be suppressed so the block doesn't hide the toolbar
/* eslint-disable jsx-a11y/no-static-element-interactions */
Object(external_this_wp_element_["createElement"])("div", {
className: "editor-format-toolbar__link-container-content",
onKeyPress: stopKeyPropagation
}, Object(external_this_wp_element_["createElement"])(inline_LinkViewerUrl, {
url: url
}), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
icon: "edit",
label: Object(external_this_wp_i18n_["__"])('Edit'),
onClick: editLink
}))
/* eslint-enable jsx-a11y/no-static-element-interactions */
);
};
var inline_InlineLinkUI =
/*#__PURE__*/
function (_Component) {
Object(inherits["a" /* default */])(InlineLinkUI, _Component);
function InlineLinkUI() {
var _this;
Object(classCallCheck["a" /* default */])(this, InlineLinkUI);
_this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(InlineLinkUI).apply(this, arguments));
_this.editLink = _this.editLink.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.submitLink = _this.submitLink.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onKeyDown = _this.onKeyDown.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onChangeInputValue = _this.onChangeInputValue.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.setLinkTarget = _this.setLinkTarget.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onClickOutside = _this.onClickOutside.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.resetState = _this.resetState.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.autocompleteRef = Object(external_this_wp_element_["createRef"])();
_this.state = {
opensInNewWindow: false,
inputValue: ''
};
return _this;
}
Object(createClass["a" /* default */])(InlineLinkUI, [{
key: "onKeyDown",
value: function onKeyDown(event) {
if ([external_this_wp_keycodes_["LEFT"], external_this_wp_keycodes_["DOWN"], external_this_wp_keycodes_["RIGHT"], external_this_wp_keycodes_["UP"], external_this_wp_keycodes_["BACKSPACE"], external_this_wp_keycodes_["ENTER"]].indexOf(event.keyCode) > -1) {
// Stop the key event from propagating up to ObserveTyping.startTypingInTextField.
event.stopPropagation();
}
}
}, {
key: "onChangeInputValue",
value: function onChangeInputValue(inputValue) {
this.setState({
inputValue: inputValue
});
}
}, {
key: "setLinkTarget",
value: function setLinkTarget(opensInNewWindow) {
var _this$props = this.props,
_this$props$activeAtt = _this$props.activeAttributes.url,
url = _this$props$activeAtt === void 0 ? '' : _this$props$activeAtt,
value = _this$props.value,
onChange = _this$props.onChange;
this.setState({
opensInNewWindow: opensInNewWindow
}); // Apply now if URL is not being edited.
if (!isShowingInput(this.props, this.state)) {
var selectedText = Object(external_this_wp_richText_["getTextContent"])(Object(external_this_wp_richText_["slice"])(value));
onChange(Object(external_this_wp_richText_["applyFormat"])(value, createLinkFormat({
url: url,
opensInNewWindow: opensInNewWindow,
text: selectedText
})));
}
}
}, {
key: "editLink",
value: function editLink(event) {
this.setState({
editLink: true
});
event.preventDefault();
}
}, {
key: "submitLink",
value: function submitLink(event) {
var _this$props2 = this.props,
isActive = _this$props2.isActive,
value = _this$props2.value,
onChange = _this$props2.onChange,
speak = _this$props2.speak;
var _this$state = this.state,
inputValue = _this$state.inputValue,
opensInNewWindow = _this$state.opensInNewWindow;
var url = Object(external_this_wp_url_["prependHTTP"])(inputValue);
var selectedText = Object(external_this_wp_richText_["getTextContent"])(Object(external_this_wp_richText_["slice"])(value));
var format = createLinkFormat({
url: url,
opensInNewWindow: opensInNewWindow,
text: selectedText
});
event.preventDefault();
if (Object(external_this_wp_richText_["isCollapsed"])(value) && !isActive) {
var toInsert = Object(external_this_wp_richText_["applyFormat"])(Object(external_this_wp_richText_["create"])({
text: url
}), format, 0, url.length);
onChange(Object(external_this_wp_richText_["insert"])(value, toInsert));
} else {
onChange(Object(external_this_wp_richText_["applyFormat"])(value, format));
}
this.resetState();
if (!isValidHref(url)) {
speak(Object(external_this_wp_i18n_["__"])('Warning: the link has been inserted but may have errors. Please test it.'), 'assertive');
} else if (isActive) {
speak(Object(external_this_wp_i18n_["__"])('Link edited.'), 'assertive');
} else {
speak(Object(external_this_wp_i18n_["__"])('Link inserted'), 'assertive');
}
}
}, {
key: "onClickOutside",
value: function onClickOutside(event) {
// The autocomplete suggestions list renders in a separate popover (in a portal),
// so onClickOutside fails to detect that a click on a suggestion occured in the
// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and
// return to avoid the popover being closed.
var autocompleteElement = this.autocompleteRef.current;
if (autocompleteElement && autocompleteElement.contains(event.target)) {
return;
}
this.resetState();
}
}, {
key: "resetState",
value: function resetState() {
this.props.stopAddingLink();
this.setState({
editLink: false
});
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _this$props3 = this.props,
isActive = _this$props3.isActive,
url = _this$props3.activeAttributes.url,
addingLink = _this$props3.addingLink,
value = _this$props3.value;
if (!isActive && !addingLink) {
return null;
}
var _this$state2 = this.state,
inputValue = _this$state2.inputValue,
opensInNewWindow = _this$state2.opensInNewWindow;
var showInput = isShowingInput(this.props, this.state);
return Object(external_this_wp_element_["createElement"])(positioned_at_selection, {
key: "".concat(value.start).concat(value.end)
/* Used to force rerender on selection change */
}, Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["URLPopover"], {
onClickOutside: this.onClickOutside,
onClose: this.resetState,
focusOnMount: showInput ? 'firstElement' : false,
renderSettings: function renderSettings() {
return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ToggleControl"], {
label: Object(external_this_wp_i18n_["__"])('Open in New Tab'),
checked: opensInNewWindow,
onChange: _this2.setLinkTarget
});
}
}, showInput ? Object(external_this_wp_element_["createElement"])(inline_LinkEditor, {
value: inputValue,
onChangeInputValue: this.onChangeInputValue,
onKeyDown: this.onKeyDown,
submitLink: this.submitLink,
autocompleteRef: this.autocompleteRef
}) : Object(external_this_wp_element_["createElement"])(inline_LinkViewer, {
url: url,
editLink: this.editLink
})));
}
}], [{
key: "getDerivedStateFromProps",
value: function getDerivedStateFromProps(props, state) {
var _props$activeAttribut = props.activeAttributes,
url = _props$activeAttribut.url,
target = _props$activeAttribut.target;
var opensInNewWindow = target === '_blank';
if (!isShowingInput(props, state)) {
if (url !== state.inputValue) {
return {
inputValue: url
};
}
if (opensInNewWindow !== state.opensInNewWindow) {
return {
opensInNewWindow: opensInNewWindow
};
}
}
return null;
}
}]);
return InlineLinkUI;
}(external_this_wp_element_["Component"]);
/* harmony default export */ var inline = (Object(external_this_wp_components_["withSpokenMessages"])(inline_InlineLinkUI));
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/link/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
var link_name = 'core/link';
var link_link = {
name: link_name,
title: Object(external_this_wp_i18n_["__"])('Link'),
tagName: 'a',
className: null,
attributes: {
url: 'href',
target: 'target'
},
edit: Object(external_this_wp_components_["withSpokenMessages"])(
/*#__PURE__*/
function (_Component) {
Object(inherits["a" /* default */])(LinkEdit, _Component);
function LinkEdit() {
var _this;
Object(classCallCheck["a" /* default */])(this, LinkEdit);
_this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(LinkEdit).apply(this, arguments));
_this.addLink = _this.addLink.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.stopAddingLink = _this.stopAddingLink.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onRemoveFormat = _this.onRemoveFormat.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.state = {
addingLink: false
};
return _this;
}
Object(createClass["a" /* default */])(LinkEdit, [{
key: "addLink",
value: function addLink() {
var _this$props = this.props,
value = _this$props.value,
onChange = _this$props.onChange;
var text = Object(external_this_wp_richText_["getTextContent"])(Object(external_this_wp_richText_["slice"])(value));
if (text && Object(external_this_wp_url_["isURL"])(text)) {
onChange(Object(external_this_wp_richText_["applyFormat"])(value, {
type: link_name,
attributes: {
url: text
}
}));
} else {
this.setState({
addingLink: true
});
}
}
}, {
key: "stopAddingLink",
value: function stopAddingLink() {
this.setState({
addingLink: false
});
}
}, {
key: "onRemoveFormat",
value: function onRemoveFormat() {
var _this$props2 = this.props,
value = _this$props2.value,
onChange = _this$props2.onChange,
speak = _this$props2.speak;
onChange(Object(external_this_wp_richText_["removeFormat"])(value, link_name));
speak(Object(external_this_wp_i18n_["__"])('Link removed.'), 'assertive');
}
}, {
key: "render",
value: function render() {
var _this$props3 = this.props,
isActive = _this$props3.isActive,
activeAttributes = _this$props3.activeAttributes,
value = _this$props3.value,
onChange = _this$props3.onChange;
return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextShortcut"], {
type: "access",
character: "a",
onUse: this.addLink
}), Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextShortcut"], {
type: "access",
character: "s",
onUse: this.onRemoveFormat
}), Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextShortcut"], {
type: "primary",
character: "k",
onUse: this.addLink
}), Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextShortcut"], {
type: "primaryShift",
character: "k",
onUse: this.onRemoveFormat
}), isActive && Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextToolbarButton"], {
name: "link",
icon: "editor-unlink",
title: Object(external_this_wp_i18n_["__"])('Unlink'),
onClick: this.onRemoveFormat,
isActive: isActive,
shortcutType: "primaryShift",
shortcutCharacter: "k"
}), !isActive && Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextToolbarButton"], {
name: "link",
icon: "admin-links",
title: Object(external_this_wp_i18n_["__"])('Link'),
onClick: this.addLink,
isActive: isActive,
shortcutType: "primary",
shortcutCharacter: "k"
}), Object(external_this_wp_element_["createElement"])(inline, {
addingLink: this.state.addingLink,
stopAddingLink: this.stopAddingLink,
isActive: isActive,
activeAttributes: activeAttributes,
value: value,
onChange: onChange
}));
}
}]);
return LinkEdit;
}(external_this_wp_element_["Component"]))
};
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/strikethrough/index.js
/**
* WordPress dependencies
*/
var strikethrough_name = 'core/strikethrough';
var strikethrough = {
name: strikethrough_name,
title: Object(external_this_wp_i18n_["__"])('Strikethrough'),
tagName: 'del',
className: null,
edit: function edit(_ref) {
var isActive = _ref.isActive,
value = _ref.value,
onChange = _ref.onChange;
var onToggle = function onToggle() {
return onChange(Object(external_this_wp_richText_["toggleFormat"])(value, {
type: strikethrough_name
}));
};
return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextShortcut"], {
type: "access",
character: "d",
onUse: onToggle
}), Object(external_this_wp_element_["createElement"])(external_this_wp_editor_["RichTextToolbarButton"], {
name: "strikethrough",
icon: "editor-strikethrough",
title: Object(external_this_wp_i18n_["__"])('Strikethrough'),
onClick: onToggle,
isActive: isActive,
shortcutType: "access",
shortcutCharacter: "d"
}));
}
};
// CONCATENATED MODULE: ./node_modules/@wordpress/format-library/build-module/index.js
/**
* Internal dependencies
*/
/**
* WordPress dependencies
*/
[bold, code, image_image, italic, link_link, strikethrough].forEach(function (_ref) {
var name = _ref.name,
settings = Object(objectWithoutProperties["a" /* default */])(_ref, ["name"]);
return Object(external_this_wp_richText_["registerFormatType"])(name, settings);
});
/***/ }),
/***/ 4:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["components"]; }());
/***/ }),
/***/ 6:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["editor"]; }());
/***/ }),
/***/ 9:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; });
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
/***/ })
/******/ });