@wordpress/block-library
Version:
Block library for the WordPress editor.
81 lines (70 loc) • 1.79 kB
JavaScript
/**
* External dependencies
*/
import { isEmpty, get } from 'lodash';
/**
* Internal dependencies
*/
import { NEW_TAB_REL } from './constants';
export function removeNewTabRel(currentRel) {
let newRel = currentRel;
if (currentRel !== undefined && !isEmpty(newRel)) {
if (!isEmpty(newRel)) {
NEW_TAB_REL.forEach(relVal => {
const regExp = new RegExp('\\b' + relVal + '\\b', 'gi');
newRel = newRel.replace(regExp, '');
}); // Only trim if NEW_TAB_REL values was replaced.
if (newRel !== currentRel) {
newRel = newRel.trim();
}
if (isEmpty(newRel)) {
newRel = undefined;
}
}
}
return newRel;
}
/**
* Helper to get the link target settings to be stored.
*
* @param {boolean} value The new link target value.
* @param {Object} attributes Block attributes.
* @param {Object} attributes.rel Image block's rel attribute.
*
* @return {Object} Updated link target settings.
*/
export function getUpdatedLinkTargetSettings(value, _ref) {
let {
rel
} = _ref;
const linkTarget = value ? '_blank' : undefined;
let updatedRel;
if (!linkTarget && !rel) {
updatedRel = undefined;
} else {
updatedRel = removeNewTabRel(rel);
}
return {
linkTarget,
rel: updatedRel
};
}
/**
* Determines new Image block attributes size selection.
*
* @param {Object} image Media file object for gallery image.
* @param {string} size Selected size slug to apply.
*/
export function getImageSizeAttributes(image, size) {
const url = get(image, ['media_details', 'sizes', size, 'source_url']);
if (url) {
return {
url,
width: undefined,
height: undefined,
sizeSlug: size
};
}
return {};
}
//# sourceMappingURL=utils.js.map