]> BookStack Code Mirror - bookstack/blobdiff - resources/js/services/events.js
Updated styles to use logical properties/values
[bookstack] / resources / js / services / events.js
index 1f97d0cb8295ccb02774b6c4b8c4faf189fdffd7..fa3ed7fdfcb55ebd341ee44543eafd58b697d14d 100644 (file)
@@ -7,6 +7,12 @@ class Events {
         this.stack = [];
     }
 
+    /**
+     * Emit a custom event for any handlers to pick-up.
+     * @param {String} eventName
+     * @param {*} eventData
+     * @returns {Events}
+     */
     emit(eventName, eventData) {
         this.stack.push({name: eventName, data: eventData});
         if (typeof this.listeners[eventName] === 'undefined') return this;
@@ -18,11 +24,32 @@ class Events {
         return this;
     }
 
+    /**
+     * Listen to a custom event and run the given callback when that event occurs.
+     * @param {String} eventName
+     * @param {Function} callback
+     * @returns {Events}
+     */
     listen(eventName, callback) {
         if (typeof this.listeners[eventName] === 'undefined') this.listeners[eventName] = [];
         this.listeners[eventName].push(callback);
         return this;
     }
+
+    /**
+     * Emit an event for public use.
+     * Sends the event via the native DOM event handling system.
+     * @param {Element} targetElement
+     * @param {String} eventName
+     * @param {Object} eventData
+     */
+    emitPublic(targetElement, eventName, eventData) {
+        const event = new CustomEvent(eventName, {
+            detail: eventData,
+            bubbles: true
+        });
+        targetElement.dispatchEvent(event);
+    }
 }
 
 export default Events;
\ No newline at end of file