define(['ko','uiRegistry','mage/translate','../template/renderer','jquery','../../logger/console-logger'],function(ko,registry,$t,renderer,$,consoleLogger){'use strict';function applyComponents(el,bindingContext,promise,component){promise.resolve();component=bindingContext.createChildContext(component);ko.utils.extend(component,{$t:$t});ko.utils.arrayForEach(ko.virtualElements.childNodes(el),ko.cleanNode);ko.applyBindingsToDescendants(component,el);} ko.bindingHandlers.scope={init:function(){return{controlsDescendantBindings:true};},update:function(el,valueAccessor,allBindings,viewModel,bindingContext){var component=valueAccessor(),promise=$.Deferred(),apply=applyComponents.bind(this,el,bindingContext,promise),loggerUtils=consoleLogger.utils;if(typeof component==='string'){loggerUtils.asyncLog(promise,{data:{component:component},messages:loggerUtils.createMessages('requestingComponent','requestingComponentIsLoaded','requestingComponentIsFailed')});registry.get(component,apply);}else if(typeof component==='function'){component(apply);}}};ko.virtualElements.allowedBindings.scope=true;renderer.addNode('scope').addAttribute('scope',{name:'ko-scope'});});