UNPKG

@danielkalen/simplybind

Version:

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

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