Source: main.js

/**
 * This file acts as the main entry point for the client logic.
 * 
 * @module scripts/main
 */

import RequestHandler from "./request_handler.js";
import EventHandler from "./event_handler.js";
import PageHandler from "./page_handler.js";
import SocketHandler from "./socket_handler.js";



/**
 * Is executed as a result of the page loading.
 * 
 * @function window.addEventListener
 * 
 * @param {string} type       - Defines the type of event to catch.
 * @param {Function} listener - Defines what should happen when the event is triggered.
 */
window.addEventListener('DOMContentLoaded', () => {

    const requestHandler = new RequestHandler();
    const pageHandler = new PageHandler();
    const eventHandler = new EventHandler(requestHandler, pageHandler);

    const socketHandler = new SocketHandler(requestHandler, pageHandler);
    socketHandler.createConnection();

    /**
     * Is executed as a result of the user clicking the page.
     * 
     * @function document.addEventListener
     * 
     * @param {string} type       - Defines the type of event to catch.
     * @param {Function} listener - Defines what should happen when the event is triggered.
     */
    document.addEventListener('click', (e) => {

        let target = e.target;
        let dataAttributes = pageHandler.getDataAttributes(target);
        let eventTag = target.getAttribute("data-event");

        if (eventTag != null) eventHandler.handleEvent(target, eventTag, dataAttributes);

    });

});