diff -r 3d4e9c994f10 -r a86126ab1dd4 wp/wp-includes/js/dist/media-utils.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wp/wp-includes/js/dist/media-utils.js Tue Dec 15 13:49:49 2020 +0100 @@ -0,0 +1,1327 @@ +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 = 460); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 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"]; }()); + +/***/ }), + +/***/ 460: +/***/ (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); + }); + }; +} + +/***/ }) + +/******/ }); \ No newline at end of file