} 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__("tI+e");
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
var classCallCheck = __webpack_require__("1OyB");
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
var createClass = __webpack_require__("vuIU");
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
var assertThisInitialized = __webpack_require__("JX7q");
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js
var inherits = __webpack_require__("Ji7U");
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
var possibleConstructorReturn = __webpack_require__("md7G");
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
var getPrototypeOf = __webpack_require__("foSv");
// EXTERNAL MODULE: external ["wp","compose"]
var external_wp_compose_ = __webpack_require__("K9lf");
// 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);
});
/***/ }),
/***/ "U8pU":
/***/ (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);
}
/***/ }),
/***/ "YLtl":
/***/ (function(module, exports) {
(function() { module.exports = window["lodash"]; }());
/***/ }),
/***/ "dvlR":
/***/ (function(module, exports) {
(function() { module.exports = window["regeneratorRuntime"]; }());
/***/ }),
/***/ "foSv":
/***/ (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);
}
/***/ }),
/***/ "l3Sj":
/***/ (function(module, exports) {
(function() { module.exports = window["wp"]["i18n"]; }());
/***/ }),
/***/ "md7G":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _possibleConstructorReturn; });
/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("U8pU");
/* harmony import */ var _babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("JX7q");
function _possibleConstructorReturn(self, call) {
if (call && (Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(call) === "object" || typeof call === "function")) {
return call;
}
return Object(_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(self);
}
/***/ }),
/***/ "s4An":
/***/ (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);
}
/***/ }),
/***/ "tI+e":
/***/ (function(module, exports) {
(function() { module.exports = window["wp"]["components"]; }());
/***/ }),
/***/ "vuIU":
/***/ (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;
}
/***/ }),
/***/ "ywyh":
/***/ (function(module, exports) {
(function() { module.exports = window["wp"]["apiFetch"]; }());
/***/ })
/******/ });