@surface/custom-element
Version:
Provides support of directives and data binding on custom elements.
10 lines (9 loc) • 552 B
JavaScript
import { setValue } from "@surface/core";
import observe from "./observe.js";
export default function bind(left, leftPath, right, rightPath) {
const leftListener = (value) => setValue(value, right, ...rightPath);
const rightListener = (value) => setValue(value, left, ...leftPath);
const leftSubscription = observe(left, [leftPath], leftListener, true);
const rightSubscription = observe(right, [rightPath], rightListener);
return { unsubscribe: () => (leftSubscription.unsubscribe(), rightSubscription.unsubscribe()) };
}