private IJavascriptObject GetMapper(IJavascriptObjectMapper iMapperListener)
        {
            _JavascriptMapper.Enqueue(iMapperListener);

            if (_Mapper != null)
            {
                return(_Mapper);
            }

            _Mapper = _WebView.Factory.CreateObject();

            _Mapper.Bind("Register", _WebView, (e) =>
            {
                if (_PullNextMapper)
                {
                    _Current        = _JavascriptMapper.Dequeue();
                    _PullNextMapper = false;
                }

                if (_Current == null)
                {
                    return;
                }

                int count      = e.Length;
                var registered = e[0];

                switch (count)
                {
                case 1:
                    _Current.MapFirst(registered);
                    break;

                case 3:
                    _Current.Map(e[1], e[2].GetStringValue(), registered);
                    break;

                case 4:
                    _Current.MapCollection(e[1], e[2].GetStringValue(), e[3].GetIntValue(), registered);
                    break;
                }
            });

            _Mapper.Bind("End", _WebView, (e) =>
            {
                if (_PullNextMapper)
                {
                    _Current = _JavascriptMapper.Dequeue();
                }

                _Current?.EndMapping(e[0]);
                _Current        = null;
                _PullNextMapper = true;
            });

            return(_Mapper);
        }
        private IJavascriptObject GetMapper(IJavascriptObjectMapper iMapperListener)
        {
            _JavascriptMapper.Enqueue(iMapperListener);

            if (_Mapper != null)
                return _Mapper;

            _Mapper = _WebView.Factory.CreateObject(false);

            _Mapper.Bind("Register", _WebView, (e) =>
            {
                if (_PullNextMapper)
                {
                    _Current = _JavascriptMapper.Dequeue();
                    _PullNextMapper = false;
                }

                if (_Current == null)
                    return;

                int count = e.Length;
                var registered = e[0];

                switch (count)
                {
                    case 1:
                        _Current.MapFirst(registered);
                        break;

                    case 3:
                        _Current.Map(e[1], e[2].GetStringValue(), registered);
                        break;

                    case 4:
                        _Current.MapCollection(e[1], e[2].GetStringValue(), e[3].GetIntValue(), registered);
                        break;
                }
            });

            _Mapper.Bind("End", _WebView, (e) =>
            {
                if (_PullNextMapper)
                    _Current = _JavascriptMapper.Dequeue();

                _Current?.EndMapping(e[0]);
                _Current = null;
                _PullNextMapper = true;
            });

            return _Mapper;
        }
        public IJavascriptObject UnsafeInject(IJavascriptObject ihybridobject, IJavascriptObjectMapper ijvm)
        {
            var res = GetKo().Invoke("MapToObservable", _WebView, ihybridobject, GetMapper(ijvm), _Listener);

            return((res == null || res.IsUndefined) ? null : res);
        }
 public IJavascriptObject Inject(IJavascriptObject ihybridobject, IJavascriptObjectMapper ijvm)
 {
     return(UnsafeInject(ihybridobject, ijvm));
 }
 public IJavascriptObject Inject(IJavascriptObject rawObject, IJavascriptObjectMapper mapper)
 {
     mapper?.AutoMap();
     return(rawObject);
 }
Esempio n. 6
0
 public IJavascriptObject Inject(IJavascriptObject rawObject, IJavascriptObjectMapper mapper)
 {
     return(rawObject);
 }
 public IJavascriptObject UnsafeInject(IJavascriptObject ihybridobject, IJavascriptObjectMapper ijvm) 
 {
     var res = GetKo().Invoke("MapToObservable", _WebView, ihybridobject, GetMapper(ijvm), _Listener);
     return (res == null || res.IsUndefined) ? null : res;
 }
 public IJavascriptObject Inject(IJavascriptObject ihybridobject, IJavascriptObjectMapper ijvm)
 {
     return UnsafeInject(ihybridobject, ijvm);
 }