UNPKG

@phemium-costaisa/amazon-quicksight-embedding-sdk

Version:
62 lines (61 loc) 2.58 kB
"use strict"; // Copyright 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 exports.__esModule = true; var eventManagerBuilder = function () { var eventListeners = new Map(); var addEventListener = function (experienceIdentifier, listener) { if (!experienceIdentifier) { return; } if (typeof listener !== 'function') { return; } if (!eventListeners.has(experienceIdentifier)) { eventListeners.set(experienceIdentifier, []); } var experienceIdentifierSpecificListeners = eventListeners.get(experienceIdentifier); experienceIdentifierSpecificListeners.push(listener); }; var invokeEventListener = function (experienceIdentifier, data) { if (!eventListeners.has(experienceIdentifier)) { return; } var experienceIdentifierSpecificListeners = eventListeners.get(experienceIdentifier); experienceIdentifierSpecificListeners.forEach(function (listener) { listener(data); }); }; var removeEventListener = function (experienceIdentifier, listener) { if (!eventListeners.has(experienceIdentifier)) { return; } var experienceIdentifierSpecificListeners = eventListeners.get(experienceIdentifier); var remainingListeners = experienceIdentifierSpecificListeners.filter(function (listenerItem) { return listenerItem !== listener; }); eventListeners.set(experienceIdentifier, remainingListeners); }; var experienceEventListenerBuilder = function (experienceIdentifier, onMessage) { var addExperienceEventListener = function (listener) { return addEventListener(experienceIdentifier, listener); }; if (onMessage) { addExperienceEventListener(onMessage); } return { addExperienceEventListener: addExperienceEventListener, invokeExperienceEventListener: function (data) { return invokeEventListener(experienceIdentifier, data); }, removeExperienceEventListener: function (listener) { return removeEventListener(experienceIdentifier, listener); } }; }; return { addEventListener: addEventListener, invokeEventListener: invokeEventListener, removeEventListener: removeEventListener, experienceEventListenerBuilder: experienceEventListenerBuilder }; }; exports["default"] = eventManagerBuilder;