@wordpress/block-library
Version:
Block library for the WordPress editor.
84 lines (83 loc) • 2.58 kB
JavaScript
// packages/block-library/src/cover/shared.js
import { getBlobTypeByURL, isBlobURL } from "@wordpress/blob";
var POSITION_CLASSNAMES = {
"top left": "is-position-top-left",
"top center": "is-position-top-center",
"top right": "is-position-top-right",
"center left": "is-position-center-left",
"center center": "is-position-center-center",
center: "is-position-center-center",
"center right": "is-position-center-right",
"bottom left": "is-position-bottom-left",
"bottom center": "is-position-bottom-center",
"bottom right": "is-position-bottom-right"
};
var IMAGE_BACKGROUND_TYPE = "image";
var VIDEO_BACKGROUND_TYPE = "video";
var EMBED_VIDEO_BACKGROUND_TYPE = "embed-video";
var COVER_MIN_HEIGHT = 50;
var COVER_MAX_HEIGHT = 1e3;
var COVER_DEFAULT_HEIGHT = 300;
var DEFAULT_FOCAL_POINT = { x: 0.5, y: 0.5 };
var ALLOWED_MEDIA_TYPES = ["image", "video"];
function mediaPosition({ x, y } = DEFAULT_FOCAL_POINT) {
return `${Math.round(x * 100)}% ${Math.round(y * 100)}%`;
}
function dimRatioToClass(ratio) {
return ratio === 50 || ratio === void 0 ? null : "has-background-dim-" + 10 * Math.round(ratio / 10);
}
function attributesFromMedia(media) {
if (!media || !media.url && !media.src) {
return {
url: void 0,
id: void 0
};
}
if (isBlobURL(media.url)) {
media.type = getBlobTypeByURL(media.url);
}
let mediaType;
if (media.media_type) {
if (media.media_type === IMAGE_BACKGROUND_TYPE) {
mediaType = IMAGE_BACKGROUND_TYPE;
} else {
mediaType = VIDEO_BACKGROUND_TYPE;
}
} else if (media.type && (media.type === IMAGE_BACKGROUND_TYPE || media.type === VIDEO_BACKGROUND_TYPE)) {
mediaType = media.type;
} else {
return;
}
return {
url: media.url || media.src,
id: media.id,
alt: media?.alt,
backgroundType: mediaType,
...mediaType === VIDEO_BACKGROUND_TYPE ? { hasParallax: void 0 } : {}
};
}
function isContentPositionCenter(contentPosition) {
return !contentPosition || contentPosition === "center center" || contentPosition === "center";
}
function getPositionClassName(contentPosition) {
if (isContentPositionCenter(contentPosition)) {
return "";
}
return POSITION_CLASSNAMES[contentPosition];
}
export {
ALLOWED_MEDIA_TYPES,
COVER_DEFAULT_HEIGHT,
COVER_MAX_HEIGHT,
COVER_MIN_HEIGHT,
DEFAULT_FOCAL_POINT,
EMBED_VIDEO_BACKGROUND_TYPE,
IMAGE_BACKGROUND_TYPE,
VIDEO_BACKGROUND_TYPE,
attributesFromMedia,
dimRatioToClass,
getPositionClassName,
isContentPositionCenter,
mediaPosition
};
//# sourceMappingURL=shared.js.map