import { Reporter } from '../reporter/reporter.js';
import { Component } from '../component/component.js';
/**
* Package navigation settings
*/
class NavigationSettings extends Component {
/**
* @param {Reporter} reporter
* @param {Object} settings
*/
constructor( reporter, settings ) {
super(reporter,settings);
/**
* @private
* @type {Array<LibraryNavigationItem>}
*/
this._library = settings?.library || [];
}
/** @private */
_dispatchChangeEvent() {
this.emit( 'change', this );
}
/** @type {Array<LibraryNavigationItem>} */
get library() {
return this._library;
}
/**
* @param {('library')} menu
* @param {(LibraryNavigationItem)} item
*/
addItem( menu, item ) {
this.report({ msg: `add ${menu} item ${item.label}` });
this[ '_' + menu ].push( item );
this._dispatchChangeEvent();
}
/**
* @param {('library')} menu
* @param {string} label
*/
removeItem( menu, label ) {
this.report({ msg: `remove ${menu} item ${label}` });
this[ '_' + menu ] = this[ '_' + menu ].filter( item => item.label !== label );
this._dispatchChangeEvent();
}
/** @returns {NavigationOptions} */
// toJSON() {
// return {
// library: this._library,
// }
// }
}
export { NavigationSettings };