UNPKG

@danielkalen/simplybind

Version:

Magically simple, framework-less one-way/two-way data binding for frontend/backend in ~5kb.

35 lines (27 loc) 898 B
import {camelCase} from './camel-case'; import {metadata} from 'aurelia-metadata'; export class ValueConverterResource { constructor(name) { this.name = name; } static convention(name) { if (name.endsWith('ValueConverter')) { return new ValueConverterResource(camelCase(name.substring(0, name.length - 14))); } } initialize(container, target) { this.instance = container.get(target); } register(registry, name) { registry.registerValueConverter(name || this.name, this.instance); } load(container, target) {} } export function valueConverter(nameOrTarget) { if (nameOrTarget === undefined || typeof nameOrTarget === 'string') { return function(target) { metadata.define(metadata.resource, new ValueConverterResource(nameOrTarget), target); }; } metadata.define(metadata.resource, new ValueConverterResource(), nameOrTarget); }