} Content of the file.
*/
function readTextFile(file) {
var reader = new window.FileReader();
return new Promise(function (resolve) {
reader.onload = function () {
resolve(reader.result);
};
reader.readAsText(file);
});
}
// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/utils/export.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Export a reusable block as a JSON file.
*
* @param {number} id
*/
function exportReusableBlock(_x) {
return _exportReusableBlock.apply(this, arguments);
}
function _exportReusableBlock() {
_exportReusableBlock = Object(asyncToGenerator["a" /* default */])(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee(id) {
var postType, post, title, content, fileContent, fileName;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return external_this_wp_apiFetch_default()({
path: "/core/types/wp_block"
});
case 2:
postType = _context.sent;
_context.next = 5;
return external_this_wp_apiFetch_default()({
path: "/core/".concat(postType.rest_base, "/").concat(id, "?context=edit")
});
case 5:
post = _context.sent;
title = post.title.raw;
content = post.content.raw;
fileContent = JSON.stringify({
__file: 'wp_block',
title: title,
content: content
}, null, 2);
fileName = Object(external_lodash_["kebabCase"])(title) + '.json';
download(fileName, fileContent, 'application/json');
case 11:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return _exportReusableBlock.apply(this, arguments);
}
/* harmony default export */ var utils_export = (exportReusableBlock);
// EXTERNAL MODULE: external {"this":["wp","components"]}
var external_this_wp_components_ = __webpack_require__(4);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
var classCallCheck = __webpack_require__(10);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
var createClass = __webpack_require__(9);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
var possibleConstructorReturn = __webpack_require__(12);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
var getPrototypeOf = __webpack_require__(13);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js + 1 modules
var inherits = __webpack_require__(14);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
var assertThisInitialized = __webpack_require__(3);
// EXTERNAL MODULE: external {"this":["wp","compose"]}
var external_this_wp_compose_ = __webpack_require__(7);
// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/utils/import.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Import a reusable block from a JSON file.
*
* @param {File} file File.
* @return {Promise} Promise returning the imported reusable block.
*/
function importReusableBlock(_x) {
return _importReusableBlock.apply(this, arguments);
}
function _importReusableBlock() {
_importReusableBlock = Object(asyncToGenerator["a" /* default */])(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee(file) {
var fileContent, parsedContent, postType, reusableBlock;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return readTextFile(file);
case 2:
fileContent = _context.sent;
_context.prev = 3;
parsedContent = JSON.parse(fileContent);
_context.next = 10;
break;
case 7:
_context.prev = 7;
_context.t0 = _context["catch"](3);
throw new Error('Invalid JSON file');
case 10:
if (!(parsedContent.__file !== 'wp_block' || !parsedContent.title || !parsedContent.content || !Object(external_lodash_["isString"])(parsedContent.title) || !Object(external_lodash_["isString"])(parsedContent.content))) {
_context.next = 12;
break;
}
throw new Error('Invalid Reusable Block JSON file');
case 12:
_context.next = 14;
return external_this_wp_apiFetch_default()({
path: "/core/types/wp_block"
});
case 14:
postType = _context.sent;
_context.next = 17;
return external_this_wp_apiFetch_default()({
path: "/core/".concat(postType.rest_base),
data: {
title: parsedContent.title,
content: parsedContent.content,
status: 'publish'
},
method: 'POST'
});
case 17:
reusableBlock = _context.sent;
return _context.abrupt("return", reusableBlock);
case 19:
case "end":
return _context.stop();
}
}
}, _callee, this, [[3, 7]]);
}));
return _importReusableBlock.apply(this, arguments);
}
/* harmony default export */ var utils_import = (importReusableBlock);
// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/components/import-form/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
var import_form_ImportForm =
/*#__PURE__*/
function (_Component) {
Object(inherits["a" /* default */])(ImportForm, _Component);
function ImportForm() {
var _this;
Object(classCallCheck["a" /* default */])(this, ImportForm);
_this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(ImportForm).apply(this, arguments));
_this.state = {
isLoading: false,
error: null,
file: null
};
_this.isStillMounted = true;
_this.onChangeFile = _this.onChangeFile.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onSubmit = _this.onSubmit.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
return _this;
}
Object(createClass["a" /* default */])(ImportForm, [{
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.isStillMounted = false;
}
}, {
key: "onChangeFile",
value: function onChangeFile(event) {
this.setState({
file: event.target.files[0]
});
}
}, {
key: "onSubmit",
value: function onSubmit(event) {
var _this2 = this;
event.preventDefault();
var file = this.state.file;
var onUpload = this.props.onUpload;
if (!file) {
return;
}
this.setState({
isLoading: true
});
utils_import(file).then(function (reusableBlock) {
if (!_this2.isStillMounted) {
return;
}
_this2.setState({
isLoading: false
});
onUpload(reusableBlock);
}).catch(function (error) {
if (!_this2.isStillMounted) {
return;
}
var uiMessage;
switch (error.message) {
case 'Invalid JSON file':
uiMessage = Object(external_this_wp_i18n_["__"])('Invalid JSON file');
break;
case 'Invalid Reusable Block JSON file':
uiMessage = Object(external_this_wp_i18n_["__"])('Invalid Reusable Block JSON file');
break;
default:
uiMessage = Object(external_this_wp_i18n_["__"])('Unknown error');
}
_this2.setState({
isLoading: false,
error: uiMessage
});
});
}
}, {
key: "render",
value: function render() {
var instanceId = this.props.instanceId;
var _this$state = this.state,
file = _this$state.file,
isLoading = _this$state.isLoading,
error = _this$state.error;
var inputId = 'list-reusable-blocks-import-form-' + instanceId;
return Object(external_this_wp_element_["createElement"])("form", {
className: "list-reusable-blocks-import-form",
onSubmit: this.onSubmit
}, error && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Notice"], {
status: "error"
}, error), Object(external_this_wp_element_["createElement"])("label", {
htmlFor: inputId,
className: "list-reusable-blocks-import-form__label"
}, Object(external_this_wp_i18n_["__"])('File')), Object(external_this_wp_element_["createElement"])("input", {
id: inputId,
type: "file",
onChange: this.onChangeFile
}), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
type: "submit",
isBusy: isLoading,
disabled: !file || isLoading,
isDefault: true,
className: "list-reusable-blocks-import-form__button"
}, Object(external_this_wp_i18n_["_x"])('Import', 'button label')));
}
}]);
return ImportForm;
}(external_this_wp_element_["Component"]);
/* harmony default export */ var import_form = (Object(external_this_wp_compose_["withInstanceId"])(import_form_ImportForm));
// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/components/import-dropdown/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
function ImportDropdown(_ref) {
var onUpload = _ref.onUpload;
return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Dropdown"], {
position: "bottom right",
contentClassName: "list-reusable-blocks-import-dropdown__content",
renderToggle: function renderToggle(_ref2) {
var isOpen = _ref2.isOpen,
onToggle = _ref2.onToggle;
return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
type: "button",
"aria-expanded": isOpen,
onClick: onToggle,
isPrimary: true
}, Object(external_this_wp_i18n_["__"])('Import from JSON'));
},
renderContent: function renderContent(_ref3) {
var onClose = _ref3.onClose;
return Object(external_this_wp_element_["createElement"])(import_form, {
onUpload: Object(external_lodash_["flow"])(onClose, onUpload)
});
}
});
}
/* harmony default export */ var import_dropdown = (ImportDropdown);
// CONCATENATED MODULE: ./node_modules/@wordpress/list-reusable-blocks/build-module/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
// Setup Export Links
document.body.addEventListener('click', function (event) {
if (!event.target.classList.contains('wp-list-reusable-blocks__export')) {
return;
}
event.preventDefault();
utils_export(event.target.dataset.id);
}); // Setup Import Form
document.addEventListener('DOMContentLoaded', function () {
var button = document.querySelector('.page-title-action');
if (!button) {
return;
}
var showNotice = function showNotice() {
var notice = document.createElement('div');
notice.className = 'notice notice-success is-dismissible';
notice.innerHTML = "".concat(Object(external_this_wp_i18n_["__"])('Reusable block imported successfully!'), "
");
var headerEnd = document.querySelector('.wp-header-end');
if (!headerEnd) {
return;
}
headerEnd.parentNode.insertBefore(notice, headerEnd);
};
var container = document.createElement('div');
container.className = 'list-reusable-blocks__container';
button.parentNode.insertBefore(container, button);
Object(external_this_wp_element_["render"])(Object(external_this_wp_element_["createElement"])(import_dropdown, {
onUpload: showNotice
}), container);
});
/***/ }),
/***/ 38:
/***/ (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);
});
};
}
/***/ }),
/***/ 4:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["components"]; }());
/***/ }),
/***/ 7:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["compose"]; }());
/***/ }),
/***/ 9:
/***/ (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;
}
/***/ })
/******/ });