zent
Version:
一套前端设计语言和基于React的实现
25 lines (21 loc) • 611 B
JavaScript
/**
* Create a new placement.
*
* @param {function} template (anchorBoundingBox, containerBoundingBox, contentDimension, options) => { name, getCSSStyle }
* @return {function}
*/
export default function createPlacement(template) {
return (prefix, ...args) => {
const placement = template(...args);
if (!placement || !placement.name || !placement.getCSSStyle) {
throw new Error('name and getCSSStyle is required for a placement');
}
const name = `${prefix}-popover-${placement.name}`;
return {
...placement,
toString() {
return name;
}
};
};
}