import { ABaseMelEvent } from '../../../../mel_metapage/js/lib/html/JsHtml/CustomAttributes/events.js';
/**
* @callback EventSourceCallback
* @param {external:moment} start
* @param {external:moment} end
* @param {string} timezone
* @param {function} callback
*/
export class SourceEvent extends ABaseMelEvent {
#events = [];
constructor(args) {
super('fc.loading.source', args.caller);
this.sourceID = args.id;
this.start = args.start;
this.end = args.end;
this.timezone = args.timezone;
}
addEvent(data) {
return this.addEvents(data);
}
addEvents(...events) {
return this.#events.push(...events);
}
get events() {
return this.#events;
}
}
//api:fc.render.event
//api:fc.render.resource
export class RenderEvent extends ABaseMelEvent {
constructor(type, caller, obj, node) {
super(`fc.render.${type}`, caller);
this.itemData = obj;
this.itemNode = node;
}
}
export class ViewRender extends ABaseMelEvent {
#view = null;
#element = null;
constructor(view, element, caller) {
super('view.render', caller);
this.#view = view;
this.#element = element;
}
get view() {
return this.#view;
}
get viewNode() {
return this.#element;
}
get viewTitle() {
return this.view.title;
}
get start() {
return this.view.start;
}
get end() {
return this.view.end;
}
static get EventType() {
return 'api:view.render';
}
}