Source: package/configuration_settings.js

import { Reporter } from '../reporter/reporter.js';
import { Component } from '../component/component.js';

/**
 * Package configuration settings 
 */

class ConfigurationSettings extends Component {

    /**
     * @param {Reporter} reporter
     * @param {Object} settings
     */

    constructor( reporter, settings ) {

        super(reporter, settings);

        // /** @type {Reporter} */

        // this._reporter = reporter;


        // /**
        //  * @private
        //  * @type {Boolean}
        //  */
        
        // this._blockExtend = settings?.blockExtend || true;


        // /** 
        //  * @private
        //  * @type {Boolean}
        //  */

        // this._blockInsert = settings?.blockInsert || true;


        // /** 
        //  * @private
        //  * @type {Boolean} 
        //  */

        // this._blockReplace = settings?.blockReplace || true;
    }


    static _exportName = {
        singular: 'configurationSetting',
        plural: 'configurationSettings'
    };


    // /** @private */

    // _dispatchChangeEvent() {
    //     this.emit({ type: 'change', value: this.toJSON() } );
    // }

    
    /** @type {Boolean} */

    get blockInsert() {
        return this._blockInsert;
    }

    set blockInsert( val ) {
        this.report({ msg: `set blockInsert=${val}` });
        this._blockInsert = val;
        this._dispatchChangeEvent();
    }
    

    /** @type {Boolean} */

    get blockExtend() {
        return this._blockExtend;
    }

    set blockExtend( val ) {
        this.report({ msg: `set blockExtend=${val}` });
        this._blockExtend = val;
        this._dispatchChangeEvent();
    }
    

    /** @type {Boolean} */

    get blockReplace() {
        return this._blockReplace;
    }

    set blockReplace( val ) {
        this.report({ msg: `set blockReplace=${val}` });
        this._blockReplace = val;
        this._dispatchChangeEvent();
    }

    
    /** @returns {ConfigurationOptions} */

    // toJSON() {
    //     return {
    //         blockExtend: this._blockExtend,
    //         blockInsert: this._blockInsert,
    //         blockReplace: this._blockReplace
    //     }
    // }
    
}

export { ConfigurationSettings };