[ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
1 /******/ (function() { // webpackBootstrap 2 /******/ "use strict"; 3 /******/ // The require scope 4 /******/ var __webpack_require__ = {}; 5 /******/ 6 /************************************************************************/ 7 /******/ /* webpack/runtime/compat get default export */ 8 /******/ !function() { 9 /******/ // getDefaultExport function for compatibility with non-harmony modules 10 /******/ __webpack_require__.n = function(module) { 11 /******/ var getter = module && module.__esModule ? 12 /******/ function() { return module['default']; } : 13 /******/ function() { return module; }; 14 /******/ __webpack_require__.d(getter, { a: getter }); 15 /******/ return getter; 16 /******/ }; 17 /******/ }(); 18 /******/ 19 /******/ /* webpack/runtime/define property getters */ 20 /******/ !function() { 21 /******/ // define getter functions for harmony exports 22 /******/ __webpack_require__.d = function(exports, definition) { 23 /******/ for(var key in definition) { 24 /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 25 /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 26 /******/ } 27 /******/ } 28 /******/ }; 29 /******/ }(); 30 /******/ 31 /******/ /* webpack/runtime/hasOwnProperty shorthand */ 32 /******/ !function() { 33 /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 34 /******/ }(); 35 /******/ 36 /******/ /* webpack/runtime/make namespace object */ 37 /******/ !function() { 38 /******/ // define __esModule on exports 39 /******/ __webpack_require__.r = function(exports) { 40 /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 41 /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 42 /******/ } 43 /******/ Object.defineProperty(exports, '__esModule', { value: true }); 44 /******/ }; 45 /******/ }(); 46 /******/ 47 /************************************************************************/ 48 var __webpack_exports__ = {}; 49 // ESM COMPAT FLAG 50 __webpack_require__.r(__webpack_exports__); 51 52 ;// CONCATENATED MODULE: external ["wp","element"] 53 var external_wp_element_namespaceObject = window["wp"]["element"]; 54 ;// CONCATENATED MODULE: external ["wp","i18n"] 55 var external_wp_i18n_namespaceObject = window["wp"]["i18n"]; 56 ;// CONCATENATED MODULE: external "lodash" 57 var external_lodash_namespaceObject = window["lodash"]; 58 ;// CONCATENATED MODULE: external ["wp","apiFetch"] 59 var external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"]; 60 var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject); 61 ;// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/utils/file.js 62 /** 63 * Downloads a file. 64 * 65 * @param {string} fileName File Name. 66 * @param {string} content File Content. 67 * @param {string} contentType File mime type. 68 */ 69 function download(fileName, content, contentType) { 70 const file = new window.Blob([content], { 71 type: contentType 72 }); // IE11 can't use the click to download technique 73 // we use a specific IE11 technique instead. 74 75 if (window.navigator.msSaveOrOpenBlob) { 76 window.navigator.msSaveOrOpenBlob(file, fileName); 77 } else { 78 const a = document.createElement('a'); 79 a.href = URL.createObjectURL(file); 80 a.download = fileName; 81 a.style.display = 'none'; 82 document.body.appendChild(a); 83 a.click(); 84 document.body.removeChild(a); 85 } 86 } 87 /** 88 * Reads the textual content of the given file. 89 * 90 * @param {File} file File. 91 * @return {Promise<string>} Content of the file. 92 */ 93 94 function readTextFile(file) { 95 const reader = new window.FileReader(); 96 return new Promise(resolve => { 97 reader.onload = () => { 98 resolve(reader.result); 99 }; 100 101 reader.readAsText(file); 102 }); 103 } 104 105 ;// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/utils/export.js 106 /** 107 * External dependencies 108 */ 109 110 /** 111 * WordPress dependencies 112 */ 113 114 115 /** 116 * Internal dependencies 117 */ 118 119 120 /** 121 * Export a reusable block as a JSON file. 122 * 123 * @param {number} id 124 */ 125 126 async function exportReusableBlock(id) { 127 const postType = await external_wp_apiFetch_default()({ 128 path: `/wp/v2/types/wp_block` 129 }); 130 const post = await external_wp_apiFetch_default()({ 131 path: `/wp/v2/$postType.rest_base}/$id}?context=edit` 132 }); 133 const title = post.title.raw; 134 const content = post.content.raw; 135 const fileContent = JSON.stringify({ 136 __file: 'wp_block', 137 title, 138 content 139 }, null, 2); 140 const fileName = (0,external_lodash_namespaceObject.kebabCase)(title) + '.json'; 141 download(fileName, fileContent, 'application/json'); 142 } 143 144 /* harmony default export */ var utils_export = (exportReusableBlock); 145 146 ;// CONCATENATED MODULE: external ["wp","components"] 147 var external_wp_components_namespaceObject = window["wp"]["components"]; 148 ;// CONCATENATED MODULE: external ["wp","compose"] 149 var external_wp_compose_namespaceObject = window["wp"]["compose"]; 150 ;// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/utils/import.js 151 /** 152 * External dependencies 153 */ 154 155 /** 156 * WordPress dependencies 157 */ 158 159 160 /** 161 * Internal dependencies 162 */ 163 164 165 /** 166 * Import a reusable block from a JSON file. 167 * 168 * @param {File} file File. 169 * @return {Promise} Promise returning the imported reusable block. 170 */ 171 172 async function importReusableBlock(file) { 173 const fileContent = await readTextFile(file); 174 let parsedContent; 175 176 try { 177 parsedContent = JSON.parse(fileContent); 178 } catch (e) { 179 throw new Error('Invalid JSON file'); 180 } 181 182 if (parsedContent.__file !== 'wp_block' || !parsedContent.title || !parsedContent.content || !(0,external_lodash_namespaceObject.isString)(parsedContent.title) || !(0,external_lodash_namespaceObject.isString)(parsedContent.content)) { 183 throw new Error('Invalid Reusable block JSON file'); 184 } 185 186 const postType = await external_wp_apiFetch_default()({ 187 path: `/wp/v2/types/wp_block` 188 }); 189 const reusableBlock = await external_wp_apiFetch_default()({ 190 path: `/wp/v2/$postType.rest_base}`, 191 data: { 192 title: parsedContent.title, 193 content: parsedContent.content, 194 status: 'publish' 195 }, 196 method: 'POST' 197 }); 198 return reusableBlock; 199 } 200 201 /* harmony default export */ var utils_import = (importReusableBlock); 202 203 ;// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/components/import-form/index.js 204 205 206 /** 207 * WordPress dependencies 208 */ 209 210 211 212 213 /** 214 * Internal dependencies 215 */ 216 217 218 219 function ImportForm(_ref) { 220 let { 221 instanceId, 222 onUpload 223 } = _ref; 224 const inputId = 'list-reusable-blocks-import-form-' + instanceId; 225 const formRef = (0,external_wp_element_namespaceObject.useRef)(); 226 const [isLoading, setIsLoading] = (0,external_wp_element_namespaceObject.useState)(false); 227 const [error, setError] = (0,external_wp_element_namespaceObject.useState)(null); 228 const [file, setFile] = (0,external_wp_element_namespaceObject.useState)(null); 229 230 const onChangeFile = event => { 231 setFile(event.target.files[0]); 232 setError(null); 233 }; 234 235 const onSubmit = event => { 236 event.preventDefault(); 237 238 if (!file) { 239 return; 240 } 241 242 setIsLoading({ 243 isLoading: true 244 }); 245 utils_import(file).then(reusableBlock => { 246 if (!formRef) { 247 return; 248 } 249 250 setIsLoading(false); 251 onUpload(reusableBlock); 252 }).catch(errors => { 253 if (!formRef) { 254 return; 255 } 256 257 let uiMessage; 258 259 switch (errors.message) { 260 case 'Invalid JSON file': 261 uiMessage = (0,external_wp_i18n_namespaceObject.__)('Invalid JSON file'); 262 break; 263 264 case 'Invalid Reusable block JSON file': 265 uiMessage = (0,external_wp_i18n_namespaceObject.__)('Invalid Reusable block JSON file'); 266 break; 267 268 default: 269 uiMessage = (0,external_wp_i18n_namespaceObject.__)('Unknown error'); 270 } 271 272 setIsLoading(false); 273 setError(uiMessage); 274 }); 275 }; 276 277 const onDismissError = () => { 278 setError(null); 279 }; 280 281 return (0,external_wp_element_namespaceObject.createElement)("form", { 282 className: "list-reusable-blocks-import-form", 283 onSubmit: onSubmit, 284 ref: formRef 285 }, error && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Notice, { 286 status: "error", 287 onRemove: () => onDismissError() 288 }, error), (0,external_wp_element_namespaceObject.createElement)("label", { 289 htmlFor: inputId, 290 className: "list-reusable-blocks-import-form__label" 291 }, (0,external_wp_i18n_namespaceObject.__)('File')), (0,external_wp_element_namespaceObject.createElement)("input", { 292 id: inputId, 293 type: "file", 294 onChange: onChangeFile 295 }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 296 type: "submit", 297 isBusy: isLoading, 298 disabled: !file || isLoading, 299 variant: "secondary", 300 className: "list-reusable-blocks-import-form__button" 301 }, (0,external_wp_i18n_namespaceObject._x)('Import', 'button label'))); 302 } 303 304 /* harmony default export */ var import_form = ((0,external_wp_compose_namespaceObject.withInstanceId)(ImportForm)); 305 306 ;// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/components/import-dropdown/index.js 307 308 309 /** 310 * External dependencies 311 */ 312 313 /** 314 * WordPress dependencies 315 */ 316 317 318 319 /** 320 * Internal dependencies 321 */ 322 323 324 325 function ImportDropdown(_ref) { 326 let { 327 onUpload 328 } = _ref; 329 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Dropdown, { 330 position: "bottom right", 331 contentClassName: "list-reusable-blocks-import-dropdown__content", 332 renderToggle: _ref2 => { 333 let { 334 isOpen, 335 onToggle 336 } = _ref2; 337 return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, { 338 "aria-expanded": isOpen, 339 onClick: onToggle, 340 variant: "primary" 341 }, (0,external_wp_i18n_namespaceObject.__)('Import from JSON')); 342 }, 343 renderContent: _ref3 => { 344 let { 345 onClose 346 } = _ref3; 347 return (0,external_wp_element_namespaceObject.createElement)(import_form, { 348 onUpload: (0,external_lodash_namespaceObject.flow)(onClose, onUpload) 349 }); 350 } 351 }); 352 } 353 354 /* harmony default export */ var import_dropdown = (ImportDropdown); 355 356 ;// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/index.js 357 358 359 /** 360 * WordPress dependencies 361 */ 362 363 364 /** 365 * Internal dependencies 366 */ 367 368 369 // Setup Export Links. 370 371 document.body.addEventListener('click', event => { 372 if (!event.target.classList.contains('wp-list-reusable-blocks__export')) { 373 return; 374 } 375 376 event.preventDefault(); 377 utils_export(event.target.dataset.id); 378 }); // Setup Import Form. 379 380 document.addEventListener('DOMContentLoaded', () => { 381 const button = document.querySelector('.page-title-action'); 382 383 if (!button) { 384 return; 385 } 386 387 const showNotice = () => { 388 const notice = document.createElement('div'); 389 notice.className = 'notice notice-success is-dismissible'; 390 notice.innerHTML = `<p>${(0,external_wp_i18n_namespaceObject.__)('Reusable block imported successfully!')}</p>`; 391 const headerEnd = document.querySelector('.wp-header-end'); 392 393 if (!headerEnd) { 394 return; 395 } 396 397 headerEnd.parentNode.insertBefore(notice, headerEnd); 398 }; 399 400 const container = document.createElement('div'); 401 container.className = 'list-reusable-blocks__container'; 402 button.parentNode.insertBefore(container, button); 403 (0,external_wp_element_namespaceObject.render)((0,external_wp_element_namespaceObject.createElement)(import_dropdown, { 404 onUpload: showNotice 405 }), container); 406 }); 407 408 (window.wp = window.wp || {}).listReusableBlocks = __webpack_exports__; 409 /******/ })() 410 ;
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Nov 21 01:00:03 2024 | Cross-referenced by PHPXref 0.7.1 |