this["wp"] = this["wp"] || {}; this["wp"]["mediaUtils"] = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 461); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["element"]; }()); /***/ }), /***/ 1: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["i18n"]; }()); /***/ }), /***/ 12: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _assertThisInitialized; }); function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } /***/ }), /***/ 14: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ _slicedToArray; }); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js var arrayWithHoles = __webpack_require__(38); // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js var unsupportedIterableToArray = __webpack_require__(29); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js var nonIterableRest = __webpack_require__(39); // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js function _slicedToArray(arr, i) { return Object(arrayWithHoles["a" /* default */])(arr) || _iterableToArrayLimit(arr, i) || Object(unsupportedIterableToArray["a" /* default */])(arr, i) || Object(nonIterableRest["a" /* default */])(); } /***/ }), /***/ 16: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _getPrototypeOf; }); function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /***/ }), /***/ 18: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ _toConsumableArray; }); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js var arrayLikeToArray = __webpack_require__(26); // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return Object(arrayLikeToArray["a" /* default */])(arr); } // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js var iterableToArray = __webpack_require__(35); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js var unsupportedIterableToArray = __webpack_require__(29); // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || Object(iterableToArray["a" /* default */])(arr) || Object(unsupportedIterableToArray["a" /* default */])(arr) || _nonIterableSpread(); } /***/ }), /***/ 19: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; }); function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /***/ }), /***/ 2: /***/ (function(module, exports) { (function() { module.exports = this["lodash"]; }()); /***/ }), /***/ 20: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; }); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /***/ }), /***/ 22: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ _inherits; }); // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } /***/ }), /***/ 23: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _possibleConstructorReturn; }); /* harmony import */ var _helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(40); /* harmony import */ var _assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); function _possibleConstructorReturn(self, call) { if (call && (Object(_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(call) === "object" || typeof call === "function")) { return call; } return Object(_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(self); } /***/ }), /***/ 24: /***/ (function(module, exports) { (function() { module.exports = this["regeneratorRuntime"]; }()); /***/ }), /***/ 26: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayLikeToArray; }); function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } /***/ }), /***/ 29: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _unsupportedIterableToArray; }); /* harmony import */ var _arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(26); function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return Object(_arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return Object(_arrayLikeToArray__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(o, minLen); } /***/ }), /***/ 35: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _iterableToArray; }); function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } /***/ }), /***/ 38: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayWithHoles; }); function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /***/ }), /***/ 39: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _nonIterableRest; }); function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } /***/ }), /***/ 40: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _typeof; }); function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /***/ }), /***/ 44: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["blob"]; }()); /***/ }), /***/ 45: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["apiFetch"]; }()); /***/ }), /***/ 461: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, "MediaUpload", function() { return /* reexport */ media_upload; }); __webpack_require__.d(__webpack_exports__, "uploadMedia", function() { return /* reexport */ uploadMedia; }); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js var classCallCheck = __webpack_require__(20); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js var createClass = __webpack_require__(19); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js var assertThisInitialized = __webpack_require__(12); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js var possibleConstructorReturn = __webpack_require__(23); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js var getPrototypeOf = __webpack_require__(16); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js + 1 modules var inherits = __webpack_require__(22); // EXTERNAL MODULE: external {"this":"lodash"} var external_this_lodash_ = __webpack_require__(2); // EXTERNAL MODULE: external {"this":["wp","element"]} var external_this_wp_element_ = __webpack_require__(0); // EXTERNAL MODULE: external {"this":["wp","i18n"]} var external_this_wp_i18n_ = __webpack_require__(1); // CONCATENATED MODULE: ./node_modules/@wordpress/media-utils/build-module/components/media-upload/index.js function _createSuper(Derived) { return function () { var Super = Object(getPrototypeOf["a" /* default */])(Derived), result; if (_isNativeReflectConstruct()) { 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); }; } 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; } } /** * External dependencies */ /** * WordPress dependencies */ var _window = window, wp = _window.wp; var DEFAULT_EMPTY_GALLERY = []; /** * Prepares the Featured Image toolbars and frames. * * @return {wp.media.view.MediaFrame.Select} The default media workflow. */ var getFeaturedImageMediaFrame = function getFeaturedImageMediaFrame() { return wp.media.view.MediaFrame.Select.extend({ /** * Enables the Set Featured Image Button. * * @param {Object} toolbar toolbar for featured image state * @return {void} */ featuredImageToolbar: function featuredImageToolbar(toolbar) { this.createSelectToolbar(toolbar, { text: wp.media.view.l10n.setFeaturedImage, state: this.options.state }); }, /** * Handle the edit state requirements of selected media item. * * @return {void} */ editState: function editState() { var selection = this.state('featured-image').get('selection'); var view = new wp.media.view.EditImage({ model: selection.single(), controller: this }).render(); // Set the view to the EditImage frame using the selected image. this.content.set(view); // After bringing in the frame, load the actual editor via an ajax call. view.loadEditor(); }, /** * Create the default states. * * @return {void} */ createStates: function createStates() { this.on('toolbar:create:featured-image', this.featuredImageToolbar, this); this.on('content:render:edit-image', this.editState, this); this.states.add([new wp.media.controller.FeaturedImage(), new wp.media.controller.EditImage({ model: this.options.editImage })]); } }); }; /** * Prepares the Gallery toolbars and frames. * * @return {wp.media.view.MediaFrame.Post} The default media workflow. */ var media_upload_getGalleryDetailsMediaFrame = function getGalleryDetailsMediaFrame() { /** * Custom gallery details frame. * * @see https://github.com/xwp/wp-core-media-widgets/blob/905edbccfc2a623b73a93dac803c5335519d7837/wp-admin/js/widgets/media-gallery-widget.js * @class GalleryDetailsMediaFrame * @class */ return wp.media.view.MediaFrame.Post.extend({ /** * Set up gallery toolbar. * * @return {void} */ galleryToolbar: function galleryToolbar() { var editing = this.state().get('editing'); this.toolbar.set(new wp.media.view.Toolbar({ controller: this, items: { insert: { style: 'primary', text: editing ? wp.media.view.l10n.updateGallery : wp.media.view.l10n.insertGallery, priority: 80, requires: { library: true }, /** * @fires wp.media.controller.State#update */ click: function click() { var controller = this.controller, state = controller.state(); controller.close(); state.trigger('update', state.get('library')); // Restore and reset the default state. controller.setState(controller.options.state); controller.reset(); } } } })); }, /** * Handle the edit state requirements of selected media item. * * @return {void} */ editState: function editState() { var selection = this.state('gallery').get('selection'); var view = new wp.media.view.EditImage({ model: selection.single(), controller: this }).render(); // Set the view to the EditImage frame using the selected image. this.content.set(view); // After bringing in the frame, load the actual editor via an ajax call. view.loadEditor(); }, /** * Create the default states. * * @return {void} */ createStates: function createStates() { this.on('toolbar:create:main-gallery', this.galleryToolbar, this); this.on('content:render:edit-image', this.editState, this); this.states.add([new wp.media.controller.Library({ id: 'gallery', title: wp.media.view.l10n.createGalleryTitle, priority: 40, toolbar: 'main-gallery', filterable: 'uploaded', multiple: 'add', editable: false, library: wp.media.query(Object(external_this_lodash_["defaults"])({ type: 'image' }, this.options.library)) }), new wp.media.controller.EditImage({ model: this.options.editImage }), new wp.media.controller.GalleryEdit({ library: this.options.selection, editing: this.options.editing, menu: 'gallery', displaySettings: false, multiple: true }), new wp.media.controller.GalleryAdd()]); } }); }; // the media library image object contains numerous attributes // we only need this set to display the image in the library var media_upload_slimImageObject = function slimImageObject(img) { var attrSet = ['sizes', 'mime', 'type', 'subtype', 'id', 'url', 'alt', 'link', 'caption']; return Object(external_this_lodash_["pick"])(img, attrSet); }; var getAttachmentsCollection = function getAttachmentsCollection(ids) { return wp.media.query({ order: 'ASC', orderby: 'post__in', post__in: ids, posts_per_page: -1, query: true, type: 'image' }); }; var media_upload_MediaUpload = /*#__PURE__*/function (_Component) { Object(inherits["a" /* default */])(MediaUpload, _Component); var _super = _createSuper(MediaUpload); function MediaUpload(_ref) { var _this; var allowedTypes = _ref.allowedTypes, _ref$gallery = _ref.gallery, gallery = _ref$gallery === void 0 ? false : _ref$gallery, _ref$unstableFeatured = _ref.unstableFeaturedImageFlow, unstableFeaturedImageFlow = _ref$unstableFeatured === void 0 ? false : _ref$unstableFeatured, modalClass = _ref.modalClass, _ref$multiple = _ref.multiple, multiple = _ref$multiple === void 0 ? false : _ref$multiple, _ref$title = _ref.title, title = _ref$title === void 0 ? Object(external_this_wp_i18n_["__"])('Select or Upload Media') : _ref$title; Object(classCallCheck["a" /* default */])(this, MediaUpload); _this = _super.apply(this, arguments); _this.openModal = _this.openModal.bind(Object(assertThisInitialized["a" /* default */])(_this)); _this.onOpen = _this.onOpen.bind(Object(assertThisInitialized["a" /* default */])(_this)); _this.onSelect = _this.onSelect.bind(Object(assertThisInitialized["a" /* default */])(_this)); _this.onUpdate = _this.onUpdate.bind(Object(assertThisInitialized["a" /* default */])(_this)); _this.onClose = _this.onClose.bind(Object(assertThisInitialized["a" /* default */])(_this)); if (gallery) { _this.buildAndSetGalleryFrame(); } else { var frameConfig = { title: title, multiple: multiple }; if (!!allowedTypes) { frameConfig.library = { type: allowedTypes }; } _this.frame = wp.media(frameConfig); } if (modalClass) { _this.frame.$el.addClass(modalClass); } if (unstableFeaturedImageFlow) { _this.buildAndSetFeatureImageFrame(); } _this.initializeListeners(); return _this; } Object(createClass["a" /* default */])(MediaUpload, [{ key: "initializeListeners", value: function initializeListeners() { // When an image is selected in the media frame... this.frame.on('select', this.onSelect); this.frame.on('update', this.onUpdate); this.frame.on('open', this.onOpen); this.frame.on('close', this.onClose); } /** * Sets the Gallery frame and initializes listeners. * * @return {void} */ }, { key: "buildAndSetGalleryFrame", value: function buildAndSetGalleryFrame() { var _this$props = this.props, _this$props$addToGall = _this$props.addToGallery, addToGallery = _this$props$addToGall === void 0 ? false : _this$props$addToGall, allowedTypes = _this$props.allowedTypes, _this$props$multiple = _this$props.multiple, multiple = _this$props$multiple === void 0 ? false : _this$props$multiple, _this$props$value = _this$props.value, value = _this$props$value === void 0 ? DEFAULT_EMPTY_GALLERY : _this$props$value; // If the value did not changed there is no need to rebuild the frame, // we can continue to use the existing one. if (value === this.lastGalleryValue) { return; } this.lastGalleryValue = value; // If a frame already existed remove it. if (this.frame) { this.frame.remove(); } var currentState; if (addToGallery) { currentState = 'gallery-library'; } else { currentState = value && value.length ? 'gallery-edit' : 'gallery'; } if (!this.GalleryDetailsMediaFrame) { this.GalleryDetailsMediaFrame = media_upload_getGalleryDetailsMediaFrame(); } var attachments = getAttachmentsCollection(value); var selection = new wp.media.model.Selection(attachments.models, { props: attachments.props.toJSON(), multiple: multiple }); this.frame = new this.GalleryDetailsMediaFrame({ mimeType: allowedTypes, state: currentState, multiple: multiple, selection: selection, editing: value && value.length ? true : false }); wp.media.frame = this.frame; this.initializeListeners(); } /** * Initializes the Media Library requirements for the featured image flow. * * @return {void} */ }, { key: "buildAndSetFeatureImageFrame", value: function buildAndSetFeatureImageFrame() { var featuredImageFrame = getFeaturedImageMediaFrame(); var attachments = getAttachmentsCollection(this.props.value); var selection = new wp.media.model.Selection(attachments.models, { props: attachments.props.toJSON() }); this.frame = new featuredImageFrame({ mimeType: this.props.allowedTypes, state: 'featured-image', multiple: this.props.multiple, selection: selection, editing: this.props.value ? true : false }); wp.media.frame = this.frame; } }, { key: "componentWillUnmount", value: function componentWillUnmount() { this.frame.remove(); } }, { key: "onUpdate", value: function onUpdate(selections) { var _this$props2 = this.props, onSelect = _this$props2.onSelect, _this$props2$multiple = _this$props2.multiple, multiple = _this$props2$multiple === void 0 ? false : _this$props2$multiple; var state = this.frame.state(); var selectedImages = selections || state.get('selection'); if (!selectedImages || !selectedImages.models.length) { return; } if (multiple) { onSelect(selectedImages.models.map(function (model) { return media_upload_slimImageObject(model.toJSON()); })); } else { onSelect(media_upload_slimImageObject(selectedImages.models[0].toJSON())); } } }, { key: "onSelect", value: function onSelect() { var _this$props3 = this.props, onSelect = _this$props3.onSelect, _this$props3$multiple = _this$props3.multiple, multiple = _this$props3$multiple === void 0 ? false : _this$props3$multiple; // Get media attachment details from the frame state var attachment = this.frame.state().get('selection').toJSON(); onSelect(multiple ? attachment : attachment[0]); } }, { key: "onOpen", value: function onOpen() { this.updateCollection(); if (!this.props.value) { return; } if (!this.props.gallery) { var selection = this.frame.state().get('selection'); Object(external_this_lodash_["castArray"])(this.props.value).forEach(function (id) { selection.add(wp.media.attachment(id)); }); } // load the images so they are available in the media modal. getAttachmentsCollection(Object(external_this_lodash_["castArray"])(this.props.value)).more(); } }, { key: "onClose", value: function onClose() { var onClose = this.props.onClose; if (onClose) { onClose(); } } }, { key: "updateCollection", value: function updateCollection() { var frameContent = this.frame.content.get(); if (frameContent && frameContent.collection) { var collection = frameContent.collection; // clean all attachments we have in memory. collection.toArray().forEach(function (model) { return model.trigger('destroy', model); }); // reset has more flag, if library had small amount of items all items may have been loaded before. collection.mirroring._hasMore = true; // request items collection.more(); } } }, { key: "openModal", value: function openModal() { if (this.props.gallery) { this.buildAndSetGalleryFrame(); } this.frame.open(); } }, { key: "render", value: function render() { return this.props.render({ open: this.openModal }); } }]); return MediaUpload; }(external_this_wp_element_["Component"]); /* harmony default export */ var media_upload = (media_upload_MediaUpload); // CONCATENATED MODULE: ./node_modules/@wordpress/media-utils/build-module/components/index.js // EXTERNAL MODULE: external {"this":"regeneratorRuntime"} var external_this_regeneratorRuntime_ = __webpack_require__(24); var external_this_regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(external_this_regeneratorRuntime_); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js var defineProperty = __webpack_require__(5); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js var asyncToGenerator = __webpack_require__(50); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 2 modules var toConsumableArray = __webpack_require__(18); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules var slicedToArray = __webpack_require__(14); // EXTERNAL MODULE: external {"this":["wp","apiFetch"]} var external_this_wp_apiFetch_ = __webpack_require__(45); var external_this_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_apiFetch_); // EXTERNAL MODULE: external {"this":["wp","blob"]} var external_this_wp_blob_ = __webpack_require__(44); // CONCATENATED MODULE: ./node_modules/@wordpress/media-utils/build-module/utils/upload-media.js 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; } 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; } function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } /** * External dependencies */ /** * WordPress dependencies */ /** * Browsers may use unexpected mime types, and they differ from browser to browser. * This function computes a flexible array of mime types from the mime type structured provided by the server. * Converts { jpg|jpeg|jpe: "image/jpeg" } into [ "image/jpeg", "image/jpg", "image/jpeg", "image/jpe" ] * The computation of this array instead of directly using the object, * solves the problem in chrome where mp3 files have audio/mp3 as mime type instead of audio/mpeg. * https://bugs.chromium.org/p/chromium/issues/detail?id=227004 * * @param {?Object} wpMimeTypesObject Mime type object received from the server. * Extensions are keys separated by '|' and values are mime types associated with an extension. * * @return {?Array} An array of mime types or the parameter passed if it was "falsy". */ function getMimeTypesArray(wpMimeTypesObject) { if (!wpMimeTypesObject) { return wpMimeTypesObject; } return Object(external_this_lodash_["flatMap"])(wpMimeTypesObject, function (mime, extensionsString) { var _mime$split = mime.split('/'), _mime$split2 = Object(slicedToArray["a" /* default */])(_mime$split, 1), type = _mime$split2[0]; var extensions = extensionsString.split('|'); return [mime].concat(Object(toConsumableArray["a" /* default */])(Object(external_this_lodash_["map"])(extensions, function (extension) { return "".concat(type, "/").concat(extension); }))); }); } /** * Media Upload is used by audio, image, gallery, video, and file blocks to * handle uploading a media file when a file upload button is activated. * * TODO: future enhancement to add an upload indicator. * * @param {Object} $0 Parameters object passed to the function. * @param {?Array} $0.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed. * @param {?Object} $0.additionalData Additional data to include in the request. * @param {Array} $0.filesList List of files. * @param {?number} $0.maxUploadFileSize Maximum upload size in bytes allowed for the site. * @param {Function} $0.onError Function called when an error happens. * @param {Function} $0.onFileChange Function called each time a file or a temporary representation of the file is available. * @param {?Object} $0.wpAllowedMimeTypes List of allowed mime types and file extensions. */ function uploadMedia(_x) { return _uploadMedia.apply(this, arguments); } /** * @param {File} file Media File to Save. * @param {?Object} additionalData Additional data to include in the request. * * @return {Promise} Media Object Promise. */ function _uploadMedia() { _uploadMedia = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/external_this_regeneratorRuntime_default.a.mark(function _callee(_ref) { var allowedTypes, _ref$additionalData, additionalData, filesList, maxUploadFileSize, _ref$onError, onError, onFileChange, _ref$wpAllowedMimeTyp, wpAllowedMimeTypes, files, filesSet, setAndUpdateFiles, isAllowedType, allowedMimeTypesForUser, isAllowedMimeTypeForUser, triggerError, validFiles, _iterator, _step, _mediaFile, idx, mediaFile, savedMedia, mediaObject, message; return external_this_regeneratorRuntime_default.a.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: allowedTypes = _ref.allowedTypes, _ref$additionalData = _ref.additionalData, additionalData = _ref$additionalData === void 0 ? {} : _ref$additionalData, filesList = _ref.filesList, maxUploadFileSize = _ref.maxUploadFileSize, _ref$onError = _ref.onError, onError = _ref$onError === void 0 ? external_this_lodash_["noop"] : _ref$onError, onFileChange = _ref.onFileChange, _ref$wpAllowedMimeTyp = _ref.wpAllowedMimeTypes, wpAllowedMimeTypes = _ref$wpAllowedMimeTyp === void 0 ? null : _ref$wpAllowedMimeTyp; // Cast filesList to array files = Object(toConsumableArray["a" /* default */])(filesList); filesSet = []; setAndUpdateFiles = function setAndUpdateFiles(idx, value) { Object(external_this_wp_blob_["revokeBlobURL"])(Object(external_this_lodash_["get"])(filesSet, [idx, 'url'])); filesSet[idx] = value; onFileChange(Object(external_this_lodash_["compact"])(filesSet)); }; // Allowed type specified by consumer isAllowedType = function isAllowedType(fileType) { if (!allowedTypes) { return true; } return Object(external_this_lodash_["some"])(allowedTypes, function (allowedType) { // If a complete mimetype is specified verify if it matches exactly the mime type of the file. if (Object(external_this_lodash_["includes"])(allowedType, '/')) { return allowedType === fileType; } // Otherwise a general mime type is used and we should verify if the file mimetype starts with it. return Object(external_this_lodash_["startsWith"])(fileType, "".concat(allowedType, "/")); }); }; // Allowed types for the current WP_User allowedMimeTypesForUser = getMimeTypesArray(wpAllowedMimeTypes); isAllowedMimeTypeForUser = function isAllowedMimeTypeForUser(fileType) { return Object(external_this_lodash_["includes"])(allowedMimeTypesForUser, fileType); }; // Build the error message including the filename triggerError = function triggerError(error) { error.message = [Object(external_this_wp_element_["createElement"])("strong", { key: "filename" }, error.file.name), ': ', error.message]; onError(error); }; validFiles = []; _iterator = _createForOfIteratorHelper(files); _context.prev = 10; _iterator.s(); case 12: if ((_step = _iterator.n()).done) { _context.next = 31; break; } _mediaFile = _step.value; if (!(allowedMimeTypesForUser && _mediaFile.type && !isAllowedMimeTypeForUser(_mediaFile.type))) { _context.next = 17; break; } triggerError({ code: 'MIME_TYPE_NOT_ALLOWED_FOR_USER', message: Object(external_this_wp_i18n_["__"])('Sorry, this file type is not permitted for security reasons.'), file: _mediaFile }); return _context.abrupt("continue", 29); case 17: if (!(_mediaFile.type && !isAllowedType(_mediaFile.type))) { _context.next = 20; break; } triggerError({ code: 'MIME_TYPE_NOT_SUPPORTED', message: Object(external_this_wp_i18n_["__"])('Sorry, this file type is not supported here.'), file: _mediaFile }); return _context.abrupt("continue", 29); case 20: if (!(maxUploadFileSize && _mediaFile.size > maxUploadFileSize)) { _context.next = 23; break; } triggerError({ code: 'SIZE_ABOVE_LIMIT', message: Object(external_this_wp_i18n_["__"])('This file exceeds the maximum upload size for this site.'), file: _mediaFile }); return _context.abrupt("continue", 29); case 23: if (!(_mediaFile.size <= 0)) { _context.next = 26; break; } triggerError({ code: 'EMPTY_FILE', message: Object(external_this_wp_i18n_["__"])('This file is empty.'), file: _mediaFile }); return _context.abrupt("continue", 29); case 26: validFiles.push(_mediaFile); // Set temporary URL to create placeholder media file, this is replaced // with final file from media gallery when upload is `done` below filesSet.push({ url: Object(external_this_wp_blob_["createBlobURL"])(_mediaFile) }); onFileChange(filesSet); case 29: _context.next = 12; break; case 31: _context.next = 36; break; case 33: _context.prev = 33; _context.t0 = _context["catch"](10); _iterator.e(_context.t0); case 36: _context.prev = 36; _iterator.f(); return _context.finish(36); case 39: idx = 0; case 40: if (!(idx < validFiles.length)) { _context.next = 59; break; } mediaFile = validFiles[idx]; _context.prev = 42; _context.next = 45; return createMediaFromFile(mediaFile, additionalData); case 45: savedMedia = _context.sent; mediaObject = _objectSpread({}, Object(external_this_lodash_["omit"])(savedMedia, ['alt_text', 'source_url']), { alt: savedMedia.alt_text, caption: Object(external_this_lodash_["get"])(savedMedia, ['caption', 'raw'], ''), title: savedMedia.title.raw, url: savedMedia.source_url }); setAndUpdateFiles(idx, mediaObject); _context.next = 56; break; case 50: _context.prev = 50; _context.t1 = _context["catch"](42); // Reset to empty on failure. setAndUpdateFiles(idx, null); message = void 0; if (Object(external_this_lodash_["has"])(_context.t1, ['message'])) { message = Object(external_this_lodash_["get"])(_context.t1, ['message']); } else { message = Object(external_this_wp_i18n_["sprintf"])( // translators: %s: file name Object(external_this_wp_i18n_["__"])('Error while uploading file %s to the media library.'), mediaFile.name); } onError({ code: 'GENERAL', message: message, file: mediaFile }); case 56: ++idx; _context.next = 40; break; case 59: case "end": return _context.stop(); } } }, _callee, null, [[10, 33, 36, 39], [42, 50]]); })); return _uploadMedia.apply(this, arguments); } function createMediaFromFile(file, additionalData) { // Create upload payload var data = new window.FormData(); data.append('file', file, file.name || file.type.replace('/', '.')); Object(external_this_lodash_["forEach"])(additionalData, function (value, key) { return data.append(key, value); }); return external_this_wp_apiFetch_default()({ path: '/wp/v2/media', body: data, method: 'POST' }); } // CONCATENATED MODULE: ./node_modules/@wordpress/media-utils/build-module/utils/index.js // CONCATENATED MODULE: ./node_modules/@wordpress/media-utils/build-module/index.js /***/ }), /***/ 5: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _defineProperty; }); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /***/ }), /***/ 50: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _asyncToGenerator; }); function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } /***/ }) /******/ });