@fgnass/decap-cms-widget-image
Version:
Widget for uploading images in Decap CMS.
67 lines • 4.13 kB
JavaScript
import _styled from "@emotion/styled/base";
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
import React, { useEffect, useState } from 'react';
import PropTypes from 'prop-types';
import { List } from 'immutable';
import { WidgetPreviewContainer } from 'decap-cms-ui-default';
import { jsx as ___EmotionJSX } from "@emotion/react";
const StyledImage = /*#__PURE__*/_styled(({
src
}) => ___EmotionJSX("img", {
src: src || '',
role: "presentation"
}), {
target: "eeuykvb0",
label: "StyledImage"
})(process.env.NODE_ENV === "production" ? {
name: "waguu7",
styles: "display:block;max-width:100%;height:auto"
} : {
name: "waguu7",
styles: "display:block;max-width:100%;height:auto",
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9JbWFnZVByZXZpZXcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTW9GIiwiZmlsZSI6Ii4uLy4uL3NyYy9JbWFnZVByZXZpZXcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBMaXN0IH0gZnJvbSAnaW1tdXRhYmxlJztcbmltcG9ydCB7IFdpZGdldFByZXZpZXdDb250YWluZXIgfSBmcm9tICdkZWNhcC1jbXMtdWktZGVmYXVsdCc7XG5cbmNvbnN0IFN0eWxlZEltYWdlID0gc3R5bGVkKCh7IHNyYyB9KSA9PiA8aW1nIHNyYz17c3JjIHx8ICcnfSByb2xlPVwicHJlc2VudGF0aW9uXCIgLz4pYFxuICBkaXNwbGF5OiBibG9jaztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG5gO1xuXG5mdW5jdGlvbiBTdHlsZWRJbWFnZUFzc2V0KHsgZ2V0QXNzZXQsIHZhbHVlLCBmaWVsZCB9KSB7XG4gIGNvbnN0IFthc3NldCwgc2V0QXNzZXRdID0gdXNlU3RhdGUobnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnN0IG5ld0Fzc2V0ID0gZ2V0QXNzZXQodmFsdWUsIGZpZWxkKTtcbiAgICAgIHNldEFzc2V0KG5ld0Fzc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0QXNzZXQobnVsbCk7XG4gICAgfVxuICB9LCBbdmFsdWUsIGZpZWxkLCBnZXRBc3NldF0pO1xuXG4gIHJldHVybiBhc3NldCA/IDxTdHlsZWRJbWFnZSByb2xlPVwicHJlc2VudGF0aW9uXCIgc3JjPXthc3NldH0gLz4gOiBudWxsO1xufVxuXG5mdW5jdGlvbiBJbWFnZVByZXZpZXdDb250ZW50KHByb3BzKSB7XG4gIGNvbnN0IHsgdmFsdWUsIGdldEFzc2V0LCBmaWVsZCB9ID0gcHJvcHM7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSB8fCBMaXN0LmlzTGlzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWUubWFwKCh2YWwsIGluZGV4KSA9PiAoXG4gICAgICA8U3R5bGVkSW1hZ2VBc3NldCBrZXk9e2luZGV4fSB2YWx1ZT17dmFsfSBnZXRBc3NldD17Z2V0QXNzZXR9IGZpZWxkPXtmaWVsZH0gLz5cbiAgICApKTtcbiAgfVxuICByZXR1cm4gPFN0eWxlZEltYWdlQXNzZXQgey4uLnByb3BzfSAvPjtcbn1cblxuZnVuY3Rpb24gSW1hZ2VQcmV2aWV3KHByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPFdpZGdldFByZXZpZXdDb250YWluZXI+XG4gICAgICB7cHJvcHMudmFsdWUgPyA8SW1hZ2VQcmV2aWV3Q29udGVudCB7Li4ucHJvcHN9IC8+IDogbnVsbH1cbiAgICA8L1dpZGdldFByZXZpZXdDb250YWluZXI+XG4gICk7XG59XG5cbkltYWdlUHJldmlldy5wcm9wVHlwZXMgPSB7XG4gIGdldEFzc2V0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLm5vZGUsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbWFnZVByZXZpZXc7XG4iXX0= */",
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
});
function StyledImageAsset({
getAsset,
value,
field
}) {
const [asset, setAsset] = useState(null);
useEffect(() => {
if (value) {
const newAsset = getAsset(value, field);
setAsset(newAsset);
} else {
setAsset(null);
}
}, [value, field, getAsset]);
return asset ? ___EmotionJSX(StyledImage, {
role: "presentation",
src: asset
}) : null;
}
function ImagePreviewContent(props) {
const {
value,
getAsset,
field
} = props;
if (Array.isArray(value) || List.isList(value)) {
return value.map((val, index) => ___EmotionJSX(StyledImageAsset, {
key: index,
value: val,
getAsset: getAsset,
field: field
}));
}
return ___EmotionJSX(StyledImageAsset, props);
}
function ImagePreview(props) {
return ___EmotionJSX(WidgetPreviewContainer, null, props.value ? ___EmotionJSX(ImagePreviewContent, props) : null);
}
ImagePreview.propTypes = {
getAsset: PropTypes.func.isRequired,
value: PropTypes.node
};
export default ImagePreview;