} 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__*/external_regeneratorRuntime_default.a.mark(function _callee(id) {
var postType, post, title, content, fileContent, fileName;
return external_regeneratorRuntime_default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return external_wp_apiFetch_default()({
path: "/wp/v2/types/wp_block"
});
case 2:
postType = _context.sent;
_context.next = 5;
return external_wp_apiFetch_default()({
path: "/wp/v2/".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);
}));
return _exportReusableBlock.apply(this, arguments);
}
/* harmony default export */ var utils_export = (exportReusableBlock);
// EXTERNAL MODULE: external ["wp","components"]
var external_wp_components_ = __webpack_require__(3);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
var classCallCheck = __webpack_require__(25);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
var createClass = __webpack_require__(26);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
var assertThisInitialized = __webpack_require__(18);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js
var inherits = __webpack_require__(28);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
var possibleConstructorReturn = __webpack_require__(29);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
var getPrototypeOf = __webpack_require__(19);
// EXTERNAL MODULE: external ["wp","compose"]
var external_wp_compose_ = __webpack_require__(12);
// 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__*/external_regeneratorRuntime_default.a.mark(function _callee(file) {
var fileContent, parsedContent, postType, reusableBlock;
return external_regeneratorRuntime_default.a.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_wp_apiFetch_default()({
path: "/wp/v2/types/wp_block"
});
case 14:
postType = _context.sent;
_context.next = 17;
return external_wp_apiFetch_default()({
path: "/wp/v2/".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, null, [[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
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = Object(getPrototypeOf["a" /* default */])(Derived), result; if (hasNativeReflectConstruct) { 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; } }
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
var import_form_ImportForm = /*#__PURE__*/function (_Component) {
Object(inherits["a" /* default */])(ImportForm, _Component);
var _super = _createSuper(ImportForm);
function ImportForm() {
var _this;
Object(classCallCheck["a" /* default */])(this, ImportForm);
_this = _super.apply(this, arguments);
_this.state = {
isLoading: false,
error: null,
file: null
};
_this.isStillMounted = true;
_this.onChangeFile = _this.onChangeFile.bind(Object(assertThisInitialized["a" /* default */])(_this));
_this.onSubmit = _this.onSubmit.bind(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],
error: null
});
}
}, {
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_wp_i18n_["__"])('Invalid JSON file');
break;
case 'Invalid Reusable Block JSON file':
uiMessage = Object(external_wp_i18n_["__"])('Invalid Reusable Block JSON file');
break;
default:
uiMessage = Object(external_wp_i18n_["__"])('Unknown error');
}
_this2.setState({
isLoading: false,
error: uiMessage
});
});
}
}, {
key: "onDismissError",
value: function onDismissError() {
this.setState({
error: null
});
}
}, {
key: "render",
value: function render() {
var _this3 = this;
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_wp_element_["createElement"])("form", {
className: "list-reusable-blocks-import-form",
onSubmit: this.onSubmit
}, error && Object(external_wp_element_["createElement"])(external_wp_components_["Notice"], {
status: "error",
onRemove: function onRemove() {
return _this3.onDismissError();
}
}, error), Object(external_wp_element_["createElement"])("label", {
htmlFor: inputId,
className: "list-reusable-blocks-import-form__label"
}, Object(external_wp_i18n_["__"])('File')), Object(external_wp_element_["createElement"])("input", {
id: inputId,
type: "file",
onChange: this.onChangeFile
}), Object(external_wp_element_["createElement"])(external_wp_components_["Button"], {
type: "submit",
isBusy: isLoading,
disabled: !file || isLoading,
isSecondary: true,
className: "list-reusable-blocks-import-form__button"
}, Object(external_wp_i18n_["_x"])('Import', 'button label')));
}
}]);
return ImportForm;
}(external_wp_element_["Component"]);
/* harmony default export */ var import_form = (Object(external_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_wp_element_["createElement"])(external_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_wp_element_["createElement"])(external_wp_components_["Button"], {
"aria-expanded": isOpen,
onClick: onToggle,
isPrimary: true
}, Object(external_wp_i18n_["__"])('Import from JSON'));
},
renderContent: function renderContent(_ref3) {
var onClose = _ref3.onClose;
return Object(external_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_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_wp_element_["render"])(Object(external_wp_element_["createElement"])(import_dropdown, {
onUpload: showNotice
}), container);
});
/***/ }),
/***/ 47:
/***/ (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);
});
};
}
/***/ }),
/***/ 50:
/***/ (function(module, exports) {
(function() { module.exports = window["wp"]["apiFetch"]; }());
/***/ }),
/***/ 52:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _setPrototypeOf; });
function _setPrototypeOf(o, p) {
_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/***/ })
/******/ });