UNPKG

@paperbits/core

Version:
29 lines (25 loc) 1.13 kB
import * as ko from "knockout"; import { HyperlinkModel } from "@paperbits/common/permalinks"; import { HyperlinkBehavior } from "@paperbits/common/behaviors/behavior.hyperlink"; import { BehaviorHandle } from "@paperbits/common/behaviors"; ko.bindingHandlers["hyperlink"] = { update(element: HTMLElement, valueAccessor: () => HyperlinkModel): void { const hyperlink: HyperlinkModel = valueAccessor(); let behaviorHandle: BehaviorHandle; if (ko.isObservable(hyperlink)) { hyperlink.subscribe(newValue => { if (behaviorHandle && behaviorHandle.detach) { behaviorHandle.detach(); } behaviorHandle = HyperlinkBehavior.attach(element, newValue); }); } const initial = ko.unwrap(hyperlink); behaviorHandle = HyperlinkBehavior.attach(element, initial); if (behaviorHandle && behaviorHandle.detach) { ko.utils.domNodeDisposal.addDisposeCallback(element, () => { behaviorHandle.detach(); }); } } };