text: define(["require", "exports"], function (require, exports) {
      "use strict";
      Object.defineProperty(exports, "__esModule", { value: true });
      exports.getDefaultTarget = exports.setDefaultTarget = exports.notifyHostChanged = exports.unregisterLayer = exports.registerLayer = void 0;
      var _layersByHostId = {};
      var _defaultHostSelector;
      /**
       * Register a layer for a given host id
       * @param hostId Id of the layer host
       * @param layer Layer instance
       */
      function registerLayer(hostId, callback) {
          if (!_layersByHostId[hostId]) {
              _layersByHostId[hostId] = [];
          }
          _layersByHostId[hostId].push(callback);
      }
      exports.registerLayer = registerLayer;
      /**
       * Unregister a layer for a given host id
       * @param hostId Id of the layer host
       * @param layer Layer instance
       */
      function unregisterLayer(hostId, callback) {
          if (_layersByHostId[hostId]) {
              var idx = _layersByHostId[hostId].indexOf(callback);
              if (idx >= 0) {
                  _layersByHostId[hostId].splice(idx, 1);
                  if (_layersByHostId[hostId].length === 0) {
                      delete _layersByHostId[hostId];
                  }
              }
          }
      }
      exports.unregisterLayer = unregisterLayer;
      /**
       * Used for notifying applicable Layers that a host is available/unavailable and to re-evaluate Layers that
       * care about the specific host.
       */
      function notifyHostChanged(id) {
          if (_layersByHostId[id]) {
              _layersByHostId[id].forEach(function (callback) { return callback(); });
          }
      }
      exports.notifyHostChanged = notifyHostChanged;
      /**
       * Sets the default target selector to use when determining the host in which
       * Layered content will be injected into. If not provided, an element will be
       * created at the end of the document body.
       *
       * Passing in a falsy value will clear the default target and reset back to
       * using a created element at the end of document body.
       */
      function setDefaultTarget(selector) {
          _defaultHostSelector = selector;
      }
      exports.setDefaultTarget = setDefaultTarget;
      /**
       * Get the default target selector when determining a host
       */
      function getDefaultTarget() {
          return _defaultHostSelector;
      }
      exports.getDefaultTarget = getDefaultTarget;
  });
  //# sourceMappingURL=Layer.notification.js.map