UNPKG

@enact/core

Version:

Enact is an open source JavaScript framework containing everything you need to create a fast, scalable mobile or web application.

67 lines (66 loc) 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.Registry = void 0; /** * Allows components to register parents to cascade context changes and trigger functions * * @type Object * @memberof core/Registry * @private */ var Registry = exports.Registry = { create: function create(handler) { var instances = []; var currentParent; var registry = Object.freeze({ set parent(register) { if (currentParent && currentParent.unregister) { currentParent.unregister(); } if (register && typeof register === 'function') { currentParent = register(registry.notify); } }, notify: function notify(ev) { var exclude = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () { return true; }; instances.filter(exclude).forEach(function (f) { return f(ev); }); }, register: function register(instance) { if (instances.indexOf(instance) === -1) { instances.push(instance); if (handler) { handler({ action: 'register' }, instance); } } return { notify: function notify(ev) { if (handler) { handler(ev, instance); } }, unregister: function unregister() { var i = instances.indexOf(instance); if (i >= 0) { instances.splice(i, 1); if (handler) { handler({ action: 'register' }, instance); } } } }; } }); return registry; } }; var _default = exports["default"] = Registry;