Liferay.Loader.define("dynamic-data-mapping-form-renderer@5.0.35/js/util/Observer.es", ['module', 'exports', 'require'], function (module, exports, require) {
  var define = undefined;
  var global = window;
  {
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    exports["default"] = void 0;

    function _classCallCheck(instance, Constructor) {
      if (!(instance instanceof Constructor)) {
        throw new TypeError("Cannot call a class as a function");
      }
    }

    function _defineProperties(target, props) {
      for (var i = 0; i < props.length; i++) {
        var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);
      }
    }

    function _createClass(Constructor, protoProps, staticProps) {
      if (protoProps) _defineProperties(Constructor.prototype, protoProps);if (staticProps) _defineProperties(Constructor, staticProps);return Constructor;
    }

    /**
     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
     *
     * This library is free software; you can redistribute it and/or modify it under
     * the terms of the GNU Lesser General Public License as published by the Free
     * Software Foundation; either version 2.1 of the License, or (at your option)
     * any later version.
     *
     * This library is distributed in the hope that it will be useful, but WITHOUT
     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
     * details.
     */
    var Observer = /*#__PURE__*/function () {
      function Observer() {
        _classCallCheck(this, Observer);

        this.handlers = [];
      }

      _createClass(Observer, [{
        key: "subscribe",
        value: function subscribe(fn) {
          this.handlers.push(fn);
        }
      }, {
        key: "unsubscribe",
        value: function unsubscribe(fn) {
          this.handlers = this.handlers.filter(function (handler) {
            return handler !== fn;
          });
        }
      }, {
        key: "dispatch",
        value: function dispatch(value) {
          this.handlers.forEach(function (handler) {
            return handler(value);
          });
        }
      }]);

      return Observer;
    }();

    exports["default"] = Observer;
    //# sourceMappingURL=Observer.es.js.map
  }
});
//# sourceMappingURL=Observer.es.js.map