server-side-render.js (13770B)
1 this["wp"] = this["wp"] || {}; this["wp"]["serverSideRender"] = 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 = "4dqW"); 86 /******/ }) 87 /************************************************************************/ 88 /******/ ({ 89 90 /***/ "1ZqX": 91 /***/ (function(module, exports) { 92 93 (function() { module.exports = window["wp"]["data"]; }()); 94 95 /***/ }), 96 97 /***/ "4dqW": 98 /***/ (function(module, __webpack_exports__, __webpack_require__) { 99 100 "use strict"; 101 // ESM COMPAT FLAG 102 __webpack_require__.r(__webpack_exports__); 103 104 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js 105 var esm_extends = __webpack_require__("wx14"); 106 107 // EXTERNAL MODULE: external ["wp","element"] 108 var external_wp_element_ = __webpack_require__("GRId"); 109 110 // EXTERNAL MODULE: external ["wp","data"] 111 var external_wp_data_ = __webpack_require__("1ZqX"); 112 113 // EXTERNAL MODULE: external ["wp","deprecated"] 114 var external_wp_deprecated_ = __webpack_require__("NMb1"); 115 var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_); 116 117 // EXTERNAL MODULE: external "lodash" 118 var external_lodash_ = __webpack_require__("YLtl"); 119 120 // EXTERNAL MODULE: external ["wp","compose"] 121 var external_wp_compose_ = __webpack_require__("K9lf"); 122 123 // EXTERNAL MODULE: external ["wp","i18n"] 124 var external_wp_i18n_ = __webpack_require__("l3Sj"); 125 126 // EXTERNAL MODULE: external ["wp","apiFetch"] 127 var external_wp_apiFetch_ = __webpack_require__("ywyh"); 128 var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_); 129 130 // EXTERNAL MODULE: external ["wp","url"] 131 var external_wp_url_ = __webpack_require__("Mmq9"); 132 133 // EXTERNAL MODULE: external ["wp","components"] 134 var external_wp_components_ = __webpack_require__("tI+e"); 135 136 // EXTERNAL MODULE: external ["wp","blocks"] 137 var external_wp_blocks_ = __webpack_require__("HSyU"); 138 139 // CONCATENATED MODULE: ./node_modules/@wordpress/server-side-render/build-module/server-side-render.js 140 141 142 143 /** 144 * External dependencies 145 */ 146 147 /** 148 * WordPress dependencies 149 */ 150 151 152 153 154 155 156 157 158 function rendererPath(block, attributes = null, urlQueryArgs = {}) { 159 return Object(external_wp_url_["addQueryArgs"])(`/wp/v2/block-renderer/${block}`, { 160 context: 'edit', 161 ...(null !== attributes ? { 162 attributes 163 } : {}), 164 ...urlQueryArgs 165 }); 166 } 167 168 function DefaultEmptyResponsePlaceholder({ 169 className 170 }) { 171 return Object(external_wp_element_["createElement"])(external_wp_components_["Placeholder"], { 172 className: className 173 }, Object(external_wp_i18n_["__"])('Block rendered as empty.')); 174 } 175 176 function DefaultErrorResponsePlaceholder({ 177 response, 178 className 179 }) { 180 const errorMessage = Object(external_wp_i18n_["sprintf"])( // translators: %s: error message describing the problem 181 Object(external_wp_i18n_["__"])('Error loading block: %s'), response.errorMsg); 182 return Object(external_wp_element_["createElement"])(external_wp_components_["Placeholder"], { 183 className: className 184 }, errorMessage); 185 } 186 187 function DefaultLoadingResponsePlaceholder({ 188 className 189 }) { 190 return Object(external_wp_element_["createElement"])(external_wp_components_["Placeholder"], { 191 className: className 192 }, Object(external_wp_element_["createElement"])(external_wp_components_["Spinner"], null)); 193 } 194 195 function ServerSideRender(props) { 196 const { 197 attributes, 198 block, 199 className, 200 httpMethod = 'GET', 201 urlQueryArgs, 202 EmptyResponsePlaceholder = DefaultEmptyResponsePlaceholder, 203 ErrorResponsePlaceholder = DefaultErrorResponsePlaceholder, 204 LoadingResponsePlaceholder = DefaultLoadingResponsePlaceholder 205 } = props; 206 const isMountedRef = Object(external_wp_element_["useRef"])(true); 207 const fetchRequestRef = Object(external_wp_element_["useRef"])(); 208 const [response, setResponse] = Object(external_wp_element_["useState"])(null); 209 const prevProps = Object(external_wp_compose_["usePrevious"])(props); 210 211 function fetchData() { 212 if (!isMountedRef.current) { 213 return; 214 } 215 216 if (null !== response) { 217 setResponse(null); 218 } 219 220 const sanitizedAttributes = attributes && Object(external_wp_blocks_["__experimentalSanitizeBlockAttributes"])(block, attributes); // If httpMethod is 'POST', send the attributes in the request body instead of the URL. 221 // This allows sending a larger attributes object than in a GET request, where the attributes are in the URL. 222 223 224 const isPostRequest = 'POST' === httpMethod; 225 const urlAttributes = isPostRequest ? null : sanitizedAttributes !== null && sanitizedAttributes !== void 0 ? sanitizedAttributes : null; 226 const path = rendererPath(block, urlAttributes, urlQueryArgs); 227 const data = isPostRequest ? { 228 attributes: sanitizedAttributes !== null && sanitizedAttributes !== void 0 ? sanitizedAttributes : null 229 } : null; // Store the latest fetch request so that when we process it, we can 230 // check if it is the current request, to avoid race conditions on slow networks. 231 232 const fetchRequest = fetchRequestRef.current = external_wp_apiFetch_default()({ 233 path, 234 data, 235 method: isPostRequest ? 'POST' : 'GET' 236 }).then(fetchResponse => { 237 if (isMountedRef.current && fetchRequest === fetchRequestRef.current && fetchResponse) { 238 setResponse(fetchResponse.rendered); 239 } 240 }).catch(error => { 241 if (isMountedRef.current && fetchRequest === fetchRequestRef.current) { 242 setResponse({ 243 error: true, 244 errorMsg: error.message 245 }); 246 } 247 }); 248 return fetchRequest; 249 } 250 251 const debouncedFetchData = Object(external_wp_compose_["useDebounce"])(fetchData, 500); // When the component unmounts, set isMountedRef to false. This will 252 // let the async fetch callbacks know when to stop. 253 254 Object(external_wp_element_["useEffect"])(() => () => { 255 isMountedRef.current = false; 256 }, []); 257 Object(external_wp_element_["useEffect"])(() => { 258 // Don't debounce the first fetch. This ensures that the first render 259 // shows data as soon as possible 260 if (prevProps === undefined) { 261 fetchData(); 262 } else if (!Object(external_lodash_["isEqual"])(prevProps, props)) { 263 debouncedFetchData(); 264 } 265 }); 266 267 if (response === '') { 268 return Object(external_wp_element_["createElement"])(EmptyResponsePlaceholder, props); 269 } else if (!response) { 270 return Object(external_wp_element_["createElement"])(LoadingResponsePlaceholder, props); 271 } else if (response.error) { 272 return Object(external_wp_element_["createElement"])(ErrorResponsePlaceholder, Object(esm_extends["a" /* default */])({ 273 response: response 274 }, props)); 275 } 276 277 return Object(external_wp_element_["createElement"])(external_wp_element_["RawHTML"], { 278 className: className 279 }, response); 280 } 281 282 // CONCATENATED MODULE: ./node_modules/@wordpress/server-side-render/build-module/index.js 283 284 285 286 /** 287 * WordPress dependencies 288 */ 289 290 291 292 /** 293 * Internal dependencies 294 */ 295 296 297 /** 298 * Constants 299 */ 300 301 const EMPTY_OBJECT = {}; 302 const ExportedServerSideRender = Object(external_wp_data_["withSelect"])(select => { 303 const coreEditorSelect = select('core/editor'); 304 305 if (coreEditorSelect) { 306 const currentPostId = coreEditorSelect.getCurrentPostId(); // For templates and template parts we use a custom ID format. 307 // Since they aren't real posts, we don't want to use their ID 308 // for server-side rendering. Since they use a string based ID, 309 // we can assume real post IDs are numbers. 310 311 if (currentPostId && typeof currentPostId === 'number') { 312 return { 313 currentPostId 314 }; 315 } 316 } 317 318 return EMPTY_OBJECT; 319 })(({ 320 urlQueryArgs = EMPTY_OBJECT, 321 currentPostId, 322 ...props 323 }) => { 324 const newUrlQueryArgs = Object(external_wp_element_["useMemo"])(() => { 325 if (!currentPostId) { 326 return urlQueryArgs; 327 } 328 329 return { 330 post_id: currentPostId, 331 ...urlQueryArgs 332 }; 333 }, [currentPostId, urlQueryArgs]); 334 return Object(external_wp_element_["createElement"])(ServerSideRender, Object(esm_extends["a" /* default */])({ 335 urlQueryArgs: newUrlQueryArgs 336 }, props)); 337 }); 338 339 if (window && window.wp && window.wp.components) { 340 window.wp.components.ServerSideRender = Object(external_wp_element_["forwardRef"])((props, ref) => { 341 external_wp_deprecated_default()('wp.components.ServerSideRender', { 342 since: '5.3', 343 alternative: 'wp.serverSideRender' 344 }); 345 return Object(external_wp_element_["createElement"])(ExportedServerSideRender, Object(esm_extends["a" /* default */])({}, props, { 346 ref: ref 347 })); 348 }); 349 } 350 351 /* harmony default export */ var build_module = __webpack_exports__["default"] = (ExportedServerSideRender); 352 353 354 /***/ }), 355 356 /***/ "GRId": 357 /***/ (function(module, exports) { 358 359 (function() { module.exports = window["wp"]["element"]; }()); 360 361 /***/ }), 362 363 /***/ "HSyU": 364 /***/ (function(module, exports) { 365 366 (function() { module.exports = window["wp"]["blocks"]; }()); 367 368 /***/ }), 369 370 /***/ "K9lf": 371 /***/ (function(module, exports) { 372 373 (function() { module.exports = window["wp"]["compose"]; }()); 374 375 /***/ }), 376 377 /***/ "Mmq9": 378 /***/ (function(module, exports) { 379 380 (function() { module.exports = window["wp"]["url"]; }()); 381 382 /***/ }), 383 384 /***/ "NMb1": 385 /***/ (function(module, exports) { 386 387 (function() { module.exports = window["wp"]["deprecated"]; }()); 388 389 /***/ }), 390 391 /***/ "YLtl": 392 /***/ (function(module, exports) { 393 394 (function() { module.exports = window["lodash"]; }()); 395 396 /***/ }), 397 398 /***/ "l3Sj": 399 /***/ (function(module, exports) { 400 401 (function() { module.exports = window["wp"]["i18n"]; }()); 402 403 /***/ }), 404 405 /***/ "tI+e": 406 /***/ (function(module, exports) { 407 408 (function() { module.exports = window["wp"]["components"]; }()); 409 410 /***/ }), 411 412 /***/ "wx14": 413 /***/ (function(module, __webpack_exports__, __webpack_require__) { 414 415 "use strict"; 416 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _extends; }); 417 function _extends() { 418 _extends = Object.assign || function (target) { 419 for (var i = 1; i < arguments.length; i++) { 420 var source = arguments[i]; 421 422 for (var key in source) { 423 if (Object.prototype.hasOwnProperty.call(source, key)) { 424 target[key] = source[key]; 425 } 426 } 427 } 428 429 return target; 430 }; 431 432 return _extends.apply(this, arguments); 433 } 434 435 /***/ }), 436 437 /***/ "ywyh": 438 /***/ (function(module, exports) { 439 440 (function() { module.exports = window["wp"]["apiFetch"]; }()); 441 442 /***/ }) 443 444 /******/ })["default"];