'use strict';

/**
 * A subject class is used for register by observer
 */
class StaticSubject {
  /**
   * It takes a subject title and returns a SubjectTitle object
   *
   * @param {SubjectTitle} title - The title of the subject.
   */
  constructor(title) {
    this.title = title;
  }
  /**
   * Get the title of the subject
   *
   * @returns {string} The title of the subject.
   */
  getDescription() {
    return this.title;
  }
}

const SIDENAV_LINK_SELECTED_TOPIC = new StaticSubject('SIDENAV_LINK_SELECTED_TOPIC');
const ACCORDION_EXPAND_TOPIC = new StaticSubject('ACCORDION_EXPAND_TOPIC');
const FORM_RESET_OPERATION_TRIGGERED = new StaticSubject('FORM_RESET_OPERATION_TRIGGERED');
const FORM_FIELD_ELEMENT_DISCONNECTED = new StaticSubject('FORM_FIELD_ELEMENT_DISCONNECTED');
const RADIO_GROUP_DISABLED_CHANGE = new StaticSubject('RADIO_GROUP_DISABLED_CHANGE');
const CHECKBOX_GROUP_DISABLED_CHANGE = new StaticSubject('CHECKBOX_GROUP_DISABLED_CHANGE');
const FORM_FIELD_PENDING_VALID_CHANGE = new StaticSubject('FORM_FIELD_PENDING_VALID_CHANGE');
const TAB_PANEL_ADD_OR_DEL_TO_GROUP = new StaticSubject('TAB_PANEL_ADD_OR_DEL_TO_GROUP');
const TABLE_EXPAND_ROW = new StaticSubject('TABLE_EXPAND_ROW');
const TABLE_ROW_SELECTION = new StaticSubject('TABLE_ROW_SELECTION');
const TABLE_ROW_SELECTION_ALL = new StaticSubject('TABLE_ROW_SELECTION_ALL');
const TABLE_ROW_CLICK = new StaticSubject('TABLE_ROW_CLICK');
const FIELD_ERROR_MESSAGE_CHANGE = new StaticSubject('FIELD_ERROR_MESSAGE_CHANGE');
const DROPDOWN_ITEM_CLICK = new StaticSubject('DROPDOWN_ITEM_CLICK');
const CHECKBOX_VALUE_CHANGE = new StaticSubject('CHECKBOX_VALUE_CHANGE');
const RADIO_VALUE_CHANGE = new StaticSubject('RADIO_VALUE_CHANGE');
const FORM_ELEMENT_VALUE_CHANGE = new StaticSubject('FORM_ELEMENT_VALUE_CHANGE');
const FORM_ELEMENT_VALIDATE = new StaticSubject('FORM_EMEMENT_VALIDATE');
const SELECTION_TILE_VALUE_CHANGE = new StaticSubject('SELECTION_TILE_VALUE_CHANGE');
const UPDATE_TRANSLATION = new StaticSubject('UPDATE_TRANSLATION');
const DARK_MODE_CHANGE = new StaticSubject('DARK_MODE_CHANGE');
const SHADOW_ROOT_ELEMENT_SCROLLING = new StaticSubject('SHADOW_ROOT_ELEMENT_SCROLLING');
const FLAG_ICON_LOADED = new StaticSubject('FLAG_ICON_LOADED');
const GP_BRAND_CHANGE = new StaticSubject('GP_BRAND_CHANGE');

exports.ACCORDION_EXPAND_TOPIC = ACCORDION_EXPAND_TOPIC;
exports.CHECKBOX_GROUP_DISABLED_CHANGE = CHECKBOX_GROUP_DISABLED_CHANGE;
exports.CHECKBOX_VALUE_CHANGE = CHECKBOX_VALUE_CHANGE;
exports.DARK_MODE_CHANGE = DARK_MODE_CHANGE;
exports.DROPDOWN_ITEM_CLICK = DROPDOWN_ITEM_CLICK;
exports.FIELD_ERROR_MESSAGE_CHANGE = FIELD_ERROR_MESSAGE_CHANGE;
exports.FLAG_ICON_LOADED = FLAG_ICON_LOADED;
exports.FORM_ELEMENT_VALIDATE = FORM_ELEMENT_VALIDATE;
exports.FORM_ELEMENT_VALUE_CHANGE = FORM_ELEMENT_VALUE_CHANGE;
exports.FORM_FIELD_ELEMENT_DISCONNECTED = FORM_FIELD_ELEMENT_DISCONNECTED;
exports.FORM_FIELD_PENDING_VALID_CHANGE = FORM_FIELD_PENDING_VALID_CHANGE;
exports.FORM_RESET_OPERATION_TRIGGERED = FORM_RESET_OPERATION_TRIGGERED;
exports.GP_BRAND_CHANGE = GP_BRAND_CHANGE;
exports.RADIO_GROUP_DISABLED_CHANGE = RADIO_GROUP_DISABLED_CHANGE;
exports.RADIO_VALUE_CHANGE = RADIO_VALUE_CHANGE;
exports.SELECTION_TILE_VALUE_CHANGE = SELECTION_TILE_VALUE_CHANGE;
exports.SHADOW_ROOT_ELEMENT_SCROLLING = SHADOW_ROOT_ELEMENT_SCROLLING;
exports.SIDENAV_LINK_SELECTED_TOPIC = SIDENAV_LINK_SELECTED_TOPIC;
exports.TABLE_EXPAND_ROW = TABLE_EXPAND_ROW;
exports.TABLE_ROW_CLICK = TABLE_ROW_CLICK;
exports.TABLE_ROW_SELECTION = TABLE_ROW_SELECTION;
exports.TABLE_ROW_SELECTION_ALL = TABLE_ROW_SELECTION_ALL;
exports.TAB_PANEL_ADD_OR_DEL_TO_GROUP = TAB_PANEL_ADD_OR_DEL_TO_GROUP;
exports.UPDATE_TRANSLATION = UPDATE_TRANSLATION;
