UNPKG

piral-core

Version:

The core library for creating a Piral instance.

50 lines 1.95 kB
import { renderElement } from './element'; import { withApi } from '../state'; import { ExtensionSlot } from '../components'; import { createDataOptions, getDataExpiration } from '../utils'; export function createCoreApi(context) { return (api, meta) => { const pilet = meta.name; return { getData(name) { return context.readDataValue(name); }, setData(name, value, options) { const { target = 'memory', expires } = createDataOptions(options); const expiration = getDataExpiration(expires); return context.tryWriteDataItem(name, value, pilet, target, expiration); }, registerPage(route, arg, meta = {}) { const component = withApi(context, arg, api, 'page', undefined, { meta }); context.registerPage(route, { pilet, meta, component, }); return () => api.unregisterPage(route); }, unregisterPage(route) { context.unregisterPage(route); }, registerExtension(name, reference, defaults) { const component = withApi(context, reference, api, 'extension'); context.registerExtension(name, { pilet, component, reference, defaults, }); return () => api.unregisterExtension(name, reference); }, unregisterExtension(name, arg) { context.unregisterExtension(name, arg); }, renderHtmlExtension(element, props) { const [dispose] = renderElement(context, element, props); return dispose; }, Extension: ExtensionSlot, }; }; } //# sourceMappingURL=core.js.map