whole_func_string: function makeDataObservable(ctx) {
      const data = ctx.data;
      if (!data) {
          return;
      }
  
      if (isPlainObject(data)) {
          /* eslint-disable no-use-before-define */
          let observer = new Observer(ctx, data);
          Object.defineProperties(
              ctx, proxyObject(observer, data, ctx)
          );
          return observer;
      }
  
      let err = new Error('data require plain object');
      err.isTypeError = true;
      throw err;
  }
func_code_string: function makeDataObservable(ctx) {
      const data = ctx.data;
      if (!data) {
          return;
      }
  
      if (isPlainObject(data)) {
          /* eslint-disable no-use-before-define */
          let observer = new Observer(ctx, data);
          Object.defineProperties(
              ctx, proxyObject(observer, data, ctx)
          );
          return observer;
      }
  
      let err = new Error('data require plain object');
      err.isTypeError = true;
      throw err;
  }
func_documentation_string: Make data observable
  
  @inner
  @param {Object} ctx the component instance context
  @return {Observer} the observer