@paperbits/core
Version:
Paperbits core components.
28 lines (23 loc) • 981 B
text/typescript
import { Events } from "@paperbits/common/events";
import * as ko from "knockout";
import { AngleBehavior, AngleBehaviorOptions } from "@paperbits/common/behaviors/behavior.angle";
ko.bindingHandlers["angle"] = {
init: (element: HTMLElement, valueAccessor: () => ko.Observable<number>) => {
const angleObservable = valueAccessor();
if (!ko.isObservable(angleObservable)) {
console.warn("Angle binding handler expects an observable.");
return;
}
const behaviorOptions: AngleBehaviorOptions = {
onChange: (newAngle: number) => {
angleObservable(newAngle);
}
};
const behaviorHandle = AngleBehavior.attach(element, behaviorOptions);
ko.utils.domNodeDisposal.addDisposeCallback(element, () => {
if (behaviorHandle && behaviorHandle.detach) {
behaviorHandle.detach();
}
});
}
};