payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
133 lines (132 loc) • 12.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
const _reacti18next = require("react-i18next");
const _reacttoastify = require("react-toastify");
const _Auth = require("../../utilities/Auth");
const _Config = require("../../utilities/Config");
const _DocumentInfo = require("../../utilities/DocumentInfo");
const _Locale = require("../../utilities/Locale");
const _RenderCustomComponent = /*#__PURE__*/ _interop_require_default(require("../../utilities/RenderCustomComponent"));
const _Button = /*#__PURE__*/ _interop_require_default(require("../Button"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interop_require_wildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
const baseClass = 'preview-btn';
const DefaultPreviewButton = ({ disabled, label, preview })=>{
return /*#__PURE__*/ _react.default.createElement(_Button.default, {
buttonStyle: "secondary",
className: baseClass,
disabled: disabled,
onClick: preview,
size: "small"
}, label);
};
const PreviewButton = ({ CustomComponent, generatePreviewURL })=>{
const { id, collection, global } = (0, _DocumentInfo.useDocumentInfo)();
const [isLoading, setIsLoading] = (0, _react.useState)(false);
const { code: locale } = (0, _Locale.useLocale)();
const { token } = (0, _Auth.useAuth)();
const { routes: { api }, serverURL } = (0, _Config.useConfig)();
const { t } = (0, _reacti18next.useTranslation)('version');
const isGeneratingPreviewURL = (0, _react.useRef)(false);
// we need to regenerate the preview URL every time the button is clicked
// to do this we need to fetch the document data fresh from the API
// this will ensure the latest data is used when generating the preview URL
const preview = (0, _react.useCallback)(async ()=>{
if (!generatePreviewURL || isGeneratingPreviewURL.current) return;
isGeneratingPreviewURL.current = true;
try {
setIsLoading(true);
let url = `${serverURL}${api}`;
if (collection) url = `${url}/${collection.slug}/${id}`;
if (global) url = `${url}/globals/${global.slug}`;
const data = await fetch(`${url}?draft=true&locale=${locale}&fallback-locale=null`).then((res)=>res.json());
const previewURL = await generatePreviewURL(data, {
locale,
token
});
if (!previewURL) throw new Error();
setIsLoading(false);
isGeneratingPreviewURL.current = false;
window.open(previewURL, '_blank');
} catch (err) {
setIsLoading(false);
isGeneratingPreviewURL.current = false;
_reacttoastify.toast.error(t('error:previewing'));
}
}, [
serverURL,
api,
collection,
global,
id,
generatePreviewURL,
locale,
token,
t
]);
return /*#__PURE__*/ _react.default.createElement(_RenderCustomComponent.default, {
CustomComponent: CustomComponent,
DefaultComponent: DefaultPreviewButton,
componentProps: {
DefaultButton: DefaultPreviewButton,
disabled: isLoading || !generatePreviewURL,
label: isLoading ? t('general:loading') : t('preview'),
preview
}
});
};
const _default = PreviewButton;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL1ByZXZpZXdCdXR0b24vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgdG9hc3QgfSBmcm9tICdyZWFjdC10b2FzdGlmeSdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmF0ZVByZXZpZXdVUkwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25maWcvdHlwZXMnXG5cbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQXV0aCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgeyB1c2VEb2N1bWVudEluZm8gfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvRG9jdW1lbnRJbmZvJ1xuaW1wb3J0IHsgdXNlTG9jYWxlIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL0xvY2FsZSdcbmltcG9ydCBSZW5kZXJDdXN0b21Db21wb25lbnQgZnJvbSAnLi4vLi4vdXRpbGl0aWVzL1JlbmRlckN1c3RvbUNvbXBvbmVudCdcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vQnV0dG9uJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAncHJldmlldy1idG4nXG5cbmV4cG9ydCB0eXBlIEN1c3RvbVByZXZpZXdCdXR0b25Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFR5cGU8XG4gIERlZmF1bHRQcmV2aWV3QnV0dG9uUHJvcHMgJiB7XG4gICAgRGVmYXVsdEJ1dHRvbjogUmVhY3QuQ29tcG9uZW50VHlwZTxEZWZhdWx0UHJldmlld0J1dHRvblByb3BzPlxuICB9XG4+XG5leHBvcnQgdHlwZSBEZWZhdWx0UHJldmlld0J1dHRvblByb3BzID0ge1xuICBkaXNhYmxlZDogYm9vbGVhblxuICBsYWJlbDogc3RyaW5nXG4gIHByZXZpZXc6ICgpID0+IHZvaWRcbn1cbmNvbnN0IERlZmF1bHRQcmV2aWV3QnV0dG9uOiBSZWFjdC5GQzxEZWZhdWx0UHJldmlld0J1dHRvblByb3BzPiA9ICh7XG4gIGRpc2FibGVkLFxuICBsYWJlbCxcbiAgcHJldmlldyxcbn0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8QnV0dG9uXG4gICAgICBidXR0b25TdHlsZT1cInNlY29uZGFyeVwiXG4gICAgICBjbGFzc05hbWU9e2Jhc2VDbGFzc31cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIG9uQ2xpY2s9e3ByZXZpZXd9XG4gICAgICBzaXplPVwic21hbGxcIlxuICAgID5cbiAgICAgIHtsYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgKVxufVxuXG50eXBlIFByb3BzID0ge1xuICBDdXN0b21Db21wb25lbnQ/OiBDdXN0b21QcmV2aWV3QnV0dG9uUHJvcHNcbiAgZ2VuZXJhdGVQcmV2aWV3VVJMPzogR2VuZXJhdGVQcmV2aWV3VVJMXG59XG5jb25zdCBQcmV2aWV3QnV0dG9uOiBSZWFjdC5GQzxQcm9wcz4gPSAoeyBDdXN0b21Db21wb25lbnQsIGdlbmVyYXRlUHJldmlld1VSTCB9KSA9PiB7XG4gIGNvbnN0IHsgaWQsIGNvbGxlY3Rpb24sIGdsb2JhbCB9ID0gdXNlRG9jdW1lbnRJbmZvKClcblxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHsgY29kZTogbG9jYWxlIH0gPSB1c2VMb2NhbGUoKVxuICBjb25zdCB7IHRva2VuIH0gPSB1c2VBdXRoKClcbiAgY29uc3Qge1xuICAgIHJvdXRlczogeyBhcGkgfSxcbiAgICBzZXJ2ZXJVUkwsXG4gIH0gPSB1c2VDb25maWcoKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCd2ZXJzaW9uJylcbiAgY29uc3QgaXNHZW5lcmF0aW5nUHJldmlld1VSTCA9IHVzZVJlZihmYWxzZSlcblxuICAvLyB3ZSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIHByZXZpZXcgVVJMIGV2ZXJ5IHRpbWUgdGhlIGJ1dHRvbiBpcyBjbGlja2VkXG4gIC8vIHRvIGRvIHRoaXMgd2UgbmVlZCB0byBmZXRjaCB0aGUgZG9jdW1lbnQgZGF0YSBmcmVzaCBmcm9tIHRoZSBBUElcbiAgLy8gdGhpcyB3aWxsIGVuc3VyZSB0aGUgbGF0ZXN0IGRhdGEgaXMgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHByZXZpZXcgVVJMXG4gIGNvbnN0IHByZXZpZXcgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFnZW5lcmF0ZVByZXZpZXdVUkwgfHwgaXNHZW5lcmF0aW5nUHJldmlld1VSTC5jdXJyZW50KSByZXR1cm5cbiAgICBpc0dlbmVyYXRpbmdQcmV2aWV3VVJMLmN1cnJlbnQgPSB0cnVlXG5cbiAgICB0cnkge1xuICAgICAgc2V0SXNMb2FkaW5nKHRydWUpXG5cbiAgICAgIGxldCB1cmwgPSBgJHtzZXJ2ZXJVUkx9JHthcGl9YFxuICAgICAgaWYgKGNvbGxlY3Rpb24pIHVybCA9IGAke3VybH0vJHtjb2xsZWN0aW9uLnNsdWd9LyR7aWR9YFxuICAgICAgaWYgKGdsb2JhbCkgdXJsID0gYCR7dXJsfS9nbG9iYWxzLyR7Z2xvYmFsLnNsdWd9YFxuXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2goYCR7dXJsfT9kcmFmdD10cnVlJmxvY2FsZT0ke2xvY2FsZX0mZmFsbGJhY2stbG9jYWxlPW51bGxgKS50aGVuKFxuICAgICAgICAocmVzKSA9PiByZXMuanNvbigpLFxuICAgICAgKVxuICAgICAgY29uc3QgcHJldmlld1VSTCA9IGF3YWl0IGdlbmVyYXRlUHJldmlld1VSTChkYXRhLCB7IGxvY2FsZSwgdG9rZW4gfSlcbiAgICAgIGlmICghcHJldmlld1VSTCkgdGhyb3cgbmV3IEVycm9yKClcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgIGlzR2VuZXJhdGluZ1ByZXZpZXdVUkwuY3VycmVudCA9IGZhbHNlXG4gICAgICB3aW5kb3cub3BlbihwcmV2aWV3VVJMLCAnX2JsYW5rJylcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgIGlzR2VuZXJhdGluZ1ByZXZpZXdVUkwuY3VycmVudCA9IGZhbHNlXG4gICAgICB0b2FzdC5lcnJvcih0KCdlcnJvcjpwcmV2aWV3aW5nJykpXG4gICAgfVxuICB9LCBbc2VydmVyVVJMLCBhcGksIGNvbGxlY3Rpb24sIGdsb2JhbCwgaWQsIGdlbmVyYXRlUHJldmlld1VSTCwgbG9jYWxlLCB0b2tlbiwgdF0pXG5cbiAgcmV0dXJuIChcbiAgICA8UmVuZGVyQ3VzdG9tQ29tcG9uZW50XG4gICAgICBDdXN0b21Db21wb25lbnQ9e0N1c3RvbUNvbXBvbmVudH1cbiAgICAgIERlZmF1bHRDb21wb25lbnQ9e0RlZmF1bHRQcmV2aWV3QnV0dG9ufVxuICAgICAgY29tcG9uZW50UHJvcHM9e3tcbiAgICAgICAgRGVmYXVsdEJ1dHRvbjogRGVmYXVsdFByZXZpZXdCdXR0b24sXG4gICAgICAgIGRpc2FibGVkOiBpc0xvYWRpbmcgfHwgIWdlbmVyYXRlUHJldmlld1VSTCxcbiAgICAgICAgbGFiZWw6IGlzTG9hZGluZyA/IHQoJ2dlbmVyYWw6bG9hZGluZycpIDogdCgncHJldmlldycpLFxuICAgICAgICBwcmV2aWV3LFxuICAgICAgfX1cbiAgICAvPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFByZXZpZXdCdXR0b25cbiJdLCJuYW1lcyI6WyJiYXNlQ2xhc3MiLCJEZWZhdWx0UHJldmlld0J1dHRvbiIsImRpc2FibGVkIiwibGFiZWwiLCJwcmV2aWV3IiwiQnV0dG9uIiwiYnV0dG9uU3R5bGUiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwic2l6ZSIsIlByZXZpZXdCdXR0b24iLCJDdXN0b21Db21wb25lbnQiLCJnZW5lcmF0ZVByZXZpZXdVUkwiLCJpZCIsImNvbGxlY3Rpb24iLCJnbG9iYWwiLCJ1c2VEb2N1bWVudEluZm8iLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJ1c2VTdGF0ZSIsImNvZGUiLCJsb2NhbGUiLCJ1c2VMb2NhbGUiLCJ0b2tlbiIsInVzZUF1dGgiLCJyb3V0ZXMiLCJhcGkiLCJzZXJ2ZXJVUkwiLCJ1c2VDb25maWciLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJpc0dlbmVyYXRpbmdQcmV2aWV3VVJMIiwidXNlUmVmIiwidXNlQ2FsbGJhY2siLCJjdXJyZW50IiwidXJsIiwic2x1ZyIsImRhdGEiLCJmZXRjaCIsInRoZW4iLCJyZXMiLCJqc29uIiwicHJldmlld1VSTCIsIkVycm9yIiwid2luZG93Iiwib3BlbiIsImVyciIsInRvYXN0IiwiZXJyb3IiLCJSZW5kZXJDdXN0b21Db21wb25lbnQiLCJEZWZhdWx0Q29tcG9uZW50IiwiY29tcG9uZW50UHJvcHMiLCJEZWZhdWx0QnV0dG9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQXVHQTs7O2VBQUE7OzsrREF2R3FEOzhCQUN0QjsrQkFDVDtzQkFJRTt3QkFDRTs4QkFDTTt3QkFDTjs4RUFDUTsrREFDZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbkIsTUFBTUEsWUFBWTtBQVlsQixNQUFNQyx1QkFBNEQsQ0FBQyxFQUNqRUMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLE9BQU8sRUFDUjtJQUNDLHFCQUNFLDZCQUFDQyxlQUFNO1FBQ0xDLGFBQVk7UUFDWkMsV0FBV1A7UUFDWEUsVUFBVUE7UUFDVk0sU0FBU0o7UUFDVEssTUFBSztPQUVKTjtBQUdQO0FBTUEsTUFBTU8sZ0JBQWlDLENBQUMsRUFBRUMsZUFBZSxFQUFFQyxrQkFBa0IsRUFBRTtJQUM3RSxNQUFNLEVBQUVDLEVBQUUsRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUUsR0FBR0MsSUFBQUEsNkJBQWU7SUFFbEQsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdDLElBQUFBLGVBQVEsRUFBQztJQUMzQyxNQUFNLEVBQUVDLE1BQU1DLE1BQU0sRUFBRSxHQUFHQyxJQUFBQSxpQkFBUztJQUNsQyxNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyxJQUFBQSxhQUFPO0lBQ3pCLE1BQU0sRUFDSkMsUUFBUSxFQUFFQyxHQUFHLEVBQUUsRUFDZkMsU0FBUyxFQUNWLEdBQUdDLElBQUFBLGlCQUFTO0lBQ2IsTUFBTSxFQUFFQyxDQUFDLEVBQUUsR0FBR0MsSUFBQUEsNEJBQWMsRUFBQztJQUM3QixNQUFNQyx5QkFBeUJDLElBQUFBLGFBQU0sRUFBQztJQUV0Qyx5RUFBeUU7SUFDekUsbUVBQW1FO0lBQ25FLDJFQUEyRTtJQUMzRSxNQUFNNUIsVUFBVTZCLElBQUFBLGtCQUFXLEVBQUM7UUFDMUIsSUFBSSxDQUFDckIsc0JBQXNCbUIsdUJBQXVCRyxPQUFPLEVBQUU7UUFDM0RILHVCQUF1QkcsT0FBTyxHQUFHO1FBRWpDLElBQUk7WUFDRmhCLGFBQWE7WUFFYixJQUFJaUIsTUFBTSxDQUFDLEVBQUVSLFVBQVUsRUFBRUQsSUFBSSxDQUFDO1lBQzlCLElBQUlaLFlBQVlxQixNQUFNLENBQUMsRUFBRUEsSUFBSSxDQUFDLEVBQUVyQixXQUFXc0IsSUFBSSxDQUFDLENBQUMsRUFBRXZCLEdBQUcsQ0FBQztZQUN2RCxJQUFJRSxRQUFRb0IsTUFBTSxDQUFDLEVBQUVBLElBQUksU0FBUyxFQUFFcEIsT0FBT3FCLElBQUksQ0FBQyxDQUFDO1lBRWpELE1BQU1DLE9BQU8sTUFBTUMsTUFBTSxDQUFDLEVBQUVILElBQUksbUJBQW1CLEVBQUVkLE9BQU8scUJBQXFCLENBQUMsRUFBRWtCLElBQUksQ0FDdEYsQ0FBQ0MsTUFBUUEsSUFBSUMsSUFBSTtZQUVuQixNQUFNQyxhQUFhLE1BQU05QixtQkFBbUJ5QixNQUFNO2dCQUFFaEI7Z0JBQVFFO1lBQU07WUFDbEUsSUFBSSxDQUFDbUIsWUFBWSxNQUFNLElBQUlDO1lBQzNCekIsYUFBYTtZQUNiYSx1QkFBdUJHLE9BQU8sR0FBRztZQUNqQ1UsT0FBT0MsSUFBSSxDQUFDSCxZQUFZO1FBQzFCLEVBQUUsT0FBT0ksS0FBSztZQUNaNUIsYUFBYTtZQUNiYSx1QkFBdUJHLE9BQU8sR0FBRztZQUNqQ2Esb0JBQUssQ0FBQ0MsS0FBSyxDQUFDbkIsRUFBRTtRQUNoQjtJQUNGLEdBQUc7UUFBQ0Y7UUFBV0Q7UUFBS1o7UUFBWUM7UUFBUUY7UUFBSUQ7UUFBb0JTO1FBQVFFO1FBQU9NO0tBQUU7SUFFakYscUJBQ0UsNkJBQUNvQiw4QkFBcUI7UUFDcEJ0QyxpQkFBaUJBO1FBQ2pCdUMsa0JBQWtCakQ7UUFDbEJrRCxnQkFBZ0I7WUFDZEMsZUFBZW5EO1lBQ2ZDLFVBQVVlLGFBQWEsQ0FBQ0w7WUFDeEJULE9BQU9jLFlBQVlZLEVBQUUscUJBQXFCQSxFQUFFO1lBQzVDekI7UUFDRjs7QUFHTjtNQUVBLFdBQWVNIn0=