@inkline/paper
Version:
Paper is a unified interface for defining components for Vue and React using a single code base.
50 lines (42 loc) • 1.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.defineComponent = void 0;
const defineComponent = definition => {
return props => {
const slot = (name = "default") => {
console.log(`slot(${name})`);
return [];
};
const hasSlot = (name = "default") => {
return slot(name).length > 0;
};
const emit = (eventName, ...args) => {
console.log(`emit(${event})`, ...args);
};
const provide = (identifier, value) => {
console.log(`provide(${identifier.toString()}, ${value})`);
return value;
};
const inject = (identifier, defaultValue) => {
console.log(`inject(${identifier.toString()}, ${defaultValue})`);
return defaultValue;
};
const setupContext = {
emit,
provide,
inject,
hasSlot
};
const state = definition.setup ? { ...props,
...definition.setup(props, setupContext)
} : props;
const renderContext = {
slot,
hasSlot
};
return definition.render(state, renderContext);
};
};
exports.defineComponent = defineComponent;