![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/pub/static/frontend/Magento/luma/en_US/mage/adminhtml/ |
/** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ /* global varienEvents */ /* eslint-disable strict */ define([ 'Magento_Ui/js/modal/alert', 'prototype' ], function (alert) { // from http://www.someelement.com/2007/03/eventpublisher-custom-events-la-pubsub.html window.varienEvents = Class.create(); varienEvents.prototype = { /** * Initialize. */ initialize: function () { this.arrEvents = {}; this.eventPrefix = ''; }, /** * Attaches a {handler} function to the publisher's {eventName} event for execution upon the event firing * @param {String} eventName * @param {Function} handler * @param {Boolean} [asynchFlag] - Defaults to false if omitted. * Indicates whether to execute {handler} asynchronously (true) or not (false). */ attachEventHandler: function (eventName, handler) { var asynchVar, handlerObj; if (typeof handler == 'undefined' || handler == null) { return; } eventName += this.eventPrefix; // using an event cache array to track all handlers for proper cleanup if (this.arrEvents[eventName] == null) { this.arrEvents[eventName] = []; } //create a custom object containing the handler method and the asynch flag asynchVar = arguments.length > 2 ? arguments[2] : false; handlerObj = { method: handler, asynch: asynchVar }; this.arrEvents[eventName].push(handlerObj); }, /** * Removes a single handler from a specific event * @param {String} eventName - The event name to clear the handler from * @param {Function} handler - A reference to the handler function to un-register from the event */ removeEventHandler: function (eventName, handler) { eventName += this.eventPrefix; if (this.arrEvents[eventName] != null) { this.arrEvents[eventName] = this.arrEvents[eventName].reject(function (obj) { return obj.method == handler; //eslint-disable-line eqeqeq }); } }, /** * Removes all handlers from a single event * @param {String} eventName - The event name to clear handlers from */ clearEventHandlers: function (eventName) { eventName += this.eventPrefix; this.arrEvents[eventName] = null; }, /** * Removes all handlers from ALL events */ clearAllEventHandlers: function () { this.arrEvents = {}; }, /** * Collect and modify value of arg synchronously in succession and return its new value. * In order to use, call attachEventHandler and add function handlers with eventName. * Then call fireEventReducer with eventName and any argument to have its value accumulatively modified. * Event handlers will be applied to argument in order of first attached to last attached. * @param {String} eventName * @param {*} arg */ fireEventReducer: function (eventName, arg) { var evtName = eventName + this.eventPrefix, result = arg, len, i; if (!this.arrEvents[evtName]) { return result; } len = this.arrEvents[evtName].length; //optimization for (i = 0; i < len; i++) { /* eslint-disable max-depth */ try { result = this.arrEvents[evtName][i].method(result); } catch (e) { if (this.id) { alert({ content: 'error: error in ' + this.id + '.fireEventReducer():\n\nevent name: ' + eventName + '\n\nerror message: ' + e.message }); } else { alert({ content: 'error: error in [unknown object].fireEventReducer():\n\nevent name: ' + eventName + '\n\nerror message: ' + e.message }); } } /* eslint-disable max-depth */ } return result; }, /** * Fires the event {eventName}, resulting in all registered handlers to be executed. * It also collects and returns results of all non-asynchronous handlers * @param {String} eventName - The name of the event to fire * @param {Object} [args] - Any object, will be passed into the handler function as the only argument * @return {Array} */ fireEvent: function (eventName) { var evtName = eventName + this.eventPrefix, results = [], result, len, i, eventArgs, method, eventHandler; if (this.arrEvents[evtName] != null) { len = this.arrEvents[evtName].length; //optimization for (i = 0; i < len; i++) { /* eslint-disable max-depth */ try { if (arguments.length > 1) { if (this.arrEvents[evtName][i].asynch) { eventArgs = arguments[1]; method = this.arrEvents[evtName][i].method.bind(this); setTimeout(function () { //eslint-disable-line no-loop-func method(eventArgs); }, 10); } else { result = this.arrEvents[evtName][i].method(arguments[1]); } } else { if (this.arrEvents[evtName][i].asynch) { //eslint-disable-line no-lonely-if eventHandler = this.arrEvents[evtName][i].method; setTimeout(eventHandler, 1); } else if ( this.arrEvents && this.arrEvents[evtName] && this.arrEvents[evtName][i] && this.arrEvents[evtName][i].method ) { result = this.arrEvents[evtName][i].method(); } } results.push(result); } catch (e) { if (this.id) { alert({ content: 'error: error in ' + this.id + '.fireEvent():\n\nevent name: ' + eventName + '\n\nerror message: ' + e.message }); } else { alert({ content: 'error: error in [unknown object].fireEvent():\n\nevent name: ' + eventName + '\n\nerror message: ' + e.message }); } } /* eslint-enable max-depth */ } } return results; } }; window.varienGlobalEvents = new varienEvents(); //jscs:ignore requireCapitalizedConstructors return window.varienGlobalEvents; });