[ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
1 this["wp"] = this["wp"] || {}; this["wp"]["editor"] = 2 /******/ (function(modules) { // webpackBootstrap 3 /******/ // The module cache 4 /******/ var installedModules = {}; 5 /******/ 6 /******/ // The require function 7 /******/ function __webpack_require__(moduleId) { 8 /******/ 9 /******/ // Check if module is in cache 10 /******/ if(installedModules[moduleId]) { 11 /******/ return installedModules[moduleId].exports; 12 /******/ } 13 /******/ // Create a new module (and put it into the cache) 14 /******/ var module = installedModules[moduleId] = { 15 /******/ i: moduleId, 16 /******/ l: false, 17 /******/ exports: {} 18 /******/ }; 19 /******/ 20 /******/ // Execute the module function 21 /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 22 /******/ 23 /******/ // Flag the module as loaded 24 /******/ module.l = true; 25 /******/ 26 /******/ // Return the exports of the module 27 /******/ return module.exports; 28 /******/ } 29 /******/ 30 /******/ 31 /******/ // expose the modules object (__webpack_modules__) 32 /******/ __webpack_require__.m = modules; 33 /******/ 34 /******/ // expose the module cache 35 /******/ __webpack_require__.c = installedModules; 36 /******/ 37 /******/ // define getter function for harmony exports 38 /******/ __webpack_require__.d = function(exports, name, getter) { 39 /******/ if(!__webpack_require__.o(exports, name)) { 40 /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 41 /******/ } 42 /******/ }; 43 /******/ 44 /******/ // define __esModule on exports 45 /******/ __webpack_require__.r = function(exports) { 46 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 47 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 48 /******/ } 49 /******/ Object.defineProperty(exports, '__esModule', { value: true }); 50 /******/ }; 51 /******/ 52 /******/ // create a fake namespace object 53 /******/ // mode & 1: value is a module id, require it 54 /******/ // mode & 2: merge all properties of value into the ns 55 /******/ // mode & 4: return value when already ns object 56 /******/ // mode & 8|1: behave like require 57 /******/ __webpack_require__.t = function(value, mode) { 58 /******/ if(mode & 1) value = __webpack_require__(value); 59 /******/ if(mode & 8) return value; 60 /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 61 /******/ var ns = Object.create(null); 62 /******/ __webpack_require__.r(ns); 63 /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 64 /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 65 /******/ return ns; 66 /******/ }; 67 /******/ 68 /******/ // getDefaultExport function for compatibility with non-harmony modules 69 /******/ __webpack_require__.n = function(module) { 70 /******/ var getter = module && module.__esModule ? 71 /******/ function getDefault() { return module['default']; } : 72 /******/ function getModuleExports() { return module; }; 73 /******/ __webpack_require__.d(getter, 'a', getter); 74 /******/ return getter; 75 /******/ }; 76 /******/ 77 /******/ // Object.prototype.hasOwnProperty.call 78 /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 79 /******/ 80 /******/ // __webpack_public_path__ 81 /******/ __webpack_require__.p = ""; 82 /******/ 83 /******/ 84 /******/ // Load entry module and return exports 85 /******/ return __webpack_require__(__webpack_require__.s = 462); 86 /******/ }) 87 /************************************************************************/ 88 /******/ ({ 89 90 /***/ 0: 91 /***/ (function(module, exports) { 92 93 (function() { module.exports = this["wp"]["element"]; }()); 94 95 /***/ }), 96 97 /***/ 1: 98 /***/ (function(module, exports) { 99 100 (function() { module.exports = this["wp"]["i18n"]; }()); 101 102 /***/ }), 103 104 /***/ 10: 105 /***/ (function(module, exports) { 106 107 (function() { module.exports = this["wp"]["compose"]; }()); 108 109 /***/ }), 110 111 /***/ 100: 112 /***/ (function(module, exports, __webpack_require__) { 113 114 "use strict"; 115 116 exports.__esModule = true; 117 var TextareaAutosize_1 = __webpack_require__(180); 118 exports["default"] = TextareaAutosize_1["default"]; 119 120 121 /***/ }), 122 123 /***/ 101: 124 /***/ (function(module, exports) { 125 126 (function() { module.exports = this["wp"]["viewport"]; }()); 127 128 /***/ }), 129 130 /***/ 106: 131 /***/ (function(module, exports) { 132 133 (function() { module.exports = this["wp"]["autop"]; }()); 134 135 /***/ }), 136 137 /***/ 11: 138 /***/ (function(module, exports) { 139 140 (function() { module.exports = this["wp"]["blocks"]; }()); 141 142 /***/ }), 143 144 /***/ 12: 145 /***/ (function(module, __webpack_exports__, __webpack_require__) { 146 147 "use strict"; 148 149 // EXPORTS 150 __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ _slicedToArray; }); 151 152 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js 153 var arrayWithHoles = __webpack_require__(38); 154 155 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js 156 function _iterableToArrayLimit(arr, i) { 157 if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; 158 var _arr = []; 159 var _n = true; 160 var _d = false; 161 var _e = undefined; 162 163 try { 164 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 165 _arr.push(_s.value); 166 167 if (i && _arr.length === i) break; 168 } 169 } catch (err) { 170 _d = true; 171 _e = err; 172 } finally { 173 try { 174 if (!_n && _i["return"] != null) _i["return"](); 175 } finally { 176 if (_d) throw _e; 177 } 178 } 179 180 return _arr; 181 } 182 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js 183 var unsupportedIterableToArray = __webpack_require__(31); 184 185 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js 186 var nonIterableRest = __webpack_require__(39); 187 188 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js 189 190 191 192 193 function _slicedToArray(arr, i) { 194 return Object(arrayWithHoles["a" /* default */])(arr) || _iterableToArrayLimit(arr, i) || Object(unsupportedIterableToArray["a" /* default */])(arr, i) || Object(nonIterableRest["a" /* default */])(); 195 } 196 197 /***/ }), 198 199 /***/ 121: 200 /***/ (function(module, exports) { 201 202 (function() { module.exports = this["wp"]["reusableBlocks"]; }()); 203 204 /***/ }), 205 206 /***/ 128: 207 /***/ (function(module, exports) { 208 209 (function() { module.exports = this["wp"]["wordcount"]; }()); 210 211 /***/ }), 212 213 /***/ 13: 214 /***/ (function(module, exports) { 215 216 (function() { module.exports = this["React"]; }()); 217 218 /***/ }), 219 220 /***/ 14: 221 /***/ (function(module, __webpack_exports__, __webpack_require__) { 222 223 "use strict"; 224 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectWithoutProperties; }); 225 /* harmony import */ var _objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43); 226 227 function _objectWithoutProperties(source, excluded) { 228 if (source == null) return {}; 229 var target = Object(_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(source, excluded); 230 var key, i; 231 232 if (Object.getOwnPropertySymbols) { 233 var sourceSymbolKeys = Object.getOwnPropertySymbols(source); 234 235 for (i = 0; i < sourceSymbolKeys.length; i++) { 236 key = sourceSymbolKeys[i]; 237 if (excluded.indexOf(key) >= 0) continue; 238 if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; 239 target[key] = source[key]; 240 } 241 } 242 243 return target; 244 } 245 246 /***/ }), 247 248 /***/ 141: 249 /***/ (function(module, __webpack_exports__, __webpack_require__) { 250 251 "use strict"; 252 /* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); 253 /* harmony import */ var _babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14); 254 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0); 255 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__); 256 257 258 259 function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 260 261 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { Object(_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 262 263 /** 264 * WordPress dependencies 265 */ 266 267 /** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */ 268 269 /** 270 * Return an SVG icon. 271 * 272 * @param {IconProps} props icon is the SVG component to render 273 * size is a number specifiying the icon size in pixels 274 * Other props will be passed to wrapped SVG component 275 * 276 * @return {JSX.Element} Icon component 277 */ 278 279 function Icon(_ref) { 280 var icon = _ref.icon, 281 _ref$size = _ref.size, 282 size = _ref$size === void 0 ? 24 : _ref$size, 283 props = Object(_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_ref, ["icon", "size"]); 284 285 return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__["cloneElement"])(icon, _objectSpread({ 286 width: size, 287 height: size 288 }, props)); 289 } 290 291 /* harmony default export */ __webpack_exports__["a"] = (Icon); 292 293 294 /***/ }), 295 296 /***/ 142: 297 /***/ (function(module, exports, __webpack_require__) { 298 299 "use strict"; 300 /** 301 * Copyright (c) 2013-present, Facebook, Inc. 302 * 303 * This source code is licensed under the MIT license found in the 304 * LICENSE file in the root directory of this source tree. 305 */ 306 307 308 309 var ReactPropTypesSecret = __webpack_require__(143); 310 311 function emptyFunction() {} 312 function emptyFunctionWithReset() {} 313 emptyFunctionWithReset.resetWarningCache = emptyFunction; 314 315 module.exports = function() { 316 function shim(props, propName, componentName, location, propFullName, secret) { 317 if (secret === ReactPropTypesSecret) { 318 // It is still safe when called from React. 319 return; 320 } 321 var err = new Error( 322 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 323 'Use PropTypes.checkPropTypes() to call them. ' + 324 'Read more at http://fb.me/use-check-prop-types' 325 ); 326 err.name = 'Invariant Violation'; 327 throw err; 328 }; 329 shim.isRequired = shim; 330 function getShim() { 331 return shim; 332 }; 333 // Important! 334 // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. 335 var ReactPropTypes = { 336 array: shim, 337 bool: shim, 338 func: shim, 339 number: shim, 340 object: shim, 341 string: shim, 342 symbol: shim, 343 344 any: shim, 345 arrayOf: getShim, 346 element: shim, 347 elementType: shim, 348 instanceOf: getShim, 349 node: shim, 350 objectOf: getShim, 351 oneOf: getShim, 352 oneOfType: getShim, 353 shape: getShim, 354 exact: getShim, 355 356 checkPropTypes: emptyFunctionWithReset, 357 resetWarningCache: emptyFunction 358 }; 359 360 ReactPropTypes.PropTypes = ReactPropTypes; 361 362 return ReactPropTypes; 363 }; 364 365 366 /***/ }), 367 368 /***/ 143: 369 /***/ (function(module, exports, __webpack_require__) { 370 371 "use strict"; 372 /** 373 * Copyright (c) 2013-present, Facebook, Inc. 374 * 375 * This source code is licensed under the MIT license found in the 376 * LICENSE file in the root directory of this source tree. 377 */ 378 379 380 381 var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; 382 383 module.exports = ReactPropTypesSecret; 384 385 386 /***/ }), 387 388 /***/ 155: 389 /***/ (function(module, exports) { 390 391 (function() { module.exports = this["wp"]["mediaUtils"]; }()); 392 393 /***/ }), 394 395 /***/ 159: 396 /***/ (function(module, __webpack_exports__, __webpack_require__) { 397 398 "use strict"; 399 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); 400 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__); 401 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); 402 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__); 403 404 405 /** 406 * WordPress dependencies 407 */ 408 409 var closeSmall = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], { 410 xmlns: "http://www.w3.org/2000/svg", 411 viewBox: "0 0 24 24" 412 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], { 413 d: "M13 11.9l3.3-3.4-1.1-1-3.2 3.3-3.2-3.3-1.1 1 3.3 3.4-3.5 3.6 1 1L12 13l3.5 3.5 1-1z" 414 })); 415 /* harmony default export */ __webpack_exports__["a"] = (closeSmall); 416 417 418 /***/ }), 419 420 /***/ 16: 421 /***/ (function(module, __webpack_exports__, __webpack_require__) { 422 423 "use strict"; 424 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _assertThisInitialized; }); 425 function _assertThisInitialized(self) { 426 if (self === void 0) { 427 throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); 428 } 429 430 return self; 431 } 432 433 /***/ }), 434 435 /***/ 160: 436 /***/ (function(module, __webpack_exports__, __webpack_require__) { 437 438 "use strict"; 439 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); 440 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__); 441 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); 442 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__); 443 444 445 /** 446 * WordPress dependencies 447 */ 448 449 var close = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], { 450 xmlns: "http://www.w3.org/2000/svg", 451 viewBox: "0 0 24 24" 452 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], { 453 d: "M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z" 454 })); 455 /* harmony default export */ __webpack_exports__["a"] = (close); 456 457 458 /***/ }), 459 460 /***/ 161: 461 /***/ (function(module, __webpack_exports__, __webpack_require__) { 462 463 "use strict"; 464 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); 465 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__); 466 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); 467 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__); 468 469 470 /** 471 * WordPress dependencies 472 */ 473 474 var check = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], { 475 xmlns: "http://www.w3.org/2000/svg", 476 viewBox: "0 0 24 24" 477 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], { 478 d: "M18.3 5.6L9.9 16.9l-4.6-3.4-.9 1.2 5.8 4.3 9.3-12.6z" 479 })); 480 /* harmony default export */ __webpack_exports__["a"] = (check); 481 482 483 /***/ }), 484 485 /***/ 17: 486 /***/ (function(module, __webpack_exports__, __webpack_require__) { 487 488 "use strict"; 489 490 // EXPORTS 491 __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ _toConsumableArray; }); 492 493 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js 494 var arrayLikeToArray = __webpack_require__(27); 495 496 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js 497 498 function _arrayWithoutHoles(arr) { 499 if (Array.isArray(arr)) return Object(arrayLikeToArray["a" /* default */])(arr); 500 } 501 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js 502 var iterableToArray = __webpack_require__(37); 503 504 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js 505 var unsupportedIterableToArray = __webpack_require__(31); 506 507 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js 508 function _nonIterableSpread() { 509 throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); 510 } 511 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js 512 513 514 515 516 function _toConsumableArray(arr) { 517 return _arrayWithoutHoles(arr) || Object(iterableToArray["a" /* default */])(arr) || Object(unsupportedIterableToArray["a" /* default */])(arr) || _nonIterableSpread(); 518 } 519 520 /***/ }), 521 522 /***/ 18: 523 /***/ (function(module, exports) { 524 525 (function() { module.exports = this["wp"]["keycodes"]; }()); 526 527 /***/ }), 528 529 /***/ 180: 530 /***/ (function(module, exports, __webpack_require__) { 531 532 "use strict"; 533 534 var __extends = (this && this.__extends) || (function () { 535 var extendStatics = Object.setPrototypeOf || 536 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 537 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 538 return function (d, b) { 539 extendStatics(d, b); 540 function __() { this.constructor = d; } 541 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 542 }; 543 })(); 544 var __assign = (this && this.__assign) || Object.assign || function(t) { 545 for (var s, i = 1, n = arguments.length; i < n; i++) { 546 s = arguments[i]; 547 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) 548 t[p] = s[p]; 549 } 550 return t; 551 }; 552 var __rest = (this && this.__rest) || function (s, e) { 553 var t = {}; 554 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) 555 t[p] = s[p]; 556 if (s != null && typeof Object.getOwnPropertySymbols === "function") 557 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) 558 t[p[i]] = s[p[i]]; 559 return t; 560 }; 561 exports.__esModule = true; 562 var React = __webpack_require__(13); 563 var PropTypes = __webpack_require__(28); 564 var autosize = __webpack_require__(181); 565 var _getLineHeight = __webpack_require__(182); 566 var getLineHeight = _getLineHeight; 567 var UPDATE = 'autosize:update'; 568 var DESTROY = 'autosize:destroy'; 569 var RESIZED = 'autosize:resized'; 570 /** 571 * A light replacement for built-in textarea component 572 * which automaticaly adjusts its height to match the content 573 */ 574 var TextareaAutosize = /** @class */ (function (_super) { 575 __extends(TextareaAutosize, _super); 576 function TextareaAutosize() { 577 var _this = _super !== null && _super.apply(this, arguments) || this; 578 _this.state = { 579 lineHeight: null 580 }; 581 _this.dispatchEvent = function (EVENT_TYPE) { 582 var event = document.createEvent('Event'); 583 event.initEvent(EVENT_TYPE, true, false); 584 _this.textarea.dispatchEvent(event); 585 }; 586 _this.updateLineHeight = function () { 587 _this.setState({ 588 lineHeight: getLineHeight(_this.textarea) 589 }); 590 }; 591 _this.onChange = function (e) { 592 var onChange = _this.props.onChange; 593 _this.currentValue = e.currentTarget.value; 594 onChange && onChange(e); 595 }; 596 _this.saveDOMNodeRef = function (ref) { 597 var innerRef = _this.props.innerRef; 598 if (innerRef) { 599 innerRef(ref); 600 } 601 _this.textarea = ref; 602 }; 603 _this.getLocals = function () { 604 var _a = _this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "innerRef"]), lineHeight = _a.state.lineHeight, saveDOMNodeRef = _a.saveDOMNodeRef; 605 var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null; 606 return __assign({}, props, { saveDOMNodeRef: saveDOMNodeRef, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, onChange: _this.onChange }); 607 }; 608 return _this; 609 } 610 TextareaAutosize.prototype.componentDidMount = function () { 611 var _this = this; 612 var _a = this.props, onResize = _a.onResize, maxRows = _a.maxRows; 613 if (typeof maxRows === 'number') { 614 this.updateLineHeight(); 615 } 616 /* 617 the defer is needed to: 618 - force "autosize" to activate the scrollbar when this.props.maxRows is passed 619 - support StyledComponents (see #71) 620 */ 621 setTimeout(function () { return autosize(_this.textarea); }); 622 if (onResize) { 623 this.textarea.addEventListener(RESIZED, onResize); 624 } 625 }; 626 TextareaAutosize.prototype.componentWillUnmount = function () { 627 var onResize = this.props.onResize; 628 if (onResize) { 629 this.textarea.removeEventListener(RESIZED, onResize); 630 } 631 this.dispatchEvent(DESTROY); 632 }; 633 TextareaAutosize.prototype.render = function () { 634 var _a = this.getLocals(), children = _a.children, saveDOMNodeRef = _a.saveDOMNodeRef, locals = __rest(_a, ["children", "saveDOMNodeRef"]); 635 return (React.createElement("textarea", __assign({}, locals, { ref: saveDOMNodeRef }), children)); 636 }; 637 TextareaAutosize.prototype.componentDidUpdate = function (prevProps) { 638 if (this.props.value !== this.currentValue || this.props.rows !== prevProps.rows) { 639 this.dispatchEvent(UPDATE); 640 } 641 }; 642 TextareaAutosize.defaultProps = { 643 rows: 1 644 }; 645 TextareaAutosize.propTypes = { 646 rows: PropTypes.number, 647 maxRows: PropTypes.number, 648 onResize: PropTypes.func, 649 innerRef: PropTypes.func 650 }; 651 return TextareaAutosize; 652 }(React.Component)); 653 exports["default"] = TextareaAutosize; 654 655 656 /***/ }), 657 658 /***/ 181: 659 /***/ (function(module, exports, __webpack_require__) { 660 661 var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! 662 autosize 4.0.2 663 license: MIT 664 http://www.jacklmoore.com/autosize 665 */ 666 (function (global, factory) { 667 if (true) { 668 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), 669 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 670 (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), 671 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 672 } else { var mod; } 673 })(this, function (module, exports) { 674 'use strict'; 675 676 var map = typeof Map === "function" ? new Map() : function () { 677 var keys = []; 678 var values = []; 679 680 return { 681 has: function has(key) { 682 return keys.indexOf(key) > -1; 683 }, 684 get: function get(key) { 685 return values[keys.indexOf(key)]; 686 }, 687 set: function set(key, value) { 688 if (keys.indexOf(key) === -1) { 689 keys.push(key); 690 values.push(value); 691 } 692 }, 693 delete: function _delete(key) { 694 var index = keys.indexOf(key); 695 if (index > -1) { 696 keys.splice(index, 1); 697 values.splice(index, 1); 698 } 699 } 700 }; 701 }(); 702 703 var createEvent = function createEvent(name) { 704 return new Event(name, { bubbles: true }); 705 }; 706 try { 707 new Event('test'); 708 } catch (e) { 709 // IE does not support `new Event()` 710 createEvent = function createEvent(name) { 711 var evt = document.createEvent('Event'); 712 evt.initEvent(name, true, false); 713 return evt; 714 }; 715 } 716 717 function assign(ta) { 718 if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return; 719 720 var heightOffset = null; 721 var clientWidth = null; 722 var cachedHeight = null; 723 724 function init() { 725 var style = window.getComputedStyle(ta, null); 726 727 if (style.resize === 'vertical') { 728 ta.style.resize = 'none'; 729 } else if (style.resize === 'both') { 730 ta.style.resize = 'horizontal'; 731 } 732 733 if (style.boxSizing === 'content-box') { 734 heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); 735 } else { 736 heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); 737 } 738 // Fix when a textarea is not on document body and heightOffset is Not a Number 739 if (isNaN(heightOffset)) { 740 heightOffset = 0; 741 } 742 743 update(); 744 } 745 746 function changeOverflow(value) { 747 { 748 // Chrome/Safari-specific fix: 749 // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space 750 // made available by removing the scrollbar. The following forces the necessary text reflow. 751 var width = ta.style.width; 752 ta.style.width = '0px'; 753 // Force reflow: 754 /* jshint ignore:start */ 755 ta.offsetWidth; 756 /* jshint ignore:end */ 757 ta.style.width = width; 758 } 759 760 ta.style.overflowY = value; 761 } 762 763 function getParentOverflows(el) { 764 var arr = []; 765 766 while (el && el.parentNode && el.parentNode instanceof Element) { 767 if (el.parentNode.scrollTop) { 768 arr.push({ 769 node: el.parentNode, 770 scrollTop: el.parentNode.scrollTop 771 }); 772 } 773 el = el.parentNode; 774 } 775 776 return arr; 777 } 778 779 function resize() { 780 if (ta.scrollHeight === 0) { 781 // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. 782 return; 783 } 784 785 var overflows = getParentOverflows(ta); 786 var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240) 787 788 ta.style.height = ''; 789 ta.style.height = ta.scrollHeight + heightOffset + 'px'; 790 791 // used to check if an update is actually necessary on window.resize 792 clientWidth = ta.clientWidth; 793 794 // prevents scroll-position jumping 795 overflows.forEach(function (el) { 796 el.node.scrollTop = el.scrollTop; 797 }); 798 799 if (docTop) { 800 document.documentElement.scrollTop = docTop; 801 } 802 } 803 804 function update() { 805 resize(); 806 807 var styleHeight = Math.round(parseFloat(ta.style.height)); 808 var computed = window.getComputedStyle(ta, null); 809 810 // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box 811 var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight; 812 813 // The actual height not matching the style height (set via the resize method) indicates that 814 // the max-height has been exceeded, in which case the overflow should be allowed. 815 if (actualHeight < styleHeight) { 816 if (computed.overflowY === 'hidden') { 817 changeOverflow('scroll'); 818 resize(); 819 actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; 820 } 821 } else { 822 // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands. 823 if (computed.overflowY !== 'hidden') { 824 changeOverflow('hidden'); 825 resize(); 826 actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; 827 } 828 } 829 830 if (cachedHeight !== actualHeight) { 831 cachedHeight = actualHeight; 832 var evt = createEvent('autosize:resized'); 833 try { 834 ta.dispatchEvent(evt); 835 } catch (err) { 836 // Firefox will throw an error on dispatchEvent for a detached element 837 // https://bugzilla.mozilla.org/show_bug.cgi?id=889376 838 } 839 } 840 } 841 842 var pageResize = function pageResize() { 843 if (ta.clientWidth !== clientWidth) { 844 update(); 845 } 846 }; 847 848 var destroy = function (style) { 849 window.removeEventListener('resize', pageResize, false); 850 ta.removeEventListener('input', update, false); 851 ta.removeEventListener('keyup', update, false); 852 ta.removeEventListener('autosize:destroy', destroy, false); 853 ta.removeEventListener('autosize:update', update, false); 854 855 Object.keys(style).forEach(function (key) { 856 ta.style[key] = style[key]; 857 }); 858 859 map.delete(ta); 860 }.bind(ta, { 861 height: ta.style.height, 862 resize: ta.style.resize, 863 overflowY: ta.style.overflowY, 864 overflowX: ta.style.overflowX, 865 wordWrap: ta.style.wordWrap 866 }); 867 868 ta.addEventListener('autosize:destroy', destroy, false); 869 870 // IE9 does not fire onpropertychange or oninput for deletions, 871 // so binding to onkeyup to catch most of those events. 872 // There is no way that I know of to detect something like 'cut' in IE9. 873 if ('onpropertychange' in ta && 'oninput' in ta) { 874 ta.addEventListener('keyup', update, false); 875 } 876 877 window.addEventListener('resize', pageResize, false); 878 ta.addEventListener('input', update, false); 879 ta.addEventListener('autosize:update', update, false); 880 ta.style.overflowX = 'hidden'; 881 ta.style.wordWrap = 'break-word'; 882 883 map.set(ta, { 884 destroy: destroy, 885 update: update 886 }); 887 888 init(); 889 } 890 891 function destroy(ta) { 892 var methods = map.get(ta); 893 if (methods) { 894 methods.destroy(); 895 } 896 } 897 898 function update(ta) { 899 var methods = map.get(ta); 900 if (methods) { 901 methods.update(); 902 } 903 } 904 905 var autosize = null; 906 907 // Do nothing in Node.js environment and IE8 (or lower) 908 if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { 909 autosize = function autosize(el) { 910 return el; 911 }; 912 autosize.destroy = function (el) { 913 return el; 914 }; 915 autosize.update = function (el) { 916 return el; 917 }; 918 } else { 919 autosize = function autosize(el, options) { 920 if (el) { 921 Array.prototype.forEach.call(el.length ? el : [el], function (x) { 922 return assign(x, options); 923 }); 924 } 925 return el; 926 }; 927 autosize.destroy = function (el) { 928 if (el) { 929 Array.prototype.forEach.call(el.length ? el : [el], destroy); 930 } 931 return el; 932 }; 933 autosize.update = function (el) { 934 if (el) { 935 Array.prototype.forEach.call(el.length ? el : [el], update); 936 } 937 return el; 938 }; 939 } 940 941 exports.default = autosize; 942 module.exports = exports['default']; 943 }); 944 945 /***/ }), 946 947 /***/ 182: 948 /***/ (function(module, exports, __webpack_require__) { 949 950 // Load in dependencies 951 var computedStyle = __webpack_require__(183); 952 953 /** 954 * Calculate the `line-height` of a given node 955 * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM. 956 * @returns {Number} `line-height` of the element in pixels 957 */ 958 function lineHeight(node) { 959 // Grab the line-height via style 960 var lnHeightStr = computedStyle(node, 'line-height'); 961 var lnHeight = parseFloat(lnHeightStr, 10); 962 963 // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em') 964 if (lnHeightStr === lnHeight + '') { 965 // Save the old lineHeight style and update the em unit to the element 966 var _lnHeightStyle = node.style.lineHeight; 967 node.style.lineHeight = lnHeightStr + 'em'; 968 969 // Calculate the em based height 970 lnHeightStr = computedStyle(node, 'line-height'); 971 lnHeight = parseFloat(lnHeightStr, 10); 972 973 // Revert the lineHeight style 974 if (_lnHeightStyle) { 975 node.style.lineHeight = _lnHeightStyle; 976 } else { 977 delete node.style.lineHeight; 978 } 979 } 980 981 // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt) 982 // DEV: `em` units are converted to `pt` in IE6 983 // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length 984 if (lnHeightStr.indexOf('pt') !== -1) { 985 lnHeight *= 4; 986 lnHeight /= 3; 987 // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm) 988 } else if (lnHeightStr.indexOf('mm') !== -1) { 989 lnHeight *= 96; 990 lnHeight /= 25.4; 991 // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm) 992 } else if (lnHeightStr.indexOf('cm') !== -1) { 993 lnHeight *= 96; 994 lnHeight /= 2.54; 995 // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in) 996 } else if (lnHeightStr.indexOf('in') !== -1) { 997 lnHeight *= 96; 998 // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc) 999 } else if (lnHeightStr.indexOf('pc') !== -1) { 1000 lnHeight *= 16; 1001 } 1002 1003 // Continue our computation 1004 lnHeight = Math.round(lnHeight); 1005 1006 // If the line-height is "normal", calculate by font-size 1007 if (lnHeightStr === 'normal') { 1008 // Create a temporary node 1009 var nodeName = node.nodeName; 1010 var _node = document.createElement(nodeName); 1011 _node.innerHTML = ' '; 1012 1013 // If we have a text area, reset it to only 1 row 1014 // https://github.com/twolfson/line-height/issues/4 1015 if (nodeName.toUpperCase() === 'TEXTAREA') { 1016 _node.setAttribute('rows', '1'); 1017 } 1018 1019 // Set the font-size of the element 1020 var fontSizeStr = computedStyle(node, 'font-size'); 1021 _node.style.fontSize = fontSizeStr; 1022 1023 // Remove default padding/border which can affect offset height 1024 // https://github.com/twolfson/line-height/issues/4 1025 // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight 1026 _node.style.padding = '0px'; 1027 _node.style.border = '0px'; 1028 1029 // Append it to the body 1030 var body = document.body; 1031 body.appendChild(_node); 1032 1033 // Assume the line height of the element is the height 1034 var height = _node.offsetHeight; 1035 lnHeight = height; 1036 1037 // Remove our child from the DOM 1038 body.removeChild(_node); 1039 } 1040 1041 // Return the calculated height 1042 return lnHeight; 1043 } 1044 1045 // Export lineHeight 1046 module.exports = lineHeight; 1047 1048 1049 /***/ }), 1050 1051 /***/ 183: 1052 /***/ (function(module, exports) { 1053 1054 // This code has been refactored for 140 bytes 1055 // You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js 1056 var computedStyle = function (el, prop, getComputedStyle) { 1057 getComputedStyle = window.getComputedStyle; 1058 1059 // In one fell swoop 1060 return ( 1061 // If we have getComputedStyle 1062 getComputedStyle ? 1063 // Query it 1064 // TODO: From CSS-Query notes, we might need (node, null) for FF 1065 getComputedStyle(el) : 1066 1067 // Otherwise, we are in IE and use currentStyle 1068 el.currentStyle 1069 )[ 1070 // Switch to camelCase for CSSOM 1071 // DEV: Grabbed from jQuery 1072 // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194 1073 // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597 1074 prop.replace(/-(\w)/gi, function (word, letter) { 1075 return letter.toUpperCase(); 1076 }) 1077 ]; 1078 }; 1079 1080 module.exports = computedStyle; 1081 1082 1083 /***/ }), 1084 1085 /***/ 19: 1086 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1087 1088 "use strict"; 1089 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _getPrototypeOf; }); 1090 function _getPrototypeOf(o) { 1091 _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { 1092 return o.__proto__ || Object.getPrototypeOf(o); 1093 }; 1094 return _getPrototypeOf(o); 1095 } 1096 1097 /***/ }), 1098 1099 /***/ 2: 1100 /***/ (function(module, exports) { 1101 1102 (function() { module.exports = this["lodash"]; }()); 1103 1104 /***/ }), 1105 1106 /***/ 20: 1107 /***/ (function(module, exports) { 1108 1109 (function() { module.exports = this["regeneratorRuntime"]; }()); 1110 1111 /***/ }), 1112 1113 /***/ 21: 1114 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1115 1116 "use strict"; 1117 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; }); 1118 function _classCallCheck(instance, Constructor) { 1119 if (!(instance instanceof Constructor)) { 1120 throw new TypeError("Cannot call a class as a function"); 1121 } 1122 } 1123 1124 /***/ }), 1125 1126 /***/ 22: 1127 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1128 1129 "use strict"; 1130 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; }); 1131 function _defineProperties(target, props) { 1132 for (var i = 0; i < props.length; i++) { 1133 var descriptor = props[i]; 1134 descriptor.enumerable = descriptor.enumerable || false; 1135 descriptor.configurable = true; 1136 if ("value" in descriptor) descriptor.writable = true; 1137 Object.defineProperty(target, descriptor.key, descriptor); 1138 } 1139 } 1140 1141 function _createClass(Constructor, protoProps, staticProps) { 1142 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 1143 if (staticProps) _defineProperties(Constructor, staticProps); 1144 return Constructor; 1145 } 1146 1147 /***/ }), 1148 1149 /***/ 23: 1150 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1151 1152 "use strict"; 1153 1154 // EXPORTS 1155 __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ _inherits; }); 1156 1157 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js 1158 function _setPrototypeOf(o, p) { 1159 _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { 1160 o.__proto__ = p; 1161 return o; 1162 }; 1163 1164 return _setPrototypeOf(o, p); 1165 } 1166 // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js 1167 1168 function _inherits(subClass, superClass) { 1169 if (typeof superClass !== "function" && superClass !== null) { 1170 throw new TypeError("Super expression must either be null or a function"); 1171 } 1172 1173 subClass.prototype = Object.create(superClass && superClass.prototype, { 1174 constructor: { 1175 value: subClass, 1176 writable: true, 1177 configurable: true 1178 } 1179 }); 1180 if (superClass) _setPrototypeOf(subClass, superClass); 1181 } 1182 1183 /***/ }), 1184 1185 /***/ 24: 1186 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1187 1188 "use strict"; 1189 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _possibleConstructorReturn; }); 1190 /* harmony import */ var _helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(40); 1191 /* harmony import */ var _assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); 1192 1193 1194 function _possibleConstructorReturn(self, call) { 1195 if (call && (Object(_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(call) === "object" || typeof call === "function")) { 1196 return call; 1197 } 1198 1199 return Object(_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(self); 1200 } 1201 1202 /***/ }), 1203 1204 /***/ 25: 1205 /***/ (function(module, exports) { 1206 1207 (function() { module.exports = this["wp"]["richText"]; }()); 1208 1209 /***/ }), 1210 1211 /***/ 27: 1212 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1213 1214 "use strict"; 1215 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayLikeToArray; }); 1216 function _arrayLikeToArray(arr, len) { 1217 if (len == null || len > arr.length) len = arr.length; 1218 1219 for (var i = 0, arr2 = new Array(len); i < len; i++) { 1220 arr2[i] = arr[i]; 1221 } 1222 1223 return arr2; 1224 } 1225 1226 /***/ }), 1227 1228 /***/ 28: 1229 /***/ (function(module, exports, __webpack_require__) { 1230 1231 /** 1232 * Copyright (c) 2013-present, Facebook, Inc. 1233 * 1234 * This source code is licensed under the MIT license found in the 1235 * LICENSE file in the root directory of this source tree. 1236 */ 1237 1238 if (false) { var throwOnDirectAccess, ReactIs; } else { 1239 // By explicitly using `prop-types` you are opting into new production behavior. 1240 // http://fb.me/prop-types-in-prod 1241 module.exports = __webpack_require__(142)(); 1242 } 1243 1244 1245 /***/ }), 1246 1247 /***/ 293: 1248 /***/ (function(module, exports, __webpack_require__) { 1249 1250 module.exports = __webpack_require__(444); 1251 1252 1253 /***/ }), 1254 1255 /***/ 3: 1256 /***/ (function(module, exports) { 1257 1258 (function() { module.exports = this["wp"]["components"]; }()); 1259 1260 /***/ }), 1261 1262 /***/ 30: 1263 /***/ (function(module, exports) { 1264 1265 (function() { module.exports = this["wp"]["url"]; }()); 1266 1267 /***/ }), 1268 1269 /***/ 31: 1270 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1271 1272 "use strict"; 1273 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _unsupportedIterableToArray; }); 1274 /* harmony import */ var _arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27); 1275 1276 function _unsupportedIterableToArray(o, minLen) { 1277 if (!o) return; 1278 if (typeof o === "string") return Object(_arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(o, minLen); 1279 var n = Object.prototype.toString.call(o).slice(8, -1); 1280 if (n === "Object" && o.constructor) n = o.constructor.name; 1281 if (n === "Map" || n === "Set") return Array.from(o); 1282 if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Object(_arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(o, minLen); 1283 } 1284 1285 /***/ }), 1286 1287 /***/ 319: 1288 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1289 1290 "use strict"; 1291 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0); 1292 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__); 1293 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7); 1294 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__); 1295 1296 1297 /** 1298 * WordPress dependencies 1299 */ 1300 1301 var layout = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], { 1302 xmlns: "http://www.w3.org/2000/svg", 1303 viewBox: "-2 -2 24 24" 1304 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], { 1305 d: "M2 2h5v11H2V2zm6 0h5v5H8V2zm6 0h4v16h-4V2zM8 8h5v5H8V8zm-6 6h11v4H2v-4z" 1306 })); 1307 /* harmony default export */ __webpack_exports__["a"] = (layout); 1308 1309 1310 /***/ }), 1311 1312 /***/ 32: 1313 /***/ (function(module, exports) { 1314 1315 (function() { module.exports = this["wp"]["dataControls"]; }()); 1316 1317 /***/ }), 1318 1319 /***/ 33: 1320 /***/ (function(module, exports) { 1321 1322 (function() { module.exports = this["wp"]["hooks"]; }()); 1323 1324 /***/ }), 1325 1326 /***/ 36: 1327 /***/ (function(module, exports) { 1328 1329 (function() { module.exports = this["wp"]["deprecated"]; }()); 1330 1331 /***/ }), 1332 1333 /***/ 37: 1334 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1335 1336 "use strict"; 1337 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _iterableToArray; }); 1338 function _iterableToArray(iter) { 1339 if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); 1340 } 1341 1342 /***/ }), 1343 1344 /***/ 38: 1345 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1346 1347 "use strict"; 1348 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayWithHoles; }); 1349 function _arrayWithHoles(arr) { 1350 if (Array.isArray(arr)) return arr; 1351 } 1352 1353 /***/ }), 1354 1355 /***/ 39: 1356 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1357 1358 "use strict"; 1359 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _nonIterableRest; }); 1360 function _nonIterableRest() { 1361 throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); 1362 } 1363 1364 /***/ }), 1365 1366 /***/ 4: 1367 /***/ (function(module, exports) { 1368 1369 (function() { module.exports = this["wp"]["data"]; }()); 1370 1371 /***/ }), 1372 1373 /***/ 40: 1374 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1375 1376 "use strict"; 1377 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _typeof; }); 1378 function _typeof(obj) { 1379 "@babel/helpers - typeof"; 1380 1381 if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { 1382 _typeof = function _typeof(obj) { 1383 return typeof obj; 1384 }; 1385 } else { 1386 _typeof = function _typeof(obj) { 1387 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 1388 }; 1389 } 1390 1391 return _typeof(obj); 1392 } 1393 1394 /***/ }), 1395 1396 /***/ 43: 1397 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1398 1399 "use strict"; 1400 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectWithoutPropertiesLoose; }); 1401 function _objectWithoutPropertiesLoose(source, excluded) { 1402 if (source == null) return {}; 1403 var target = {}; 1404 var sourceKeys = Object.keys(source); 1405 var key, i; 1406 1407 for (i = 0; i < sourceKeys.length; i++) { 1408 key = sourceKeys[i]; 1409 if (excluded.indexOf(key) >= 0) continue; 1410 target[key] = source[key]; 1411 } 1412 1413 return target; 1414 } 1415 1416 /***/ }), 1417 1418 /***/ 444: 1419 /***/ (function(module, exports, __webpack_require__) { 1420 1421 "use strict"; 1422 1423 1424 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 1425 1426 function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } 1427 1428 var BEGIN = 'BEGIN'; 1429 var COMMIT = 'COMMIT'; 1430 var REVERT = 'REVERT'; 1431 // Array({transactionID: string or null, beforeState: {object}, action: {object}} 1432 var INITIAL_OPTIMIST = []; 1433 1434 module.exports = optimist; 1435 module.exports.BEGIN = BEGIN; 1436 module.exports.COMMIT = COMMIT; 1437 module.exports.REVERT = REVERT; 1438 function optimist(fn) { 1439 function beginReducer(state, action) { 1440 var _separateState = separateState(state); 1441 1442 var optimist = _separateState.optimist; 1443 var innerState = _separateState.innerState; 1444 1445 optimist = optimist.concat([{ beforeState: innerState, action: action }]); 1446 innerState = fn(innerState, action); 1447 validateState(innerState, action); 1448 return _extends({ optimist: optimist }, innerState); 1449 } 1450 function commitReducer(state, action) { 1451 var _separateState2 = separateState(state); 1452 1453 var optimist = _separateState2.optimist; 1454 var innerState = _separateState2.innerState; 1455 1456 var newOptimist = [], 1457 started = false, 1458 committed = false; 1459 optimist.forEach(function (entry) { 1460 if (started) { 1461 if (entry.beforeState && matchesTransaction(entry.action, action.optimist.id)) { 1462 committed = true; 1463 newOptimist.push({ action: entry.action }); 1464 } else { 1465 newOptimist.push(entry); 1466 } 1467 } else if (entry.beforeState && !matchesTransaction(entry.action, action.optimist.id)) { 1468 started = true; 1469 newOptimist.push(entry); 1470 } else if (entry.beforeState && matchesTransaction(entry.action, action.optimist.id)) { 1471 committed = true; 1472 } 1473 }); 1474 if (!committed) { 1475 console.error('Cannot commit transaction with id "' + action.optimist.id + '" because it does not exist'); 1476 } 1477 optimist = newOptimist; 1478 return baseReducer(optimist, innerState, action); 1479 } 1480 function revertReducer(state, action) { 1481 var _separateState3 = separateState(state); 1482 1483 var optimist = _separateState3.optimist; 1484 var innerState = _separateState3.innerState; 1485 1486 var newOptimist = [], 1487 started = false, 1488 gotInitialState = false, 1489 currentState = innerState; 1490 optimist.forEach(function (entry) { 1491 if (entry.beforeState && matchesTransaction(entry.action, action.optimist.id)) { 1492 currentState = entry.beforeState; 1493 gotInitialState = true; 1494 } 1495 if (!matchesTransaction(entry.action, action.optimist.id)) { 1496 if (entry.beforeState) { 1497 started = true; 1498 } 1499 if (started) { 1500 if (gotInitialState && entry.beforeState) { 1501 newOptimist.push({ 1502 beforeState: currentState, 1503 action: entry.action 1504 }); 1505 } else { 1506 newOptimist.push(entry); 1507 } 1508 } 1509 if (gotInitialState) { 1510 currentState = fn(currentState, entry.action); 1511 validateState(innerState, action); 1512 } 1513 } 1514 }); 1515 if (!gotInitialState) { 1516 console.error('Cannot revert transaction with id "' + action.optimist.id + '" because it does not exist'); 1517 } 1518 optimist = newOptimist; 1519 return baseReducer(optimist, currentState, action); 1520 } 1521 function baseReducer(optimist, innerState, action) { 1522 if (optimist.length) { 1523 optimist = optimist.concat([{ action: action }]); 1524 } 1525 innerState = fn(innerState, action); 1526 validateState(innerState, action); 1527 return _extends({ optimist: optimist }, innerState); 1528 } 1529 return function (state, action) { 1530 if (action.optimist) { 1531 switch (action.optimist.type) { 1532 case BEGIN: 1533 return beginReducer(state, action); 1534 case COMMIT: 1535 return commitReducer(state, action); 1536 case REVERT: 1537 return revertReducer(state, action); 1538 } 1539 } 1540 1541 var _separateState4 = separateState(state); 1542 1543 var optimist = _separateState4.optimist; 1544 var innerState = _separateState4.innerState; 1545 1546 if (state && !optimist.length) { 1547 var nextState = fn(innerState, action); 1548 if (nextState === innerState) { 1549 return state; 1550 } 1551 validateState(nextState, action); 1552 return _extends({ optimist: optimist }, nextState); 1553 } 1554 return baseReducer(optimist, innerState, action); 1555 }; 1556 } 1557 1558 function matchesTransaction(action, id) { 1559 return action.optimist && action.optimist.id === id; 1560 } 1561 1562 function validateState(newState, action) { 1563 if (!newState || typeof newState !== 'object' || Array.isArray(newState)) { 1564 throw new TypeError('Error while handling "' + action.type + '": Optimist requires that state is always a plain object.'); 1565 } 1566 } 1567 1568 function separateState(state) { 1569 if (!state) { 1570 return { optimist: INITIAL_OPTIMIST, innerState: state }; 1571 } else { 1572 var _state$optimist = state.optimist; 1573 1574 var _optimist = _state$optimist === undefined ? INITIAL_OPTIMIST : _state$optimist; 1575 1576 var innerState = _objectWithoutProperties(state, ['optimist']); 1577 1578 return { optimist: _optimist, innerState: innerState }; 1579 } 1580 } 1581 1582 /***/ }), 1583 1584 /***/ 45: 1585 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1586 1587 "use strict"; 1588 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _asyncToGenerator; }); 1589 function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { 1590 try { 1591 var info = gen[key](arg); 1592 var value = info.value; 1593 } catch (error) { 1594 reject(error); 1595 return; 1596 } 1597 1598 if (info.done) { 1599 resolve(value); 1600 } else { 1601 Promise.resolve(value).then(_next, _throw); 1602 } 1603 } 1604 1605 function _asyncToGenerator(fn) { 1606 return function () { 1607 var self = this, 1608 args = arguments; 1609 return new Promise(function (resolve, reject) { 1610 var gen = fn.apply(self, args); 1611 1612 function _next(value) { 1613 asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); 1614 } 1615 1616 function _throw(err) { 1617 asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); 1618 } 1619 1620 _next(undefined); 1621 }); 1622 }; 1623 } 1624 1625 /***/ }), 1626 1627 /***/ 462: 1628 /***/ (function(module, __webpack_exports__, __webpack_require__) { 1629 1630 "use strict"; 1631 // ESM COMPAT FLAG 1632 __webpack_require__.r(__webpack_exports__); 1633 1634 // EXPORTS 1635 __webpack_require__.d(__webpack_exports__, "userAutocompleter", function() { return /* reexport */ autocompleters_user; }); 1636 __webpack_require__.d(__webpack_exports__, "AutosaveMonitor", function() { return /* reexport */ autosave_monitor; }); 1637 __webpack_require__.d(__webpack_exports__, "DocumentOutline", function() { return /* reexport */ document_outline; }); 1638 __webpack_require__.d(__webpack_exports__, "DocumentOutlineCheck", function() { return /* reexport */ check; }); 1639 __webpack_require__.d(__webpack_exports__, "VisualEditorGlobalKeyboardShortcuts", function() { return /* reexport */ visual_editor_shortcuts; }); 1640 __webpack_require__.d(__webpack_exports__, "EditorGlobalKeyboardShortcuts", function() { return /* reexport */ EditorGlobalKeyboardShortcuts; }); 1641 __webpack_require__.d(__webpack_exports__, "TextEditorGlobalKeyboardShortcuts", function() { return /* reexport */ TextEditorGlobalKeyboardShortcuts; }); 1642 __webpack_require__.d(__webpack_exports__, "EditorKeyboardShortcutsRegister", function() { return /* reexport */ register_shortcuts; }); 1643 __webpack_require__.d(__webpack_exports__, "EditorHistoryRedo", function() { return /* reexport */ editor_history_redo; }); 1644 __webpack_require__.d(__webpack_exports__, "EditorHistoryUndo", function() { return /* reexport */ editor_history_undo; }); 1645 __webpack_require__.d(__webpack_exports__, "EditorNotices", function() { return /* reexport */ editor_notices; }); 1646 __webpack_require__.d(__webpack_exports__, "EntitiesSavedStates", function() { return /* reexport */ EntitiesSavedStates; }); 1647 __webpack_require__.d(__webpack_exports__, "ErrorBoundary", function() { return /* reexport */ error_boundary; }); 1648 __webpack_require__.d(__webpack_exports__, "LocalAutosaveMonitor", function() { return /* reexport */ local_autosave_monitor; }); 1649 __webpack_require__.d(__webpack_exports__, "PageAttributesCheck", function() { return /* reexport */ page_attributes_check; }); 1650 __webpack_require__.d(__webpack_exports__, "PageAttributesOrder", function() { return /* reexport */ page_attributes_order; }); 1651 __webpack_require__.d(__webpack_exports__, "PageAttributesParent", function() { return /* reexport */ page_attributes_parent; }); 1652 __webpack_require__.d(__webpack_exports__, "PageTemplate", function() { return /* reexport */ page_attributes_template; }); 1653 __webpack_require__.d(__webpack_exports__, "PostAuthor", function() { return /* reexport */ post_author; }); 1654 __webpack_require__.d(__webpack_exports__, "PostAuthorCheck", function() { return /* reexport */ post_author_check; }); 1655 __webpack_require__.d(__webpack_exports__, "PostComments", function() { return /* reexport */ post_comments; }); 1656 __webpack_require__.d(__webpack_exports__, "PostExcerpt", function() { return /* reexport */ post_excerpt; }); 1657 __webpack_require__.d(__webpack_exports__, "PostExcerptCheck", function() { return /* reexport */ post_excerpt_check; }); 1658 __webpack_require__.d(__webpack_exports__, "PostFeaturedImage", function() { return /* reexport */ post_featured_image; }); 1659 __webpack_require__.d(__webpack_exports__, "PostFeaturedImageCheck", function() { return /* reexport */ post_featured_image_check; }); 1660 __webpack_require__.d(__webpack_exports__, "PostFormat", function() { return /* reexport */ PostFormat; }); 1661 __webpack_require__.d(__webpack_exports__, "PostFormatCheck", function() { return /* reexport */ post_format_check; }); 1662 __webpack_require__.d(__webpack_exports__, "PostLastRevision", function() { return /* reexport */ post_last_revision; }); 1663 __webpack_require__.d(__webpack_exports__, "PostLastRevisionCheck", function() { return /* reexport */ post_last_revision_check; }); 1664 __webpack_require__.d(__webpack_exports__, "PostLockedModal", function() { return /* reexport */ post_locked_modal; }); 1665 __webpack_require__.d(__webpack_exports__, "PostPendingStatus", function() { return /* reexport */ post_pending_status; }); 1666 __webpack_require__.d(__webpack_exports__, "PostPendingStatusCheck", function() { return /* reexport */ post_pending_status_check; }); 1667 __webpack_require__.d(__webpack_exports__, "PostPingbacks", function() { return /* reexport */ post_pingbacks; }); 1668 __webpack_require__.d(__webpack_exports__, "PostPreviewButton", function() { return /* reexport */ post_preview_button; }); 1669 __webpack_require__.d(__webpack_exports__, "PostPublishButton", function() { return /* reexport */ post_publish_button; }); 1670 __webpack_require__.d(__webpack_exports__, "PostPublishButtonLabel", function() { return /* reexport */ post_publish_button_label; }); 1671 __webpack_require__.d(__webpack_exports__, "PostPublishPanel", function() { return /* reexport */ post_publish_panel; }); 1672 __webpack_require__.d(__webpack_exports__, "PostSavedState", function() { return /* reexport */ PostSavedState; }); 1673 __webpack_require__.d(__webpack_exports__, "PostSchedule", function() { return /* reexport */ post_schedule; }); 1674 __webpack_require__.d(__webpack_exports__, "PostScheduleCheck", function() { return /* reexport */ post_schedule_check; }); 1675 __webpack_require__.d(__webpack_exports__, "PostScheduleLabel", function() { return /* reexport */ post_schedule_label; }); 1676 __webpack_require__.d(__webpack_exports__, "PostSlug", function() { return /* reexport */ post_slug; }); 1677 __webpack_require__.d(__webpack_exports__, "PostSlugCheck", function() { return /* reexport */ PostSlugCheck; }); 1678 __webpack_require__.d(__webpack_exports__, "PostSticky", function() { return /* reexport */ post_sticky; }); 1679 __webpack_require__.d(__webpack_exports__, "PostStickyCheck", function() { return /* reexport */ post_sticky_check; }); 1680 __webpack_require__.d(__webpack_exports__, "PostSwitchToDraftButton", function() { return /* reexport */ post_switch_to_draft_button; }); 1681 __webpack_require__.d(__webpack_exports__, "PostTaxonomies", function() { return /* reexport */ post_taxonomies; }); 1682 __webpack_require__.d(__webpack_exports__, "PostTaxonomiesCheck", function() { return /* reexport */ post_taxonomies_check; }); 1683 __webpack_require__.d(__webpack_exports__, "PostTextEditor", function() { return /* reexport */ PostTextEditor; }); 1684 __webpack_require__.d(__webpack_exports__, "PostTitle", function() { return /* reexport */ post_title; }); 1685 __webpack_require__.d(__webpack_exports__, "PostTrash", function() { return /* reexport */ post_trash; }); 1686 __webpack_require__.d(__webpack_exports__, "PostTrashCheck", function() { return /* reexport */ post_trash_check; }); 1687 __webpack_require__.d(__webpack_exports__, "PostTypeSupportCheck", function() { return /* reexport */ post_type_support_check; }); 1688 __webpack_require__.d(__webpack_exports__, "PostVisibility", function() { return /* reexport */ post_visibility; }); 1689 __webpack_require__.d(__webpack_exports__, "PostVisibilityLabel", function() { return /* reexport */ post_visibility_label; }); 1690 __webpack_require__.d(__webpack_exports__, "PostVisibilityCheck", function() { return /* reexport */ post_visibility_check; }); 1691 __webpack_require__.d(__webpack_exports__, "TableOfContents", function() { return /* reexport */ table_of_contents; }); 1692 __webpack_require__.d(__webpack_exports__, "UnsavedChangesWarning", function() { return /* reexport */ UnsavedChangesWarning; }); 1693 __webpack_require__.d(__webpack_exports__, "WordCount", function() { return /* reexport */ WordCount; }); 1694 __webpack_require__.d(__webpack_exports__, "EditorProvider", function() { return /* reexport */ provider; }); 1695 __webpack_require__.d(__webpack_exports__, "ServerSideRender", function() { return /* reexport */ external_this_wp_serverSideRender_default.a; }); 1696 __webpack_require__.d(__webpack_exports__, "RichText", function() { return /* reexport */ RichText; }); 1697 __webpack_require__.d(__webpack_exports__, "Autocomplete", function() { return /* reexport */ Autocomplete; }); 1698 __webpack_require__.d(__webpack_exports__, "AlignmentToolbar", function() { return /* reexport */ AlignmentToolbar; }); 1699 __webpack_require__.d(__webpack_exports__, "BlockAlignmentToolbar", function() { return /* reexport */ BlockAlignmentToolbar; }); 1700 __webpack_require__.d(__webpack_exports__, "BlockControls", function() { return /* reexport */ BlockControls; }); 1701 __webpack_require__.d(__webpack_exports__, "BlockEdit", function() { return /* reexport */ deprecated_BlockEdit; }); 1702 __webpack_require__.d(__webpack_exports__, "BlockEditorKeyboardShortcuts", function() { return /* reexport */ BlockEditorKeyboardShortcuts; }); 1703 __webpack_require__.d(__webpack_exports__, "BlockFormatControls", function() { return /* reexport */ BlockFormatControls; }); 1704 __webpack_require__.d(__webpack_exports__, "BlockIcon", function() { return /* reexport */ BlockIcon; }); 1705 __webpack_require__.d(__webpack_exports__, "BlockInspector", function() { return /* reexport */ BlockInspector; }); 1706 __webpack_require__.d(__webpack_exports__, "BlockList", function() { return /* reexport */ BlockList; }); 1707 __webpack_require__.d(__webpack_exports__, "BlockMover", function() { return /* reexport */ BlockMover; }); 1708 __webpack_require__.d(__webpack_exports__, "BlockNavigationDropdown", function() { return /* reexport */ BlockNavigationDropdown; }); 1709 __webpack_require__.d(__webpack_exports__, "BlockSelectionClearer", function() { return /* reexport */ BlockSelectionClearer; }); 1710 __webpack_require__.d(__webpack_exports__, "BlockSettingsMenu", function() { return /* reexport */ BlockSettingsMenu; }); 1711 __webpack_require__.d(__webpack_exports__, "BlockTitle", function() { return /* reexport */ BlockTitle; }); 1712 __webpack_require__.d(__webpack_exports__, "BlockToolbar", function() { return /* reexport */ BlockToolbar; }); 1713 __webpack_require__.d(__webpack_exports__, "ColorPalette", function() { return /* reexport */ ColorPalette; }); 1714 __webpack_require__.d(__webpack_exports__, "ContrastChecker", function() { return /* reexport */ ContrastChecker; }); 1715 __webpack_require__.d(__webpack_exports__, "CopyHandler", function() { return /* reexport */ CopyHandler; }); 1716 __webpack_require__.d(__webpack_exports__, "DefaultBlockAppender", function() { return /* reexport */ DefaultBlockAppender; }); 1717 __webpack_require__.d(__webpack_exports__, "FontSizePicker", function() { return /* reexport */ FontSizePicker; }); 1718 __webpack_require__.d(__webpack_exports__, "Inserter", function() { return /* reexport */ Inserter; }); 1719 __webpack_require__.d(__webpack_exports__, "InnerBlocks", function() { return /* reexport */ InnerBlocks; }); 1720 __webpack_require__.d(__webpack_exports__, "InspectorAdvancedControls", function() { return /* reexport */ InspectorAdvancedControls; }); 1721 __webpack_require__.d(__webpack_exports__, "InspectorControls", function() { return /* reexport */ InspectorControls; }); 1722 __webpack_require__.d(__webpack_exports__, "PanelColorSettings", function() { return /* reexport */ PanelColorSettings; }); 1723 __webpack_require__.d(__webpack_exports__, "PlainText", function() { return /* reexport */ PlainText; }); 1724 __webpack_require__.d(__webpack_exports__, "RichTextShortcut", function() { return /* reexport */ RichTextShortcut; }); 1725 __webpack_require__.d(__webpack_exports__, "RichTextToolbarButton", function() { return /* reexport */ RichTextToolbarButton; }); 1726 __webpack_require__.d(__webpack_exports__, "__unstableRichTextInputEvent", function() { return /* reexport */ __unstableRichTextInputEvent; }); 1727 __webpack_require__.d(__webpack_exports__, "MediaPlaceholder", function() { return /* reexport */ MediaPlaceholder; }); 1728 __webpack_require__.d(__webpack_exports__, "MediaUpload", function() { return /* reexport */ MediaUpload; }); 1729 __webpack_require__.d(__webpack_exports__, "MediaUploadCheck", function() { return /* reexport */ MediaUploadCheck; }); 1730 __webpack_require__.d(__webpack_exports__, "MultiSelectScrollIntoView", function() { return /* reexport */ MultiSelectScrollIntoView; }); 1731 __webpack_require__.d(__webpack_exports__, "NavigableToolbar", function() { return /* reexport */ NavigableToolbar; }); 1732 __webpack_require__.d(__webpack_exports__, "ObserveTyping", function() { return /* reexport */ ObserveTyping; }); 1733 __webpack_require__.d(__webpack_exports__, "PreserveScrollInReorder", function() { return /* reexport */ PreserveScrollInReorder; }); 1734 __webpack_require__.d(__webpack_exports__, "SkipToSelectedBlock", function() { return /* reexport */ SkipToSelectedBlock; }); 1735 __webpack_require__.d(__webpack_exports__, "URLInput", function() { return /* reexport */ URLInput; }); 1736 __webpack_require__.d(__webpack_exports__, "URLInputButton", function() { return /* reexport */ URLInputButton; }); 1737 __webpack_require__.d(__webpack_exports__, "URLPopover", function() { return /* reexport */ URLPopover; }); 1738 __webpack_require__.d(__webpack_exports__, "Warning", function() { return /* reexport */ Warning; }); 1739 __webpack_require__.d(__webpack_exports__, "WritingFlow", function() { return /* reexport */ WritingFlow; }); 1740 __webpack_require__.d(__webpack_exports__, "createCustomColorsHOC", function() { return /* reexport */ createCustomColorsHOC; }); 1741 __webpack_require__.d(__webpack_exports__, "getColorClassName", function() { return /* reexport */ getColorClassName; }); 1742 __webpack_require__.d(__webpack_exports__, "getColorObjectByAttributeValues", function() { return /* reexport */ getColorObjectByAttributeValues; }); 1743 __webpack_require__.d(__webpack_exports__, "getColorObjectByColorValue", function() { return /* reexport */ getColorObjectByColorValue; }); 1744 __webpack_require__.d(__webpack_exports__, "getFontSize", function() { return /* reexport */ getFontSize; }); 1745 __webpack_require__.d(__webpack_exports__, "getFontSizeClass", function() { return /* reexport */ getFontSizeClass; }); 1746 __webpack_require__.d(__webpack_exports__, "withColorContext", function() { return /* reexport */ withColorContext; }); 1747 __webpack_require__.d(__webpack_exports__, "withColors", function() { return /* reexport */ withColors; }); 1748 __webpack_require__.d(__webpack_exports__, "withFontSizes", function() { return /* reexport */ withFontSizes; }); 1749 __webpack_require__.d(__webpack_exports__, "mediaUpload", function() { return /* reexport */ mediaUpload; }); 1750 __webpack_require__.d(__webpack_exports__, "cleanForSlug", function() { return /* reexport */ cleanForSlug; }); 1751 __webpack_require__.d(__webpack_exports__, "storeConfig", function() { return /* reexport */ storeConfig; }); 1752 __webpack_require__.d(__webpack_exports__, "transformStyles", function() { return /* reexport */ external_this_wp_blockEditor_["transformStyles"]; }); 1753 1754 // NAMESPACE OBJECT: ./node_modules/@wordpress/editor/build-module/store/selectors.js 1755 var selectors_namespaceObject = {}; 1756 __webpack_require__.r(selectors_namespaceObject); 1757 __webpack_require__.d(selectors_namespaceObject, "hasEditorUndo", function() { return hasEditorUndo; }); 1758 __webpack_require__.d(selectors_namespaceObject, "hasEditorRedo", function() { return hasEditorRedo; }); 1759 __webpack_require__.d(selectors_namespaceObject, "isEditedPostNew", function() { return selectors_isEditedPostNew; }); 1760 __webpack_require__.d(selectors_namespaceObject, "hasChangedContent", function() { return hasChangedContent; }); 1761 __webpack_require__.d(selectors_namespaceObject, "isEditedPostDirty", function() { return selectors_isEditedPostDirty; }); 1762 __webpack_require__.d(selectors_namespaceObject, "hasNonPostEntityChanges", function() { return selectors_hasNonPostEntityChanges; }); 1763 __webpack_require__.d(selectors_namespaceObject, "isCleanNewPost", function() { return selectors_isCleanNewPost; }); 1764 __webpack_require__.d(selectors_namespaceObject, "getCurrentPost", function() { return selectors_getCurrentPost; }); 1765 __webpack_require__.d(selectors_namespaceObject, "getCurrentPostType", function() { return selectors_getCurrentPostType; }); 1766 __webpack_require__.d(selectors_namespaceObject, "getCurrentPostId", function() { return selectors_getCurrentPostId; }); 1767 __webpack_require__.d(selectors_namespaceObject, "getCurrentPostRevisionsCount", function() { return getCurrentPostRevisionsCount; }); 1768 __webpack_require__.d(selectors_namespaceObject, "getCurrentPostLastRevisionId", function() { return getCurrentPostLastRevisionId; }); 1769 __webpack_require__.d(selectors_namespaceObject, "getPostEdits", function() { return selectors_getPostEdits; }); 1770 __webpack_require__.d(selectors_namespaceObject, "getReferenceByDistinctEdits", function() { return getReferenceByDistinctEdits; }); 1771 __webpack_require__.d(selectors_namespaceObject, "getCurrentPostAttribute", function() { return selectors_getCurrentPostAttribute; }); 1772 __webpack_require__.d(selectors_namespaceObject, "getEditedPostAttribute", function() { return selectors_getEditedPostAttribute; }); 1773 __webpack_require__.d(selectors_namespaceObject, "getAutosaveAttribute", function() { return getAutosaveAttribute; }); 1774 __webpack_require__.d(selectors_namespaceObject, "getEditedPostVisibility", function() { return selectors_getEditedPostVisibility; }); 1775 __webpack_require__.d(selectors_namespaceObject, "isCurrentPostPending", function() { return isCurrentPostPending; }); 1776 __webpack_require__.d(selectors_namespaceObject, "isCurrentPostPublished", function() { return selectors_isCurrentPostPublished; }); 1777 __webpack_require__.d(selectors_namespaceObject, "isCurrentPostScheduled", function() { return selectors_isCurrentPostScheduled; }); 1778 __webpack_require__.d(selectors_namespaceObject, "isEditedPostPublishable", function() { return selectors_isEditedPostPublishable; }); 1779 __webpack_require__.d(selectors_namespaceObject, "isEditedPostSaveable", function() { return selectors_isEditedPostSaveable; }); 1780 __webpack_require__.d(selectors_namespaceObject, "isEditedPostEmpty", function() { return isEditedPostEmpty; }); 1781 __webpack_require__.d(selectors_namespaceObject, "isEditedPostAutosaveable", function() { return selectors_isEditedPostAutosaveable; }); 1782 __webpack_require__.d(selectors_namespaceObject, "getAutosave", function() { return getAutosave; }); 1783 __webpack_require__.d(selectors_namespaceObject, "hasAutosave", function() { return hasAutosave; }); 1784 __webpack_require__.d(selectors_namespaceObject, "isEditedPostBeingScheduled", function() { return selectors_isEditedPostBeingScheduled; }); 1785 __webpack_require__.d(selectors_namespaceObject, "isEditedPostDateFloating", function() { return isEditedPostDateFloating; }); 1786 __webpack_require__.d(selectors_namespaceObject, "isSavingPost", function() { return selectors_isSavingPost; }); 1787 __webpack_require__.d(selectors_namespaceObject, "didPostSaveRequestSucceed", function() { return didPostSaveRequestSucceed; }); 1788 __webpack_require__.d(selectors_namespaceObject, "didPostSaveRequestFail", function() { return didPostSaveRequestFail; }); 1789 __webpack_require__.d(selectors_namespaceObject, "isAutosavingPost", function() { return selectors_isAutosavingPost; }); 1790 __webpack_require__.d(selectors_namespaceObject, "isPreviewingPost", function() { return isPreviewingPost; }); 1791 __webpack_require__.d(selectors_namespaceObject, "getEditedPostPreviewLink", function() { return selectors_getEditedPostPreviewLink; }); 1792 __webpack_require__.d(selectors_namespaceObject, "getSuggestedPostFormat", function() { return selectors_getSuggestedPostFormat; }); 1793 __webpack_require__.d(selectors_namespaceObject, "getBlocksForSerialization", function() { return getBlocksForSerialization; }); 1794 __webpack_require__.d(selectors_namespaceObject, "getEditedPostContent", function() { return getEditedPostContent; }); 1795 __webpack_require__.d(selectors_namespaceObject, "getStateBeforeOptimisticTransaction", function() { return getStateBeforeOptimisticTransaction; }); 1796 __webpack_require__.d(selectors_namespaceObject, "isPublishingPost", function() { return selectors_isPublishingPost; }); 1797 __webpack_require__.d(selectors_namespaceObject, "isPermalinkEditable", function() { return isPermalinkEditable; }); 1798 __webpack_require__.d(selectors_namespaceObject, "getPermalink", function() { return getPermalink; }); 1799 __webpack_require__.d(selectors_namespaceObject, "getEditedPostSlug", function() { return getEditedPostSlug; }); 1800 __webpack_require__.d(selectors_namespaceObject, "getPermalinkParts", function() { return getPermalinkParts; }); 1801 __webpack_require__.d(selectors_namespaceObject, "inSomeHistory", function() { return inSomeHistory; }); 1802 __webpack_require__.d(selectors_namespaceObject, "isPostLocked", function() { return isPostLocked; }); 1803 __webpack_require__.d(selectors_namespaceObject, "isPostSavingLocked", function() { return selectors_isPostSavingLocked; }); 1804 __webpack_require__.d(selectors_namespaceObject, "isPostAutosavingLocked", function() { return isPostAutosavingLocked; }); 1805 __webpack_require__.d(selectors_namespaceObject, "isPostLockTakeover", function() { return isPostLockTakeover; }); 1806 __webpack_require__.d(selectors_namespaceObject, "getPostLockUser", function() { return getPostLockUser; }); 1807 __webpack_require__.d(selectors_namespaceObject, "getActivePostLock", function() { return getActivePostLock; }); 1808 __webpack_require__.d(selectors_namespaceObject, "canUserUseUnfilteredHTML", function() { return selectors_canUserUseUnfilteredHTML; }); 1809 __webpack_require__.d(selectors_namespaceObject, "isPublishSidebarEnabled", function() { return selectors_isPublishSidebarEnabled; }); 1810 __webpack_require__.d(selectors_namespaceObject, "getEditorBlocks", function() { return selectors_getEditorBlocks; }); 1811 __webpack_require__.d(selectors_namespaceObject, "getEditorSelectionStart", function() { return selectors_getEditorSelectionStart; }); 1812 __webpack_require__.d(selectors_namespaceObject, "getEditorSelectionEnd", function() { return selectors_getEditorSelectionEnd; }); 1813 __webpack_require__.d(selectors_namespaceObject, "__unstableIsEditorReady", function() { return __unstableIsEditorReady; }); 1814 __webpack_require__.d(selectors_namespaceObject, "getEditorSettings", function() { return selectors_getEditorSettings; }); 1815 __webpack_require__.d(selectors_namespaceObject, "getBlockName", function() { return getBlockName; }); 1816 __webpack_require__.d(selectors_namespaceObject, "isBlockValid", function() { return isBlockValid; }); 1817 __webpack_require__.d(selectors_namespaceObject, "getBlockAttributes", function() { return getBlockAttributes; }); 1818 __webpack_require__.d(selectors_namespaceObject, "getBlock", function() { return getBlock; }); 1819 __webpack_require__.d(selectors_namespaceObject, "getBlocks", function() { return selectors_getBlocks; }); 1820 __webpack_require__.d(selectors_namespaceObject, "__unstableGetBlockWithoutInnerBlocks", function() { return __unstableGetBlockWithoutInnerBlocks; }); 1821 __webpack_require__.d(selectors_namespaceObject, "getClientIdsOfDescendants", function() { return getClientIdsOfDescendants; }); 1822 __webpack_require__.d(selectors_namespaceObject, "getClientIdsWithDescendants", function() { return getClientIdsWithDescendants; }); 1823 __webpack_require__.d(selectors_namespaceObject, "getGlobalBlockCount", function() { return getGlobalBlockCount; }); 1824 __webpack_require__.d(selectors_namespaceObject, "getBlocksByClientId", function() { return getBlocksByClientId; }); 1825 __webpack_require__.d(selectors_namespaceObject, "getBlockCount", function() { return getBlockCount; }); 1826 __webpack_require__.d(selectors_namespaceObject, "getBlockSelectionStart", function() { return getBlockSelectionStart; }); 1827 __webpack_require__.d(selectors_namespaceObject, "getBlockSelectionEnd", function() { return getBlockSelectionEnd; }); 1828 __webpack_require__.d(selectors_namespaceObject, "getSelectedBlockCount", function() { return getSelectedBlockCount; }); 1829 __webpack_require__.d(selectors_namespaceObject, "hasSelectedBlock", function() { return hasSelectedBlock; }); 1830 __webpack_require__.d(selectors_namespaceObject, "getSelectedBlockClientId", function() { return getSelectedBlockClientId; }); 1831 __webpack_require__.d(selectors_namespaceObject, "getSelectedBlock", function() { return getSelectedBlock; }); 1832 __webpack_require__.d(selectors_namespaceObject, "getBlockRootClientId", function() { return getBlockRootClientId; }); 1833 __webpack_require__.d(selectors_namespaceObject, "getBlockHierarchyRootClientId", function() { return getBlockHierarchyRootClientId; }); 1834 __webpack_require__.d(selectors_namespaceObject, "getAdjacentBlockClientId", function() { return getAdjacentBlockClientId; }); 1835 __webpack_require__.d(selectors_namespaceObject, "getPreviousBlockClientId", function() { return getPreviousBlockClientId; }); 1836 __webpack_require__.d(selectors_namespaceObject, "getNextBlockClientId", function() { return getNextBlockClientId; }); 1837 __webpack_require__.d(selectors_namespaceObject, "getSelectedBlocksInitialCaretPosition", function() { return getSelectedBlocksInitialCaretPosition; }); 1838 __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlockClientIds", function() { return getMultiSelectedBlockClientIds; }); 1839 __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocks", function() { return getMultiSelectedBlocks; }); 1840 __webpack_require__.d(selectors_namespaceObject, "getFirstMultiSelectedBlockClientId", function() { return getFirstMultiSelectedBlockClientId; }); 1841 __webpack_require__.d(selectors_namespaceObject, "getLastMultiSelectedBlockClientId", function() { return getLastMultiSelectedBlockClientId; }); 1842 __webpack_require__.d(selectors_namespaceObject, "isFirstMultiSelectedBlock", function() { return isFirstMultiSelectedBlock; }); 1843 __webpack_require__.d(selectors_namespaceObject, "isBlockMultiSelected", function() { return isBlockMultiSelected; }); 1844 __webpack_require__.d(selectors_namespaceObject, "isAncestorMultiSelected", function() { return isAncestorMultiSelected; }); 1845 __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocksStartClientId", function() { return getMultiSelectedBlocksStartClientId; }); 1846 __webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocksEndClientId", function() { return getMultiSelectedBlocksEndClientId; }); 1847 __webpack_require__.d(selectors_namespaceObject, "getBlockOrder", function() { return getBlockOrder; }); 1848 __webpack_require__.d(selectors_namespaceObject, "getBlockIndex", function() { return getBlockIndex; }); 1849 __webpack_require__.d(selectors_namespaceObject, "isBlockSelected", function() { return isBlockSelected; }); 1850 __webpack_require__.d(selectors_namespaceObject, "hasSelectedInnerBlock", function() { return hasSelectedInnerBlock; }); 1851 __webpack_require__.d(selectors_namespaceObject, "isBlockWithinSelection", function() { return isBlockWithinSelection; }); 1852 __webpack_require__.d(selectors_namespaceObject, "hasMultiSelection", function() { return hasMultiSelection; }); 1853 __webpack_require__.d(selectors_namespaceObject, "isMultiSelecting", function() { return isMultiSelecting; }); 1854 __webpack_require__.d(selectors_namespaceObject, "isSelectionEnabled", function() { return isSelectionEnabled; }); 1855 __webpack_require__.d(selectors_namespaceObject, "getBlockMode", function() { return getBlockMode; }); 1856 __webpack_require__.d(selectors_namespaceObject, "isTyping", function() { return isTyping; }); 1857 __webpack_require__.d(selectors_namespaceObject, "isCaretWithinFormattedText", function() { return isCaretWithinFormattedText; }); 1858 __webpack_require__.d(selectors_namespaceObject, "getBlockInsertionPoint", function() { return getBlockInsertionPoint; }); 1859 __webpack_require__.d(selectors_namespaceObject, "isBlockInsertionPointVisible", function() { return isBlockInsertionPointVisible; }); 1860 __webpack_require__.d(selectors_namespaceObject, "isValidTemplate", function() { return isValidTemplate; }); 1861 __webpack_require__.d(selectors_namespaceObject, "getTemplate", function() { return getTemplate; }); 1862 __webpack_require__.d(selectors_namespaceObject, "getTemplateLock", function() { return getTemplateLock; }); 1863 __webpack_require__.d(selectors_namespaceObject, "canInsertBlockType", function() { return canInsertBlockType; }); 1864 __webpack_require__.d(selectors_namespaceObject, "getInserterItems", function() { return getInserterItems; }); 1865 __webpack_require__.d(selectors_namespaceObject, "hasInserterItems", function() { return hasInserterItems; }); 1866 __webpack_require__.d(selectors_namespaceObject, "getBlockListSettings", function() { return getBlockListSettings; }); 1867 1868 // NAMESPACE OBJECT: ./node_modules/@wordpress/editor/build-module/store/actions.js 1869 var actions_namespaceObject = {}; 1870 __webpack_require__.r(actions_namespaceObject); 1871 __webpack_require__.d(actions_namespaceObject, "setupEditor", function() { return setupEditor; }); 1872 __webpack_require__.d(actions_namespaceObject, "__experimentalTearDownEditor", function() { return __experimentalTearDownEditor; }); 1873 __webpack_require__.d(actions_namespaceObject, "resetPost", function() { return resetPost; }); 1874 __webpack_require__.d(actions_namespaceObject, "resetAutosave", function() { return resetAutosave; }); 1875 __webpack_require__.d(actions_namespaceObject, "__experimentalRequestPostUpdateStart", function() { return __experimentalRequestPostUpdateStart; }); 1876 __webpack_require__.d(actions_namespaceObject, "__experimentalRequestPostUpdateFinish", function() { return __experimentalRequestPostUpdateFinish; }); 1877 __webpack_require__.d(actions_namespaceObject, "updatePost", function() { return updatePost; }); 1878 __webpack_require__.d(actions_namespaceObject, "setupEditorState", function() { return setupEditorState; }); 1879 __webpack_require__.d(actions_namespaceObject, "editPost", function() { return actions_editPost; }); 1880 __webpack_require__.d(actions_namespaceObject, "__experimentalOptimisticUpdatePost", function() { return __experimentalOptimisticUpdatePost; }); 1881 __webpack_require__.d(actions_namespaceObject, "savePost", function() { return actions_savePost; }); 1882 __webpack_require__.d(actions_namespaceObject, "refreshPost", function() { return refreshPost; }); 1883 __webpack_require__.d(actions_namespaceObject, "trashPost", function() { return trashPost; }); 1884 __webpack_require__.d(actions_namespaceObject, "autosave", function() { return actions_autosave; }); 1885 __webpack_require__.d(actions_namespaceObject, "redo", function() { return actions_redo; }); 1886 __webpack_require__.d(actions_namespaceObject, "undo", function() { return actions_undo; }); 1887 __webpack_require__.d(actions_namespaceObject, "createUndoLevel", function() { return createUndoLevel; }); 1888 __webpack_require__.d(actions_namespaceObject, "updatePostLock", function() { return updatePostLock; }); 1889 __webpack_require__.d(actions_namespaceObject, "enablePublishSidebar", function() { return enablePublishSidebar; }); 1890 __webpack_require__.d(actions_namespaceObject, "disablePublishSidebar", function() { return disablePublishSidebar; }); 1891 __webpack_require__.d(actions_namespaceObject, "lockPostSaving", function() { return lockPostSaving; }); 1892 __webpack_require__.d(actions_namespaceObject, "unlockPostSaving", function() { return unlockPostSaving; }); 1893 __webpack_require__.d(actions_namespaceObject, "lockPostAutosaving", function() { return lockPostAutosaving; }); 1894 __webpack_require__.d(actions_namespaceObject, "unlockPostAutosaving", function() { return unlockPostAutosaving; }); 1895 __webpack_require__.d(actions_namespaceObject, "resetEditorBlocks", function() { return actions_resetEditorBlocks; }); 1896 __webpack_require__.d(actions_namespaceObject, "updateEditorSettings", function() { return updateEditorSettings; }); 1897 __webpack_require__.d(actions_namespaceObject, "resetBlocks", function() { return resetBlocks; }); 1898 __webpack_require__.d(actions_namespaceObject, "receiveBlocks", function() { return receiveBlocks; }); 1899 __webpack_require__.d(actions_namespaceObject, "updateBlock", function() { return updateBlock; }); 1900 __webpack_require__.d(actions_namespaceObject, "updateBlockAttributes", function() { return updateBlockAttributes; }); 1901 __webpack_require__.d(actions_namespaceObject, "selectBlock", function() { return actions_selectBlock; }); 1902 __webpack_require__.d(actions_namespaceObject, "startMultiSelect", function() { return startMultiSelect; }); 1903 __webpack_require__.d(actions_namespaceObject, "stopMultiSelect", function() { return stopMultiSelect; }); 1904 __webpack_require__.d(actions_namespaceObject, "multiSelect", function() { return multiSelect; }); 1905 __webpack_require__.d(actions_namespaceObject, "clearSelectedBlock", function() { return clearSelectedBlock; }); 1906 __webpack_require__.d(actions_namespaceObject, "toggleSelection", function() { return toggleSelection; }); 1907 __webpack_require__.d(actions_namespaceObject, "replaceBlocks", function() { return actions_replaceBlocks; }); 1908 __webpack_require__.d(actions_namespaceObject, "replaceBlock", function() { return replaceBlock; }); 1909 __webpack_require__.d(actions_namespaceObject, "moveBlocksDown", function() { return moveBlocksDown; }); 1910 __webpack_require__.d(actions_namespaceObject, "moveBlocksUp", function() { return moveBlocksUp; }); 1911 __webpack_require__.d(actions_namespaceObject, "moveBlockToPosition", function() { return moveBlockToPosition; }); 1912 __webpack_require__.d(actions_namespaceObject, "insertBlock", function() { return insertBlock; }); 1913 __webpack_require__.d(actions_namespaceObject, "insertBlocks", function() { return insertBlocks; }); 1914 __webpack_require__.d(actions_namespaceObject, "showInsertionPoint", function() { return showInsertionPoint; }); 1915 __webpack_require__.d(actions_namespaceObject, "hideInsertionPoint", function() { return hideInsertionPoint; }); 1916 __webpack_require__.d(actions_namespaceObject, "setTemplateValidity", function() { return setTemplateValidity; }); 1917 __webpack_require__.d(actions_namespaceObject, "synchronizeTemplate", function() { return synchronizeTemplate; }); 1918 __webpack_require__.d(actions_namespaceObject, "mergeBlocks", function() { return mergeBlocks; }); 1919 __webpack_require__.d(actions_namespaceObject, "removeBlocks", function() { return removeBlocks; }); 1920 __webpack_require__.d(actions_namespaceObject, "removeBlock", function() { return removeBlock; }); 1921 __webpack_require__.d(actions_namespaceObject, "toggleBlockMode", function() { return toggleBlockMode; }); 1922 __webpack_require__.d(actions_namespaceObject, "startTyping", function() { return startTyping; }); 1923 __webpack_require__.d(actions_namespaceObject, "stopTyping", function() { return stopTyping; }); 1924 __webpack_require__.d(actions_namespaceObject, "enterFormattedText", function() { return enterFormattedText; }); 1925 __webpack_require__.d(actions_namespaceObject, "exitFormattedText", function() { return exitFormattedText; }); 1926 __webpack_require__.d(actions_namespaceObject, "insertDefaultBlock", function() { return insertDefaultBlock; }); 1927 __webpack_require__.d(actions_namespaceObject, "updateBlockListSettings", function() { return updateBlockListSettings; }); 1928 1929 // EXTERNAL MODULE: external {"this":["wp","blockEditor"]} 1930 var external_this_wp_blockEditor_ = __webpack_require__(6); 1931 1932 // EXTERNAL MODULE: external {"this":["wp","blocks"]} 1933 var external_this_wp_blocks_ = __webpack_require__(11); 1934 1935 // EXTERNAL MODULE: external {"this":["wp","coreData"]} 1936 var external_this_wp_coreData_ = __webpack_require__(83); 1937 1938 // EXTERNAL MODULE: external {"this":["wp","keyboardShortcuts"]} 1939 var external_this_wp_keyboardShortcuts_ = __webpack_require__(53); 1940 1941 // EXTERNAL MODULE: external {"this":["wp","notices"]} 1942 var external_this_wp_notices_ = __webpack_require__(92); 1943 1944 // EXTERNAL MODULE: external {"this":["wp","reusableBlocks"]} 1945 var external_this_wp_reusableBlocks_ = __webpack_require__(121); 1946 1947 // EXTERNAL MODULE: external {"this":["wp","richText"]} 1948 var external_this_wp_richText_ = __webpack_require__(25); 1949 1950 // EXTERNAL MODULE: external {"this":["wp","viewport"]} 1951 var external_this_wp_viewport_ = __webpack_require__(101); 1952 1953 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js 1954 var defineProperty = __webpack_require__(5); 1955 1956 // EXTERNAL MODULE: external {"this":["wp","data"]} 1957 var external_this_wp_data_ = __webpack_require__(4); 1958 1959 // EXTERNAL MODULE: external {"this":["wp","dataControls"]} 1960 var external_this_wp_dataControls_ = __webpack_require__(32); 1961 1962 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js 1963 var esm_typeof = __webpack_require__(40); 1964 1965 // EXTERNAL MODULE: ./node_modules/redux-optimist/index.js 1966 var redux_optimist = __webpack_require__(293); 1967 var redux_optimist_default = /*#__PURE__*/__webpack_require__.n(redux_optimist); 1968 1969 // EXTERNAL MODULE: external {"this":"lodash"} 1970 var external_this_lodash_ = __webpack_require__(2); 1971 1972 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/defaults.js 1973 1974 1975 function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 1976 1977 function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 1978 1979 /** 1980 * WordPress dependencies 1981 */ 1982 1983 var PREFERENCES_DEFAULTS = { 1984 insertUsage: {}, 1985 // Should be kept for backward compatibility, see: https://github.com/WordPress/gutenberg/issues/14580. 1986 isPublishSidebarEnabled: true 1987 }; 1988 /** 1989 * The default post editor settings 1990 * 1991 * allowedBlockTypes boolean|Array Allowed block types 1992 * richEditingEnabled boolean Whether rich editing is enabled or not 1993 * codeEditingEnabled boolean Whether code editing is enabled or not 1994 * enableCustomFields boolean Whether the WordPress custom fields are enabled or not 1995 * autosaveInterval number Autosave Interval 1996 * availableTemplates array? The available post templates 1997 * disablePostFormats boolean Whether or not the post formats are disabled 1998 * allowedMimeTypes array? List of allowed mime types and file extensions 1999 * maxUploadFileSize number Maximum upload file size 2000 */ 2001 2002 var EDITOR_SETTINGS_DEFAULTS = _objectSpread(_objectSpread({}, external_this_wp_blockEditor_["SETTINGS_DEFAULTS"]), {}, { 2003 richEditingEnabled: true, 2004 codeEditingEnabled: true, 2005 enableCustomFields: false 2006 }); 2007 2008 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/reducer.js 2009 2010 2011 2012 function reducer_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 2013 2014 function reducer_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { reducer_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { reducer_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 2015 2016 /** 2017 * External dependencies 2018 */ 2019 2020 2021 /** 2022 * WordPress dependencies 2023 */ 2024 2025 2026 /** 2027 * Internal dependencies 2028 */ 2029 2030 2031 /** 2032 * Returns a post attribute value, flattening nested rendered content using its 2033 * raw value in place of its original object form. 2034 * 2035 * @param {*} value Original value. 2036 * 2037 * @return {*} Raw value. 2038 */ 2039 2040 function getPostRawValue(value) { 2041 if (value && 'object' === Object(esm_typeof["a" /* default */])(value) && 'raw' in value) { 2042 return value.raw; 2043 } 2044 2045 return value; 2046 } 2047 /** 2048 * Returns true if the two object arguments have the same keys, or false 2049 * otherwise. 2050 * 2051 * @param {Object} a First object. 2052 * @param {Object} b Second object. 2053 * 2054 * @return {boolean} Whether the two objects have the same keys. 2055 */ 2056 2057 function hasSameKeys(a, b) { 2058 return Object(external_this_lodash_["isEqual"])(Object(external_this_lodash_["keys"])(a), Object(external_this_lodash_["keys"])(b)); 2059 } 2060 /** 2061 * Returns true if, given the currently dispatching action and the previously 2062 * dispatched action, the two actions are editing the same post property, or 2063 * false otherwise. 2064 * 2065 * @param {Object} action Currently dispatching action. 2066 * @param {Object} previousAction Previously dispatched action. 2067 * 2068 * @return {boolean} Whether actions are updating the same post property. 2069 */ 2070 2071 function isUpdatingSamePostProperty(action, previousAction) { 2072 return action.type === 'EDIT_POST' && hasSameKeys(action.edits, previousAction.edits); 2073 } 2074 /** 2075 * Returns true if, given the currently dispatching action and the previously 2076 * dispatched action, the two actions are modifying the same property such that 2077 * undo history should be batched. 2078 * 2079 * @param {Object} action Currently dispatching action. 2080 * @param {Object} previousAction Previously dispatched action. 2081 * 2082 * @return {boolean} Whether to overwrite present state. 2083 */ 2084 2085 function shouldOverwriteState(action, previousAction) { 2086 if (action.type === 'RESET_EDITOR_BLOCKS') { 2087 return !action.shouldCreateUndoLevel; 2088 } 2089 2090 if (!previousAction || action.type !== previousAction.type) { 2091 return false; 2092 } 2093 2094 return isUpdatingSamePostProperty(action, previousAction); 2095 } 2096 function reducer_postId() { 2097 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; 2098 var action = arguments.length > 1 ? arguments[1] : undefined; 2099 2100 switch (action.type) { 2101 case 'SETUP_EDITOR_STATE': 2102 case 'RESET_POST': 2103 case 'UPDATE_POST': 2104 return action.post.id; 2105 } 2106 2107 return state; 2108 } 2109 function reducer_postType() { 2110 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; 2111 var action = arguments.length > 1 ? arguments[1] : undefined; 2112 2113 switch (action.type) { 2114 case 'SETUP_EDITOR_STATE': 2115 case 'RESET_POST': 2116 case 'UPDATE_POST': 2117 return action.post.type; 2118 } 2119 2120 return state; 2121 } 2122 /** 2123 * Reducer returning whether the post blocks match the defined template or not. 2124 * 2125 * @param {Object} state Current state. 2126 * @param {Object} action Dispatched action. 2127 * 2128 * @return {boolean} Updated state. 2129 */ 2130 2131 function reducer_template() { 2132 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { 2133 isValid: true 2134 }; 2135 var action = arguments.length > 1 ? arguments[1] : undefined; 2136 2137 switch (action.type) { 2138 case 'SET_TEMPLATE_VALIDITY': 2139 return reducer_objectSpread(reducer_objectSpread({}, state), {}, { 2140 isValid: action.isValid 2141 }); 2142 } 2143 2144 return state; 2145 } 2146 /** 2147 * Reducer returning the user preferences. 2148 * 2149 * @param {Object} state Current state. 2150 * @param {Object} action Dispatched action. 2151 * 2152 * @return {string} Updated state. 2153 */ 2154 2155 function preferences() { 2156 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : PREFERENCES_DEFAULTS; 2157 var action = arguments.length > 1 ? arguments[1] : undefined; 2158 2159 switch (action.type) { 2160 case 'ENABLE_PUBLISH_SIDEBAR': 2161 return reducer_objectSpread(reducer_objectSpread({}, state), {}, { 2162 isPublishSidebarEnabled: true 2163 }); 2164 2165 case 'DISABLE_PUBLISH_SIDEBAR': 2166 return reducer_objectSpread(reducer_objectSpread({}, state), {}, { 2167 isPublishSidebarEnabled: false 2168 }); 2169 } 2170 2171 return state; 2172 } 2173 /** 2174 * Reducer returning current network request state (whether a request to 2175 * the WP REST API is in progress, successful, or failed). 2176 * 2177 * @param {Object} state Current state. 2178 * @param {Object} action Dispatched action. 2179 * 2180 * @return {Object} Updated state. 2181 */ 2182 2183 function saving() { 2184 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 2185 var action = arguments.length > 1 ? arguments[1] : undefined; 2186 2187 switch (action.type) { 2188 case 'REQUEST_POST_UPDATE_START': 2189 case 'REQUEST_POST_UPDATE_FINISH': 2190 return { 2191 pending: action.type === 'REQUEST_POST_UPDATE_START', 2192 options: action.options || {} 2193 }; 2194 } 2195 2196 return state; 2197 } 2198 /** 2199 * Post Lock State. 2200 * 2201 * @typedef {Object} PostLockState 2202 * 2203 * @property {boolean} isLocked Whether the post is locked. 2204 * @property {?boolean} isTakeover Whether the post editing has been taken over. 2205 * @property {?boolean} activePostLock Active post lock value. 2206 * @property {?Object} user User that took over the post. 2207 */ 2208 2209 /** 2210 * Reducer returning the post lock status. 2211 * 2212 * @param {PostLockState} state Current state. 2213 * @param {Object} action Dispatched action. 2214 * 2215 * @return {PostLockState} Updated state. 2216 */ 2217 2218 function postLock() { 2219 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { 2220 isLocked: false 2221 }; 2222 var action = arguments.length > 1 ? arguments[1] : undefined; 2223 2224 switch (action.type) { 2225 case 'UPDATE_POST_LOCK': 2226 return action.lock; 2227 } 2228 2229 return state; 2230 } 2231 /** 2232 * Post saving lock. 2233 * 2234 * When post saving is locked, the post cannot be published or updated. 2235 * 2236 * @param {PostLockState} state Current state. 2237 * @param {Object} action Dispatched action. 2238 * 2239 * @return {PostLockState} Updated state. 2240 */ 2241 2242 function postSavingLock() { 2243 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 2244 var action = arguments.length > 1 ? arguments[1] : undefined; 2245 2246 switch (action.type) { 2247 case 'LOCK_POST_SAVING': 2248 return reducer_objectSpread(reducer_objectSpread({}, state), {}, Object(defineProperty["a" /* default */])({}, action.lockName, true)); 2249 2250 case 'UNLOCK_POST_SAVING': 2251 return Object(external_this_lodash_["omit"])(state, action.lockName); 2252 } 2253 2254 return state; 2255 } 2256 /** 2257 * Post autosaving lock. 2258 * 2259 * When post autosaving is locked, the post will not autosave. 2260 * 2261 * @param {PostLockState} state Current state. 2262 * @param {Object} action Dispatched action. 2263 * 2264 * @return {PostLockState} Updated state. 2265 */ 2266 2267 function postAutosavingLock() { 2268 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 2269 var action = arguments.length > 1 ? arguments[1] : undefined; 2270 2271 switch (action.type) { 2272 case 'LOCK_POST_AUTOSAVING': 2273 return reducer_objectSpread(reducer_objectSpread({}, state), {}, Object(defineProperty["a" /* default */])({}, action.lockName, true)); 2274 2275 case 'UNLOCK_POST_AUTOSAVING': 2276 return Object(external_this_lodash_["omit"])(state, action.lockName); 2277 } 2278 2279 return state; 2280 } 2281 /** 2282 * Reducer returning whether the editor is ready to be rendered. 2283 * The editor is considered ready to be rendered once 2284 * the post object is loaded properly and the initial blocks parsed. 2285 * 2286 * @param {boolean} state 2287 * @param {Object} action 2288 * 2289 * @return {boolean} Updated state. 2290 */ 2291 2292 function reducer_isReady() { 2293 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; 2294 var action = arguments.length > 1 ? arguments[1] : undefined; 2295 2296 switch (action.type) { 2297 case 'SETUP_EDITOR_STATE': 2298 return true; 2299 2300 case 'TEAR_DOWN_EDITOR': 2301 return false; 2302 } 2303 2304 return state; 2305 } 2306 /** 2307 * Reducer returning the post editor setting. 2308 * 2309 * @param {Object} state Current state. 2310 * @param {Object} action Dispatched action. 2311 * 2312 * @return {Object} Updated state. 2313 */ 2314 2315 function reducer_editorSettings() { 2316 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EDITOR_SETTINGS_DEFAULTS; 2317 var action = arguments.length > 1 ? arguments[1] : undefined; 2318 2319 switch (action.type) { 2320 case 'UPDATE_EDITOR_SETTINGS': 2321 return reducer_objectSpread(reducer_objectSpread({}, state), action.settings); 2322 } 2323 2324 return state; 2325 } 2326 /* harmony default export */ var reducer = (redux_optimist_default()(Object(external_this_wp_data_["combineReducers"])({ 2327 postId: reducer_postId, 2328 postType: reducer_postType, 2329 preferences: preferences, 2330 saving: saving, 2331 postLock: postLock, 2332 template: reducer_template, 2333 postSavingLock: postSavingLock, 2334 isReady: reducer_isReady, 2335 editorSettings: reducer_editorSettings, 2336 postAutosavingLock: postAutosavingLock 2337 }))); 2338 2339 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules 2340 var slicedToArray = __webpack_require__(12); 2341 2342 // EXTERNAL MODULE: external {"this":["wp","date"]} 2343 var external_this_wp_date_ = __webpack_require__(75); 2344 2345 // EXTERNAL MODULE: external {"this":["wp","url"]} 2346 var external_this_wp_url_ = __webpack_require__(30); 2347 2348 // EXTERNAL MODULE: external {"this":["wp","deprecated"]} 2349 var external_this_wp_deprecated_ = __webpack_require__(36); 2350 var external_this_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_deprecated_); 2351 2352 // EXTERNAL MODULE: external {"this":["wp","element"]} 2353 var external_this_wp_element_ = __webpack_require__(0); 2354 2355 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/constants.js 2356 /** 2357 * Set of post properties for which edits should assume a merging behavior, 2358 * assuming an object value. 2359 * 2360 * @type {Set} 2361 */ 2362 var EDIT_MERGE_PROPERTIES = new Set(['meta']); 2363 /** 2364 * Constant for the store module (or reducer) key. 2365 * 2366 * @type {string} 2367 */ 2368 2369 var STORE_KEY = 'core/editor'; 2370 var POST_UPDATE_TRANSACTION_ID = 'post-update'; 2371 var SAVE_POST_NOTICE_ID = 'SAVE_POST_NOTICE_ID'; 2372 var TRASH_POST_NOTICE_ID = 'TRASH_POST_NOTICE_ID'; 2373 var PERMALINK_POSTNAME_REGEX = /%(?:postname|pagename)%/; 2374 var ONE_MINUTE_IN_MS = 60 * 1000; 2375 var AUTOSAVE_PROPERTIES = ['title', 'excerpt', 'content']; 2376 2377 // EXTERNAL MODULE: ./node_modules/memize/index.js 2378 var memize = __webpack_require__(60); 2379 var memize_default = /*#__PURE__*/__webpack_require__.n(memize); 2380 2381 // EXTERNAL MODULE: external {"this":["wp","autop"]} 2382 var external_this_wp_autop_ = __webpack_require__(106); 2383 2384 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/utils/serialize-blocks.js 2385 /** 2386 * External dependencies 2387 */ 2388 2389 /** 2390 * WordPress dependencies 2391 */ 2392 2393 2394 2395 /** 2396 * Serializes blocks following backwards compatibility conventions. 2397 * 2398 * @param {Array} blocksForSerialization The blocks to serialize. 2399 * 2400 * @return {string} The blocks serialization. 2401 */ 2402 2403 var serializeBlocks = memize_default()(function (blocksForSerialization) { 2404 // A single unmodified default block is assumed to 2405 // be equivalent to an empty post. 2406 if (blocksForSerialization.length === 1 && Object(external_this_wp_blocks_["isUnmodifiedDefaultBlock"])(blocksForSerialization[0])) { 2407 blocksForSerialization = []; 2408 } 2409 2410 var content = Object(external_this_wp_blocks_["serialize"])(blocksForSerialization); // For compatibility, treat a post consisting of a 2411 // single freeform block as legacy content and apply 2412 // pre-block-editor removep'd content formatting. 2413 2414 if (blocksForSerialization.length === 1 && blocksForSerialization[0].name === Object(external_this_wp_blocks_["getFreeformContentHandlerName"])()) { 2415 content = Object(external_this_wp_autop_["removep"])(content); 2416 } 2417 2418 return content; 2419 }, { 2420 maxSize: 1 2421 }); 2422 /* harmony default export */ var serialize_blocks = (serializeBlocks); 2423 2424 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/url.js 2425 /** 2426 * External dependencies 2427 */ 2428 2429 /** 2430 * WordPress dependencies 2431 */ 2432 2433 2434 /** 2435 * Returns the URL of a WPAdmin Page. 2436 * 2437 * TODO: This should be moved to a module less specific to the editor. 2438 * 2439 * @param {string} page Page to navigate to. 2440 * @param {Object} query Query Args. 2441 * 2442 * @return {string} WPAdmin URL. 2443 */ 2444 2445 function getWPAdminURL(page, query) { 2446 return Object(external_this_wp_url_["addQueryArgs"])(page, query); 2447 } 2448 /** 2449 * Performs some basic cleanup of a string for use as a post slug 2450 * 2451 * This replicates some of what sanitize_title() does in WordPress core, but 2452 * is only designed to approximate what the slug will be. 2453 * 2454 * Converts Latin-1 Supplement and Latin Extended-A letters to basic Latin 2455 * letters. Removes combining diacritical marks. Converts whitespace, periods, 2456 * and forward slashes to hyphens. Removes any remaining non-word characters 2457 * except hyphens. Converts remaining string to lowercase. It does not account 2458 * for octets, HTML entities, or other encoded characters. 2459 * 2460 * @param {string} string Title or slug to be processed 2461 * 2462 * @return {string} Processed string 2463 */ 2464 2465 function cleanForSlug(string) { 2466 if (!string) { 2467 return ''; 2468 } 2469 2470 return Object(external_this_lodash_["trim"])(Object(external_this_lodash_["deburr"])(string).replace(/[\s\./]+/g, '-').replace(/[^\w-]+/g, '').toLowerCase(), '-'); 2471 } 2472 2473 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/selectors.js 2474 2475 2476 2477 function selectors_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 2478 2479 function selectors_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { selectors_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { selectors_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 2480 2481 /** 2482 * External dependencies 2483 */ 2484 2485 /** 2486 * WordPress dependencies 2487 */ 2488 2489 2490 2491 2492 2493 2494 2495 /** 2496 * Internal dependencies 2497 */ 2498 2499 2500 2501 2502 2503 2504 /** 2505 * Shared reference to an empty object for cases where it is important to avoid 2506 * returning a new object reference on every invocation, as in a connected or 2507 * other pure component which performs `shouldComponentUpdate` check on props. 2508 * This should be used as a last resort, since the normalized data should be 2509 * maintained by the reducer result in state. 2510 */ 2511 2512 var EMPTY_OBJECT = {}; 2513 /** 2514 * Shared reference to an empty array for cases where it is important to avoid 2515 * returning a new array reference on every invocation, as in a connected or 2516 * other pure component which performs `shouldComponentUpdate` check on props. 2517 * This should be used as a last resort, since the normalized data should be 2518 * maintained by the reducer result in state. 2519 */ 2520 2521 var EMPTY_ARRAY = []; 2522 /** 2523 * Returns true if any past editor history snapshots exist, or false otherwise. 2524 * 2525 * @param {Object} state Global application state. 2526 * 2527 * @return {boolean} Whether undo history exists. 2528 */ 2529 2530 var hasEditorUndo = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 2531 return function () { 2532 return select('core').hasUndo(); 2533 }; 2534 }); 2535 /** 2536 * Returns true if any future editor history snapshots exist, or false 2537 * otherwise. 2538 * 2539 * @param {Object} state Global application state. 2540 * 2541 * @return {boolean} Whether redo history exists. 2542 */ 2543 2544 var hasEditorRedo = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 2545 return function () { 2546 return select('core').hasRedo(); 2547 }; 2548 }); 2549 /** 2550 * Returns true if the currently edited post is yet to be saved, or false if 2551 * the post has been saved. 2552 * 2553 * @param {Object} state Global application state. 2554 * 2555 * @return {boolean} Whether the post is new. 2556 */ 2557 2558 function selectors_isEditedPostNew(state) { 2559 return selectors_getCurrentPost(state).status === 'auto-draft'; 2560 } 2561 /** 2562 * Returns true if content includes unsaved changes, or false otherwise. 2563 * 2564 * @param {Object} state Editor state. 2565 * 2566 * @return {boolean} Whether content includes unsaved changes. 2567 */ 2568 2569 function hasChangedContent(state) { 2570 var edits = selectors_getPostEdits(state); 2571 return 'blocks' in edits || // `edits` is intended to contain only values which are different from 2572 // the saved post, so the mere presence of a property is an indicator 2573 // that the value is different than what is known to be saved. While 2574 // content in Visual mode is represented by the blocks state, in Text 2575 // mode it is tracked by `edits.content`. 2576 'content' in edits; 2577 } 2578 /** 2579 * Returns true if there are unsaved values for the current edit session, or 2580 * false if the editing state matches the saved or new post. 2581 * 2582 * @param {Object} state Global application state. 2583 * 2584 * @return {boolean} Whether unsaved values exist. 2585 */ 2586 2587 var selectors_isEditedPostDirty = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 2588 return function (state) { 2589 // Edits should contain only fields which differ from the saved post (reset 2590 // at initial load and save complete). Thus, a non-empty edits state can be 2591 // inferred to contain unsaved values. 2592 var postType = selectors_getCurrentPostType(state); 2593 var postId = selectors_getCurrentPostId(state); 2594 2595 if (select('core').hasEditsForEntityRecord('postType', postType, postId)) { 2596 return true; 2597 } 2598 2599 return false; 2600 }; 2601 }); 2602 /** 2603 * Returns true if there are unsaved edits for entities other than 2604 * the editor's post, and false otherwise. 2605 * 2606 * @param {Object} state Global application state. 2607 * 2608 * @return {boolean} Whether there are edits or not. 2609 */ 2610 2611 var selectors_hasNonPostEntityChanges = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 2612 return function (state) { 2613 var enableFullSiteEditing = selectors_getEditorSettings(state).__experimentalEnableFullSiteEditing; 2614 2615 if (!enableFullSiteEditing) { 2616 return false; 2617 } 2618 2619 var dirtyEntityRecords = select('core').__experimentalGetDirtyEntityRecords(); 2620 2621 var _getCurrentPost = selectors_getCurrentPost(state), 2622 type = _getCurrentPost.type, 2623 id = _getCurrentPost.id; 2624 2625 return Object(external_this_lodash_["some"])(dirtyEntityRecords, function (entityRecord) { 2626 return entityRecord.kind !== 'postType' || entityRecord.name !== type || entityRecord.key !== id; 2627 }); 2628 }; 2629 }); 2630 /** 2631 * Returns true if there are no unsaved values for the current edit session and 2632 * if the currently edited post is new (has never been saved before). 2633 * 2634 * @param {Object} state Global application state. 2635 * 2636 * @return {boolean} Whether new post and unsaved values exist. 2637 */ 2638 2639 function selectors_isCleanNewPost(state) { 2640 return !selectors_isEditedPostDirty(state) && selectors_isEditedPostNew(state); 2641 } 2642 /** 2643 * Returns the post currently being edited in its last known saved state, not 2644 * including unsaved edits. Returns an object containing relevant default post 2645 * values if the post has not yet been saved. 2646 * 2647 * @param {Object} state Global application state. 2648 * 2649 * @return {Object} Post object. 2650 */ 2651 2652 var selectors_getCurrentPost = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 2653 return function (state) { 2654 var postId = selectors_getCurrentPostId(state); 2655 var postType = selectors_getCurrentPostType(state); 2656 var post = select('core').getRawEntityRecord('postType', postType, postId); 2657 2658 if (post) { 2659 return post; 2660 } // This exists for compatibility with the previous selector behavior 2661 // which would guarantee an object return based on the editor reducer's 2662 // default empty object state. 2663 2664 2665 return EMPTY_OBJECT; 2666 }; 2667 }); 2668 /** 2669 * Returns the post type of the post currently being edited. 2670 * 2671 * @param {Object} state Global application state. 2672 * 2673 * @return {string} Post type. 2674 */ 2675 2676 function selectors_getCurrentPostType(state) { 2677 return state.postType; 2678 } 2679 /** 2680 * Returns the ID of the post currently being edited, or null if the post has 2681 * not yet been saved. 2682 * 2683 * @param {Object} state Global application state. 2684 * 2685 * @return {?number} ID of current post. 2686 */ 2687 2688 function selectors_getCurrentPostId(state) { 2689 return state.postId; 2690 } 2691 /** 2692 * Returns the number of revisions of the post currently being edited. 2693 * 2694 * @param {Object} state Global application state. 2695 * 2696 * @return {number} Number of revisions. 2697 */ 2698 2699 function getCurrentPostRevisionsCount(state) { 2700 return Object(external_this_lodash_["get"])(selectors_getCurrentPost(state), ['_links', 'version-history', 0, 'count'], 0); 2701 } 2702 /** 2703 * Returns the last revision ID of the post currently being edited, 2704 * or null if the post has no revisions. 2705 * 2706 * @param {Object} state Global application state. 2707 * 2708 * @return {?number} ID of the last revision. 2709 */ 2710 2711 function getCurrentPostLastRevisionId(state) { 2712 return Object(external_this_lodash_["get"])(selectors_getCurrentPost(state), ['_links', 'predecessor-version', 0, 'id'], null); 2713 } 2714 /** 2715 * Returns any post values which have been changed in the editor but not yet 2716 * been saved. 2717 * 2718 * @param {Object} state Global application state. 2719 * 2720 * @return {Object} Object of key value pairs comprising unsaved edits. 2721 */ 2722 2723 var selectors_getPostEdits = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 2724 return function (state) { 2725 var postType = selectors_getCurrentPostType(state); 2726 var postId = selectors_getCurrentPostId(state); 2727 return select('core').getEntityRecordEdits('postType', postType, postId) || EMPTY_OBJECT; 2728 }; 2729 }); 2730 /** 2731 * Returns a new reference when edited values have changed. This is useful in 2732 * inferring where an edit has been made between states by comparison of the 2733 * return values using strict equality. 2734 * 2735 * @deprecated since Gutenberg 6.5.0. 2736 * 2737 * @example 2738 * 2739 * ``` 2740 * const hasEditOccurred = ( 2741 * getReferenceByDistinctEdits( beforeState ) !== 2742 * getReferenceByDistinctEdits( afterState ) 2743 * ); 2744 * ``` 2745 * 2746 * @param {Object} state Editor state. 2747 * 2748 * @return {*} A value whose reference will change only when an edit occurs. 2749 */ 2750 2751 var getReferenceByDistinctEdits = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 2752 return function () 2753 /* state */ 2754 { 2755 external_this_wp_deprecated_default()("`wp.data.select( 'core/editor' ).getReferenceByDistinctEdits`", { 2756 alternative: "`wp.data.select( 'core' ).getReferenceByDistinctEdits`" 2757 }); 2758 return select('core').getReferenceByDistinctEdits(); 2759 }; 2760 }); 2761 /** 2762 * Returns an attribute value of the saved post. 2763 * 2764 * @param {Object} state Global application state. 2765 * @param {string} attributeName Post attribute name. 2766 * 2767 * @return {*} Post attribute value. 2768 */ 2769 2770 function selectors_getCurrentPostAttribute(state, attributeName) { 2771 switch (attributeName) { 2772 case 'type': 2773 return selectors_getCurrentPostType(state); 2774 2775 case 'id': 2776 return selectors_getCurrentPostId(state); 2777 2778 default: 2779 var post = selectors_getCurrentPost(state); 2780 2781 if (!post.hasOwnProperty(attributeName)) { 2782 break; 2783 } 2784 2785 return getPostRawValue(post[attributeName]); 2786 } 2787 } 2788 /** 2789 * Returns a single attribute of the post being edited, preferring the unsaved 2790 * edit if one exists, but merging with the attribute value for the last known 2791 * saved state of the post (this is needed for some nested attributes like meta). 2792 * 2793 * @param {Object} state Global application state. 2794 * @param {string} attributeName Post attribute name. 2795 * 2796 * @return {*} Post attribute value. 2797 */ 2798 2799 var getNestedEditedPostProperty = function getNestedEditedPostProperty(state, attributeName) { 2800 var edits = selectors_getPostEdits(state); 2801 2802 if (!edits.hasOwnProperty(attributeName)) { 2803 return selectors_getCurrentPostAttribute(state, attributeName); 2804 } 2805 2806 return selectors_objectSpread(selectors_objectSpread({}, selectors_getCurrentPostAttribute(state, attributeName)), edits[attributeName]); 2807 }; 2808 /** 2809 * Returns a single attribute of the post being edited, preferring the unsaved 2810 * edit if one exists, but falling back to the attribute for the last known 2811 * saved state of the post. 2812 * 2813 * @param {Object} state Global application state. 2814 * @param {string} attributeName Post attribute name. 2815 * 2816 * @return {*} Post attribute value. 2817 */ 2818 2819 2820 function selectors_getEditedPostAttribute(state, attributeName) { 2821 // Special cases 2822 switch (attributeName) { 2823 case 'content': 2824 return getEditedPostContent(state); 2825 } // Fall back to saved post value if not edited. 2826 2827 2828 var edits = selectors_getPostEdits(state); 2829 2830 if (!edits.hasOwnProperty(attributeName)) { 2831 return selectors_getCurrentPostAttribute(state, attributeName); 2832 } // Merge properties are objects which contain only the patch edit in state, 2833 // and thus must be merged with the current post attribute. 2834 2835 2836 if (EDIT_MERGE_PROPERTIES.has(attributeName)) { 2837 return getNestedEditedPostProperty(state, attributeName); 2838 } 2839 2840 return edits[attributeName]; 2841 } 2842 /** 2843 * Returns an attribute value of the current autosave revision for a post, or 2844 * null if there is no autosave for the post. 2845 * 2846 * @deprecated since 5.6. Callers should use the `getAutosave( postType, postId, userId )` selector 2847 * from the '@wordpress/core-data' package and access properties on the returned 2848 * autosave object using getPostRawValue. 2849 * 2850 * @param {Object} state Global application state. 2851 * @param {string} attributeName Autosave attribute name. 2852 * 2853 * @return {*} Autosave attribute value. 2854 */ 2855 2856 var getAutosaveAttribute = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 2857 return function (state, attributeName) { 2858 if (!Object(external_this_lodash_["includes"])(AUTOSAVE_PROPERTIES, attributeName) && attributeName !== 'preview_link') { 2859 return; 2860 } 2861 2862 var postType = selectors_getCurrentPostType(state); 2863 var postId = selectors_getCurrentPostId(state); 2864 var currentUserId = Object(external_this_lodash_["get"])(select('core').getCurrentUser(), ['id']); 2865 var autosave = select('core').getAutosave(postType, postId, currentUserId); 2866 2867 if (autosave) { 2868 return getPostRawValue(autosave[attributeName]); 2869 } 2870 }; 2871 }); 2872 /** 2873 * Returns the current visibility of the post being edited, preferring the 2874 * unsaved value if different than the saved post. The return value is one of 2875 * "private", "password", or "public". 2876 * 2877 * @param {Object} state Global application state. 2878 * 2879 * @return {string} Post visibility. 2880 */ 2881 2882 function selectors_getEditedPostVisibility(state) { 2883 var status = selectors_getEditedPostAttribute(state, 'status'); 2884 2885 if (status === 'private') { 2886 return 'private'; 2887 } 2888 2889 var password = selectors_getEditedPostAttribute(state, 'password'); 2890 2891 if (password) { 2892 return 'password'; 2893 } 2894 2895 return 'public'; 2896 } 2897 /** 2898 * Returns true if post is pending review. 2899 * 2900 * @param {Object} state Global application state. 2901 * 2902 * @return {boolean} Whether current post is pending review. 2903 */ 2904 2905 function isCurrentPostPending(state) { 2906 return selectors_getCurrentPost(state).status === 'pending'; 2907 } 2908 /** 2909 * Return true if the current post has already been published. 2910 * 2911 * @param {Object} state Global application state. 2912 * @param {Object?} currentPost Explicit current post for bypassing registry selector. 2913 * 2914 * @return {boolean} Whether the post has been published. 2915 */ 2916 2917 function selectors_isCurrentPostPublished(state, currentPost) { 2918 var post = currentPost || selectors_getCurrentPost(state); 2919 return ['publish', 'private'].indexOf(post.status) !== -1 || post.status === 'future' && !Object(external_this_wp_date_["isInTheFuture"])(new Date(Number(Object(external_this_wp_date_["getDate"])(post.date)) - ONE_MINUTE_IN_MS)); 2920 } 2921 /** 2922 * Returns true if post is already scheduled. 2923 * 2924 * @param {Object} state Global application state. 2925 * 2926 * @return {boolean} Whether current post is scheduled to be posted. 2927 */ 2928 2929 function selectors_isCurrentPostScheduled(state) { 2930 return selectors_getCurrentPost(state).status === 'future' && !selectors_isCurrentPostPublished(state); 2931 } 2932 /** 2933 * Return true if the post being edited can be published. 2934 * 2935 * @param {Object} state Global application state. 2936 * 2937 * @return {boolean} Whether the post can been published. 2938 */ 2939 2940 function selectors_isEditedPostPublishable(state) { 2941 var post = selectors_getCurrentPost(state); // TODO: Post being publishable should be superset of condition of post 2942 // being saveable. Currently this restriction is imposed at UI. 2943 // 2944 // See: <PostPublishButton /> (`isButtonEnabled` assigned by `isSaveable`) 2945 2946 return selectors_isEditedPostDirty(state) || ['publish', 'private', 'future'].indexOf(post.status) === -1; 2947 } 2948 /** 2949 * Returns true if the post can be saved, or false otherwise. A post must 2950 * contain a title, an excerpt, or non-empty content to be valid for save. 2951 * 2952 * @param {Object} state Global application state. 2953 * 2954 * @return {boolean} Whether the post can be saved. 2955 */ 2956 2957 function selectors_isEditedPostSaveable(state) { 2958 if (selectors_isSavingPost(state)) { 2959 return false; 2960 } // TODO: Post should not be saveable if not dirty. Cannot be added here at 2961 // this time since posts where meta boxes are present can be saved even if 2962 // the post is not dirty. Currently this restriction is imposed at UI, but 2963 // should be moved here. 2964 // 2965 // See: `isEditedPostPublishable` (includes `isEditedPostDirty` condition) 2966 // See: <PostSavedState /> (`forceIsDirty` prop) 2967 // See: <PostPublishButton /> (`forceIsDirty` prop) 2968 // See: https://github.com/WordPress/gutenberg/pull/4184 2969 2970 2971 return !!selectors_getEditedPostAttribute(state, 'title') || !!selectors_getEditedPostAttribute(state, 'excerpt') || !isEditedPostEmpty(state) || external_this_wp_element_["Platform"].OS === 'native'; 2972 } 2973 /** 2974 * Returns true if the edited post has content. A post has content if it has at 2975 * least one saveable block or otherwise has a non-empty content property 2976 * assigned. 2977 * 2978 * @param {Object} state Global application state. 2979 * 2980 * @return {boolean} Whether post has content. 2981 */ 2982 2983 function isEditedPostEmpty(state) { 2984 // While the condition of truthy content string is sufficient to determine 2985 // emptiness, testing saveable blocks length is a trivial operation. Since 2986 // this function can be called frequently, optimize for the fast case as a 2987 // condition of the mere existence of blocks. Note that the value of edited 2988 // content takes precedent over block content, and must fall through to the 2989 // default logic. 2990 var blocks = selectors_getEditorBlocks(state); 2991 2992 if (blocks.length) { 2993 // Pierce the abstraction of the serializer in knowing that blocks are 2994 // joined with with newlines such that even if every individual block 2995 // produces an empty save result, the serialized content is non-empty. 2996 if (blocks.length > 1) { 2997 return false; 2998 } // There are two conditions under which the optimization cannot be 2999 // assumed, and a fallthrough to getEditedPostContent must occur: 3000 // 3001 // 1. getBlocksForSerialization has special treatment in omitting a 3002 // single unmodified default block. 3003 // 2. Comment delimiters are omitted for a freeform or unregistered 3004 // block in its serialization. The freeform block specifically may 3005 // produce an empty string in its saved output. 3006 // 3007 // For all other content, the single block is assumed to make a post 3008 // non-empty, if only by virtue of its own comment delimiters. 3009 3010 3011 var blockName = blocks[0].name; 3012 3013 if (blockName !== Object(external_this_wp_blocks_["getDefaultBlockName"])() && blockName !== Object(external_this_wp_blocks_["getFreeformContentHandlerName"])()) { 3014 return false; 3015 } 3016 } 3017 3018 return !getEditedPostContent(state); 3019 } 3020 /** 3021 * Returns true if the post can be autosaved, or false otherwise. 3022 * 3023 * @param {Object} state Global application state. 3024 * @param {Object} autosave A raw autosave object from the REST API. 3025 * 3026 * @return {boolean} Whether the post can be autosaved. 3027 */ 3028 3029 var selectors_isEditedPostAutosaveable = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 3030 return function (state) { 3031 // A post must contain a title, an excerpt, or non-empty content to be valid for autosaving. 3032 if (!selectors_isEditedPostSaveable(state)) { 3033 return false; 3034 } // A post is not autosavable when there is a post autosave lock. 3035 3036 3037 if (isPostAutosavingLocked(state)) { 3038 return false; 3039 } 3040 3041 var postType = selectors_getCurrentPostType(state); 3042 var postId = selectors_getCurrentPostId(state); 3043 var hasFetchedAutosave = select('core').hasFetchedAutosaves(postType, postId); 3044 var currentUserId = Object(external_this_lodash_["get"])(select('core').getCurrentUser(), ['id']); // Disable reason - this line causes the side-effect of fetching the autosave 3045 // via a resolver, moving below the return would result in the autosave never 3046 // being fetched. 3047 // eslint-disable-next-line @wordpress/no-unused-vars-before-return 3048 3049 var autosave = select('core').getAutosave(postType, postId, currentUserId); // If any existing autosaves have not yet been fetched, this function is 3050 // unable to determine if the post is autosaveable, so return false. 3051 3052 if (!hasFetchedAutosave) { 3053 return false; 3054 } // If we don't already have an autosave, the post is autosaveable. 3055 3056 3057 if (!autosave) { 3058 return true; 3059 } // To avoid an expensive content serialization, use the content dirtiness 3060 // flag in place of content field comparison against the known autosave. 3061 // This is not strictly accurate, and relies on a tolerance toward autosave 3062 // request failures for unnecessary saves. 3063 3064 3065 if (hasChangedContent(state)) { 3066 return true; 3067 } // If the title or excerpt has changed, the post is autosaveable. 3068 3069 3070 return ['title', 'excerpt'].some(function (field) { 3071 return getPostRawValue(autosave[field]) !== selectors_getEditedPostAttribute(state, field); 3072 }); 3073 }; 3074 }); 3075 /** 3076 * Returns the current autosave, or null if one is not set (i.e. if the post 3077 * has yet to be autosaved, or has been saved or published since the last 3078 * autosave). 3079 * 3080 * @deprecated since 5.6. Callers should use the `getAutosave( postType, postId, userId )` 3081 * selector from the '@wordpress/core-data' package. 3082 * 3083 * @param {Object} state Editor state. 3084 * 3085 * @return {?Object} Current autosave, if exists. 3086 */ 3087 3088 var getAutosave = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 3089 return function (state) { 3090 external_this_wp_deprecated_default()("`wp.data.select( 'core/editor' ).getAutosave()`", { 3091 alternative: "`wp.data.select( 'core' ).getAutosave( postType, postId, userId )`", 3092 plugin: 'Gutenberg' 3093 }); 3094 var postType = selectors_getCurrentPostType(state); 3095 var postId = selectors_getCurrentPostId(state); 3096 var currentUserId = Object(external_this_lodash_["get"])(select('core').getCurrentUser(), ['id']); 3097 var autosave = select('core').getAutosave(postType, postId, currentUserId); 3098 return Object(external_this_lodash_["mapValues"])(Object(external_this_lodash_["pick"])(autosave, AUTOSAVE_PROPERTIES), getPostRawValue); 3099 }; 3100 }); 3101 /** 3102 * Returns the true if there is an existing autosave, otherwise false. 3103 * 3104 * @deprecated since 5.6. Callers should use the `getAutosave( postType, postId, userId )` selector 3105 * from the '@wordpress/core-data' package and check for a truthy value. 3106 * 3107 * @param {Object} state Global application state. 3108 * 3109 * @return {boolean} Whether there is an existing autosave. 3110 */ 3111 3112 var hasAutosave = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 3113 return function (state) { 3114 external_this_wp_deprecated_default()("`wp.data.select( 'core/editor' ).hasAutosave()`", { 3115 alternative: "`!! wp.data.select( 'core' ).getAutosave( postType, postId, userId )`", 3116 plugin: 'Gutenberg' 3117 }); 3118 var postType = selectors_getCurrentPostType(state); 3119 var postId = selectors_getCurrentPostId(state); 3120 var currentUserId = Object(external_this_lodash_["get"])(select('core').getCurrentUser(), ['id']); 3121 return !!select('core').getAutosave(postType, postId, currentUserId); 3122 }; 3123 }); 3124 /** 3125 * Return true if the post being edited is being scheduled. Preferring the 3126 * unsaved status values. 3127 * 3128 * @param {Object} state Global application state. 3129 * 3130 * @return {boolean} Whether the post has been published. 3131 */ 3132 3133 function selectors_isEditedPostBeingScheduled(state) { 3134 var date = selectors_getEditedPostAttribute(state, 'date'); // Offset the date by one minute (network latency) 3135 3136 var checkedDate = new Date(Number(Object(external_this_wp_date_["getDate"])(date)) - ONE_MINUTE_IN_MS); 3137 return Object(external_this_wp_date_["isInTheFuture"])(checkedDate); 3138 } 3139 /** 3140 * Returns whether the current post should be considered to have a "floating" 3141 * date (i.e. that it would publish "Immediately" rather than at a set time). 3142 * 3143 * Unlike in the PHP backend, the REST API returns a full date string for posts 3144 * where the 0000-00-00T00:00:00 placeholder is present in the database. To 3145 * infer that a post is set to publish "Immediately" we check whether the date 3146 * and modified date are the same. 3147 * 3148 * @param {Object} state Editor state. 3149 * 3150 * @return {boolean} Whether the edited post has a floating date value. 3151 */ 3152 3153 function isEditedPostDateFloating(state) { 3154 var date = selectors_getEditedPostAttribute(state, 'date'); 3155 var modified = selectors_getEditedPostAttribute(state, 'modified'); 3156 var status = selectors_getEditedPostAttribute(state, 'status'); 3157 3158 if (status === 'draft' || status === 'auto-draft' || status === 'pending') { 3159 return date === modified || date === null; 3160 } 3161 3162 return false; 3163 } 3164 /** 3165 * Returns true if the post is currently being saved, or false otherwise. 3166 * 3167 * @param {Object} state Global application state. 3168 * 3169 * @return {boolean} Whether post is being saved. 3170 */ 3171 3172 var selectors_isSavingPost = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 3173 return function (state) { 3174 var postType = selectors_getCurrentPostType(state); 3175 var postId = selectors_getCurrentPostId(state); 3176 return select('core').isSavingEntityRecord('postType', postType, postId); 3177 }; 3178 }); 3179 /** 3180 * Returns true if a previous post save was attempted successfully, or false 3181 * otherwise. 3182 * 3183 * @param {Object} state Global application state. 3184 * 3185 * @return {boolean} Whether the post was saved successfully. 3186 */ 3187 3188 var didPostSaveRequestSucceed = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 3189 return function (state) { 3190 var postType = selectors_getCurrentPostType(state); 3191 var postId = selectors_getCurrentPostId(state); 3192 return !select('core').getLastEntitySaveError('postType', postType, postId); 3193 }; 3194 }); 3195 /** 3196 * Returns true if a previous post save was attempted but failed, or false 3197 * otherwise. 3198 * 3199 * @param {Object} state Global application state. 3200 * 3201 * @return {boolean} Whether the post save failed. 3202 */ 3203 3204 var didPostSaveRequestFail = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 3205 return function (state) { 3206 var postType = selectors_getCurrentPostType(state); 3207 var postId = selectors_getCurrentPostId(state); 3208 return !!select('core').getLastEntitySaveError('postType', postType, postId); 3209 }; 3210 }); 3211 /** 3212 * Returns true if the post is autosaving, or false otherwise. 3213 * 3214 * @param {Object} state Global application state. 3215 * 3216 * @return {boolean} Whether the post is autosaving. 3217 */ 3218 3219 function selectors_isAutosavingPost(state) { 3220 if (!selectors_isSavingPost(state)) { 3221 return false; 3222 } 3223 3224 return !!Object(external_this_lodash_["get"])(state.saving, ['options', 'isAutosave']); 3225 } 3226 /** 3227 * Returns true if the post is being previewed, or false otherwise. 3228 * 3229 * @param {Object} state Global application state. 3230 * 3231 * @return {boolean} Whether the post is being previewed. 3232 */ 3233 3234 function isPreviewingPost(state) { 3235 if (!selectors_isSavingPost(state)) { 3236 return false; 3237 } 3238 3239 return !!state.saving.options.isPreview; 3240 } 3241 /** 3242 * Returns the post preview link 3243 * 3244 * @param {Object} state Global application state. 3245 * 3246 * @return {string?} Preview Link. 3247 */ 3248 3249 function selectors_getEditedPostPreviewLink(state) { 3250 if (state.saving.pending || selectors_isSavingPost(state)) { 3251 return; 3252 } 3253 3254 var previewLink = getAutosaveAttribute(state, 'preview_link'); 3255 3256 if (!previewLink) { 3257 previewLink = selectors_getEditedPostAttribute(state, 'link'); 3258 3259 if (previewLink) { 3260 previewLink = Object(external_this_wp_url_["addQueryArgs"])(previewLink, { 3261 preview: true 3262 }); 3263 } 3264 } 3265 3266 var featuredImageId = selectors_getEditedPostAttribute(state, 'featured_media'); 3267 3268 if (previewLink && featuredImageId) { 3269 return Object(external_this_wp_url_["addQueryArgs"])(previewLink, { 3270 _thumbnail_id: featuredImageId 3271 }); 3272 } 3273 3274 return previewLink; 3275 } 3276 /** 3277 * Returns a suggested post format for the current post, inferred only if there 3278 * is a single block within the post and it is of a type known to match a 3279 * default post format. Returns null if the format cannot be determined. 3280 * 3281 * @param {Object} state Global application state. 3282 * 3283 * @return {?string} Suggested post format. 3284 */ 3285 3286 function selectors_getSuggestedPostFormat(state) { 3287 var blocks = selectors_getEditorBlocks(state); 3288 if (blocks.length > 2) return null; 3289 var name; // If there is only one block in the content of the post grab its name 3290 // so we can derive a suitable post format from it. 3291 3292 if (blocks.length === 1) { 3293 name = blocks[0].name; // check for core/embed `video` and `audio` eligible suggestions 3294 3295 if (name === 'core/embed') { 3296 var _blocks$0$attributes; 3297 3298 var provider = (_blocks$0$attributes = blocks[0].attributes) === null || _blocks$0$attributes === void 0 ? void 0 : _blocks$0$attributes.providerNameSlug; 3299 3300 if (['youtube', 'vimeo'].includes(provider)) { 3301 name = 'core/video'; 3302 } else if (['spotify', 'soundcloud'].includes(provider)) { 3303 name = 'core/audio'; 3304 } 3305 } 3306 } // If there are two blocks in the content and the last one is a text blocks 3307 // grab the name of the first one to also suggest a post format from it. 3308 3309 3310 if (blocks.length === 2 && blocks[1].name === 'core/paragraph') { 3311 name = blocks[0].name; 3312 } // We only convert to default post formats in core. 3313 3314 3315 switch (name) { 3316 case 'core/image': 3317 return 'image'; 3318 3319 case 'core/quote': 3320 case 'core/pullquote': 3321 return 'quote'; 3322 3323 case 'core/gallery': 3324 return 'gallery'; 3325 3326 case 'core/video': 3327 return 'video'; 3328 3329 case 'core/audio': 3330 return 'audio'; 3331 3332 default: 3333 return null; 3334 } 3335 } 3336 /** 3337 * Returns a set of blocks which are to be used in consideration of the post's 3338 * generated save content. 3339 * 3340 * @deprecated since Gutenberg 6.2.0. 3341 * 3342 * @param {Object} state Editor state. 3343 * 3344 * @return {WPBlock[]} Filtered set of blocks for save. 3345 */ 3346 3347 function getBlocksForSerialization(state) { 3348 external_this_wp_deprecated_default()('`core/editor` getBlocksForSerialization selector', { 3349 plugin: 'Gutenberg', 3350 alternative: 'getEditorBlocks', 3351 hint: 'Blocks serialization pre-processing occurs at save time' 3352 }); 3353 var blocks = state.editor.present.blocks.value; // WARNING: Any changes to the logic of this function should be verified 3354 // against the implementation of isEditedPostEmpty, which bypasses this 3355 // function for performance' sake, in an assumption of this current logic 3356 // being irrelevant to the optimized condition of emptiness. 3357 // A single unmodified default block is assumed to be equivalent to an 3358 // empty post. 3359 3360 var isSingleUnmodifiedDefaultBlock = blocks.length === 1 && Object(external_this_wp_blocks_["isUnmodifiedDefaultBlock"])(blocks[0]); 3361 3362 if (isSingleUnmodifiedDefaultBlock) { 3363 return []; 3364 } 3365 3366 return blocks; 3367 } 3368 /** 3369 * Returns the content of the post being edited. 3370 * 3371 * @param {Object} state Global application state. 3372 * 3373 * @return {string} Post content. 3374 */ 3375 3376 var getEditedPostContent = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 3377 return function (state) { 3378 var postId = selectors_getCurrentPostId(state); 3379 var postType = selectors_getCurrentPostType(state); 3380 var record = select('core').getEditedEntityRecord('postType', postType, postId); 3381 3382 if (record) { 3383 if (typeof record.content === 'function') { 3384 return record.content(record); 3385 } else if (record.blocks) { 3386 return serialize_blocks(record.blocks); 3387 } else if (record.content) { 3388 return record.content; 3389 } 3390 } 3391 3392 return ''; 3393 }; 3394 }); 3395 /** 3396 * Returns state object prior to a specified optimist transaction ID, or `null` 3397 * if the transaction corresponding to the given ID cannot be found. 3398 * 3399 * @param {Object} state Current global application state. 3400 * @param {Object} transactionId Optimist transaction ID. 3401 * 3402 * @return {Object} Global application state prior to transaction. 3403 */ 3404 3405 function getStateBeforeOptimisticTransaction(state, transactionId) { 3406 var transaction = Object(external_this_lodash_["find"])(state.optimist, function (entry) { 3407 return entry.beforeState && Object(external_this_lodash_["get"])(entry.action, ['optimist', 'id']) === transactionId; 3408 }); 3409 return transaction ? transaction.beforeState : null; 3410 } 3411 /** 3412 * Returns true if the post is being published, or false otherwise. 3413 * 3414 * @param {Object} state Global application state. 3415 * 3416 * @return {boolean} Whether post is being published. 3417 */ 3418 3419 function selectors_isPublishingPost(state) { 3420 if (!selectors_isSavingPost(state)) { 3421 return false; 3422 } // Saving is optimistic, so assume that current post would be marked as 3423 // published if publishing 3424 3425 3426 if (!selectors_isCurrentPostPublished(state)) { 3427 return false; 3428 } // Use post update transaction ID to retrieve the state prior to the 3429 // optimistic transaction 3430 3431 3432 var stateBeforeRequest = getStateBeforeOptimisticTransaction(state, POST_UPDATE_TRANSACTION_ID); // Consider as publishing when current post prior to request was not 3433 // considered published 3434 3435 return !!stateBeforeRequest && !selectors_isCurrentPostPublished(null, stateBeforeRequest.currentPost); 3436 } 3437 /** 3438 * Returns whether the permalink is editable or not. 3439 * 3440 * @param {Object} state Editor state. 3441 * 3442 * @return {boolean} Whether or not the permalink is editable. 3443 */ 3444 3445 function isPermalinkEditable(state) { 3446 var permalinkTemplate = selectors_getEditedPostAttribute(state, 'permalink_template'); 3447 return PERMALINK_POSTNAME_REGEX.test(permalinkTemplate); 3448 } 3449 /** 3450 * Returns the permalink for the post. 3451 * 3452 * @param {Object} state Editor state. 3453 * 3454 * @return {?string} The permalink, or null if the post is not viewable. 3455 */ 3456 3457 function getPermalink(state) { 3458 var permalinkParts = getPermalinkParts(state); 3459 3460 if (!permalinkParts) { 3461 return null; 3462 } 3463 3464 var prefix = permalinkParts.prefix, 3465 postName = permalinkParts.postName, 3466 suffix = permalinkParts.suffix; 3467 3468 if (isPermalinkEditable(state)) { 3469 return prefix + postName + suffix; 3470 } 3471 3472 return prefix; 3473 } 3474 /** 3475 * Returns the slug for the post being edited, preferring a manually edited 3476 * value if one exists, then a sanitized version of the current post title, and 3477 * finally the post ID. 3478 * 3479 * @param {Object} state Editor state. 3480 * 3481 * @return {string} The current slug to be displayed in the editor 3482 */ 3483 3484 function getEditedPostSlug(state) { 3485 return selectors_getEditedPostAttribute(state, 'slug') || cleanForSlug(selectors_getEditedPostAttribute(state, 'title')) || selectors_getCurrentPostId(state); 3486 } 3487 /** 3488 * Returns the permalink for a post, split into it's three parts: the prefix, 3489 * the postName, and the suffix. 3490 * 3491 * @param {Object} state Editor state. 3492 * 3493 * @return {Object} An object containing the prefix, postName, and suffix for 3494 * the permalink, or null if the post is not viewable. 3495 */ 3496 3497 function getPermalinkParts(state) { 3498 var permalinkTemplate = selectors_getEditedPostAttribute(state, 'permalink_template'); 3499 3500 if (!permalinkTemplate) { 3501 return null; 3502 } 3503 3504 var postName = selectors_getEditedPostAttribute(state, 'slug') || selectors_getEditedPostAttribute(state, 'generated_slug'); 3505 3506 var _permalinkTemplate$sp = permalinkTemplate.split(PERMALINK_POSTNAME_REGEX), 3507 _permalinkTemplate$sp2 = Object(slicedToArray["a" /* default */])(_permalinkTemplate$sp, 2), 3508 prefix = _permalinkTemplate$sp2[0], 3509 suffix = _permalinkTemplate$sp2[1]; 3510 3511 return { 3512 prefix: prefix, 3513 postName: postName, 3514 suffix: suffix 3515 }; 3516 } 3517 /** 3518 * Returns true if an optimistic transaction is pending commit, for which the 3519 * before state satisfies the given predicate function. 3520 * 3521 * @param {Object} state Editor state. 3522 * @param {Function} predicate Function given state, returning true if match. 3523 * 3524 * @return {boolean} Whether predicate matches for some history. 3525 */ 3526 3527 function inSomeHistory(state, predicate) { 3528 var optimist = state.optimist; // In recursion, optimist state won't exist. Assume exhausted options. 3529 3530 if (!optimist) { 3531 return false; 3532 } 3533 3534 return optimist.some(function (_ref) { 3535 var beforeState = _ref.beforeState; 3536 return beforeState && predicate(beforeState); 3537 }); 3538 } 3539 /** 3540 * Returns whether the post is locked. 3541 * 3542 * @param {Object} state Global application state. 3543 * 3544 * @return {boolean} Is locked. 3545 */ 3546 3547 function isPostLocked(state) { 3548 return state.postLock.isLocked; 3549 } 3550 /** 3551 * Returns whether post saving is locked. 3552 * 3553 * @param {Object} state Global application state. 3554 * 3555 * @return {boolean} Is locked. 3556 */ 3557 3558 function selectors_isPostSavingLocked(state) { 3559 return Object.keys(state.postSavingLock).length > 0; 3560 } 3561 /** 3562 * Returns whether post autosaving is locked. 3563 * 3564 * @param {Object} state Global application state. 3565 * 3566 * @return {boolean} Is locked. 3567 */ 3568 3569 function isPostAutosavingLocked(state) { 3570 return Object.keys(state.postAutosavingLock).length > 0; 3571 } 3572 /** 3573 * Returns whether the edition of the post has been taken over. 3574 * 3575 * @param {Object} state Global application state. 3576 * 3577 * @return {boolean} Is post lock takeover. 3578 */ 3579 3580 function isPostLockTakeover(state) { 3581 return state.postLock.isTakeover; 3582 } 3583 /** 3584 * Returns details about the post lock user. 3585 * 3586 * @param {Object} state Global application state. 3587 * 3588 * @return {Object} A user object. 3589 */ 3590 3591 function getPostLockUser(state) { 3592 return state.postLock.user; 3593 } 3594 /** 3595 * Returns the active post lock. 3596 * 3597 * @param {Object} state Global application state. 3598 * 3599 * @return {Object} The lock object. 3600 */ 3601 3602 function getActivePostLock(state) { 3603 return state.postLock.activePostLock; 3604 } 3605 /** 3606 * Returns whether or not the user has the unfiltered_html capability. 3607 * 3608 * @param {Object} state Editor state. 3609 * 3610 * @return {boolean} Whether the user can or can't post unfiltered HTML. 3611 */ 3612 3613 function selectors_canUserUseUnfilteredHTML(state) { 3614 return Object(external_this_lodash_["has"])(selectors_getCurrentPost(state), ['_links', 'wp:action-unfiltered-html']); 3615 } 3616 /** 3617 * Returns whether the pre-publish panel should be shown 3618 * or skipped when the user clicks the "publish" button. 3619 * 3620 * @param {Object} state Global application state. 3621 * 3622 * @return {boolean} Whether the pre-publish panel should be shown or not. 3623 */ 3624 3625 function selectors_isPublishSidebarEnabled(state) { 3626 if (state.preferences.hasOwnProperty('isPublishSidebarEnabled')) { 3627 return state.preferences.isPublishSidebarEnabled; 3628 } 3629 3630 return PREFERENCES_DEFAULTS.isPublishSidebarEnabled; 3631 } 3632 /** 3633 * Return the current block list. 3634 * 3635 * @param {Object} state 3636 * @return {Array} Block list. 3637 */ 3638 3639 function selectors_getEditorBlocks(state) { 3640 return selectors_getEditedPostAttribute(state, 'blocks') || EMPTY_ARRAY; 3641 } 3642 /** 3643 * A block selection object. 3644 * 3645 * @typedef {Object} WPBlockSelection 3646 * 3647 * @property {string} clientId A block client ID. 3648 * @property {string} attributeKey A block attribute key. 3649 * @property {number} offset An attribute value offset, based on the rich 3650 * text value. See `wp.richText.create`. 3651 */ 3652 3653 /** 3654 * Returns the current selection start. 3655 * 3656 * @param {Object} state 3657 * @return {WPBlockSelection} The selection start. 3658 */ 3659 3660 function selectors_getEditorSelectionStart(state) { 3661 return selectors_getEditedPostAttribute(state, 'selectionStart'); 3662 } 3663 /** 3664 * Returns the current selection end. 3665 * 3666 * @param {Object} state 3667 * @return {WPBlockSelection} The selection end. 3668 */ 3669 3670 function selectors_getEditorSelectionEnd(state) { 3671 return selectors_getEditedPostAttribute(state, 'selectionEnd'); 3672 } 3673 /** 3674 * Is the editor ready 3675 * 3676 * @param {Object} state 3677 * @return {boolean} is Ready. 3678 */ 3679 3680 function __unstableIsEditorReady(state) { 3681 return state.isReady; 3682 } 3683 /** 3684 * Returns the post editor settings. 3685 * 3686 * @param {Object} state Editor state. 3687 * 3688 * @return {Object} The editor settings object. 3689 */ 3690 3691 function selectors_getEditorSettings(state) { 3692 return state.editorSettings; 3693 } 3694 /* 3695 * Backward compatibility 3696 */ 3697 3698 function getBlockEditorSelector(name) { 3699 return Object(external_this_wp_data_["createRegistrySelector"])(function (select) { 3700 return function (state) { 3701 var _select; 3702 3703 external_this_wp_deprecated_default()("`wp.data.select( 'core/editor' )." + name + '`', { 3704 alternative: "`wp.data.select( 'core/block-editor' )." + name + '`' 3705 }); 3706 3707 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 3708 args[_key - 1] = arguments[_key]; 3709 } 3710 3711 return (_select = select('core/block-editor'))[name].apply(_select, args); 3712 }; 3713 }); 3714 } 3715 /** 3716 * @see getBlockName in core/block-editor store. 3717 */ 3718 3719 3720 var getBlockName = getBlockEditorSelector('getBlockName'); 3721 /** 3722 * @see isBlockValid in core/block-editor store. 3723 */ 3724 3725 var isBlockValid = getBlockEditorSelector('isBlockValid'); 3726 /** 3727 * @see getBlockAttributes in core/block-editor store. 3728 */ 3729 3730 var getBlockAttributes = getBlockEditorSelector('getBlockAttributes'); 3731 /** 3732 * @see getBlock in core/block-editor store. 3733 */ 3734 3735 var getBlock = getBlockEditorSelector('getBlock'); 3736 /** 3737 * @see getBlocks in core/block-editor store. 3738 */ 3739 3740 var selectors_getBlocks = getBlockEditorSelector('getBlocks'); 3741 /** 3742 * @see __unstableGetBlockWithoutInnerBlocks in core/block-editor store. 3743 */ 3744 3745 var __unstableGetBlockWithoutInnerBlocks = getBlockEditorSelector('__unstableGetBlockWithoutInnerBlocks'); 3746 /** 3747 * @see getClientIdsOfDescendants in core/block-editor store. 3748 */ 3749 3750 var getClientIdsOfDescendants = getBlockEditorSelector('getClientIdsOfDescendants'); 3751 /** 3752 * @see getClientIdsWithDescendants in core/block-editor store. 3753 */ 3754 3755 var getClientIdsWithDescendants = getBlockEditorSelector('getClientIdsWithDescendants'); 3756 /** 3757 * @see getGlobalBlockCount in core/block-editor store. 3758 */ 3759 3760 var getGlobalBlockCount = getBlockEditorSelector('getGlobalBlockCount'); 3761 /** 3762 * @see getBlocksByClientId in core/block-editor store. 3763 */ 3764 3765 var getBlocksByClientId = getBlockEditorSelector('getBlocksByClientId'); 3766 /** 3767 * @see getBlockCount in core/block-editor store. 3768 */ 3769 3770 var getBlockCount = getBlockEditorSelector('getBlockCount'); 3771 /** 3772 * @see getBlockSelectionStart in core/block-editor store. 3773 */ 3774 3775 var getBlockSelectionStart = getBlockEditorSelector('getBlockSelectionStart'); 3776 /** 3777 * @see getBlockSelectionEnd in core/block-editor store. 3778 */ 3779 3780 var getBlockSelectionEnd = getBlockEditorSelector('getBlockSelectionEnd'); 3781 /** 3782 * @see getSelectedBlockCount in core/block-editor store. 3783 */ 3784 3785 var getSelectedBlockCount = getBlockEditorSelector('getSelectedBlockCount'); 3786 /** 3787 * @see hasSelectedBlock in core/block-editor store. 3788 */ 3789 3790 var hasSelectedBlock = getBlockEditorSelector('hasSelectedBlock'); 3791 /** 3792 * @see getSelectedBlockClientId in core/block-editor store. 3793 */ 3794 3795 var getSelectedBlockClientId = getBlockEditorSelector('getSelectedBlockClientId'); 3796 /** 3797 * @see getSelectedBlock in core/block-editor store. 3798 */ 3799 3800 var getSelectedBlock = getBlockEditorSelector('getSelectedBlock'); 3801 /** 3802 * @see getBlockRootClientId in core/block-editor store. 3803 */ 3804 3805 var getBlockRootClientId = getBlockEditorSelector('getBlockRootClientId'); 3806 /** 3807 * @see getBlockHierarchyRootClientId in core/block-editor store. 3808 */ 3809 3810 var getBlockHierarchyRootClientId = getBlockEditorSelector('getBlockHierarchyRootClientId'); 3811 /** 3812 * @see getAdjacentBlockClientId in core/block-editor store. 3813 */ 3814 3815 var getAdjacentBlockClientId = getBlockEditorSelector('getAdjacentBlockClientId'); 3816 /** 3817 * @see getPreviousBlockClientId in core/block-editor store. 3818 */ 3819 3820 var getPreviousBlockClientId = getBlockEditorSelector('getPreviousBlockClientId'); 3821 /** 3822 * @see getNextBlockClientId in core/block-editor store. 3823 */ 3824 3825 var getNextBlockClientId = getBlockEditorSelector('getNextBlockClientId'); 3826 /** 3827 * @see getSelectedBlocksInitialCaretPosition in core/block-editor store. 3828 */ 3829 3830 var getSelectedBlocksInitialCaretPosition = getBlockEditorSelector('getSelectedBlocksInitialCaretPosition'); 3831 /** 3832 * @see getMultiSelectedBlockClientIds in core/block-editor store. 3833 */ 3834 3835 var getMultiSelectedBlockClientIds = getBlockEditorSelector('getMultiSelectedBlockClientIds'); 3836 /** 3837 * @see getMultiSelectedBlocks in core/block-editor store. 3838 */ 3839 3840 var getMultiSelectedBlocks = getBlockEditorSelector('getMultiSelectedBlocks'); 3841 /** 3842 * @see getFirstMultiSelectedBlockClientId in core/block-editor store. 3843 */ 3844 3845 var getFirstMultiSelectedBlockClientId = getBlockEditorSelector('getFirstMultiSelectedBlockClientId'); 3846 /** 3847 * @see getLastMultiSelectedBlockClientId in core/block-editor store. 3848 */ 3849 3850 var getLastMultiSelectedBlockClientId = getBlockEditorSelector('getLastMultiSelectedBlockClientId'); 3851 /** 3852 * @see isFirstMultiSelectedBlock in core/block-editor store. 3853 */ 3854 3855 var isFirstMultiSelectedBlock = getBlockEditorSelector('isFirstMultiSelectedBlock'); 3856 /** 3857 * @see isBlockMultiSelected in core/block-editor store. 3858 */ 3859 3860 var isBlockMultiSelected = getBlockEditorSelector('isBlockMultiSelected'); 3861 /** 3862 * @see isAncestorMultiSelected in core/block-editor store. 3863 */ 3864 3865 var isAncestorMultiSelected = getBlockEditorSelector('isAncestorMultiSelected'); 3866 /** 3867 * @see getMultiSelectedBlocksStartClientId in core/block-editor store. 3868 */ 3869 3870 var getMultiSelectedBlocksStartClientId = getBlockEditorSelector('getMultiSelectedBlocksStartClientId'); 3871 /** 3872 * @see getMultiSelectedBlocksEndClientId in core/block-editor store. 3873 */ 3874 3875 var getMultiSelectedBlocksEndClientId = getBlockEditorSelector('getMultiSelectedBlocksEndClientId'); 3876 /** 3877 * @see getBlockOrder in core/block-editor store. 3878 */ 3879 3880 var getBlockOrder = getBlockEditorSelector('getBlockOrder'); 3881 /** 3882 * @see getBlockIndex in core/block-editor store. 3883 */ 3884 3885 var getBlockIndex = getBlockEditorSelector('getBlockIndex'); 3886 /** 3887 * @see isBlockSelected in core/block-editor store. 3888 */ 3889 3890 var isBlockSelected = getBlockEditorSelector('isBlockSelected'); 3891 /** 3892 * @see hasSelectedInnerBlock in core/block-editor store. 3893 */ 3894 3895 var hasSelectedInnerBlock = getBlockEditorSelector('hasSelectedInnerBlock'); 3896 /** 3897 * @see isBlockWithinSelection in core/block-editor store. 3898 */ 3899 3900 var isBlockWithinSelection = getBlockEditorSelector('isBlockWithinSelection'); 3901 /** 3902 * @see hasMultiSelection in core/block-editor store. 3903 */ 3904 3905 var hasMultiSelection = getBlockEditorSelector('hasMultiSelection'); 3906 /** 3907 * @see isMultiSelecting in core/block-editor store. 3908 */ 3909 3910 var isMultiSelecting = getBlockEditorSelector('isMultiSelecting'); 3911 /** 3912 * @see isSelectionEnabled in core/block-editor store. 3913 */ 3914 3915 var isSelectionEnabled = getBlockEditorSelector('isSelectionEnabled'); 3916 /** 3917 * @see getBlockMode in core/block-editor store. 3918 */ 3919 3920 var getBlockMode = getBlockEditorSelector('getBlockMode'); 3921 /** 3922 * @see isTyping in core/block-editor store. 3923 */ 3924 3925 var isTyping = getBlockEditorSelector('isTyping'); 3926 /** 3927 * @see isCaretWithinFormattedText in core/block-editor store. 3928 */ 3929 3930 var isCaretWithinFormattedText = getBlockEditorSelector('isCaretWithinFormattedText'); 3931 /** 3932 * @see getBlockInsertionPoint in core/block-editor store. 3933 */ 3934 3935 var getBlockInsertionPoint = getBlockEditorSelector('getBlockInsertionPoint'); 3936 /** 3937 * @see isBlockInsertionPointVisible in core/block-editor store. 3938 */ 3939 3940 var isBlockInsertionPointVisible = getBlockEditorSelector('isBlockInsertionPointVisible'); 3941 /** 3942 * @see isValidTemplate in core/block-editor store. 3943 */ 3944 3945 var isValidTemplate = getBlockEditorSelector('isValidTemplate'); 3946 /** 3947 * @see getTemplate in core/block-editor store. 3948 */ 3949 3950 var getTemplate = getBlockEditorSelector('getTemplate'); 3951 /** 3952 * @see getTemplateLock in core/block-editor store. 3953 */ 3954 3955 var getTemplateLock = getBlockEditorSelector('getTemplateLock'); 3956 /** 3957 * @see canInsertBlockType in core/block-editor store. 3958 */ 3959 3960 var canInsertBlockType = getBlockEditorSelector('canInsertBlockType'); 3961 /** 3962 * @see getInserterItems in core/block-editor store. 3963 */ 3964 3965 var getInserterItems = getBlockEditorSelector('getInserterItems'); 3966 /** 3967 * @see hasInserterItems in core/block-editor store. 3968 */ 3969 3970 var hasInserterItems = getBlockEditorSelector('hasInserterItems'); 3971 /** 3972 * @see getBlockListSettings in core/block-editor store. 3973 */ 3974 3975 var getBlockListSettings = getBlockEditorSelector('getBlockListSettings'); 3976 3977 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js 3978 var objectWithoutProperties = __webpack_require__(14); 3979 3980 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 2 modules 3981 var toConsumableArray = __webpack_require__(17); 3982 3983 // EXTERNAL MODULE: external {"this":"regeneratorRuntime"} 3984 var external_this_regeneratorRuntime_ = __webpack_require__(20); 3985 var external_this_regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(external_this_regeneratorRuntime_); 3986 3987 // EXTERNAL MODULE: external {"this":["wp","i18n"]} 3988 var external_this_wp_i18n_ = __webpack_require__(1); 3989 3990 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/utils/notice-builder.js 3991 /** 3992 * WordPress dependencies 3993 */ 3994 3995 /** 3996 * Internal dependencies 3997 */ 3998 3999 4000 /** 4001 * External dependencies 4002 */ 4003 4004 4005 /** 4006 * Builds the arguments for a success notification dispatch. 4007 * 4008 * @param {Object} data Incoming data to build the arguments from. 4009 * 4010 * @return {Array} Arguments for dispatch. An empty array signals no 4011 * notification should be sent. 4012 */ 4013 4014 function getNotificationArgumentsForSaveSuccess(data) { 4015 var previousPost = data.previousPost, 4016 post = data.post, 4017 postType = data.postType; // Autosaves are neither shown a notice nor redirected. 4018 4019 if (Object(external_this_lodash_["get"])(data.options, ['isAutosave'])) { 4020 return []; 4021 } 4022 4023 var publishStatus = ['publish', 'private', 'future']; 4024 var isPublished = Object(external_this_lodash_["includes"])(publishStatus, previousPost.status); 4025 var willPublish = Object(external_this_lodash_["includes"])(publishStatus, post.status); 4026 var noticeMessage; 4027 var shouldShowLink = Object(external_this_lodash_["get"])(postType, ['viewable'], false); 4028 4029 if (!isPublished && !willPublish) { 4030 // If saving a non-published post, don't show notice. 4031 noticeMessage = null; 4032 } else if (isPublished && !willPublish) { 4033 // If undoing publish status, show specific notice 4034 noticeMessage = postType.labels.item_reverted_to_draft; 4035 shouldShowLink = false; 4036 } else if (!isPublished && willPublish) { 4037 // If publishing or scheduling a post, show the corresponding 4038 // publish message 4039 noticeMessage = { 4040 publish: postType.labels.item_published, 4041 private: postType.labels.item_published_privately, 4042 future: postType.labels.item_scheduled 4043 }[post.status]; 4044 } else { 4045 // Generic fallback notice 4046 noticeMessage = postType.labels.item_updated; 4047 } 4048 4049 if (noticeMessage) { 4050 var actions = []; 4051 4052 if (shouldShowLink) { 4053 actions.push({ 4054 label: postType.labels.view_item, 4055 url: post.link 4056 }); 4057 } 4058 4059 return [noticeMessage, { 4060 id: SAVE_POST_NOTICE_ID, 4061 type: 'snackbar', 4062 actions: actions 4063 }]; 4064 } 4065 4066 return []; 4067 } 4068 /** 4069 * Builds the fail notification arguments for dispatch. 4070 * 4071 * @param {Object} data Incoming data to build the arguments with. 4072 * 4073 * @return {Array} Arguments for dispatch. An empty array signals no 4074 * notification should be sent. 4075 */ 4076 4077 function getNotificationArgumentsForSaveFail(data) { 4078 var post = data.post, 4079 edits = data.edits, 4080 error = data.error; 4081 4082 if (error && 'rest_autosave_no_changes' === error.code) { 4083 // Autosave requested a new autosave, but there were no changes. This shouldn't 4084 // result in an error notice for the user. 4085 return []; 4086 } 4087 4088 var publishStatus = ['publish', 'private', 'future']; 4089 var isPublished = publishStatus.indexOf(post.status) !== -1; // If the post was being published, we show the corresponding publish error message 4090 // Unless we publish an "updating failed" message 4091 4092 var messages = { 4093 publish: Object(external_this_wp_i18n_["__"])('Publishing failed.'), 4094 private: Object(external_this_wp_i18n_["__"])('Publishing failed.'), 4095 future: Object(external_this_wp_i18n_["__"])('Scheduling failed.') 4096 }; 4097 var noticeMessage = !isPublished && publishStatus.indexOf(edits.status) !== -1 ? messages[edits.status] : Object(external_this_wp_i18n_["__"])('Updating failed.'); // Check if message string contains HTML. Notice text is currently only 4098 // supported as plaintext, and stripping the tags may muddle the meaning. 4099 4100 if (error.message && !/<\/?[^>]*>/.test(error.message)) { 4101 noticeMessage = [noticeMessage, error.message].join(' '); 4102 } 4103 4104 return [noticeMessage, { 4105 id: SAVE_POST_NOTICE_ID 4106 }]; 4107 } 4108 /** 4109 * Builds the trash fail notification arguments for dispatch. 4110 * 4111 * @param {Object} data 4112 * 4113 * @return {Array} Arguments for dispatch. 4114 */ 4115 4116 function getNotificationArgumentsForTrashFail(data) { 4117 return [data.error.message && data.error.code !== 'unknown_error' ? data.error.message : Object(external_this_wp_i18n_["__"])('Trashing failed'), { 4118 id: TRASH_POST_NOTICE_ID 4119 }]; 4120 } 4121 4122 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/actions.js 4123 4124 4125 4126 4127 4128 function actions_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 4129 4130 function actions_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { actions_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { actions_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 4131 4132 var _marked = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(setupEditor), 4133 _marked2 = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(resetAutosave), 4134 _marked3 = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(actions_editPost), 4135 _marked4 = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(actions_savePost), 4136 _marked5 = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(refreshPost), 4137 _marked6 = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(trashPost), 4138 _marked7 = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(actions_autosave), 4139 _marked8 = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(actions_redo), 4140 _marked9 = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(actions_undo), 4141 _marked10 = /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(actions_resetEditorBlocks); 4142 4143 /** 4144 * External dependencies 4145 */ 4146 4147 /** 4148 * WordPress dependencies 4149 */ 4150 4151 4152 4153 4154 /** 4155 * Internal dependencies 4156 */ 4157 4158 4159 4160 4161 /** 4162 * Returns an action generator used in signalling that editor has initialized with 4163 * the specified post object and editor settings. 4164 * 4165 * @param {Object} post Post object. 4166 * @param {Object} edits Initial edited attributes object. 4167 * @param {Array?} template Block Template. 4168 */ 4169 4170 function setupEditor(post, edits, template) { 4171 var content, blocks, isNewPost; 4172 return external_this_regeneratorRuntime_default.a.wrap(function setupEditor$(_context) { 4173 while (1) { 4174 switch (_context.prev = _context.next) { 4175 case 0: 4176 // In order to ensure maximum of a single parse during setup, edits are 4177 // included as part of editor setup action. Assume edited content as 4178 // canonical if provided, falling back to post. 4179 if (Object(external_this_lodash_["has"])(edits, ['content'])) { 4180 content = edits.content; 4181 } else { 4182 content = post.content.raw; 4183 } 4184 4185 blocks = Object(external_this_wp_blocks_["parse"])(content); // Apply a template for new posts only, if exists. 4186 4187 isNewPost = post.status === 'auto-draft'; 4188 4189 if (isNewPost && template) { 4190 blocks = Object(external_this_wp_blocks_["synchronizeBlocksWithTemplate"])(blocks, template); 4191 } 4192 4193 _context.next = 6; 4194 return resetPost(post); 4195 4196 case 6: 4197 _context.next = 8; 4198 return { 4199 type: 'SETUP_EDITOR', 4200 post: post, 4201 edits: edits, 4202 template: template 4203 }; 4204 4205 case 8: 4206 _context.next = 10; 4207 return actions_resetEditorBlocks(blocks, { 4208 __unstableShouldCreateUndoLevel: false 4209 }); 4210 4211 case 10: 4212 _context.next = 12; 4213 return setupEditorState(post); 4214 4215 case 12: 4216 if (!(edits && Object.keys(edits).some(function (key) { 4217 return edits[key] !== (Object(external_this_lodash_["has"])(post, [key, 'raw']) ? post[key].raw : post[key]); 4218 }))) { 4219 _context.next = 15; 4220 break; 4221 } 4222 4223 _context.next = 15; 4224 return actions_editPost(edits); 4225 4226 case 15: 4227 case "end": 4228 return _context.stop(); 4229 } 4230 } 4231 }, _marked); 4232 } 4233 /** 4234 * Returns an action object signalling that the editor is being destroyed and 4235 * that any necessary state or side-effect cleanup should occur. 4236 * 4237 * @return {Object} Action object. 4238 */ 4239 4240 function __experimentalTearDownEditor() { 4241 return { 4242 type: 'TEAR_DOWN_EDITOR' 4243 }; 4244 } 4245 /** 4246 * Returns an action object used in signalling that the latest version of the 4247 * post has been received, either by initialization or save. 4248 * 4249 * @param {Object} post Post object. 4250 * 4251 * @return {Object} Action object. 4252 */ 4253 4254 function resetPost(post) { 4255 return { 4256 type: 'RESET_POST', 4257 post: post 4258 }; 4259 } 4260 /** 4261 * Returns an action object used in signalling that the latest autosave of the 4262 * post has been received, by initialization or autosave. 4263 * 4264 * @deprecated since 5.6. Callers should use the `receiveAutosaves( postId, autosave )` 4265 * selector from the '@wordpress/core-data' package. 4266 * 4267 * @param {Object} newAutosave Autosave post object. 4268 * 4269 * @return {Object} Action object. 4270 */ 4271 4272 function resetAutosave(newAutosave) { 4273 var postId; 4274 return external_this_regeneratorRuntime_default.a.wrap(function resetAutosave$(_context2) { 4275 while (1) { 4276 switch (_context2.prev = _context2.next) { 4277 case 0: 4278 external_this_wp_deprecated_default()('resetAutosave action (`core/editor` store)', { 4279 alternative: 'receiveAutosaves action (`core` store)', 4280 plugin: 'Gutenberg' 4281 }); 4282 _context2.next = 3; 4283 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPostId'); 4284 4285 case 3: 4286 postId = _context2.sent; 4287 _context2.next = 6; 4288 return Object(external_this_wp_dataControls_["dispatch"])('core', 'receiveAutosaves', postId, newAutosave); 4289 4290 case 6: 4291 return _context2.abrupt("return", { 4292 type: '__INERT__' 4293 }); 4294 4295 case 7: 4296 case "end": 4297 return _context2.stop(); 4298 } 4299 } 4300 }, _marked2); 4301 } 4302 /** 4303 * Action for dispatching that a post update request has started. 4304 * 4305 * @param {Object} options 4306 * 4307 * @return {Object} An action object 4308 */ 4309 4310 function __experimentalRequestPostUpdateStart() { 4311 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 4312 return { 4313 type: 'REQUEST_POST_UPDATE_START', 4314 options: options 4315 }; 4316 } 4317 /** 4318 * Action for dispatching that a post update request has finished. 4319 * 4320 * @param {Object} options 4321 * 4322 * @return {Object} An action object 4323 */ 4324 4325 function __experimentalRequestPostUpdateFinish() { 4326 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 4327 return { 4328 type: 'REQUEST_POST_UPDATE_FINISH', 4329 options: options 4330 }; 4331 } 4332 /** 4333 * Returns an action object used in signalling that a patch of updates for the 4334 * latest version of the post have been received. 4335 * 4336 * @param {Object} edits Updated post fields. 4337 * 4338 * @return {Object} Action object. 4339 */ 4340 4341 function updatePost(edits) { 4342 return { 4343 type: 'UPDATE_POST', 4344 edits: edits 4345 }; 4346 } 4347 /** 4348 * Returns an action object used to setup the editor state when first opening 4349 * an editor. 4350 * 4351 * @param {Object} post Post object. 4352 * 4353 * @return {Object} Action object. 4354 */ 4355 4356 function setupEditorState(post) { 4357 return { 4358 type: 'SETUP_EDITOR_STATE', 4359 post: post 4360 }; 4361 } 4362 /** 4363 * Returns an action object used in signalling that attributes of the post have 4364 * been edited. 4365 * 4366 * @param {Object} edits Post attributes to edit. 4367 * @param {Object} options Options for the edit. 4368 * 4369 * @yield {Object} Action object or control. 4370 */ 4371 4372 function actions_editPost(edits, options) { 4373 var _yield$select, id, type; 4374 4375 return external_this_regeneratorRuntime_default.a.wrap(function editPost$(_context3) { 4376 while (1) { 4377 switch (_context3.prev = _context3.next) { 4378 case 0: 4379 _context3.next = 2; 4380 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); 4381 4382 case 2: 4383 _yield$select = _context3.sent; 4384 id = _yield$select.id; 4385 type = _yield$select.type; 4386 _context3.next = 7; 4387 return Object(external_this_wp_dataControls_["dispatch"])('core', 'editEntityRecord', 'postType', type, id, edits, options); 4388 4389 case 7: 4390 case "end": 4391 return _context3.stop(); 4392 } 4393 } 4394 }, _marked3); 4395 } 4396 /** 4397 * Returns action object produced by the updatePost creator augmented by 4398 * an optimist option that signals optimistically applying updates. 4399 * 4400 * @param {Object} edits Updated post fields. 4401 * 4402 * @return {Object} Action object. 4403 */ 4404 4405 function __experimentalOptimisticUpdatePost(edits) { 4406 return actions_objectSpread(actions_objectSpread({}, updatePost(edits)), {}, { 4407 optimist: { 4408 id: POST_UPDATE_TRANSACTION_ID 4409 } 4410 }); 4411 } 4412 /** 4413 * Action generator for saving the current post in the editor. 4414 * 4415 * @param {Object} options 4416 */ 4417 4418 function actions_savePost() { 4419 var options, 4420 edits, 4421 previousRecord, 4422 error, 4423 args, 4424 updatedRecord, 4425 _args4, 4426 _args5 = arguments; 4427 4428 return external_this_regeneratorRuntime_default.a.wrap(function savePost$(_context4) { 4429 while (1) { 4430 switch (_context4.prev = _context4.next) { 4431 case 0: 4432 options = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : {}; 4433 _context4.next = 3; 4434 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'isEditedPostSaveable'); 4435 4436 case 3: 4437 if (_context4.sent) { 4438 _context4.next = 5; 4439 break; 4440 } 4441 4442 return _context4.abrupt("return"); 4443 4444 case 5: 4445 _context4.next = 7; 4446 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getEditedPostContent'); 4447 4448 case 7: 4449 _context4.t0 = _context4.sent; 4450 edits = { 4451 content: _context4.t0 4452 }; 4453 4454 if (options.isAutosave) { 4455 _context4.next = 12; 4456 break; 4457 } 4458 4459 _context4.next = 12; 4460 return Object(external_this_wp_dataControls_["dispatch"])(STORE_KEY, 'editPost', edits, { 4461 undoIgnore: true 4462 }); 4463 4464 case 12: 4465 _context4.next = 14; 4466 return __experimentalRequestPostUpdateStart(options); 4467 4468 case 14: 4469 _context4.next = 16; 4470 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); 4471 4472 case 16: 4473 previousRecord = _context4.sent; 4474 _context4.t1 = actions_objectSpread; 4475 _context4.t2 = actions_objectSpread; 4476 _context4.t3 = { 4477 id: previousRecord.id 4478 }; 4479 _context4.next = 22; 4480 return Object(external_this_wp_dataControls_["select"])('core', 'getEntityRecordNonTransientEdits', 'postType', previousRecord.type, previousRecord.id); 4481 4482 case 22: 4483 _context4.t4 = _context4.sent; 4484 _context4.t5 = (0, _context4.t2)(_context4.t3, _context4.t4); 4485 _context4.t6 = edits; 4486 edits = (0, _context4.t1)(_context4.t5, _context4.t6); 4487 _context4.next = 28; 4488 return Object(external_this_wp_dataControls_["dispatch"])('core', 'saveEntityRecord', 'postType', previousRecord.type, edits, options); 4489 4490 case 28: 4491 _context4.next = 30; 4492 return __experimentalRequestPostUpdateFinish(options); 4493 4494 case 30: 4495 _context4.next = 32; 4496 return Object(external_this_wp_dataControls_["select"])('core', 'getLastEntitySaveError', 'postType', previousRecord.type, previousRecord.id); 4497 4498 case 32: 4499 error = _context4.sent; 4500 4501 if (!error) { 4502 _context4.next = 40; 4503 break; 4504 } 4505 4506 args = getNotificationArgumentsForSaveFail({ 4507 post: previousRecord, 4508 edits: edits, 4509 error: error 4510 }); 4511 4512 if (!args.length) { 4513 _context4.next = 38; 4514 break; 4515 } 4516 4517 _context4.next = 38; 4518 return external_this_wp_dataControls_["dispatch"].apply(void 0, ['core/notices', 'createErrorNotice'].concat(Object(toConsumableArray["a" /* default */])(args))); 4519 4520 case 38: 4521 _context4.next = 58; 4522 break; 4523 4524 case 40: 4525 _context4.next = 42; 4526 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); 4527 4528 case 42: 4529 updatedRecord = _context4.sent; 4530 _context4.t7 = getNotificationArgumentsForSaveSuccess; 4531 _context4.t8 = previousRecord; 4532 _context4.t9 = updatedRecord; 4533 _context4.next = 48; 4534 return Object(external_this_wp_dataControls_["select"])('core', 'getPostType', updatedRecord.type); 4535 4536 case 48: 4537 _context4.t10 = _context4.sent; 4538 _context4.t11 = options; 4539 _context4.t12 = { 4540 previousPost: _context4.t8, 4541 post: _context4.t9, 4542 postType: _context4.t10, 4543 options: _context4.t11 4544 }; 4545 _args4 = (0, _context4.t7)(_context4.t12); 4546 4547 if (!_args4.length) { 4548 _context4.next = 55; 4549 break; 4550 } 4551 4552 _context4.next = 55; 4553 return external_this_wp_dataControls_["dispatch"].apply(void 0, ['core/notices', 'createSuccessNotice'].concat(Object(toConsumableArray["a" /* default */])(_args4))); 4554 4555 case 55: 4556 if (options.isAutosave) { 4557 _context4.next = 58; 4558 break; 4559 } 4560 4561 _context4.next = 58; 4562 return Object(external_this_wp_dataControls_["dispatch"])('core/block-editor', '__unstableMarkLastChangeAsPersistent'); 4563 4564 case 58: 4565 case "end": 4566 return _context4.stop(); 4567 } 4568 } 4569 }, _marked4); 4570 } 4571 /** 4572 * Action generator for handling refreshing the current post. 4573 */ 4574 4575 function refreshPost() { 4576 var post, postTypeSlug, postType, newPost; 4577 return external_this_regeneratorRuntime_default.a.wrap(function refreshPost$(_context5) { 4578 while (1) { 4579 switch (_context5.prev = _context5.next) { 4580 case 0: 4581 _context5.next = 2; 4582 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); 4583 4584 case 2: 4585 post = _context5.sent; 4586 _context5.next = 5; 4587 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPostType'); 4588 4589 case 5: 4590 postTypeSlug = _context5.sent; 4591 _context5.next = 8; 4592 return Object(external_this_wp_dataControls_["select"])('core', 'getPostType', postTypeSlug); 4593 4594 case 8: 4595 postType = _context5.sent; 4596 _context5.next = 11; 4597 return Object(external_this_wp_dataControls_["apiFetch"])({ 4598 // Timestamp arg allows caller to bypass browser caching, which is 4599 // expected for this specific function. 4600 path: "/wp/v2/".concat(postType.rest_base, "/").concat(post.id) + "?context=edit&_timestamp=".concat(Date.now()) 4601 }); 4602 4603 case 11: 4604 newPost = _context5.sent; 4605 _context5.next = 14; 4606 return Object(external_this_wp_dataControls_["dispatch"])(STORE_KEY, 'resetPost', newPost); 4607 4608 case 14: 4609 case "end": 4610 return _context5.stop(); 4611 } 4612 } 4613 }, _marked5); 4614 } 4615 /** 4616 * Action generator for trashing the current post in the editor. 4617 */ 4618 4619 function trashPost() { 4620 var postTypeSlug, postType, post; 4621 return external_this_regeneratorRuntime_default.a.wrap(function trashPost$(_context6) { 4622 while (1) { 4623 switch (_context6.prev = _context6.next) { 4624 case 0: 4625 _context6.next = 2; 4626 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPostType'); 4627 4628 case 2: 4629 postTypeSlug = _context6.sent; 4630 _context6.next = 5; 4631 return Object(external_this_wp_dataControls_["select"])('core', 'getPostType', postTypeSlug); 4632 4633 case 5: 4634 postType = _context6.sent; 4635 _context6.next = 8; 4636 return Object(external_this_wp_dataControls_["dispatch"])('core/notices', 'removeNotice', TRASH_POST_NOTICE_ID); 4637 4638 case 8: 4639 _context6.prev = 8; 4640 _context6.next = 11; 4641 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); 4642 4643 case 11: 4644 post = _context6.sent; 4645 _context6.next = 14; 4646 return Object(external_this_wp_dataControls_["apiFetch"])({ 4647 path: "/wp/v2/".concat(postType.rest_base, "/").concat(post.id), 4648 method: 'DELETE' 4649 }); 4650 4651 case 14: 4652 _context6.next = 16; 4653 return Object(external_this_wp_dataControls_["dispatch"])(STORE_KEY, 'savePost'); 4654 4655 case 16: 4656 _context6.next = 22; 4657 break; 4658 4659 case 18: 4660 _context6.prev = 18; 4661 _context6.t0 = _context6["catch"](8); 4662 _context6.next = 22; 4663 return external_this_wp_dataControls_["dispatch"].apply(void 0, ['core/notices', 'createErrorNotice'].concat(Object(toConsumableArray["a" /* default */])(getNotificationArgumentsForTrashFail({ 4664 error: _context6.t0 4665 })))); 4666 4667 case 22: 4668 case "end": 4669 return _context6.stop(); 4670 } 4671 } 4672 }, _marked6, null, [[8, 18]]); 4673 } 4674 /** 4675 * Action generator used in signalling that the post should autosave. This 4676 * includes server-side autosaving (default) and client-side (a.k.a. local) 4677 * autosaving (e.g. on the Web, the post might be committed to Session 4678 * Storage). 4679 * 4680 * @param {Object?} options Extra flags to identify the autosave. 4681 */ 4682 4683 function actions_autosave() { 4684 var _ref, 4685 _ref$local, 4686 local, 4687 options, 4688 post, 4689 isPostNew, 4690 title, 4691 content, 4692 excerpt, 4693 _args8 = arguments; 4694 4695 return external_this_regeneratorRuntime_default.a.wrap(function autosave$(_context7) { 4696 while (1) { 4697 switch (_context7.prev = _context7.next) { 4698 case 0: 4699 _ref = _args8.length > 0 && _args8[0] !== undefined ? _args8[0] : {}, _ref$local = _ref.local, local = _ref$local === void 0 ? false : _ref$local, options = Object(objectWithoutProperties["a" /* default */])(_ref, ["local"]); 4700 4701 if (!local) { 4702 _context7.next = 21; 4703 break; 4704 } 4705 4706 _context7.next = 4; 4707 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); 4708 4709 case 4: 4710 post = _context7.sent; 4711 _context7.next = 7; 4712 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'isEditedPostNew'); 4713 4714 case 7: 4715 isPostNew = _context7.sent; 4716 _context7.next = 10; 4717 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getEditedPostAttribute', 'title'); 4718 4719 case 10: 4720 title = _context7.sent; 4721 _context7.next = 13; 4722 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getEditedPostAttribute', 'content'); 4723 4724 case 13: 4725 content = _context7.sent; 4726 _context7.next = 16; 4727 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getEditedPostAttribute', 'excerpt'); 4728 4729 case 16: 4730 excerpt = _context7.sent; 4731 _context7.next = 19; 4732 return { 4733 type: 'LOCAL_AUTOSAVE_SET', 4734 postId: post.id, 4735 isPostNew: isPostNew, 4736 title: title, 4737 content: content, 4738 excerpt: excerpt 4739 }; 4740 4741 case 19: 4742 _context7.next = 23; 4743 break; 4744 4745 case 21: 4746 _context7.next = 23; 4747 return Object(external_this_wp_dataControls_["dispatch"])(STORE_KEY, 'savePost', actions_objectSpread({ 4748 isAutosave: true 4749 }, options)); 4750 4751 case 23: 4752 case "end": 4753 return _context7.stop(); 4754 } 4755 } 4756 }, _marked7); 4757 } 4758 /** 4759 * Returns an action object used in signalling that undo history should 4760 * restore last popped state. 4761 * 4762 * @yield {Object} Action object. 4763 */ 4764 4765 function actions_redo() { 4766 return external_this_regeneratorRuntime_default.a.wrap(function redo$(_context8) { 4767 while (1) { 4768 switch (_context8.prev = _context8.next) { 4769 case 0: 4770 _context8.next = 2; 4771 return Object(external_this_wp_dataControls_["dispatch"])('core', 'redo'); 4772 4773 case 2: 4774 case "end": 4775 return _context8.stop(); 4776 } 4777 } 4778 }, _marked8); 4779 } 4780 /** 4781 * Returns an action object used in signalling that undo history should pop. 4782 * 4783 * @yield {Object} Action object. 4784 */ 4785 4786 function actions_undo() { 4787 return external_this_regeneratorRuntime_default.a.wrap(function undo$(_context9) { 4788 while (1) { 4789 switch (_context9.prev = _context9.next) { 4790 case 0: 4791 _context9.next = 2; 4792 return Object(external_this_wp_dataControls_["dispatch"])('core', 'undo'); 4793 4794 case 2: 4795 case "end": 4796 return _context9.stop(); 4797 } 4798 } 4799 }, _marked9); 4800 } 4801 /** 4802 * Returns an action object used in signalling that undo history record should 4803 * be created. 4804 * 4805 * @return {Object} Action object. 4806 */ 4807 4808 function createUndoLevel() { 4809 return { 4810 type: 'CREATE_UNDO_LEVEL' 4811 }; 4812 } 4813 /** 4814 * Returns an action object used to lock the editor. 4815 * 4816 * @param {Object} lock Details about the post lock status, user, and nonce. 4817 * 4818 * @return {Object} Action object. 4819 */ 4820 4821 function updatePostLock(lock) { 4822 return { 4823 type: 'UPDATE_POST_LOCK', 4824 lock: lock 4825 }; 4826 } 4827 /** 4828 * Returns an action object used in signalling that the user has enabled the 4829 * publish sidebar. 4830 * 4831 * @return {Object} Action object 4832 */ 4833 4834 function enablePublishSidebar() { 4835 return { 4836 type: 'ENABLE_PUBLISH_SIDEBAR' 4837 }; 4838 } 4839 /** 4840 * Returns an action object used in signalling that the user has disabled the 4841 * publish sidebar. 4842 * 4843 * @return {Object} Action object 4844 */ 4845 4846 function disablePublishSidebar() { 4847 return { 4848 type: 'DISABLE_PUBLISH_SIDEBAR' 4849 }; 4850 } 4851 /** 4852 * Returns an action object used to signal that post saving is locked. 4853 * 4854 * @param {string} lockName The lock name. 4855 * 4856 * @example 4857 * ``` 4858 * const { subscribe } = wp.data; 4859 * 4860 * const initialPostStatus = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'status' ); 4861 * 4862 * // Only allow publishing posts that are set to a future date. 4863 * if ( 'publish' !== initialPostStatus ) { 4864 * 4865 * // Track locking. 4866 * let locked = false; 4867 * 4868 * // Watch for the publish event. 4869 * let unssubscribe = subscribe( () => { 4870 * const currentPostStatus = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'status' ); 4871 * if ( 'publish' !== currentPostStatus ) { 4872 * 4873 * // Compare the post date to the current date, lock the post if the date isn't in the future. 4874 * const postDate = new Date( wp.data.select( 'core/editor' ).getEditedPostAttribute( 'date' ) ); 4875 * const currentDate = new Date(); 4876 * if ( postDate.getTime() <= currentDate.getTime() ) { 4877 * if ( ! locked ) { 4878 * locked = true; 4879 * wp.data.dispatch( 'core/editor' ).lockPostSaving( 'futurelock' ); 4880 * } 4881 * } else { 4882 * if ( locked ) { 4883 * locked = false; 4884 * wp.data.dispatch( 'core/editor' ).unlockPostSaving( 'futurelock' ); 4885 * } 4886 * } 4887 * } 4888 * } ); 4889 * } 4890 * ``` 4891 * 4892 * @return {Object} Action object 4893 */ 4894 4895 function lockPostSaving(lockName) { 4896 return { 4897 type: 'LOCK_POST_SAVING', 4898 lockName: lockName 4899 }; 4900 } 4901 /** 4902 * Returns an action object used to signal that post saving is unlocked. 4903 * 4904 * @param {string} lockName The lock name. 4905 * 4906 * @example 4907 * ``` 4908 * // Unlock post saving with the lock key `mylock`: 4909 * wp.data.dispatch( 'core/editor' ).unlockPostSaving( 'mylock' ); 4910 * ``` 4911 * 4912 * @return {Object} Action object 4913 */ 4914 4915 function unlockPostSaving(lockName) { 4916 return { 4917 type: 'UNLOCK_POST_SAVING', 4918 lockName: lockName 4919 }; 4920 } 4921 /** 4922 * Returns an action object used to signal that post autosaving is locked. 4923 * 4924 * @param {string} lockName The lock name. 4925 * 4926 * @example 4927 * ``` 4928 * // Lock post autosaving with the lock key `mylock`: 4929 * wp.data.dispatch( 'core/editor' ).lockPostAutosaving( 'mylock' ); 4930 * ``` 4931 * 4932 * @return {Object} Action object 4933 */ 4934 4935 function lockPostAutosaving(lockName) { 4936 return { 4937 type: 'LOCK_POST_AUTOSAVING', 4938 lockName: lockName 4939 }; 4940 } 4941 /** 4942 * Returns an action object used to signal that post autosaving is unlocked. 4943 * 4944 * @param {string} lockName The lock name. 4945 * 4946 * @example 4947 * ``` 4948 * // Unlock post saving with the lock key `mylock`: 4949 * wp.data.dispatch( 'core/editor' ).unlockPostAutosaving( 'mylock' ); 4950 * ``` 4951 * 4952 * @return {Object} Action object 4953 */ 4954 4955 function unlockPostAutosaving(lockName) { 4956 return { 4957 type: 'UNLOCK_POST_AUTOSAVING', 4958 lockName: lockName 4959 }; 4960 } 4961 /** 4962 * Returns an action object used to signal that the blocks have been updated. 4963 * 4964 * @param {Array} blocks Block Array. 4965 * @param {?Object} options Optional options. 4966 * 4967 * @yield {Object} Action object 4968 */ 4969 4970 function actions_resetEditorBlocks(blocks) { 4971 var options, 4972 __unstableShouldCreateUndoLevel, 4973 selectionStart, 4974 selectionEnd, 4975 edits, 4976 _yield$select2, 4977 id, 4978 type, 4979 noChange, 4980 _args11 = arguments; 4981 4982 return external_this_regeneratorRuntime_default.a.wrap(function resetEditorBlocks$(_context10) { 4983 while (1) { 4984 switch (_context10.prev = _context10.next) { 4985 case 0: 4986 options = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : {}; 4987 __unstableShouldCreateUndoLevel = options.__unstableShouldCreateUndoLevel, selectionStart = options.selectionStart, selectionEnd = options.selectionEnd; 4988 edits = { 4989 blocks: blocks, 4990 selectionStart: selectionStart, 4991 selectionEnd: selectionEnd 4992 }; 4993 4994 if (!(__unstableShouldCreateUndoLevel !== false)) { 4995 _context10.next = 19; 4996 break; 4997 } 4998 4999 _context10.next = 6; 5000 return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); 5001 5002 case 6: 5003 _yield$select2 = _context10.sent; 5004 id = _yield$select2.id; 5005 type = _yield$select2.type; 5006 _context10.next = 11; 5007 return Object(external_this_wp_dataControls_["syncSelect"])('core', 'getEditedEntityRecord', 'postType', type, id); 5008 5009 case 11: 5010 _context10.t0 = _context10.sent.blocks; 5011 _context10.t1 = edits.blocks; 5012 noChange = _context10.t0 === _context10.t1; 5013 5014 if (!noChange) { 5015 _context10.next = 18; 5016 break; 5017 } 5018 5019 _context10.next = 17; 5020 return Object(external_this_wp_dataControls_["dispatch"])('core', '__unstableCreateUndoLevel', 'postType', type, id); 5021 5022 case 17: 5023 return _context10.abrupt("return", _context10.sent); 5024 5025 case 18: 5026 // We create a new function here on every persistent edit 5027 // to make sure the edit makes the post dirty and creates 5028 // a new undo level. 5029 edits.content = function (_ref2) { 5030 var _ref2$blocks = _ref2.blocks, 5031 blocksForSerialization = _ref2$blocks === void 0 ? [] : _ref2$blocks; 5032 return serialize_blocks(blocksForSerialization); 5033 }; 5034 5035 case 19: 5036 return _context10.delegateYield(actions_editPost(edits), "t2", 20); 5037 5038 case 20: 5039 case "end": 5040 return _context10.stop(); 5041 } 5042 } 5043 }, _marked10); 5044 } 5045 /* 5046 * Returns an action object used in signalling that the post editor settings have been updated. 5047 * 5048 * @param {Object} settings Updated settings 5049 * 5050 * @return {Object} Action object 5051 */ 5052 5053 function updateEditorSettings(settings) { 5054 return { 5055 type: 'UPDATE_EDITOR_SETTINGS', 5056 settings: settings 5057 }; 5058 } 5059 /** 5060 * Backward compatibility 5061 */ 5062 5063 var actions_getBlockEditorAction = function getBlockEditorAction(name) { 5064 return /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(function _callee() { 5065 var _len, 5066 args, 5067 _key, 5068 _args12 = arguments; 5069 5070 return external_this_regeneratorRuntime_default.a.wrap(function _callee$(_context11) { 5071 while (1) { 5072 switch (_context11.prev = _context11.next) { 5073 case 0: 5074 external_this_wp_deprecated_default()("`wp.data.dispatch( 'core/editor' )." + name + '`', { 5075 alternative: "`wp.data.dispatch( 'core/block-editor' )." + name + '`' 5076 }); 5077 5078 for (_len = _args12.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 5079 args[_key] = _args12[_key]; 5080 } 5081 5082 _context11.next = 4; 5083 return external_this_wp_dataControls_["dispatch"].apply(void 0, ['core/block-editor', name].concat(args)); 5084 5085 case 4: 5086 case "end": 5087 return _context11.stop(); 5088 } 5089 } 5090 }, _callee); 5091 }); 5092 }; 5093 /** 5094 * @see resetBlocks in core/block-editor store. 5095 */ 5096 5097 5098 var resetBlocks = actions_getBlockEditorAction('resetBlocks'); 5099 /** 5100 * @see receiveBlocks in core/block-editor store. 5101 */ 5102 5103 var receiveBlocks = actions_getBlockEditorAction('receiveBlocks'); 5104 /** 5105 * @see updateBlock in core/block-editor store. 5106 */ 5107 5108 var updateBlock = actions_getBlockEditorAction('updateBlock'); 5109 /** 5110 * @see updateBlockAttributes in core/block-editor store. 5111 */ 5112 5113 var updateBlockAttributes = actions_getBlockEditorAction('updateBlockAttributes'); 5114 /** 5115 * @see selectBlock in core/block-editor store. 5116 */ 5117 5118 var actions_selectBlock = actions_getBlockEditorAction('selectBlock'); 5119 /** 5120 * @see startMultiSelect in core/block-editor store. 5121 */ 5122 5123 var startMultiSelect = actions_getBlockEditorAction('startMultiSelect'); 5124 /** 5125 * @see stopMultiSelect in core/block-editor store. 5126 */ 5127 5128 var stopMultiSelect = actions_getBlockEditorAction('stopMultiSelect'); 5129 /** 5130 * @see multiSelect in core/block-editor store. 5131 */ 5132 5133 var multiSelect = actions_getBlockEditorAction('multiSelect'); 5134 /** 5135 * @see clearSelectedBlock in core/block-editor store. 5136 */ 5137 5138 var clearSelectedBlock = actions_getBlockEditorAction('clearSelectedBlock'); 5139 /** 5140 * @see toggleSelection in core/block-editor store. 5141 */ 5142 5143 var toggleSelection = actions_getBlockEditorAction('toggleSelection'); 5144 /** 5145 * @see replaceBlocks in core/block-editor store. 5146 */ 5147 5148 var actions_replaceBlocks = actions_getBlockEditorAction('replaceBlocks'); 5149 /** 5150 * @see replaceBlock in core/block-editor store. 5151 */ 5152 5153 var replaceBlock = actions_getBlockEditorAction('replaceBlock'); 5154 /** 5155 * @see moveBlocksDown in core/block-editor store. 5156 */ 5157 5158 var moveBlocksDown = actions_getBlockEditorAction('moveBlocksDown'); 5159 /** 5160 * @see moveBlocksUp in core/block-editor store. 5161 */ 5162 5163 var moveBlocksUp = actions_getBlockEditorAction('moveBlocksUp'); 5164 /** 5165 * @see moveBlockToPosition in core/block-editor store. 5166 */ 5167 5168 var moveBlockToPosition = actions_getBlockEditorAction('moveBlockToPosition'); 5169 /** 5170 * @see insertBlock in core/block-editor store. 5171 */ 5172 5173 var insertBlock = actions_getBlockEditorAction('insertBlock'); 5174 /** 5175 * @see insertBlocks in core/block-editor store. 5176 */ 5177 5178 var insertBlocks = actions_getBlockEditorAction('insertBlocks'); 5179 /** 5180 * @see showInsertionPoint in core/block-editor store. 5181 */ 5182 5183 var showInsertionPoint = actions_getBlockEditorAction('showInsertionPoint'); 5184 /** 5185 * @see hideInsertionPoint in core/block-editor store. 5186 */ 5187 5188 var hideInsertionPoint = actions_getBlockEditorAction('hideInsertionPoint'); 5189 /** 5190 * @see setTemplateValidity in core/block-editor store. 5191 */ 5192 5193 var setTemplateValidity = actions_getBlockEditorAction('setTemplateValidity'); 5194 /** 5195 * @see synchronizeTemplate in core/block-editor store. 5196 */ 5197 5198 var synchronizeTemplate = actions_getBlockEditorAction('synchronizeTemplate'); 5199 /** 5200 * @see mergeBlocks in core/block-editor store. 5201 */ 5202 5203 var mergeBlocks = actions_getBlockEditorAction('mergeBlocks'); 5204 /** 5205 * @see removeBlocks in core/block-editor store. 5206 */ 5207 5208 var removeBlocks = actions_getBlockEditorAction('removeBlocks'); 5209 /** 5210 * @see removeBlock in core/block-editor store. 5211 */ 5212 5213 var removeBlock = actions_getBlockEditorAction('removeBlock'); 5214 /** 5215 * @see toggleBlockMode in core/block-editor store. 5216 */ 5217 5218 var toggleBlockMode = actions_getBlockEditorAction('toggleBlockMode'); 5219 /** 5220 * @see startTyping in core/block-editor store. 5221 */ 5222 5223 var startTyping = actions_getBlockEditorAction('startTyping'); 5224 /** 5225 * @see stopTyping in core/block-editor store. 5226 */ 5227 5228 var stopTyping = actions_getBlockEditorAction('stopTyping'); 5229 /** 5230 * @see enterFormattedText in core/block-editor store. 5231 */ 5232 5233 var enterFormattedText = actions_getBlockEditorAction('enterFormattedText'); 5234 /** 5235 * @see exitFormattedText in core/block-editor store. 5236 */ 5237 5238 var exitFormattedText = actions_getBlockEditorAction('exitFormattedText'); 5239 /** 5240 * @see insertDefaultBlock in core/block-editor store. 5241 */ 5242 5243 var insertDefaultBlock = actions_getBlockEditorAction('insertDefaultBlock'); 5244 /** 5245 * @see updateBlockListSettings in core/block-editor store. 5246 */ 5247 5248 var updateBlockListSettings = actions_getBlockEditorAction('updateBlockListSettings'); 5249 5250 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/controls.js 5251 /** 5252 * Function returning a sessionStorage key to set or retrieve a given post's 5253 * automatic session backup. 5254 * 5255 * Keys are crucially prefixed with 'wp-autosave-' so that wp-login.php's 5256 * `loggedout` handler can clear sessionStorage of any user-private content. 5257 * 5258 * @see https://github.com/WordPress/wordpress-develop/blob/6dad32d2aed47e6c0cf2aee8410645f6d7aba6bd/src/wp-login.php#L103 5259 * 5260 * @param {string} postId Post ID. 5261 * @param {boolean} isPostNew Whether post new. 5262 * @return {string} sessionStorage key 5263 */ 5264 function postKey(postId, isPostNew) { 5265 return "wp-autosave-block-editor-post-".concat(isPostNew ? 'auto-draft' : postId); 5266 } 5267 5268 function localAutosaveGet(postId, isPostNew) { 5269 return window.sessionStorage.getItem(postKey(postId, isPostNew)); 5270 } 5271 function localAutosaveSet(postId, isPostNew, title, content, excerpt) { 5272 window.sessionStorage.setItem(postKey(postId, isPostNew), JSON.stringify({ 5273 post_title: title, 5274 content: content, 5275 excerpt: excerpt 5276 })); 5277 } 5278 function localAutosaveClear(postId, isPostNew) { 5279 window.sessionStorage.removeItem(postKey(postId, isPostNew)); 5280 } 5281 var controls = { 5282 LOCAL_AUTOSAVE_SET: function LOCAL_AUTOSAVE_SET(_ref) { 5283 var postId = _ref.postId, 5284 isPostNew = _ref.isPostNew, 5285 title = _ref.title, 5286 content = _ref.content, 5287 excerpt = _ref.excerpt; 5288 localAutosaveSet(postId, isPostNew, title, content, excerpt); 5289 } 5290 }; 5291 /* harmony default export */ var store_controls = (controls); 5292 5293 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/index.js 5294 5295 5296 function store_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 5297 5298 function store_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { store_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { store_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 5299 5300 /** 5301 * WordPress dependencies 5302 */ 5303 5304 5305 /** 5306 * Internal dependencies 5307 */ 5308 5309 5310 5311 5312 5313 5314 /** 5315 * Post editor data store configuration. 5316 * 5317 * @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#registerStore 5318 * 5319 * @type {Object} 5320 */ 5321 5322 var storeConfig = { 5323 reducer: reducer, 5324 selectors: selectors_namespaceObject, 5325 actions: actions_namespaceObject, 5326 controls: store_objectSpread(store_objectSpread({}, external_this_wp_dataControls_["controls"]), store_controls) 5327 }; 5328 var store = Object(external_this_wp_data_["registerStore"])(STORE_KEY, store_objectSpread(store_objectSpread({}, storeConfig), {}, { 5329 persist: ['preferences'] 5330 })); 5331 /* harmony default export */ var build_module_store = (store); 5332 5333 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js 5334 var esm_extends = __webpack_require__(8); 5335 5336 // EXTERNAL MODULE: external {"this":["wp","compose"]} 5337 var external_this_wp_compose_ = __webpack_require__(10); 5338 5339 // EXTERNAL MODULE: external {"this":["wp","hooks"]} 5340 var external_this_wp_hooks_ = __webpack_require__(33); 5341 5342 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/hooks/custom-sources-backwards-compatibility.js 5343 5344 5345 5346 5347 5348 5349 function custom_sources_backwards_compatibility_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 5350 5351 function custom_sources_backwards_compatibility_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { custom_sources_backwards_compatibility_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { custom_sources_backwards_compatibility_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 5352 5353 /** 5354 * External dependencies 5355 */ 5356 5357 /** 5358 * WordPress dependencies 5359 */ 5360 5361 5362 5363 5364 5365 5366 /** @typedef {import('@wordpress/compose').WPHigherOrderComponent} WPHigherOrderComponent */ 5367 5368 /** @typedef {import('@wordpress/blocks').WPBlockSettings} WPBlockSettings */ 5369 5370 /** 5371 * Object whose keys are the names of block attributes, where each value 5372 * represents the meta key to which the block attribute is intended to save. 5373 * 5374 * @see https://developer.wordpress.org/reference/functions/register_meta/ 5375 * 5376 * @typedef {Object<string,string>} WPMetaAttributeMapping 5377 */ 5378 5379 /** 5380 * Given a mapping of attribute names (meta source attributes) to their 5381 * associated meta key, returns a higher order component that overrides its 5382 * `attributes` and `setAttributes` props to sync any changes with the edited 5383 * post's meta keys. 5384 * 5385 * @param {WPMetaAttributeMapping} metaAttributes Meta attribute mapping. 5386 * 5387 * @return {WPHigherOrderComponent} Higher-order component. 5388 */ 5389 5390 var custom_sources_backwards_compatibility_createWithMetaAttributeSource = function createWithMetaAttributeSource(metaAttributes) { 5391 return Object(external_this_wp_compose_["createHigherOrderComponent"])(function (BlockEdit) { 5392 return function (_ref) { 5393 var attributes = _ref.attributes, 5394 _setAttributes = _ref.setAttributes, 5395 props = Object(objectWithoutProperties["a" /* default */])(_ref, ["attributes", "setAttributes"]); 5396 5397 var postType = Object(external_this_wp_data_["useSelect"])(function (select) { 5398 return select('core/editor').getCurrentPostType(); 5399 }, []); 5400 5401 var _useEntityProp = Object(external_this_wp_coreData_["useEntityProp"])('postType', postType, 'meta'), 5402 _useEntityProp2 = Object(slicedToArray["a" /* default */])(_useEntityProp, 2), 5403 meta = _useEntityProp2[0], 5404 setMeta = _useEntityProp2[1]; 5405 5406 var mergedAttributes = Object(external_this_wp_element_["useMemo"])(function () { 5407 return custom_sources_backwards_compatibility_objectSpread(custom_sources_backwards_compatibility_objectSpread({}, attributes), Object(external_this_lodash_["mapValues"])(metaAttributes, function (metaKey) { 5408 return meta[metaKey]; 5409 })); 5410 }, [attributes, meta]); 5411 return Object(external_this_wp_element_["createElement"])(BlockEdit, Object(esm_extends["a" /* default */])({ 5412 attributes: mergedAttributes, 5413 setAttributes: function setAttributes(nextAttributes) { 5414 var nextMeta = Object(external_this_lodash_["mapKeys"])( // Filter to intersection of keys between the updated 5415 // attributes and those with an associated meta key. 5416 Object(external_this_lodash_["pickBy"])(nextAttributes, function (value, key) { 5417 return metaAttributes[key]; 5418 }), // Rename the keys to the expected meta key name. 5419 function (value, attributeKey) { 5420 return metaAttributes[attributeKey]; 5421 }); 5422 5423 if (!Object(external_this_lodash_["isEmpty"])(nextMeta)) { 5424 setMeta(nextMeta); 5425 } 5426 5427 _setAttributes(nextAttributes); 5428 } 5429 }, props)); 5430 }; 5431 }, 'withMetaAttributeSource'); 5432 }; 5433 /** 5434 * Filters a registered block's settings to enhance a block's `edit` component 5435 * to upgrade meta-sourced attributes to use the post's meta entity property. 5436 * 5437 * @param {WPBlockSettings} settings Registered block settings. 5438 * 5439 * @return {WPBlockSettings} Filtered block settings. 5440 */ 5441 5442 5443 function shimAttributeSource(settings) { 5444 /** @type {WPMetaAttributeMapping} */ 5445 var metaAttributes = Object(external_this_lodash_["mapValues"])(Object(external_this_lodash_["pickBy"])(settings.attributes, { 5446 source: 'meta' 5447 }), 'meta'); 5448 5449 if (!Object(external_this_lodash_["isEmpty"])(metaAttributes)) { 5450 settings.edit = custom_sources_backwards_compatibility_createWithMetaAttributeSource(metaAttributes)(settings.edit); 5451 } 5452 5453 return settings; 5454 } 5455 5456 Object(external_this_wp_hooks_["addFilter"])('blocks.registerBlockType', 'core/editor/custom-sources-backwards-compatibility/shim-attribute-source', shimAttributeSource); // The above filter will only capture blocks registered after the filter was 5457 // added. There may already be blocks registered by this point, and those must 5458 // be updated to apply the shim. 5459 // 5460 // The following implementation achieves this, albeit with a couple caveats: 5461 // - Only blocks registered on the global store will be modified. 5462 // - The block settings are directly mutated, since there is currently no 5463 // mechanism to update an existing block registration. This is the reason for 5464 // `getBlockType` separate from `getBlockTypes`, since the latter returns a 5465 // _copy_ of the block registration (i.e. the mutation would not affect the 5466 // actual registered block settings). 5467 // 5468 // `getBlockTypes` or `getBlockType` implementation could change in the future 5469 // in regards to creating settings clones, but the corresponding end-to-end 5470 // tests for meta blocks should cover against any potential regressions. 5471 // 5472 // In the future, we could support updating block settings, at which point this 5473 // implementation could use that mechanism instead. 5474 5475 Object(external_this_wp_data_["select"])('core/blocks').getBlockTypes().map(function (_ref2) { 5476 var name = _ref2.name; 5477 return Object(external_this_wp_data_["select"])('core/blocks').getBlockType(name); 5478 }).forEach(shimAttributeSource); 5479 5480 // EXTERNAL MODULE: external {"this":["wp","apiFetch"]} 5481 var external_this_wp_apiFetch_ = __webpack_require__(47); 5482 var external_this_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_apiFetch_); 5483 5484 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autocompleters/user.js 5485 5486 5487 /** 5488 * WordPress dependencies 5489 */ 5490 5491 /** @typedef {import('@wordpress/components').WPCompleter} WPCompleter */ 5492 5493 /** 5494 * A user mentions completer. 5495 * 5496 * @type {WPCompleter} 5497 */ 5498 5499 /* harmony default export */ var autocompleters_user = ({ 5500 name: 'users', 5501 className: 'editor-autocompleters__user', 5502 triggerPrefix: '@', 5503 options: function options(search) { 5504 var payload = ''; 5505 5506 if (search) { 5507 payload = '?search=' + encodeURIComponent(search); 5508 } 5509 5510 return external_this_wp_apiFetch_default()({ 5511 path: '/wp/v2/users' + payload 5512 }); 5513 }, 5514 isDebounced: true, 5515 getOptionKeywords: function getOptionKeywords(user) { 5516 return [user.slug, user.name]; 5517 }, 5518 getOptionLabel: function getOptionLabel(user) { 5519 var avatar = user.avatar_urls && user.avatar_urls[24] ? Object(external_this_wp_element_["createElement"])("img", { 5520 key: "avatar", 5521 className: "editor-autocompleters__user-avatar", 5522 alt: "", 5523 src: user.avatar_urls[24] 5524 }) : Object(external_this_wp_element_["createElement"])("span", { 5525 className: "editor-autocompleters__no-avatar" 5526 }); 5527 return [avatar, Object(external_this_wp_element_["createElement"])("span", { 5528 key: "name", 5529 className: "editor-autocompleters__user-name" 5530 }, user.name), Object(external_this_wp_element_["createElement"])("span", { 5531 key: "slug", 5532 className: "editor-autocompleters__user-slug" 5533 }, user.slug)]; 5534 }, 5535 getOptionCompletion: function getOptionCompletion(user) { 5536 return "@".concat(user.slug); 5537 } 5538 }); 5539 5540 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/hooks/default-autocompleters.js 5541 /** 5542 * External dependencies 5543 */ 5544 5545 /** 5546 * WordPress dependencies 5547 */ 5548 5549 5550 /** 5551 * Internal dependencies 5552 */ 5553 5554 5555 5556 function setDefaultCompleters() { 5557 var completers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 5558 // Provide copies so filters may directly modify them. 5559 completers.push(Object(external_this_lodash_["clone"])(autocompleters_user)); 5560 return completers; 5561 } 5562 5563 Object(external_this_wp_hooks_["addFilter"])('editor.Autocomplete.completers', 'editor/autocompleters/set-default-completers', setDefaultCompleters); 5564 5565 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/hooks/index.js 5566 /** 5567 * Internal dependencies 5568 */ 5569 5570 5571 5572 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autocompleters/index.js 5573 5574 5575 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js 5576 var classCallCheck = __webpack_require__(21); 5577 5578 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js 5579 var createClass = __webpack_require__(22); 5580 5581 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js + 1 modules 5582 var inherits = __webpack_require__(23); 5583 5584 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js 5585 var possibleConstructorReturn = __webpack_require__(24); 5586 5587 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js 5588 var getPrototypeOf = __webpack_require__(19); 5589 5590 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autosave-monitor/index.js 5591 5592 5593 5594 5595 5596 5597 function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = Object(getPrototypeOf["a" /* default */])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = Object(getPrototypeOf["a" /* default */])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(possibleConstructorReturn["a" /* default */])(this, result); }; } 5598 5599 function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } 5600 5601 /** 5602 * WordPress dependencies 5603 */ 5604 5605 5606 5607 var autosave_monitor_AutosaveMonitor = /*#__PURE__*/function (_Component) { 5608 Object(inherits["a" /* default */])(AutosaveMonitor, _Component); 5609 5610 var _super = _createSuper(AutosaveMonitor); 5611 5612 function AutosaveMonitor(props) { 5613 var _this; 5614 5615 Object(classCallCheck["a" /* default */])(this, AutosaveMonitor); 5616 5617 _this = _super.call(this, props); 5618 _this.needsAutosave = !!(props.isDirty && props.isAutosaveable); 5619 return _this; 5620 } 5621 5622 Object(createClass["a" /* default */])(AutosaveMonitor, [{ 5623 key: "componentDidMount", 5624 value: function componentDidMount() { 5625 if (!this.props.disableIntervalChecks) { 5626 this.setAutosaveTimer(); 5627 } 5628 } 5629 }, { 5630 key: "componentDidUpdate", 5631 value: function componentDidUpdate(prevProps) { 5632 if (this.props.disableIntervalChecks && this.props.editsReference !== prevProps.editsReference) { 5633 this.props.autosave(); 5634 return; 5635 } 5636 5637 if (!this.props.isDirty && prevProps.isDirty) { 5638 this.needsAutosave = false; 5639 return; 5640 } 5641 5642 if (this.props.isAutosaving && !prevProps.isAutosaving) { 5643 this.needsAutosave = false; 5644 return; 5645 } 5646 5647 if (this.props.editsReference !== prevProps.editsReference) { 5648 this.needsAutosave = true; 5649 } 5650 } 5651 }, { 5652 key: "componentWillUnmount", 5653 value: function componentWillUnmount() { 5654 clearTimeout(this.timerId); 5655 } 5656 }, { 5657 key: "setAutosaveTimer", 5658 value: function setAutosaveTimer() { 5659 var _this2 = this; 5660 5661 var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.interval * 1000; 5662 this.timerId = setTimeout(function () { 5663 _this2.autosaveTimerHandler(); 5664 }, timeout); 5665 } 5666 }, { 5667 key: "autosaveTimerHandler", 5668 value: function autosaveTimerHandler() { 5669 if (!this.props.isAutosaveable) { 5670 this.setAutosaveTimer(1000); 5671 return; 5672 } 5673 5674 if (this.needsAutosave) { 5675 this.needsAutosave = false; 5676 this.props.autosave(); 5677 } 5678 5679 this.setAutosaveTimer(); 5680 } 5681 }, { 5682 key: "render", 5683 value: function render() { 5684 return null; 5685 } 5686 }]); 5687 5688 return AutosaveMonitor; 5689 }(external_this_wp_element_["Component"]); 5690 /* harmony default export */ var autosave_monitor = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, ownProps) { 5691 var _select = select('core'), 5692 getReferenceByDistinctEdits = _select.getReferenceByDistinctEdits; 5693 5694 var _select2 = select('core/editor'), 5695 isEditedPostDirty = _select2.isEditedPostDirty, 5696 isEditedPostAutosaveable = _select2.isEditedPostAutosaveable, 5697 isAutosavingPost = _select2.isAutosavingPost, 5698 getEditorSettings = _select2.getEditorSettings; 5699 5700 var _ownProps$interval = ownProps.interval, 5701 interval = _ownProps$interval === void 0 ? getEditorSettings().autosaveInterval : _ownProps$interval; 5702 return { 5703 editsReference: getReferenceByDistinctEdits(), 5704 isDirty: isEditedPostDirty(), 5705 isAutosaveable: isEditedPostAutosaveable(), 5706 isAutosaving: isAutosavingPost(), 5707 interval: interval 5708 }; 5709 }), Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps) { 5710 return { 5711 autosave: function autosave() { 5712 var _ownProps$autosave = ownProps.autosave, 5713 autosave = _ownProps$autosave === void 0 ? dispatch('core/editor').autosave : _ownProps$autosave; 5714 autosave(); 5715 } 5716 }; 5717 })])(autosave_monitor_AutosaveMonitor)); 5718 5719 // EXTERNAL MODULE: ./node_modules/classnames/index.js 5720 var classnames = __webpack_require__(9); 5721 var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); 5722 5723 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/document-outline/item.js 5724 5725 5726 /** 5727 * External dependencies 5728 */ 5729 5730 5731 var item_TableOfContentsItem = function TableOfContentsItem(_ref) { 5732 var children = _ref.children, 5733 isValid = _ref.isValid, 5734 level = _ref.level, 5735 href = _ref.href, 5736 onSelect = _ref.onSelect; 5737 return Object(external_this_wp_element_["createElement"])("li", { 5738 className: classnames_default()('document-outline__item', "is-".concat(level.toLowerCase()), { 5739 'is-invalid': !isValid 5740 }) 5741 }, Object(external_this_wp_element_["createElement"])("a", { 5742 href: href, 5743 className: "document-outline__button", 5744 onClick: onSelect 5745 }, Object(external_this_wp_element_["createElement"])("span", { 5746 className: "document-outline__emdash", 5747 "aria-hidden": "true" 5748 }), Object(external_this_wp_element_["createElement"])("strong", { 5749 className: "document-outline__level" 5750 }, level), Object(external_this_wp_element_["createElement"])("span", { 5751 className: "document-outline__item-content" 5752 }, children))); 5753 }; 5754 5755 /* harmony default export */ var document_outline_item = (item_TableOfContentsItem); 5756 5757 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/document-outline/index.js 5758 5759 5760 5761 function document_outline_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 5762 5763 function document_outline_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { document_outline_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { document_outline_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 5764 5765 /** 5766 * External dependencies 5767 */ 5768 5769 /** 5770 * WordPress dependencies 5771 */ 5772 5773 5774 5775 5776 5777 /** 5778 * Internal dependencies 5779 */ 5780 5781 5782 /** 5783 * Module constants 5784 */ 5785 5786 var emptyHeadingContent = Object(external_this_wp_element_["createElement"])("em", null, Object(external_this_wp_i18n_["__"])('(Empty heading)')); 5787 var incorrectLevelContent = [Object(external_this_wp_element_["createElement"])("br", { 5788 key: "incorrect-break" 5789 }), Object(external_this_wp_element_["createElement"])("em", { 5790 key: "incorrect-message" 5791 }, Object(external_this_wp_i18n_["__"])('(Incorrect heading level)'))]; 5792 var singleH1Headings = [Object(external_this_wp_element_["createElement"])("br", { 5793 key: "incorrect-break-h1" 5794 }), Object(external_this_wp_element_["createElement"])("em", { 5795 key: "incorrect-message-h1" 5796 }, Object(external_this_wp_i18n_["__"])('(Your theme may already use a H1 for the post title)'))]; 5797 var multipleH1Headings = [Object(external_this_wp_element_["createElement"])("br", { 5798 key: "incorrect-break-multiple-h1" 5799 }), Object(external_this_wp_element_["createElement"])("em", { 5800 key: "incorrect-message-multiple-h1" 5801 }, Object(external_this_wp_i18n_["__"])('(Multiple H1 headings are not recommended)'))]; 5802 /** 5803 * Returns an array of heading blocks enhanced with the following properties: 5804 * level - An integer with the heading level. 5805 * isEmpty - Flag indicating if the heading has no content. 5806 * 5807 * @param {?Array} blocks An array of blocks. 5808 * 5809 * @return {Array} An array of heading blocks enhanced with the properties described above. 5810 */ 5811 5812 var document_outline_computeOutlineHeadings = function computeOutlineHeadings() { 5813 var blocks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 5814 return Object(external_this_lodash_["flatMap"])(blocks, function () { 5815 var block = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 5816 5817 if (block.name === 'core/heading') { 5818 return document_outline_objectSpread(document_outline_objectSpread({}, block), {}, { 5819 level: block.attributes.level, 5820 isEmpty: isEmptyHeading(block) 5821 }); 5822 } 5823 5824 return computeOutlineHeadings(block.innerBlocks); 5825 }); 5826 }; 5827 5828 var isEmptyHeading = function isEmptyHeading(heading) { 5829 return !heading.attributes.content || heading.attributes.content.length === 0; 5830 }; 5831 5832 var document_outline_DocumentOutline = function DocumentOutline(_ref) { 5833 var _ref$blocks = _ref.blocks, 5834 blocks = _ref$blocks === void 0 ? [] : _ref$blocks, 5835 title = _ref.title, 5836 onSelect = _ref.onSelect, 5837 isTitleSupported = _ref.isTitleSupported, 5838 hasOutlineItemsDisabled = _ref.hasOutlineItemsDisabled; 5839 var headings = document_outline_computeOutlineHeadings(blocks); 5840 5841 if (headings.length < 1) { 5842 return null; 5843 } 5844 5845 var prevHeadingLevel = 1; // Not great but it's the simplest way to locate the title right now. 5846 5847 var titleNode = document.querySelector('.editor-post-title__input'); 5848 var hasTitle = isTitleSupported && title && titleNode; 5849 var countByLevel = Object(external_this_lodash_["countBy"])(headings, 'level'); 5850 var hasMultipleH1 = countByLevel[1] > 1; 5851 return Object(external_this_wp_element_["createElement"])("div", { 5852 className: "document-outline" 5853 }, Object(external_this_wp_element_["createElement"])("ul", null, hasTitle && Object(external_this_wp_element_["createElement"])(document_outline_item, { 5854 level: Object(external_this_wp_i18n_["__"])('Title'), 5855 isValid: true, 5856 onSelect: onSelect, 5857 href: "#".concat(titleNode.id), 5858 isDisabled: hasOutlineItemsDisabled 5859 }, title), headings.map(function (item, index) { 5860 // Headings remain the same, go up by one, or down by any amount. 5861 // Otherwise there are missing levels. 5862 var isIncorrectLevel = item.level > prevHeadingLevel + 1; 5863 var isValid = !item.isEmpty && !isIncorrectLevel && !!item.level && (item.level !== 1 || !hasMultipleH1 && !hasTitle); 5864 prevHeadingLevel = item.level; 5865 return Object(external_this_wp_element_["createElement"])(document_outline_item, { 5866 key: index, 5867 level: "H".concat(item.level), 5868 isValid: isValid, 5869 isDisabled: hasOutlineItemsDisabled, 5870 href: "#block-".concat(item.clientId), 5871 onSelect: onSelect 5872 }, item.isEmpty ? emptyHeadingContent : Object(external_this_wp_richText_["getTextContent"])(Object(external_this_wp_richText_["create"])({ 5873 html: item.attributes.content 5874 })), isIncorrectLevel && incorrectLevelContent, item.level === 1 && hasMultipleH1 && multipleH1Headings, hasTitle && item.level === 1 && !hasMultipleH1 && singleH1Headings); 5875 }))); 5876 }; 5877 /* harmony default export */ var document_outline = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) { 5878 var _select = select('core/block-editor'), 5879 getBlocks = _select.getBlocks; 5880 5881 var _select2 = select('core/editor'), 5882 getEditedPostAttribute = _select2.getEditedPostAttribute; 5883 5884 var _select3 = select('core'), 5885 getPostType = _select3.getPostType; 5886 5887 var postType = getPostType(getEditedPostAttribute('type')); 5888 return { 5889 title: getEditedPostAttribute('title'), 5890 blocks: getBlocks(), 5891 isTitleSupported: Object(external_this_lodash_["get"])(postType, ['supports', 'title'], false) 5892 }; 5893 }))(document_outline_DocumentOutline)); 5894 5895 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/document-outline/check.js 5896 /** 5897 * External dependencies 5898 */ 5899 5900 /** 5901 * WordPress dependencies 5902 */ 5903 5904 5905 5906 function DocumentOutlineCheck(_ref) { 5907 var blocks = _ref.blocks, 5908 children = _ref.children; 5909 var headings = Object(external_this_lodash_["filter"])(blocks, function (block) { 5910 return block.name === 'core/heading'; 5911 }); 5912 5913 if (headings.length < 1) { 5914 return null; 5915 } 5916 5917 return children; 5918 } 5919 5920 /* harmony default export */ var check = (Object(external_this_wp_data_["withSelect"])(function (select) { 5921 return { 5922 blocks: select('core/block-editor').getBlocks() 5923 }; 5924 })(DocumentOutlineCheck)); 5925 5926 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/save-shortcut.js 5927 /** 5928 * WordPress dependencies 5929 */ 5930 5931 5932 5933 5934 function SaveShortcut(_ref) { 5935 var resetBlocksOnSave = _ref.resetBlocksOnSave; 5936 5937 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/editor'), 5938 resetEditorBlocks = _useDispatch.resetEditorBlocks, 5939 savePost = _useDispatch.savePost; 5940 5941 var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) { 5942 var _select = select('core/editor'), 5943 _isEditedPostDirty = _select.isEditedPostDirty, 5944 _getPostEdits = _select.getPostEdits; 5945 5946 return { 5947 isEditedPostDirty: _isEditedPostDirty, 5948 getPostEdits: _getPostEdits 5949 }; 5950 }, []), 5951 isEditedPostDirty = _useSelect.isEditedPostDirty, 5952 getPostEdits = _useSelect.getPostEdits; 5953 5954 Object(external_this_wp_keyboardShortcuts_["useShortcut"])('core/editor/save', function (event) { 5955 event.preventDefault(); // TODO: This should be handled in the `savePost` effect in 5956 // considering `isSaveable`. See note on `isEditedPostSaveable` 5957 // selector about dirtiness and meta-boxes. 5958 // 5959 // See: `isEditedPostSaveable` 5960 5961 if (!isEditedPostDirty()) { 5962 return; 5963 } // The text editor requires that editor blocks are updated for a 5964 // save to work correctly. Usually this happens when the textarea 5965 // for the code editors blurs, but the shortcut can be used without 5966 // blurring the textarea. 5967 5968 5969 if (resetBlocksOnSave) { 5970 var postEdits = getPostEdits(); 5971 5972 if (postEdits.content && typeof postEdits.content === 'string') { 5973 var blocks = Object(external_this_wp_blocks_["parse"])(postEdits.content); 5974 resetEditorBlocks(blocks); 5975 } 5976 } 5977 5978 savePost(); 5979 }, { 5980 bindGlobal: true 5981 }); 5982 return null; 5983 } 5984 5985 /* harmony default export */ var save_shortcut = (SaveShortcut); 5986 5987 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/visual-editor-shortcuts.js 5988 5989 5990 /** 5991 * WordPress dependencies 5992 */ 5993 5994 5995 5996 5997 /** 5998 * Internal dependencies 5999 */ 6000 6001 6002 6003 function VisualEditorGlobalKeyboardShortcuts() { 6004 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/editor'), 6005 redo = _useDispatch.redo, 6006 undo = _useDispatch.undo; 6007 6008 Object(external_this_wp_keyboardShortcuts_["useShortcut"])('core/editor/undo', function (event) { 6009 undo(); 6010 event.preventDefault(); 6011 }, { 6012 bindGlobal: true 6013 }); 6014 Object(external_this_wp_keyboardShortcuts_["useShortcut"])('core/editor/redo', function (event) { 6015 redo(); 6016 event.preventDefault(); 6017 }, { 6018 bindGlobal: true 6019 }); 6020 return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["BlockEditorKeyboardShortcuts"], null), Object(external_this_wp_element_["createElement"])(save_shortcut, null)); 6021 } 6022 6023 /* harmony default export */ var visual_editor_shortcuts = (VisualEditorGlobalKeyboardShortcuts); 6024 function EditorGlobalKeyboardShortcuts() { 6025 external_this_wp_deprecated_default()('EditorGlobalKeyboardShortcuts', { 6026 alternative: 'VisualEditorGlobalKeyboardShortcuts', 6027 plugin: 'Gutenberg' 6028 }); 6029 return Object(external_this_wp_element_["createElement"])(VisualEditorGlobalKeyboardShortcuts, null); 6030 } 6031 6032 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/text-editor-shortcuts.js 6033 6034 6035 /** 6036 * Internal dependencies 6037 */ 6038 6039 function TextEditorGlobalKeyboardShortcuts() { 6040 return Object(external_this_wp_element_["createElement"])(save_shortcut, { 6041 resetBlocksOnSave: true 6042 }); 6043 } 6044 6045 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/register-shortcuts.js 6046 6047 6048 /** 6049 * WordPress dependencies 6050 */ 6051 6052 6053 6054 6055 6056 function EditorKeyboardShortcutsRegister() { 6057 // Registering the shortcuts 6058 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/keyboard-shortcuts'), 6059 registerShortcut = _useDispatch.registerShortcut; 6060 6061 Object(external_this_wp_element_["useEffect"])(function () { 6062 registerShortcut({ 6063 name: 'core/editor/save', 6064 category: 'global', 6065 description: Object(external_this_wp_i18n_["__"])('Save your changes.'), 6066 keyCombination: { 6067 modifier: 'primary', 6068 character: 's' 6069 } 6070 }); 6071 registerShortcut({ 6072 name: 'core/editor/undo', 6073 category: 'global', 6074 description: Object(external_this_wp_i18n_["__"])('Undo your last changes.'), 6075 keyCombination: { 6076 modifier: 'primary', 6077 character: 'z' 6078 } 6079 }); 6080 registerShortcut({ 6081 name: 'core/editor/redo', 6082 category: 'global', 6083 description: Object(external_this_wp_i18n_["__"])('Redo your last undo.'), 6084 keyCombination: { 6085 modifier: 'primaryShift', 6086 character: 'z' 6087 } 6088 }); 6089 }, [registerShortcut]); 6090 return Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["BlockEditorKeyboardShortcuts"].Register, null); 6091 } 6092 6093 /* harmony default export */ var register_shortcuts = (EditorKeyboardShortcutsRegister); 6094 6095 // EXTERNAL MODULE: external {"this":["wp","components"]} 6096 var external_this_wp_components_ = __webpack_require__(3); 6097 6098 // EXTERNAL MODULE: external {"this":["wp","keycodes"]} 6099 var external_this_wp_keycodes_ = __webpack_require__(18); 6100 6101 // EXTERNAL MODULE: external {"this":["wp","primitives"]} 6102 var external_this_wp_primitives_ = __webpack_require__(7); 6103 6104 // CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/redo.js 6105 6106 6107 /** 6108 * WordPress dependencies 6109 */ 6110 6111 var redo_redo = Object(external_this_wp_element_["createElement"])(external_this_wp_primitives_["SVG"], { 6112 xmlns: "http://www.w3.org/2000/svg", 6113 viewBox: "0 0 24 24" 6114 }, Object(external_this_wp_element_["createElement"])(external_this_wp_primitives_["Path"], { 6115 d: "M15.6 6.5l-1.1 1 2.9 3.3H8c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.3-.5h9.2L14.5 15l1.1 1.1 4.6-4.6-4.6-5z" 6116 })); 6117 /* harmony default export */ var library_redo = (redo_redo); 6118 6119 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-history/redo.js 6120 6121 6122 6123 /** 6124 * WordPress dependencies 6125 */ 6126 6127 6128 6129 6130 6131 6132 6133 function EditorHistoryRedo(props, ref) { 6134 var hasRedo = Object(external_this_wp_data_["useSelect"])(function (select) { 6135 return select('core/editor').hasEditorRedo(); 6136 }, []); 6137 6138 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/editor'), 6139 redo = _useDispatch.redo; 6140 6141 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], Object(esm_extends["a" /* default */])({}, props, { 6142 ref: ref, 6143 icon: library_redo 6144 /* translators: button label text should, if possible, be under 16 characters. */ 6145 , 6146 label: Object(external_this_wp_i18n_["__"])('Redo'), 6147 shortcut: external_this_wp_keycodes_["displayShortcut"].primaryShift('z') // If there are no redo levels we don't want to actually disable this 6148 // button, because it will remove focus for keyboard users. 6149 // See: https://github.com/WordPress/gutenberg/issues/3486 6150 , 6151 "aria-disabled": !hasRedo, 6152 onClick: hasRedo ? redo : undefined, 6153 className: "editor-history__redo" 6154 })); 6155 } 6156 6157 /* harmony default export */ var editor_history_redo = (Object(external_this_wp_element_["forwardRef"])(EditorHistoryRedo)); 6158 6159 // CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/undo.js 6160 6161 6162 /** 6163 * WordPress dependencies 6164 */ 6165 6166 var undo_undo = Object(external_this_wp_element_["createElement"])(external_this_wp_primitives_["SVG"], { 6167 xmlns: "http://www.w3.org/2000/svg", 6168 viewBox: "0 0 24 24" 6169 }, Object(external_this_wp_element_["createElement"])(external_this_wp_primitives_["Path"], { 6170 d: "M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z" 6171 })); 6172 /* harmony default export */ var library_undo = (undo_undo); 6173 6174 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-history/undo.js 6175 6176 6177 6178 /** 6179 * WordPress dependencies 6180 */ 6181 6182 6183 6184 6185 6186 6187 6188 function EditorHistoryUndo(props, ref) { 6189 var hasUndo = Object(external_this_wp_data_["useSelect"])(function (select) { 6190 return select('core/editor').hasEditorUndo(); 6191 }, []); 6192 6193 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/editor'), 6194 undo = _useDispatch.undo; 6195 6196 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], Object(esm_extends["a" /* default */])({}, props, { 6197 ref: ref, 6198 icon: library_undo 6199 /* translators: button label text should, if possible, be under 16 characters. */ 6200 , 6201 label: Object(external_this_wp_i18n_["__"])('Undo'), 6202 shortcut: external_this_wp_keycodes_["displayShortcut"].primary('z') // If there are no undo levels we don't want to actually disable this 6203 // button, because it will remove focus for keyboard users. 6204 // See: https://github.com/WordPress/gutenberg/issues/3486 6205 , 6206 "aria-disabled": !hasUndo, 6207 onClick: hasUndo ? undo : undefined, 6208 className: "editor-history__undo" 6209 })); 6210 } 6211 6212 /* harmony default export */ var editor_history_undo = (Object(external_this_wp_element_["forwardRef"])(EditorHistoryUndo)); 6213 6214 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/template-validation-notice/index.js 6215 6216 6217 6218 /** 6219 * WordPress dependencies 6220 */ 6221 6222 6223 6224 6225 6226 function TemplateValidationNotice(_ref) { 6227 var isValid = _ref.isValid, 6228 props = Object(objectWithoutProperties["a" /* default */])(_ref, ["isValid"]); 6229 6230 if (isValid) { 6231 return null; 6232 } 6233 6234 var confirmSynchronization = function confirmSynchronization() { 6235 if ( // eslint-disable-next-line no-alert 6236 window.confirm(Object(external_this_wp_i18n_["__"])('Resetting the template may result in loss of content, do you want to continue?'))) { 6237 props.synchronizeTemplate(); 6238 } 6239 }; 6240 6241 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Notice"], { 6242 className: "editor-template-validation-notice", 6243 isDismissible: false, 6244 status: "warning", 6245 actions: [{ 6246 label: Object(external_this_wp_i18n_["__"])('Keep it as is'), 6247 onClick: props.resetTemplateValidity 6248 }, { 6249 label: Object(external_this_wp_i18n_["__"])('Reset the template'), 6250 onClick: confirmSynchronization, 6251 isPrimary: true 6252 }] 6253 }, Object(external_this_wp_i18n_["__"])('The content of your post doesn’t match the template assigned to your post type.')); 6254 } 6255 6256 /* harmony default export */ var template_validation_notice = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { 6257 return { 6258 isValid: select('core/block-editor').isValidTemplate() 6259 }; 6260 }), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { 6261 var _dispatch = dispatch('core/block-editor'), 6262 setTemplateValidity = _dispatch.setTemplateValidity, 6263 synchronizeTemplate = _dispatch.synchronizeTemplate; 6264 6265 return { 6266 resetTemplateValidity: function resetTemplateValidity() { 6267 return setTemplateValidity(true); 6268 }, 6269 synchronizeTemplate: synchronizeTemplate 6270 }; 6271 })])(TemplateValidationNotice)); 6272 6273 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-notices/index.js 6274 6275 6276 /** 6277 * External dependencies 6278 */ 6279 6280 /** 6281 * WordPress dependencies 6282 */ 6283 6284 6285 6286 6287 /** 6288 * Internal dependencies 6289 */ 6290 6291 6292 function EditorNotices(_ref) { 6293 var notices = _ref.notices, 6294 onRemove = _ref.onRemove; 6295 var dismissibleNotices = Object(external_this_lodash_["filter"])(notices, { 6296 isDismissible: true, 6297 type: 'default' 6298 }); 6299 var nonDismissibleNotices = Object(external_this_lodash_["filter"])(notices, { 6300 isDismissible: false, 6301 type: 'default' 6302 }); 6303 var snackbarNotices = Object(external_this_lodash_["filter"])(notices, { 6304 type: 'snackbar' 6305 }); 6306 return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["NoticeList"], { 6307 notices: nonDismissibleNotices, 6308 className: "components-editor-notices__pinned" 6309 }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["NoticeList"], { 6310 notices: dismissibleNotices, 6311 className: "components-editor-notices__dismissible", 6312 onRemove: onRemove 6313 }, Object(external_this_wp_element_["createElement"])(template_validation_notice, null)), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SnackbarList"], { 6314 notices: snackbarNotices, 6315 className: "components-editor-notices__snackbar", 6316 onRemove: onRemove 6317 })); 6318 } 6319 /* harmony default export */ var editor_notices = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { 6320 return { 6321 notices: select('core/notices').getNotices() 6322 }; 6323 }), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { 6324 return { 6325 onRemove: dispatch('core/notices').removeNotice 6326 }; 6327 })])(EditorNotices)); 6328 6329 // EXTERNAL MODULE: ./node_modules/@wordpress/icons/build-module/library/close.js 6330 var library_close = __webpack_require__(160); 6331 6332 // EXTERNAL MODULE: ./node_modules/@wordpress/icons/build-module/library/layout.js 6333 var layout = __webpack_require__(319); 6334 6335 // CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/page.js 6336 6337 6338 /** 6339 * WordPress dependencies 6340 */ 6341 6342 var page_page = Object(external_this_wp_element_["createElement"])(external_this_wp_primitives_["SVG"], { 6343 xmlns: "http://www.w3.org/2000/svg", 6344 viewBox: "0 0 24 24" 6345 }, Object(external_this_wp_element_["createElement"])(external_this_wp_primitives_["Path"], { 6346 d: "M7 5.5h10a.5.5 0 01.5.5v12a.5.5 0 01-.5.5H7a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM17 4H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V6a2 2 0 00-2-2zm-1 3.75H8v1.5h8v-1.5zM8 11h8v1.5H8V11zm6 3.25H8v1.5h6v-1.5z" 6347 })); 6348 /* harmony default export */ var library_page = (page_page); 6349 6350 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/entities-saved-states/entity-record-item.js 6351 6352 6353 /** 6354 * WordPress dependencies 6355 */ 6356 6357 6358 6359 6360 function EntityRecordItem(_ref) { 6361 var record = _ref.record, 6362 checked = _ref.checked, 6363 onChange = _ref.onChange, 6364 closePanel = _ref.closePanel; 6365 var name = record.name, 6366 kind = record.kind, 6367 title = record.title, 6368 key = record.key; 6369 var parentBlockId = Object(external_this_wp_data_["useSelect"])(function (select) { 6370 var _blocks$; 6371 6372 // Get entity's blocks. 6373 var _select$getEditedEnti = select('core').getEditedEntityRecord(kind, name, key), 6374 _select$getEditedEnti2 = _select$getEditedEnti.blocks, 6375 blocks = _select$getEditedEnti2 === void 0 ? [] : _select$getEditedEnti2; // Get parents of the entity's first block. 6376 6377 6378 var parents = select('core/block-editor').getBlockParents((_blocks$ = blocks[0]) === null || _blocks$ === void 0 ? void 0 : _blocks$.clientId); // Return closest parent block's clientId. 6379 6380 return parents[parents.length - 1]; 6381 }, []); 6382 var isSelected = Object(external_this_wp_data_["useSelect"])(function (select) { 6383 var selectedBlockId = select('core/block-editor').getSelectedBlockClientId(); 6384 return selectedBlockId === parentBlockId; 6385 }, [parentBlockId]); 6386 var isSelectedText = isSelected ? Object(external_this_wp_i18n_["__"])('Selected') : Object(external_this_wp_i18n_["__"])('Select'); 6387 6388 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/block-editor'), 6389 selectBlock = _useDispatch.selectBlock; 6390 6391 var selectParentBlock = Object(external_this_wp_element_["useCallback"])(function () { 6392 return selectBlock(parentBlockId); 6393 }, [parentBlockId]); 6394 var selectAndDismiss = Object(external_this_wp_element_["useCallback"])(function () { 6395 selectBlock(parentBlockId); 6396 closePanel(); 6397 }, [parentBlockId]); 6398 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelRow"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["CheckboxControl"], { 6399 label: Object(external_this_wp_element_["createElement"])("strong", null, title || Object(external_this_wp_i18n_["__"])('Untitled')), 6400 checked: checked, 6401 onChange: onChange 6402 }), parentBlockId ? Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { 6403 onClick: selectParentBlock, 6404 className: "entities-saved-states__find-entity", 6405 disabled: isSelected 6406 }, isSelectedText), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { 6407 onClick: selectAndDismiss, 6408 className: "entities-saved-states__find-entity-small", 6409 disabled: isSelected 6410 }, isSelectedText)) : null); 6411 } 6412 6413 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/entities-saved-states/entity-type-list.js 6414 6415 6416 /** 6417 * External dependencies 6418 */ 6419 6420 /** 6421 * WordPress dependencies 6422 */ 6423 6424 6425 6426 6427 /** 6428 * Internal dependencies 6429 */ 6430 6431 6432 var ENTITY_NAME_ICONS = { 6433 site: layout["a" /* default */], 6434 page: library_page 6435 }; 6436 function EntityTypeList(_ref) { 6437 var list = _ref.list, 6438 unselectedEntities = _ref.unselectedEntities, 6439 setUnselectedEntities = _ref.setUnselectedEntities, 6440 closePanel = _ref.closePanel; 6441 var firstRecord = list[0]; 6442 var entity = Object(external_this_wp_data_["useSelect"])(function (select) { 6443 return select('core').getEntity(firstRecord.kind, firstRecord.name); 6444 }, [firstRecord.kind, firstRecord.name]); // Set icon based on type of entity. 6445 6446 var name = firstRecord.name; 6447 var icon = ENTITY_NAME_ICONS[name]; 6448 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], { 6449 title: entity.label, 6450 initialOpen: true, 6451 icon: icon 6452 }, list.map(function (record) { 6453 return Object(external_this_wp_element_["createElement"])(EntityRecordItem, { 6454 key: record.key || 'site', 6455 record: record, 6456 checked: !Object(external_this_lodash_["some"])(unselectedEntities, function (elt) { 6457 return elt.kind === record.kind && elt.name === record.name && elt.key === record.key; 6458 }), 6459 onChange: function onChange(value) { 6460 return setUnselectedEntities(record, value); 6461 }, 6462 closePanel: closePanel 6463 }); 6464 })); 6465 } 6466 6467 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/entities-saved-states/index.js 6468 6469 6470 6471 6472 /** 6473 * External dependencies 6474 */ 6475 6476 /** 6477 * WordPress dependencies 6478 */ 6479 6480 6481 6482 6483 6484 6485 /** 6486 * Internal dependencies 6487 */ 6488 6489 6490 var ENTITY_NAMES = { 6491 wp_template_part: function wp_template_part(number) { 6492 return Object(external_this_wp_i18n_["_n"])('template part', 'template parts', number); 6493 }, 6494 wp_template: function wp_template(number) { 6495 return Object(external_this_wp_i18n_["_n"])('template', 'templates', number); 6496 }, 6497 post: function post(number) { 6498 return Object(external_this_wp_i18n_["_n"])('post', 'posts', number); 6499 }, 6500 page: function page(number) { 6501 return Object(external_this_wp_i18n_["_n"])('page', 'pages', number); 6502 }, 6503 site: function site(number) { 6504 return Object(external_this_wp_i18n_["_n"])('site', 'sites', number); 6505 } 6506 }; 6507 var PLACEHOLDER_PHRASES = { 6508 // 0 is a back up, but should never be observed. 6509 0: Object(external_this_wp_i18n_["__"])('There are no changes.'), 6510 6511 /* translators: placeholders represent pre-translated singular/plural entity names (page, post, template, site, etc.) */ 6512 1: Object(external_this_wp_i18n_["__"])('Changes have been made to your %s.'), 6513 6514 /* translators: placeholders represent pre-translated singular/plural entity names (page, post, template, site, etc.) */ 6515 2: Object(external_this_wp_i18n_["__"])('Changes have been made to your %1$s and %2$s.'), 6516 6517 /* translators: placeholders represent pre-translated singular/plural entity names (page, post, template, site, etc.) */ 6518 3: Object(external_this_wp_i18n_["__"])('Changes have been made to your %1$s, %2$s, and %3$s.'), 6519 6520 /* translators: placeholders represent pre-translated singular/plural entity names (page, post, template, site, etc.) */ 6521 4: Object(external_this_wp_i18n_["__"])('Changes have been made to your %1$s, %2$s, %3$s, and %4$s.'), 6522 6523 /* translators: placeholders represent pre-translated singular/plural entity names (page, post, template, site, etc.) */ 6524 5: Object(external_this_wp_i18n_["__"])('Changes have been made to your %1$s, %2$s, %3$s, %4$s, and %5$s.') 6525 }; 6526 function EntitiesSavedStates(_ref) { 6527 var isOpen = _ref.isOpen, 6528 close = _ref.close; 6529 6530 var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) { 6531 return { 6532 dirtyEntityRecords: select('core').__experimentalGetDirtyEntityRecords() 6533 }; 6534 }, []), 6535 dirtyEntityRecords = _useSelect.dirtyEntityRecords; 6536 6537 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core'), 6538 saveEditedEntityRecord = _useDispatch.saveEditedEntityRecord; // To group entities by type. 6539 6540 6541 var partitionedSavables = Object.values(Object(external_this_lodash_["groupBy"])(dirtyEntityRecords, 'name')); // Get labels for text-prompt phrase. 6542 6543 var entityNamesForPrompt = []; 6544 partitionedSavables.forEach(function (list) { 6545 if (ENTITY_NAMES[list[0].name]) { 6546 entityNamesForPrompt.push(ENTITY_NAMES[list[0].name](list.length)); 6547 } 6548 }); // Get text-prompt phrase based on number of entity types changed. 6549 6550 var placeholderPhrase = PLACEHOLDER_PHRASES[entityNamesForPrompt.length] || // Fallback for edge case that should not be observed (more than 5 entity types edited). 6551 Object(external_this_wp_i18n_["__"])('Changes have been made to multiple entity types.'); // eslint-disable-next-line @wordpress/valid-sprintf 6552 6553 6554 var promptPhrase = external_this_wp_i18n_["sprintf"].apply(void 0, [placeholderPhrase].concat(entityNamesForPrompt)); // Unchecked entities to be ignored by save function. 6555 6556 var _useState = Object(external_this_wp_element_["useState"])([]), 6557 _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2), 6558 unselectedEntities = _useState2[0], 6559 _setUnselectedEntities = _useState2[1]; 6560 6561 var setUnselectedEntities = function setUnselectedEntities(_ref2, checked) { 6562 var kind = _ref2.kind, 6563 name = _ref2.name, 6564 key = _ref2.key; 6565 6566 if (checked) { 6567 _setUnselectedEntities(unselectedEntities.filter(function (elt) { 6568 return elt.kind !== kind || elt.name !== name || elt.key !== key; 6569 })); 6570 } else { 6571 _setUnselectedEntities([].concat(Object(toConsumableArray["a" /* default */])(unselectedEntities), [{ 6572 kind: kind, 6573 name: name, 6574 key: key 6575 }])); 6576 } 6577 }; 6578 6579 var saveCheckedEntities = function saveCheckedEntities() { 6580 var entitiesToSave = dirtyEntityRecords.filter(function (_ref3) { 6581 var kind = _ref3.kind, 6582 name = _ref3.name, 6583 key = _ref3.key; 6584 return !Object(external_this_lodash_["some"])(unselectedEntities, function (elt) { 6585 return elt.kind === kind && elt.name === name && elt.key === key; 6586 }); 6587 }); 6588 close(entitiesToSave); 6589 entitiesToSave.forEach(function (_ref4) { 6590 var kind = _ref4.kind, 6591 name = _ref4.name, 6592 key = _ref4.key; 6593 saveEditedEntityRecord(kind, name, key); 6594 }); 6595 }; 6596 6597 var _useState3 = Object(external_this_wp_element_["useState"])(false), 6598 _useState4 = Object(slicedToArray["a" /* default */])(_useState3, 2), 6599 isReviewing = _useState4[0], 6600 setIsReviewing = _useState4[1]; 6601 6602 var toggleIsReviewing = function toggleIsReviewing() { 6603 return setIsReviewing(function (value) { 6604 return !value; 6605 }); 6606 }; // Explicitly define this with no argument passed. Using `close` on 6607 // its own will use the event object in place of the expected saved entities. 6608 6609 6610 var dismissPanel = Object(external_this_wp_element_["useCallback"])(function () { 6611 return close(); 6612 }, [close]); 6613 return isOpen ? Object(external_this_wp_element_["createElement"])("div", { 6614 className: "entities-saved-states__panel" 6615 }, Object(external_this_wp_element_["createElement"])("div", { 6616 className: "entities-saved-states__panel-header" 6617 }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { 6618 isPrimary: true, 6619 disabled: dirtyEntityRecords.length - unselectedEntities.length === 0, 6620 onClick: saveCheckedEntities, 6621 className: "editor-entities-saved-states__save-button" 6622 }, Object(external_this_wp_i18n_["__"])('Save')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { 6623 onClick: dismissPanel, 6624 icon: library_close["a" /* default */], 6625 label: Object(external_this_wp_i18n_["__"])('Close panel') 6626 })), Object(external_this_wp_element_["createElement"])("div", { 6627 className: "entities-saved-states__text-prompt" 6628 }, Object(external_this_wp_element_["createElement"])("strong", null, Object(external_this_wp_i18n_["__"])('Are you ready to save?')), Object(external_this_wp_element_["createElement"])("p", null, promptPhrase), Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { 6629 onClick: toggleIsReviewing, 6630 isLink: true, 6631 className: "entities-saved-states__review-changes-button" 6632 }, isReviewing ? Object(external_this_wp_i18n_["__"])('Hide changes.') : Object(external_this_wp_i18n_["__"])('Review changes.')))), isReviewing && partitionedSavables.map(function (list) { 6633 return Object(external_this_wp_element_["createElement"])(EntityTypeList, { 6634 key: list[0].name, 6635 list: list, 6636 closePanel: dismissPanel, 6637 unselectedEntities: unselectedEntities, 6638 setUnselectedEntities: setUnselectedEntities 6639 }); 6640 })) : null; 6641 } 6642 6643 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js 6644 var assertThisInitialized = __webpack_require__(16); 6645 6646 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/error-boundary/index.js 6647 6648 6649 6650 6651 6652 6653 6654 6655 function error_boundary_createSuper(Derived) { var hasNativeReflectConstruct = error_boundary_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = Object(getPrototypeOf["a" /* default */])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = Object(getPrototypeOf["a" /* default */])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(possibleConstructorReturn["a" /* default */])(this, result); }; } 6656 6657 function error_boundary_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } 6658 6659 /** 6660 * WordPress dependencies 6661 */ 6662 6663 6664 6665 6666 6667 6668 var error_boundary_ErrorBoundary = /*#__PURE__*/function (_Component) { 6669 Object(inherits["a" /* default */])(ErrorBoundary, _Component); 6670 6671 var _super = error_boundary_createSuper(ErrorBoundary); 6672 6673 function ErrorBoundary() { 6674 var _this; 6675 6676 Object(classCallCheck["a" /* default */])(this, ErrorBoundary); 6677 6678 _this = _super.apply(this, arguments); 6679 _this.reboot = _this.reboot.bind(Object(assertThisInitialized["a" /* default */])(_this)); 6680 _this.getContent = _this.getContent.bind(Object(assertThisInitialized["a" /* default */])(_this)); 6681 _this.state = { 6682 error: null 6683 }; 6684 return _this; 6685 } 6686 6687 Object(createClass["a" /* default */])(ErrorBoundary, [{ 6688 key: "componentDidCatch", 6689 value: function componentDidCatch(error) { 6690 this.setState({ 6691 error: error 6692 }); 6693 } 6694 }, { 6695 key: "reboot", 6696 value: function reboot() { 6697 this.props.onError(); 6698 } 6699 }, { 6700 key: "getContent", 6701 value: function getContent() { 6702 try { 6703 // While `select` in a component is generally discouraged, it is 6704 // used here because it (a) reduces the chance of data loss in the 6705 // case of additional errors by performing a direct retrieval and 6706 // (b) avoids the performance cost associated with unnecessary 6707 // content serialization throughout the lifetime of a non-erroring 6708 // application. 6709 return Object(external_this_wp_data_["select"])('core/editor').getEditedPostContent(); 6710 } catch (error) {} 6711 } 6712 }, { 6713 key: "render", 6714 value: function render() { 6715 var error = this.state.error; 6716 6717 if (!error) { 6718 return this.props.children; 6719 } 6720 6721 return Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["Warning"], { 6722 className: "editor-error-boundary", 6723 actions: [Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { 6724 key: "recovery", 6725 onClick: this.reboot, 6726 isSecondary: true 6727 }, Object(external_this_wp_i18n_["__"])('Attempt Recovery')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ClipboardButton"], { 6728 key: "copy-post", 6729 text: this.getContent, 6730 isSecondary: true 6731 }, Object(external_this_wp_i18n_["__"])('Copy Post Text')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ClipboardButton"], { 6732 key: "copy-error", 6733 text: error.stack, 6734 isSecondary: true 6735 }, Object(external_this_wp_i18n_["__"])('Copy Error'))] 6736 }, Object(external_this_wp_i18n_["__"])('The editor has encountered an unexpected error.')); 6737 } 6738 }]); 6739 6740 return ErrorBoundary; 6741 }(external_this_wp_element_["Component"]); 6742 6743 /* harmony default export */ var error_boundary = (error_boundary_ErrorBoundary); 6744 6745 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/local-autosave-monitor/index.js 6746 6747 6748 /** 6749 * External dependencies 6750 */ 6751 6752 /** 6753 * WordPress dependencies 6754 */ 6755 6756 6757 6758 6759 6760 6761 /** 6762 * Internal dependencies 6763 */ 6764 6765 6766 6767 var requestIdleCallback = window.requestIdleCallback ? window.requestIdleCallback : window.requestAnimationFrame; 6768 /** 6769 * Function which returns true if the current environment supports browser 6770 * sessionStorage, or false otherwise. The result of this function is cached and 6771 * reused in subsequent invocations. 6772 */ 6773 6774 var hasSessionStorageSupport = Object(external_this_lodash_["once"])(function () { 6775 try { 6776 // Private Browsing in Safari 10 and earlier will throw an error when 6777 // attempting to set into sessionStorage. The test here is intentional in 6778 // causing a thrown error as condition bailing from local autosave. 6779 window.sessionStorage.setItem('__wpEditorTestSessionStorage', ''); 6780 window.sessionStorage.removeItem('__wpEditorTestSessionStorage'); 6781 return true; 6782 } catch (error) { 6783 return false; 6784 } 6785 }); 6786 /** 6787 * Custom hook which manages the creation of a notice prompting the user to 6788 * restore a local autosave, if one exists. 6789 */ 6790 6791 function useAutosaveNotice() { 6792 var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) { 6793 return { 6794 postId: select('core/editor').getCurrentPostId(), 6795 isEditedPostNew: select('core/editor').isEditedPostNew(), 6796 getEditedPostAttribute: select('core/editor').getEditedPostAttribute, 6797 hasRemoteAutosave: !!select('core/editor').getEditorSettings().autosave 6798 }; 6799 }, []), 6800 postId = _useSelect.postId, 6801 isEditedPostNew = _useSelect.isEditedPostNew, 6802 getEditedPostAttribute = _useSelect.getEditedPostAttribute, 6803 hasRemoteAutosave = _useSelect.hasRemoteAutosave; 6804 6805 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/notices'), 6806 createWarningNotice = _useDispatch.createWarningNotice, 6807 removeNotice = _useDispatch.removeNotice; 6808 6809 var _useDispatch2 = Object(external_this_wp_data_["useDispatch"])('core/editor'), 6810 editPost = _useDispatch2.editPost, 6811 resetEditorBlocks = _useDispatch2.resetEditorBlocks; 6812 6813 Object(external_this_wp_element_["useEffect"])(function () { 6814 var localAutosave = localAutosaveGet(postId, isEditedPostNew); 6815 6816 if (!localAutosave) { 6817 return; 6818 } 6819 6820 try { 6821 localAutosave = JSON.parse(localAutosave); 6822 } catch (error) { 6823 // Not usable if it can't be parsed. 6824 return; 6825 } 6826 6827 var _localAutosave = localAutosave, 6828 title = _localAutosave.post_title, 6829 content = _localAutosave.content, 6830 excerpt = _localAutosave.excerpt; 6831 var edits = { 6832 title: title, 6833 content: content, 6834 excerpt: excerpt 6835 }; 6836 { 6837 // Only display a notice if there is a difference between what has been 6838 // saved and that which is stored in sessionStorage. 6839 var hasDifference = Object.keys(edits).some(function (key) { 6840 return edits[key] !== getEditedPostAttribute(key); 6841 }); 6842 6843 if (!hasDifference) { 6844 // If there is no difference, it can be safely ejected from storage. 6845 localAutosaveClear(postId, isEditedPostNew); 6846 return; 6847 } 6848 } 6849 6850 if (hasRemoteAutosave) { 6851 return; 6852 } 6853 6854 var noticeId = Object(external_this_lodash_["uniqueId"])('wpEditorAutosaveRestore'); 6855 createWarningNotice(Object(external_this_wp_i18n_["__"])('The backup of this post in your browser is different from the version below.'), { 6856 id: noticeId, 6857 actions: [{ 6858 label: Object(external_this_wp_i18n_["__"])('Restore the backup'), 6859 onClick: function onClick() { 6860 editPost(Object(external_this_lodash_["omit"])(edits, ['content'])); 6861 resetEditorBlocks(Object(external_this_wp_blocks_["parse"])(edits.content)); 6862 removeNotice(noticeId); 6863 } 6864 }] 6865 }); 6866 }, [isEditedPostNew, postId]); 6867 } 6868 /** 6869 * Custom hook which ejects a local autosave after a successful save occurs. 6870 */ 6871 6872 6873 function useAutosavePurge() { 6874 var _useSelect2 = Object(external_this_wp_data_["useSelect"])(function (select) { 6875 return { 6876 postId: select('core/editor').getCurrentPostId(), 6877 isEditedPostNew: select('core/editor').isEditedPostNew(), 6878 isDirty: select('core/editor').isEditedPostDirty(), 6879 isAutosaving: select('core/editor').isAutosavingPost(), 6880 didError: select('core/editor').didPostSaveRequestFail() 6881 }; 6882 }, []), 6883 postId = _useSelect2.postId, 6884 isEditedPostNew = _useSelect2.isEditedPostNew, 6885 isDirty = _useSelect2.isDirty, 6886 isAutosaving = _useSelect2.isAutosaving, 6887 didError = _useSelect2.didError; 6888 6889 var lastIsDirty = Object(external_this_wp_element_["useRef"])(isDirty); 6890 var lastIsAutosaving = Object(external_this_wp_element_["useRef"])(isAutosaving); 6891 Object(external_this_wp_element_["useEffect"])(function () { 6892 if (!didError && (lastIsAutosaving.current && !isAutosaving || lastIsDirty.current && !isDirty)) { 6893 localAutosaveClear(postId, isEditedPostNew); 6894 } 6895 6896 lastIsDirty.current = isDirty; 6897 lastIsAutosaving.current = isAutosaving; 6898 }, [isDirty, isAutosaving, didError]); // Once the isEditedPostNew changes from true to false, let's clear the auto-draft autosave. 6899 6900 var wasEditedPostNew = Object(external_this_wp_compose_["usePrevious"])(isEditedPostNew); 6901 var prevPostId = Object(external_this_wp_compose_["usePrevious"])(postId); 6902 Object(external_this_wp_element_["useEffect"])(function () { 6903 if (prevPostId === postId && wasEditedPostNew && !isEditedPostNew) { 6904 localAutosaveClear(postId, true); 6905 } 6906 }, [isEditedPostNew, postId]); 6907 } 6908 6909 function LocalAutosaveMonitor() { 6910 var _useDispatch3 = Object(external_this_wp_data_["useDispatch"])('core/editor'), 6911 autosave = _useDispatch3.autosave; 6912 6913 var deferedAutosave = Object(external_this_wp_element_["useCallback"])(function () { 6914 requestIdleCallback(function () { 6915 return autosave({ 6916 local: true 6917 }); 6918 }); 6919 }, []); 6920 useAutosaveNotice(); 6921 useAutosavePurge(); 6922 6923 var _useSelect3 = Object(external_this_wp_data_["useSelect"])(function (select) { 6924 return { 6925 localAutosaveInterval: select('core/editor').getEditorSettings().__experimentalLocalAutosaveInterval 6926 }; 6927 }, []), 6928 localAutosaveInterval = _useSelect3.localAutosaveInterval; 6929 6930 return Object(external_this_wp_element_["createElement"])(autosave_monitor, { 6931 interval: localAutosaveInterval, 6932 autosave: deferedAutosave 6933 }); 6934 } 6935 6936 /* harmony default export */ var local_autosave_monitor = (Object(external_this_wp_compose_["ifCondition"])(hasSessionStorageSupport)(LocalAutosaveMonitor)); 6937 6938 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/check.js 6939 /** 6940 * External dependencies 6941 */ 6942 6943 /** 6944 * WordPress dependencies 6945 */ 6946 6947 6948 function PageAttributesCheck(_ref) { 6949 var availableTemplates = _ref.availableTemplates, 6950 postType = _ref.postType, 6951 children = _ref.children; 6952 var supportsPageAttributes = Object(external_this_lodash_["get"])(postType, ['supports', 'page-attributes'], false); // Only render fields if post type supports page attributes or available templates exist. 6953 6954 if (!supportsPageAttributes && Object(external_this_lodash_["isEmpty"])(availableTemplates)) { 6955 return null; 6956 } 6957 6958 return children; 6959 } 6960 /* harmony default export */ var page_attributes_check = (Object(external_this_wp_data_["withSelect"])(function (select) { 6961 var _select = select('core/editor'), 6962 getEditedPostAttribute = _select.getEditedPostAttribute, 6963 getEditorSettings = _select.getEditorSettings; 6964 6965 var _select2 = select('core'), 6966 getPostType = _select2.getPostType; 6967 6968 var _getEditorSettings = getEditorSettings(), 6969 availableTemplates = _getEditorSettings.availableTemplates; 6970 6971 return { 6972 postType: getPostType(getEditedPostAttribute('type')), 6973 availableTemplates: availableTemplates 6974 }; 6975 })(PageAttributesCheck)); 6976 6977 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-type-support-check/index.js 6978 /** 6979 * External dependencies 6980 */ 6981 6982 /** 6983 * WordPress dependencies 6984 */ 6985 6986 6987 /** 6988 * A component which renders its own children only if the current editor post 6989 * type supports one of the given `supportKeys` prop. 6990 * 6991 * @param {Object} props Props. 6992 * @param {string} [props.postType] Current post type. 6993 * @param {WPElement} props.children Children to be rendered if post 6994 * type supports. 6995 * @param {(string|string[])} props.supportKeys String or string array of keys 6996 * to test. 6997 * 6998 * @return {WPComponent} The component to be rendered. 6999 */ 7000 7001 function PostTypeSupportCheck(_ref) { 7002 var postType = _ref.postType, 7003 children = _ref.children, 7004 supportKeys = _ref.supportKeys; 7005 var isSupported = true; 7006 7007 if (postType) { 7008 isSupported = Object(external_this_lodash_["some"])(Object(external_this_lodash_["castArray"])(supportKeys), function (key) { 7009 return !!postType.supports[key]; 7010 }); 7011 } 7012 7013 if (!isSupported) { 7014 return null; 7015 } 7016 7017 return children; 7018 } 7019 /* harmony default export */ var post_type_support_check = (Object(external_this_wp_data_["withSelect"])(function (select) { 7020 var _select = select('core/editor'), 7021 getEditedPostAttribute = _select.getEditedPostAttribute; 7022 7023 var _select2 = select('core'), 7024 getPostType = _select2.getPostType; 7025 7026 return { 7027 postType: getPostType(getEditedPostAttribute('type')) 7028 }; 7029 })(PostTypeSupportCheck)); 7030 7031 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/order.js 7032 7033 7034 /** 7035 * External dependencies 7036 */ 7037 7038 /** 7039 * WordPress dependencies 7040 */ 7041 7042 7043 7044 7045 7046 /** 7047 * Internal dependencies 7048 */ 7049 7050 7051 var PageAttributesOrder = Object(external_this_wp_compose_["withState"])({ 7052 orderInput: null 7053 })(function (_ref) { 7054 var onUpdateOrder = _ref.onUpdateOrder, 7055 _ref$order = _ref.order, 7056 order = _ref$order === void 0 ? 0 : _ref$order, 7057 orderInput = _ref.orderInput, 7058 setState = _ref.setState; 7059 7060 var setUpdatedOrder = function setUpdatedOrder(value) { 7061 setState({ 7062 orderInput: value 7063 }); 7064 var newOrder = Number(value); 7065 7066 if (Number.isInteger(newOrder) && Object(external_this_lodash_["invoke"])(value, ['trim']) !== '') { 7067 onUpdateOrder(Number(value)); 7068 } 7069 }; 7070 7071 var value = orderInput === null ? order : orderInput; 7072 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["TextControl"], { 7073 className: "editor-page-attributes__order", 7074 type: "number", 7075 label: Object(external_this_wp_i18n_["__"])('Order'), 7076 value: value, 7077 onChange: setUpdatedOrder, 7078 size: 6, 7079 onBlur: function onBlur() { 7080 setState({ 7081 orderInput: null 7082 }); 7083 } 7084 }); 7085 }); 7086 7087 function PageAttributesOrderWithChecks(props) { 7088 return Object(external_this_wp_element_["createElement"])(post_type_support_check, { 7089 supportKeys: "page-attributes" 7090 }, Object(external_this_wp_element_["createElement"])(PageAttributesOrder, props)); 7091 } 7092 7093 /* harmony default export */ var page_attributes_order = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { 7094 return { 7095 order: select('core/editor').getEditedPostAttribute('menu_order') 7096 }; 7097 }), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { 7098 return { 7099 onUpdateOrder: function onUpdateOrder(order) { 7100 dispatch('core/editor').editPost({ 7101 menu_order: order 7102 }); 7103 } 7104 }; 7105 })])(PageAttributesOrderWithChecks)); 7106 7107 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/terms.js 7108 7109 7110 function terms_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 7111 7112 function terms_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { terms_ownKeys(Object(source), true).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { terms_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 7113 7114 /** 7115 * External dependencies 7116 */ 7117 7118 /** 7119 * Returns terms in a tree form. 7120 * 7121 * @param {Array} flatTerms Array of terms in flat format. 7122 * 7123 * @return {Array} Array of terms in tree format. 7124 */ 7125 7126 function buildTermsTree(flatTerms) { 7127 var flatTermsWithParentAndChildren = flatTerms.map(function (term) { 7128 return terms_objectSpread({ 7129 children: [], 7130 parent: null 7131 }, term); 7132 }); 7133 var termsByParent = Object(external_this_lodash_["groupBy"])(flatTermsWithParentAndChildren, 'parent'); 7134 7135 if (termsByParent.null && termsByParent.null.length) { 7136 return flatTermsWithParentAndChildren; 7137 } 7138 7139 var fillWithChildren = function fillWithChildren(terms) { 7140 return terms.map(function (term) { 7141 var children = termsByParent[term.id]; 7142 return terms_objectSpread(terms_objectSpread({}, term), {}, { 7143 children: children && children.length ? fillWithChildren(children) : [] 7144 }); 7145 }); 7146 }; 7147 7148 return fillWithChildren(termsByParent['0'] || []); 7149 } 7150 7151 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/parent.js 7152 7153 7154 7155 7156 /** 7157 * External dependencies 7158 */ 7159 7160 /** 7161 * WordPress dependencies 7162 */ 7163 7164 7165 7166 7167 7168 /** 7169 * Internal dependencies 7170 */ 7171 7172 7173 7174 function getTitle(post) { 7175 var _post$title; 7176 7177 return (post === null || post === void 0 ? void 0 : (_post$title = post.title) === null || _post$title === void 0 ? void 0 : _post$title.rendered) ? post.title.rendered : "#".concat(post.id, " (").concat(Object(external_this_wp_i18n_["__"])('no title'), ")"); 7178 } 7179 7180 function PageAttributesParent() { 7181 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/editor'), 7182 editPost = _useDispatch.editPost; 7183 7184 var _useState = Object(external_this_wp_element_["useState"])(false), 7185 _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2), 7186 fieldValue = _useState2[0], 7187 setFieldValue = _useState2[1]; 7188 7189 var isSearching = fieldValue; 7190 7191 var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) { 7192 var _select = select('core'), 7193 getPostType = _select.getPostType, 7194 getEntityRecords = _select.getEntityRecords, 7195 getEntityRecord = _select.getEntityRecord; 7196 7197 var _select2 = select('core/editor'), 7198 getCurrentPostId = _select2.getCurrentPostId, 7199 getEditedPostAttribute = _select2.getEditedPostAttribute; 7200 7201 var postTypeSlug = getEditedPostAttribute('type'); 7202 var pageId = getEditedPostAttribute('parent'); 7203 var pType = getPostType(postTypeSlug); 7204 var postId = getCurrentPostId(); 7205 var isHierarchical = Object(external_this_lodash_["get"])(pType, ['hierarchical'], false); 7206 var query = { 7207 per_page: 100, 7208 exclude: postId, 7209 parent_exclude: postId, 7210 orderby: 'menu_order', 7211 order: 'asc', 7212 _fields: 'id,title,parent' 7213 }; // Perform a search when the field is changed. 7214 7215 if (isSearching) { 7216 query.search = fieldValue; 7217 } 7218 7219 return { 7220 parentPostId: pageId, 7221 parentPost: pageId ? getEntityRecord('postType', postTypeSlug, pageId) : null, 7222 items: isHierarchical ? getEntityRecords('postType', postTypeSlug, query) : [], 7223 postType: pType 7224 }; 7225 }, [fieldValue]), 7226 parentPost = _useSelect.parentPost, 7227 parentPostId = _useSelect.parentPostId, 7228 items = _useSelect.items, 7229 postType = _useSelect.postType; 7230 7231 var isHierarchical = Object(external_this_lodash_["get"])(postType, ['hierarchical'], false); 7232 var parentPageLabel = Object(external_this_lodash_["get"])(postType, ['labels', 'parent_item_colon']); 7233 var pageItems = items || []; 7234 7235 var getOptionsFromTree = function getOptionsFromTree(tree) { 7236 var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; 7237 return Object(external_this_lodash_["flatMap"])(tree, function (treeNode) { 7238 return [{ 7239 value: treeNode.id, 7240 label: Object(external_this_lodash_["repeat"])('— ', level) + Object(external_this_lodash_["unescape"])(treeNode.name) 7241 }].concat(Object(toConsumableArray["a" /* default */])(getOptionsFromTree(treeNode.children || [], level + 1))); 7242 }); 7243 }; 7244 7245 var parentOptions = Object(external_this_wp_element_["useMemo"])(function () { 7246 var tree = pageItems.map(function (item) { 7247 return { 7248 id: item.id, 7249 parent: item.parent, 7250 name: getTitle(item) 7251 }; 7252 }); // Only build a hierarchical tree when not searching. 7253 7254 if (!isSearching) { 7255 tree = buildTermsTree(tree); 7256 } 7257 7258 var opts = getOptionsFromTree(tree); // Ensure the current parent is in the options list. 7259 7260 var optsHasParent = Object(external_this_lodash_["find"])(opts, function (item) { 7261 return item.value === parentPostId; 7262 }); 7263 7264 if (parentPost && !optsHasParent) { 7265 opts.unshift({ 7266 value: parentPostId, 7267 label: getTitle(parentPost) 7268 }); 7269 } 7270 7271 return opts; 7272 }, [pageItems]); 7273 7274 if (!isHierarchical || !parentPageLabel) { 7275 return null; 7276 } 7277 /** 7278 * Handle user input. 7279 * 7280 * @param {string} inputValue The current value of the input field. 7281 */ 7282 7283 7284 var handleKeydown = function handleKeydown(inputValue) { 7285 setFieldValue(inputValue); 7286 }; 7287 /** 7288 * Handle author selection. 7289 * 7290 * @param {Object} selectedPostId The selected Author. 7291 */ 7292 7293 7294 var handleChange = function handleChange(selectedPostId) { 7295 editPost({ 7296 parent: selectedPostId 7297 }); 7298 }; 7299 7300 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ComboboxControl"], { 7301 className: "editor-page-attributes__parent", 7302 label: parentPageLabel, 7303 value: parentPostId, 7304 options: parentOptions, 7305 onFilterValueChange: Object(external_this_lodash_["debounce"])(handleKeydown, 300), 7306 onChange: handleChange 7307 }); 7308 } 7309 /* harmony default export */ var page_attributes_parent = (PageAttributesParent); 7310 7311 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/template.js 7312 7313 7314 /** 7315 * External dependencies 7316 */ 7317 7318 /** 7319 * WordPress dependencies 7320 */ 7321 7322 7323 7324 7325 7326 function PageTemplate(_ref) { 7327 var availableTemplates = _ref.availableTemplates, 7328 selectedTemplate = _ref.selectedTemplate, 7329 onUpdate = _ref.onUpdate; 7330 7331 if (Object(external_this_lodash_["isEmpty"])(availableTemplates)) { 7332 return null; 7333 } 7334 7335 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SelectControl"], { 7336 label: Object(external_this_wp_i18n_["__"])('Template:'), 7337 value: selectedTemplate, 7338 onChange: onUpdate, 7339 className: "editor-page-attributes__template", 7340 options: Object(external_this_lodash_["map"])(availableTemplates, function (templateName, templateSlug) { 7341 return { 7342 value: templateSlug, 7343 label: templateName 7344 }; 7345 }) 7346 }); 7347 } 7348 /* harmony default export */ var page_attributes_template = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) { 7349 var _select = select('core/editor'), 7350 getEditedPostAttribute = _select.getEditedPostAttribute, 7351 getEditorSettings = _select.getEditorSettings; 7352 7353 var _getEditorSettings = getEditorSettings(), 7354 availableTemplates = _getEditorSettings.availableTemplates; 7355 7356 return { 7357 selectedTemplate: getEditedPostAttribute('template'), 7358 availableTemplates: availableTemplates 7359 }; 7360 }), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { 7361 return { 7362 onUpdate: function onUpdate(templateSlug) { 7363 dispatch('core/editor').editPost({ 7364 template: templateSlug || '' 7365 }); 7366 } 7367 }; 7368 }))(PageTemplate)); 7369 7370 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-author/check.js 7371 7372 7373 /** 7374 * External dependencies 7375 */ 7376 7377 /** 7378 * WordPress dependencies 7379 */ 7380 7381 7382 7383 /** 7384 * Internal dependencies 7385 */ 7386 7387 7388 function PostAuthorCheck(_ref) { 7389 var hasAssignAuthorAction = _ref.hasAssignAuthorAction, 7390 authors = _ref.authors, 7391 children = _ref.children; 7392 7393 if (!hasAssignAuthorAction || !authors || 1 >= authors.length) { 7394 return null; 7395 } 7396 7397 return Object(external_this_wp_element_["createElement"])(post_type_support_check, { 7398 supportKeys: "author" 7399 }, children); 7400 } 7401 /* harmony default export */ var post_author_check = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { 7402 var post = select('core/editor').getCurrentPost(); 7403 return { 7404 hasAssignAuthorAction: Object(external_this_lodash_["get"])(post, ['_links', 'wp:action-assign-author'], false), 7405 postType: select('core/editor').getCurrentPostType(), 7406 authors: select('core').getAuthors() 7407 }; 7408 }), external_this_wp_compose_["withInstanceId"]])(PostAuthorCheck)); 7409 7410 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-author/index.js 7411 7412 7413 7414 7415 /** 7416 * External dependencies 7417 */ 7418 7419 /** 7420 * WordPress dependencies 7421 */ 7422 7423 7424 7425 7426 7427 /** 7428 * Internal dependencies 7429 */ 7430 7431 7432 7433 function PostAuthor() { 7434 var _useState = Object(external_this_wp_element_["useState"])(), 7435 _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2), 7436 fieldValue = _useState2[0], 7437 setFieldValue = _useState2[1]; 7438 7439 var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) { 7440 var _select = select('core'), 7441 __unstableGetAuthor = _select.__unstableGetAuthor, 7442 getAuthors = _select.getAuthors, 7443 isResolving = _select.isResolving; 7444 7445 var _select2 = select('core/editor'), 7446 getEditedPostAttribute = _select2.getEditedPostAttribute; 7447 7448 var author = __unstableGetAuthor(getEditedPostAttribute('author')); 7449 7450 var query = !fieldValue || '' === fieldValue ? {} : { 7451 search: fieldValue 7452 }; 7453 return { 7454 authorId: getEditedPostAttribute('author'), 7455 postAuthor: author, 7456 authors: getAuthors(query), 7457 isLoading: isResolving('core', 'getAuthors', [query]) 7458 }; 7459 }, [fieldValue]), 7460 authorId = _useSelect.authorId, 7461 isLoading = _useSelect.isLoading, 7462 authors = _useSelect.authors, 7463 postAuthor = _useSelect.postAuthor; 7464 7465 var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/editor'), 7466 editPost = _useDispatch.editPost; 7467 7468 var authorOptions = Object(external_this_wp_element_["useMemo"])(function () { 7469 var fetchedAuthors = (authors !== null && authors !== void 0 ? authors : []).map(function (author) { 7470 return { 7471 value: author.id, 7472 label: author.name 7473 }; 7474 }); // Ensure the current author is included in the dropdown list. 7475 7476 var foundAuthor = fetchedAuthors.findIndex(function (_ref) { 7477 var value = _ref.value; 7478 return (postAuthor === null || postAuthor === void 0 ? void 0 : postAuthor.id) === value; 7479 }); 7480 7481 if (foundAuthor < 0 && postAuthor) { 7482 return [{ 7483 value: postAuthor.id, 7484 label: postAuthor.name 7485 }].concat(Object(toConsumableArray["a" /* default */])(fetchedAuthors)); 7486 } 7487 7488 return fetchedAuthors; 7489 }, [authors, postAuthor]); // Initializes the post author properly 7490 // Also ensures external changes are reflected. 7491 7492 Object(external_this_wp_element_["useEffect"])(function () { 7493 if (postAuthor) { 7494 setFieldValue(postAuthor.name); 7495 } 7496 }, [postAuthor]); 7497 /** 7498 * Handle author selection. 7499 * 7500 * @param {number} postAuthorId The selected Author. 7501 */ 7502 7503 var handleSelect = function handleSelect(postAuthorId) { 7504 if (!postAuthorId) { 7505 return; 7506 } 7507 7508 editPost({ 7509 author: postAuthorId 7510 }); 7511 }; 7512 /** 7513 * Handle user input. 7514 * 7515 * @param {string} inputValue The current value of the input field. 7516 */ 7517 7518 7519 var handleKeydown = function handleKeydown(inputValue) { 7520 setFieldValue(inputValue); 7521 }; 7522 7523 if (!postAuthor) { 7524 return null; 7525 } 7526 7527 return Object(external_this_wp_element_["createElement"])(post_author_check, null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ComboboxControl"], { 7528 label: Object(external_this_wp_i18n_["__"])('Author'), 7529 options: authorOptions, 7530 value: authorId, 7531 onFilterValueChange: Object(external_this_lodash_["debounce"])(handleKeydown, 300), 7532 onChange: handleSelect, 7533 isLoading: isLoading, 7534 allowReset: false 7535 })); 7536 } 7537 7538 /* harmony default export */ var post_author = (PostAuthor); 7539 7540 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-comments/index.js 7541 7542 7543 7544 /** 7545 * WordPress dependencies 7546 */ 7547 7548 7549 7550 7551 7552 function PostComments(_ref) { 7553 var _ref$commentStatus = _ref.commentStatus, 7554 commentStatus = _ref$commentStatus === void 0 ? 'open' : _ref$commentStatus, 7555 props = Object(objectWithoutProperties["a" /* default */])(_ref, ["commentStatus"]); 7556 7557 var onToggleComments = function onToggleComments() { 7558 return props.editPost({ 7559 comment_status: commentStatus === 'open' ? 'closed' : 'open' 7560 }); 7561 }; 7562 7563 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["CheckboxControl"], { 7564 label: Object(external_this_wp_i18n_["__"])('Allow comments'), 7565 checked: commentStatus === 'open', 7566 onChange: onToggleComments 7567 }); 7568 } 7569 7570 /* harmony default export */ var post_comments = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { 7571 return { 7572 commentStatus: select('core/editor').getEditedPostAttribute('comment_status') 7573 }; 7574 }), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { 7575 return { 7576 editPost: dispatch('core/editor').editPost 7577 }; 7578 })])(PostComments)); 7579 7580 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/index.js 7581 7582 7583 /** 7584 * WordPress dependencies 7585 */ 7586 7587 7588 7589 7590 7591 function PostExcerpt(_ref) { 7592 var excerpt = _ref.excerpt, 7593 onUpdateExcerpt = _ref.onUpdateExcerpt; 7594 return Object(external_this_wp_element_["createElement"])("div", { 7595 className: "editor-post-excerpt" 7596 }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["TextareaControl"], { 7597 label: Object(external_this_wp_i18n_["__"])('Write an excerpt (optional)'), 7598 className: "editor-post-excerpt__textarea", 7599 onChange: function onChange(value) { 7600 return onUpdateExcerpt(value); 7601 }, 7602 value: excerpt 7603 }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ExternalLink"], { 7604 href: Object(external_this_wp_i18n_["__"])('https://wordpress.org/support/article/excerpt/') 7605 }, Object(external_this_wp_i18n_["__"])('Learn more about manual excerpts'))); 7606 } 7607 7608 /* harmony default export */ var post_excerpt = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { 7609 return { 7610 excerpt: select('core/editor').getEditedPostAttribute('excerpt') 7611 }; 7612 }), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { 7613 return { 7614 onUpdateExcerpt: function onUpdateExcerpt(excerpt) { 7615 dispatch('core/editor').editPost({ 7616 excerpt: excerpt 7617 }); 7618 } 7619 }; 7620 })])(PostExcerpt)); 7621 7622 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/check.js 7623 7624 7625 7626 /** 7627 * Internal dependencies 7628 */ 7629 7630 7631 function PostExcerptCheck(props) { 7632 return Object(external_this_wp_element_["createElement"])(post_type_support_check, Object(esm_extends["a" /* default */])({}, props, { 7633 supportKeys: "excerpt" 7634 })); 7635 } 7636 7637 /* harmony default export */ var post_excerpt_check = (PostExcerptCheck); 7638 7639 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/theme-support-check/index.js 7640 /** 7641 * External dependencies 7642 */ 7643 7644 /** 7645 * WordPress dependencies 7646 */ 7647 7648 7649 function ThemeSupportCheck(_ref) { 7650 var themeSupports = _ref.themeSupports, 7651 children = _ref.children, 7652 postType = _ref.postType, 7653 supportKeys = _ref.supportKeys; 7654 var isSupported = Object(external_this_lodash_["some"])(Object(external_this_lodash_["castArray"])(supportKeys), function (key) { 7655 var supported = Object(external_this_lodash_["get"])(themeSupports, [key], false); // 'post-thumbnails' can be boolean or an array of post types. 7656 // In the latter case, we need to verify `postType` exists 7657 // within `supported`. If `postType` isn't passed, then the check 7658 // should fail. 7659 7660 if ('post-thumbnails' === key && Object(external_this_lodash_["isArray"])(supported)) { 7661 return Object(external_this_lodash_["includes"])(supported, postType); 7662 } 7663 7664 return supported; 7665 }); 7666 7667 if (!isSupported) { 7668 return null; 7669 } 7670 7671 return children; 7672 } 7673 /* harmony default export */ var theme_support_check = (Object(external_this_wp_data_["withSelect"])(function (select) { 7674 var _select = select('core'), 7675 getThemeSupports = _select.getThemeSupports; 7676 7677 var _select2 = select('core/editor'), 7678 getEditedPostAttribute = _select2.getEditedPostAttribute; 7679 7680 return { 7681 postType: getEditedPostAttribute('type'), 7682 themeSupports: getThemeSupports() 7683 }; 7684 })(ThemeSupportCheck)); 7685 7686 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-featured-image/check.js 7687 7688 7689 7690 /** 7691 * Internal dependencies 7692 */ 7693 7694 7695 7696 function PostFeaturedImageCheck(props) { 7697 return Object(external_this_wp_element_["createElement"])(theme_support_check, { 7698 supportKeys: "post-thumbnails" 7699 }, Object(external_this_wp_element_["createElement"])(post_type_support_check, Object(esm_extends["a" /* default */])({}, props, { 7700 supportKeys: "thumbnail" 7701 }))); 7702 } 7703 7704 /* harmony default export */ var post_featured_image_check = (PostFeaturedImageCheck); 7705 7706 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-featured-image/index.js 7707 7708 7709 7710 /** 7711 * External dependencies 7712 */ 7713 7714 /** 7715 * WordPress dependencies 7716 */ 7717 7718 7719 7720 7721 7722 7723 7724 /** 7725 * Internal dependencies 7726 */ 7727 7728 7729 var ALLOWED_MEDIA_TYPES = ['image']; // Used when labels from post type were not yet loaded or when they are not present. 7730 7731 var DEFAULT_FEATURE_IMAGE_LABEL = Object(external_this_wp_i18n_["__"])('Featured image'); 7732 7733 var DEFAULT_SET_FEATURE_IMAGE_LABEL = Object(external_this_wp_i18n_["__"])('Set featured image'); 7734 7735 var DEFAULT_REMOVE_FEATURE_IMAGE_LABEL = Object(external_this_wp_i18n_["__"])('Remove image'); 7736 7737 function PostFeaturedImage(_ref) { 7738 var _media$media_details$, _media$media_details$2; 7739 7740 var currentPostId = _ref.currentPostId, 7741 featuredImageId = _ref.featuredImageId, 7742 onUpdateImage = _ref.onUpdateImage, 7743 onDropImage = _ref.onDropImage, 7744 onRemoveImage = _ref.onRemoveImage, 7745 media = _ref.media, 7746 postType = _ref.postType, 7747 noticeUI = _ref.noticeUI; 7748 var postLabel = Object(external_this_lodash_["get"])(postType, ['labels'], {}); 7749 var instructions = Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_i18n_["__"])('To edit the featured image, you need permission to upload media.')); 7750 var mediaWidth, mediaHeight, mediaSourceUrl; 7751 7752 if (media) { 7753 var mediaSize = Object(external_this_wp_hooks_["applyFilters"])('editor.PostFeaturedImage.imageSize', 'post-thumbnail', media.id, currentPostId); 7754 7755 if (Object(external_this_lodash_["has"])(media, ['media_details', 'sizes', mediaSize])) { 7756 // use mediaSize when available 7757 mediaWidth = media.media_details.sizes[mediaSize].width; 7758 mediaHeight = media.media_details.sizes[mediaSize].height; 7759 mediaSourceUrl = media.media_details.sizes[mediaSize].source_url; 7760 } else { 7761 // get fallbackMediaSize if mediaSize is not available 7762 var fallbackMediaSize = Object(external_this_wp_hooks_["applyFilters"])('editor.PostFeaturedImage.imageSize', 'thumbnail', media.id, currentPostId); 7763 7764 if (Object(external_this_lodash_["has"])(media, ['media_details', 'sizes', fallbackMediaSize])) { 7765 // use fallbackMediaSize when mediaSize is not available 7766 mediaWidth = media.media_details.sizes[fallbackMediaSize].width; 7767 mediaHeight = media.media_details.sizes[fallbackMediaSize].height; 7768 mediaSourceUrl = media.media_details.sizes[fallbackMediaSize].source_url; 7769 } else { 7770 // use full image size when mediaFallbackSize and mediaSize are not available 7771 mediaWidth = media.media_details.width; 7772 mediaHeight = media.media_details.height; 7773 mediaSourceUrl = media.source_url; 7774 } 7775 } 7776 } 7777 7778 return Object(external_this_wp_element_["createElement"])(post_featured_image_check, null, noticeUI, Object(external_this_wp_element_["createElement"])("div", { 7779 className: "editor-post-featured-image" 7780 }, media && Object(external_this_wp_element_["createElement"])("div", { 7781 id: "editor-post-featured-image-".concat(featuredImageId, "-describedby"), 7782 className: "hidden" 7783 }, media.alt_text && Object(external_this_wp_i18n_["sprintf"])( // Translators: %s: The selected image alt text. 7784 Object(external_this_wp_i18n_["__"])('Current image: %s'), media.alt_text), !media.alt_text && Object(external_this_wp_i18n_["sprintf"])( // Translators: %s: The selected image filename. 7785 Object(external_this_wp_i18n_["__"])('The current image has no alternative text. The file name is: %s'), ((_media$media_details$ = media.media_details.sizes) === null || _media$media_details$ === void 0 ? void 0 : (_media$media_details$2 = _media$media_details$.full) === null || _media$media_details$2 === void 0 ? void 0 : _media$media_details$2.file) || media.slug)), Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUploadCheck"], { 7786 fallback: instructions 7787 }, Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUpload"], { 7788 title: postLabel.featured_image || DEFAULT_FEATURE_IMAGE_LABEL, 7789 onSelect: onUpdateImage, 7790 unstableFeaturedImageFlow: true, 7791 allowedTypes: ALLOWED_MEDIA_TYPES, 7792 modalClass: "editor-post-featured-image__media-modal", 7793 render: function render(_ref2) { 7794 var open = _ref2.open; 7795 return Object(external_this_wp_element_["createElement"])("div", { 7796 className: "editor-post-featured-image__container" 7797 }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { 7798 className: !featuredImageId ? 'editor-post-featured-image__toggle' : 'editor-post-featured-image__preview', 7799 onClick: open, 7800 "aria-label": !featuredImageId ? null : Object(external_this_wp_i18n_["__"])('Edit or update the image'), 7801 "aria-describedby": !featuredImageId ? null : "editor-post-featured-image-".concat(featuredImageId, "-describedby") 7802 }, !!featuredImageId && media && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ResponsiveWrapper"], { 7803 naturalWidth: mediaWidth, 7804 naturalHeight: mediaHeight, 7805 isInline: true 7806 }, Object(external_this_wp_element_["createElement"])("img", { 7807 src: mediaSourceUrl, 7808 alt: "" 7809 })), !!featuredImageId && !media && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Spinner"], null), !featuredImageId && (postLabel.set_featured_image || DEFAULT_SET_FEATURE_IMAGE_LABEL)), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["DropZone"], { 7810 onFilesDrop: onDropImage 7811 })); 7812 }, 7813 value: featuredImageId 7814 })), !!featuredImageId && media && !media.isLoading && Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUploadCheck"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUpload"], { 7815 title: postLabel.featured_image || DEFAULT_FEATURE_IMAGE_LABEL, 7816 onSelect: onUpdateImage, 7817 unstableFeaturedImageFlow: true, 7818 allowedTypes: ALLOWED_MEDIA_TYPES, 7819 modalClass: "editor-post-featured-image__media-modal", 7820 render: function render(_ref3) { 7821 var open = _ref3.open; 7822 return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { 7823 onClick: open, 7824 isSecondary: true 7825 }, Object(external_this_wp_i18n_["__"])('Replace Image')); 7826 } 7827 })), !!featuredImageId && Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUploadCheck"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { 7828 onClick: onRemoveImage, 7829 isLink: true, 7830 isDestructive: true 7831 }, postLabel.remove_featured_image || DEFAULT_REMOVE_FEATURE_IMAGE_LABEL)))); 7832 } 7833 7834 var applyWithSelect = Object(external_this_wp_data_["withSelect"])(function (select) { 7835 var _select = select('core'), 7836 getMedia = _select.getMedia, 7837 getPostType = _select.getPostType; 7838 7839 var _select2 = select('core/editor'), 7840 getCurrentPostId = _select2.getCurrentPostId, 7841 getEditedPostAttribute = _select2.getEditedPostAttribute; 7842 7843 var featuredImageId = getEditedPostAttribute('featured_media'); 7844 return { 7845 media: featuredImageId ? getMedia(featuredImageId) : null, 7846 currentPostId: getCurrentPostId(), 7847 postType: getPostType(getEditedPostAttribute('type')), 7848 featuredImageId: featuredImageId 7849 }; 7850 }); 7851 var applyWithDispatch = Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref4, _ref5) { 7852 var noticeOperations = _ref4.noticeOperations; 7853 var select = _ref5.select; 7854 7855 var _dispatch = dispatch('core/editor'), 7856 editPost = _dispatch.editPost; 7857 7858 return { 7859 onUpdateImage: function onUpdateImage(image) { 7860 editPost({ 7861 featured_media: image.id 7862 }); 7863 }, 7864 onDropImage: function onDropImage(filesList) { 7865 select('core/block-editor').getSettings().mediaUpload({ 7866 allowedTypes: ['image'], 7867 filesList: filesList, 7868 onFileChange: function onFileChange(_ref6) { 7869 var _ref7 = Object(slicedToArray["a" /* default */])(_ref6, 1), 7870 image = _ref7[0]; 7871 7872 editPost({ 7873 featured_media: image.id 7874 }); 7875 }, 7876 onError: function onError(message) { 7877 noticeOperations.removeAllNotices(); 7878 noticeOperations.createErrorNotice(message); 7879 } 7880 }); 7881 }, 7882 onRemoveImage: function onRemoveImage() { 7883 editPost({ 7884 featured_media: 0 7885 }); 7886 } 7887 }; 7888 }); 7889 /* harmony default export */ var post_featured_image = (Object(external_this_wp_compose_["compose"])(external_this_wp_components_["withNotices"], applyWithSelect, applyWithDispatch, Object(external_this_wp_components_["withFilters"])('editor.PostFeaturedImage'))(PostFeaturedImage)); 7890 7891 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-format/check.js 7892 7893 7894 7895 7896 /** 7897 * WordPress dependencies 7898 */ 7899 7900 /** 7901 * Internal dependencies 7902 */ 7903 7904 7905 7906 function PostFormatCheck(_ref) { 7907 var disablePostFormats = _ref.disablePostFormats, 7908 props = Object(objectWithoutProperties["a" /* default */])(_ref, ["disablePostFormats"]); 7909 7910 return !disablePostFormats && Object(external_this_wp_element_["createElement"])(post_type_support_check, Object(esm_extends["a" /* default */])({}, props, { 7911 supportKeys: "post-formats" 7912 })); 7913 } 7914 7915 /* harmony default export */ var post_format_check = (Object(external_this_wp_data_["withSelect"])(function (select) { 7916 var editorSettings = select('core/editor').getEditorSettings(); 7917 return { 7918 disablePostFormats: editorSettings.disablePostFormats 7919 }; 7920 })(PostFormatCheck)); 7921 7922 // CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-format/index.js 7923 7924 7925 /** 7926 * External dependencies 7927 */ 7928 7929 /**