1/******/ (() => { // webpackBootstrap 2/******/ "use strict"; 3/******/ // The require scope 4/******/ var __webpack_require__ = {}; 5/******/ 6/************************************************************************/ 7/******/ /* webpack/runtime/define property getters */ 8/******/ (() => { 9/******/ // define getter functions for harmony exports 10/******/ __webpack_require__.d = (exports, definition) => { 11/******/ for(var key in definition) { 12/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 13/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 14/******/ } 15/******/ } 16/******/ }; 17/******/ })(); 18/******/ 19/******/ /* webpack/runtime/hasOwnProperty shorthand */ 20/******/ (() => { 21/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 22/******/ })(); 23/******/ 24/******/ /* webpack/runtime/make namespace object */ 25/******/ (() => { 26/******/ // define __esModule on exports 27/******/ __webpack_require__.r = (exports) => { 28/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 29/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 30/******/ } 31/******/ Object.defineProperty(exports, '__esModule', { value: true }); 32/******/ }; 33/******/ })(); 34/******/ 35/************************************************************************/ 36var __webpack_exports__ = {}; 37__webpack_require__.r(__webpack_exports__); 38/* harmony export */ __webpack_require__.d(__webpack_exports__, { 39/* harmony export */ createBlobURL: () => (/* binding */ createBlobURL), 40/* harmony export */ downloadBlob: () => (/* binding */ downloadBlob), 41/* harmony export */ getBlobByURL: () => (/* binding */ getBlobByURL), 42/* harmony export */ getBlobTypeByURL: () => (/* binding */ getBlobTypeByURL), 43/* harmony export */ isBlobURL: () => (/* binding */ isBlobURL), 44/* harmony export */ revokeBlobURL: () => (/* binding */ revokeBlobURL) 45/* harmony export */ }); 46/* wp:polyfill */ 47const cache = {}; 48 49/** 50 * Create a blob URL from a file. 51 * 52 * @param file The file to create a blob URL for. 53 * 54 * @return The blob URL. 55 */ 56function createBlobURL(file) { 57 const url = window.URL.createObjectURL(file); 58 cache[url] = file; 59 return url; 60} 61 62/** 63 * Retrieve a file based on a blob URL. The file must have been created by 64 * `createBlobURL` and not removed by `revokeBlobURL`, otherwise it will return 65 * `undefined`. 66 * 67 * @param url The blob URL. 68 * 69 * @return The file for the blob URL. 70 */ 71function getBlobByURL(url) { 72 return cache[url]; 73} 74 75/** 76 * Retrieve a blob type based on URL. The file must have been created by 77 * `createBlobURL` and not removed by `revokeBlobURL`, otherwise it will return 78 * `undefined`. 79 * 80 * @param url The blob URL. 81 * 82 * @return The blob type. 83 */ 84function getBlobTypeByURL(url) { 85 return getBlobByURL(url)?.type.split('/')[0]; // 0: media type , 1: file extension eg ( type: 'image/jpeg' ). 86} 87 88/** 89 * Remove the resource and file cache from memory. 90 * 91 * @param url The blob URL. 92 */ 93function revokeBlobURL(url) { 94 if (cache[url]) { 95 window.URL.revokeObjectURL(url); 96 } 97 delete cache[url]; 98} 99 100/** 101 * Check whether a url is a blob url. 102 * 103 * @param url The URL. 104 * 105 * @return Is the url a blob url? 106 */ 107function isBlobURL(url) { 108 if (!url || !url.indexOf) { 109 return false; 110 } 111 return url.indexOf('blob:') === 0; 112} 113 114/** 115 * Downloads a file, e.g., a text or readable stream, in the browser. 116 * Appropriate for downloading smaller file sizes, e.g., < 5 MB. 117 * 118 * Example usage: 119 * 120 * ```js 121 * const fileContent = JSON.stringify( 122 * { 123 * "title": "My Post", 124 * }, 125 * null, 126 * 2 127 * ); 128 * const filename = 'file.json'; 129 * 130 * downloadBlob( filename, fileContent, 'application/json' ); 131 * ``` 132 * 133 * @param filename File name. 134 * @param content File content (BufferSource | Blob | string). 135 * @param contentType (Optional) File mime type. Default is `''`. 136 */ 137function downloadBlob(filename, content, contentType = '') { 138 if (!filename || !content) { 139 return; 140 } 141 const file = new window.Blob([content], {
142 type: contentType 143 }); 144 const url = window.URL.createObjectURL(file); 145 const anchorElement = document.createElement('a'); 146 anchorElement.href = url; 147 anchorElement.download = filename; 148 anchorElement.style.display = 'none'; 149 document.body.appendChild(anchorElement); 150 anchorElement.click(); 151 document.body.removeChild(anchorElement); 152 window.URL.revokeObjectURL(url); 153} 154 155(window.wp = window.wp || {}).blob = __webpack_exports__; 156/******/ })() 157;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.