function makePropsObservable(ctx) {
    let props = ctx.$rawProps;
    if (typeof props === 'function') {
        props = ctx.$rawProps = props();
    }

    if (!props) {
        return;
    }

    let observer = new Observer(
        ctx,
        ctx[propDataKey] || /* istanbul ignore next */ {},
        null,
        true
    );
    let propsObj = {};

    Object.keys(props).reduce((last, item) => {
        last[item] = true;
        return last;
    }, propsObj);
    Object.defineProperties(ctx, proxyObject(observer, propsObj));

    return observer;
}
function makePropsObservable(ctx) {
    let props = ctx.$rawProps;
    if (typeof props === 'function') {
        props = ctx.$rawProps = props();
    }

    if (!props) {
        return;
    }

    let observer = new Observer(
        ctx,
        ctx[propDataKey] ||  {},
        null,
        true
    );
    let propsObj = {};

    Object.keys(props).reduce((last, item) => {
        last[item] = true;
        return last;
    }, propsObj);
    Object.defineProperties(ctx, proxyObject(observer, propsObj));

    return observer;
}
function makePropsObservable ( ctx ) { let props = ctx . $rawProps ; if ( typeof props === 'function' ) { props = ctx . $rawProps = props ( ) ; } if ( ! props ) { return ; } let observer = new Observer ( ctx , ctx [ propDataKey ] || /* istanbul ignore next */ { } , null , true ) ; let propsObj = { } ; Object . keys ( props ) . reduce ( ( last , item ) => { last [ item ] = true ; return last ; } , propsObj ) ; Object . defineProperties ( ctx , proxyObject ( observer , propsObj ) ) ; return observer ; }
Make props observable

@inner
@param {Object} ctx the component instance context
@return {Observer} the observer
Make props observable