ko.bindingHandlers['text'] = {
    'init': () => (
        // Prevent binding on the dynamically-injected text node (as developers are unlikely to expect that, and it has security implications).
        // It should also make things faster, as we no longer have to consider whether the text node might be bindable.
        { 'controlsDescendantBindings': true }
    ),
    'update': (element, valueAccessor) => {
        if (8 === element.nodeType) {
            element.text || element.after(element.text = document.createTextNode(''));
            element = element.text;
        }
        ko.utils.setTextContent(element, valueAccessor());
    }
};
ko.virtualElements.allowedBindings['text'] = true;
