phosphor-vue
Version:
A clean and friendly icon family for Vue, too!
43 lines (35 loc) • 1.2 kB
JavaScript
import { computed, inject, isRef } from 'vue';
const defaults = {
weight: "regular",
size: "1em",
color: "currentColor",
mirrored: false
};
function unwrapIfRef(obj) {
if (isRef(obj)) return obj.value;
return obj;
}
function useDefaultPropsFromContext(props) {
const contextProps = {
weight: unwrapIfRef(inject("weight", defaults.weight)),
size: unwrapIfRef(inject("size", defaults.size)),
color: unwrapIfRef(inject("color", defaults.color)),
mirrored: unwrapIfRef(inject("mirrored", defaults.mirrored))
};
return {
weight: computed(() => {
var _props$weight;
return (_props$weight = props.weight) !== null && _props$weight !== void 0 ? _props$weight : contextProps.weight;
}),
size: computed(() => {
var _props$size;
return (_props$size = props.size) !== null && _props$size !== void 0 ? _props$size : contextProps.size;
}),
color: computed(() => {
var _props$color;
return (_props$color = props.color) !== null && _props$color !== void 0 ? _props$color : contextProps.color;
}),
mirrored: computed(() => props.mirrored || contextProps.mirrored)
};
}
export default useDefaultPropsFromContext;