{"version":3,"file":"hslayers-ng-services-event-bus.mjs","sources":["../../../projects/hslayers/services/event-bus/event-bus.service.ts","../../../projects/hslayers/services/event-bus/hslayers-ng-services-event-bus.ts"],"sourcesContent":["import {BehaviorSubject, ReplaySubject, Subject} from 'rxjs';\nimport {Injectable} from '@angular/core';\n\nimport {Feature, Map, MapBrowserEvent} from 'ol';\nimport {Geometry} from 'ol/geom';\nimport {Layer, Vector as VectorLayer} from 'ol/layer';\nimport {Select} from 'ol/interaction';\nimport {Source, Vector as VectorSource} from 'ol/source';\n\nimport {\n  ClickedCoordinates,\n  HsLayerDescriptor,\n  HsLayerLoadProgress,\n  HsTerrainLayerDescriptor,\n  HsMapCompositionDescriptor,\n} from 'hslayers-ng/types';\nimport {HsDimensionDescriptor} from 'hslayers-ng/common/dimensions';\n\n/**\n * HsEventBusService provides observable events which you can subscribe to or fire them\n *\n * @example\n * HsEventBusService.sizeChanges.subscribe((size) => {\n *              doSomethingWith(size);\n * })\n * @example\n * HsEventBusService.layerLoaded.next();\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class HsEventBusService {\n  sizeChanges: Subject<any> = new Subject();\n  /**\n   * Fires when map completely reset\n   */\n  mapResets: Subject<void> = new Subject();\n  compositionLoadStarts: Subject<string> = new Subject();\n  compositionDeletes: Subject<HsMapCompositionDescriptor> = new Subject();\n  /**\n   * Fires when composition is loaded or not loaded with Error message\n   */\n  compositionLoads: Subject<any> = new Subject();\n  compositionEdits: Subject<void> = new Subject();\n  layerRemovals: Subject<Layer<Source>> = new Subject();\n  /**\n   * Fired when non-base layers that were added to the map by user were removed\n   */\n  addedLayersRemoved: Subject<void> = new Subject();\n  /**\n   * Fires when new layer is added to the app.\n   * Suppressed for layers defined in default_layers in HsConfig.\n   */\n  layerAdditions: Subject<HsLayerDescriptor> = new Subject();\n  /**\n   * Fires when base layer or terrain layer changes visibility\n   */\n  LayerManagerBaseLayerVisibilityChanges: Subject<\n    HsLayerDescriptor | HsTerrainLayerDescriptor\n  > = new Subject();\n  LayerManagerLayerVisibilityChanges: Subject<any> = new Subject();\n  /**\n   * Fires when layer is added or removed in LayerManager or its z-index changes or its title changes via rename.\n   */\n  layerManagerUpdates: Subject<Layer<Source> | void> = new Subject();\n  /**\n   * Fires when layer finishes loading its features or tiles.\n   * Usually triggered once, when all features are loaded, or after all features/tiles in given view/extent are loaded.\n   */\n  layerLoaded: Subject<Layer<Source>> = new Subject();\n  layerLoading: Subject<{\n    layer: Layer<Source>;\n    progress: HsLayerLoadProgress;\n  }> = new Subject();\n  /**\n   * Fires when user enables layer time synchronization in the UI.\n   * Used to synchronize time in PARAMS across WM(T)S-t layers.\n   */\n  layerTimeSynchronizations: Subject<{\n    sync: boolean;\n    time?: string;\n  }> = new Subject();\n  /**\n   * Used to listen for changes either in \"time\" property in HsLayerDescriptor\n   * or in \"dimensions\" property in OL Layer object\n   */\n  layerDimensionDefinitionChanges: ReplaySubject<Layer<Source>> =\n    new ReplaySubject<Layer<Source>>();\n  /**\n   * Used to listen for changes of dimension settings in layermanager-dimensions component\n   */\n  layermanagerDimensionChanges: Subject<{\n    layer: Layer<Source>;\n    dimension: HsDimensionDescriptor;\n  }> = new Subject();\n  vectorQueryFeatureSelection: Subject<{\n    feature: Feature<Geometry>;\n    selector: Select;\n  }> = new Subject();\n  vectorQueryFeatureDeselection: Subject<{\n    feature: Feature<Geometry>;\n    selector: Select;\n  }> = new Subject();\n  /**\n   * Fires when current mainpanel change - toggle, change of opened panel.\n   * replaces 'core.mainpanel_changed'\n   */\n  mainPanelChanges: Subject<string | null> = new Subject();\n  /**\n   * replaces 'measure.drawStart'\n   */\n  measurementStarts: Subject<void> = new Subject();\n  /**\n   * replaces 'measure.drawEnd'\n   */\n  measurementEnds: Subject<void> = new Subject();\n  cesiumLoads: BehaviorSubject<{viewer; service}> = new BehaviorSubject({\n    viewer: null,\n    service: null,\n  });\n  cesiumResizes: Subject<{viewer; service}> = new Subject();\n  zoomTo: Subject<any> = new Subject();\n  /**\n   * Fires when map extent change (move, zoom, resize).\n   * Returns structure containing OL map, event which triggered the extent change, newly\n   * calculated {@link http://openlayers.org/en/latest/apidoc/ol.html#.Extent extent}\n   * and app name ('default' in most cases)\n   */\n  mapExtentChanges: Subject<{\n    map: Map;\n    event: string;\n    extent: number[];\n  }> = new Subject();\n  mapEventHandlersSet: ReplaySubject<void> = new ReplaySubject();\n  mapCenterSynchronizations: Subject<{center; viewport}> = new Subject();\n  mapLibraryChanges: Subject<'cesium' | 'ol'> = new Subject();\n  /**\n   * replaces 'cesium.time_layers_changed'\n   */\n  cesiumTimeLayerChanges: Subject<Array<{name; time}>> = new Subject();\n  layoutResizes: Subject<void> = new Subject();\n  /**\n   * replaces 'map.loaded'\n   */\n  olMapLoads: Subject<Map> = new Subject();\n  /**\n   * replaces 'search.resultsReceived'\n   */\n  searchResultsReceived: Subject<void> = new Subject();\n  searchZoomTo: Subject<{coordinate; zoom}> = new Subject();\n  clearSearchResults: Subject<void> = new Subject();\n  /**\n   * replaces 'query.dataUpdated'\n   */\n  queryDataUpdated: Subject<any> = new Subject();\n  /**\n   * replaces 'mapClicked'\n   */\n  mapClicked: Subject<MapBrowserEvent<any> & ClickedCoordinates> =\n    new Subject();\n  /**\n   * Fires when layerSelected parameter is found in the URL\n   */\n  layerSelectedFromUrl: BehaviorSubject<Layer<Source>> = new BehaviorSubject(\n    null,\n  );\n  mapSizeUpdates: Subject<void> = new Subject();\n  /**\n   * Cancels any external URL data request from datasources panel\n   */\n  cancelAddDataUrlRequest: Subject<void> = new Subject();\n  /**\n   * Fires when Layman vector layer should be refreshed\n   */\n  refreshLaymanLayer: Subject<VectorLayer<VectorSource<Feature>>> =\n    new Subject();\n  /**\n   * Fires when WFS filter should be reset - used when last filter is removed\n   */\n  resetWfsFilter: Subject<void> = new Subject();\n  constructor() {}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAkBA;;;;;;;;;AASG;MAIU,iBAAiB,CAAA;AAqJ5B,IAAA,WAAA,GAAA;AApJA,QAAA,IAAA,CAAA,WAAW,GAAiB,IAAI,OAAO,EAAE;AACzC;;AAEG;AACH,QAAA,IAAA,CAAA,SAAS,GAAkB,IAAI,OAAO,EAAE;AACxC,QAAA,IAAA,CAAA,qBAAqB,GAAoB,IAAI,OAAO,EAAE;AACtD,QAAA,IAAA,CAAA,kBAAkB,GAAwC,IAAI,OAAO,EAAE;AACvE;;AAEG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAiB,IAAI,OAAO,EAAE;AAC9C,QAAA,IAAA,CAAA,gBAAgB,GAAkB,IAAI,OAAO,EAAE;AAC/C,QAAA,IAAA,CAAA,aAAa,GAA2B,IAAI,OAAO,EAAE;AACrD;;AAEG;AACH,QAAA,IAAA,CAAA,kBAAkB,GAAkB,IAAI,OAAO,EAAE;AACjD;;;AAGG;AACH,QAAA,IAAA,CAAA,cAAc,GAA+B,IAAI,OAAO,EAAE;AAC1D;;AAEG;AACH,QAAA,IAAA,CAAA,sCAAsC,GAElC,IAAI,OAAO,EAAE;AACjB,QAAA,IAAA,CAAA,kCAAkC,GAAiB,IAAI,OAAO,EAAE;AAChE;;AAEG;AACH,QAAA,IAAA,CAAA,mBAAmB,GAAkC,IAAI,OAAO,EAAE;AAClE;;;AAGG;AACH,QAAA,IAAA,CAAA,WAAW,GAA2B,IAAI,OAAO,EAAE;AACnD,QAAA,IAAA,CAAA,YAAY,GAGP,IAAI,OAAO,EAAE;AAClB;;;AAGG;AACH,QAAA,IAAA,CAAA,yBAAyB,GAGpB,IAAI,OAAO,EAAE;AAClB;;;AAGG;AACH,QAAA,IAAA,CAAA,+BAA+B,GAC7B,IAAI,aAAa,EAAiB;AACpC;;AAEG;AACH,QAAA,IAAA,CAAA,4BAA4B,GAGvB,IAAI,OAAO,EAAE;AAClB,QAAA,IAAA,CAAA,2BAA2B,GAGtB,IAAI,OAAO,EAAE;AAClB,QAAA,IAAA,CAAA,6BAA6B,GAGxB,IAAI,OAAO,EAAE;AAClB;;;AAGG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAA2B,IAAI,OAAO,EAAE;AACxD;;AAEG;AACH,QAAA,IAAA,CAAA,iBAAiB,GAAkB,IAAI,OAAO,EAAE;AAChD;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAkB,IAAI,OAAO,EAAE;QAC9C,IAAA,CAAA,WAAW,GAAuC,IAAI,eAAe,CAAC;AACpE,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC;AACF,QAAA,IAAA,CAAA,aAAa,GAA+B,IAAI,OAAO,EAAE;AACzD,QAAA,IAAA,CAAA,MAAM,GAAiB,IAAI,OAAO,EAAE;AACpC;;;;;AAKG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAIX,IAAI,OAAO,EAAE;AAClB,QAAA,IAAA,CAAA,mBAAmB,GAAwB,IAAI,aAAa,EAAE;AAC9D,QAAA,IAAA,CAAA,yBAAyB,GAAgC,IAAI,OAAO,EAAE;AACtE,QAAA,IAAA,CAAA,iBAAiB,GAA6B,IAAI,OAAO,EAAE;AAC3D;;AAEG;AACH,QAAA,IAAA,CAAA,sBAAsB,GAAiC,IAAI,OAAO,EAAE;AACpE,QAAA,IAAA,CAAA,aAAa,GAAkB,IAAI,OAAO,EAAE;AAC5C;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GAAiB,IAAI,OAAO,EAAE;AACxC;;AAEG;AACH,QAAA,IAAA,CAAA,qBAAqB,GAAkB,IAAI,OAAO,EAAE;AACpD,QAAA,IAAA,CAAA,YAAY,GAAgC,IAAI,OAAO,EAAE;AACzD,QAAA,IAAA,CAAA,kBAAkB,GAAkB,IAAI,OAAO,EAAE;AACjD;;AAEG;AACH,QAAA,IAAA,CAAA,gBAAgB,GAAiB,IAAI,OAAO,EAAE;AAC9C;;AAEG;AACH,QAAA,IAAA,CAAA,UAAU,GACR,IAAI,OAAO,EAAE;AACf;;AAEG;AACH,QAAA,IAAA,CAAA,oBAAoB,GAAmC,IAAI,eAAe,CACxE,IAAI,CACL;AACD,QAAA,IAAA,CAAA,cAAc,GAAkB,IAAI,OAAO,EAAE;AAC7C;;AAEG;AACH,QAAA,IAAA,CAAA,uBAAuB,GAAkB,IAAI,OAAO,EAAE;AACtD;;AAEG;AACH,QAAA,IAAA,CAAA,kBAAkB,GAChB,IAAI,OAAO,EAAE;AACf;;AAEG;AACH,QAAA,IAAA,CAAA,cAAc,GAAkB,IAAI,OAAO,EAAE;IAC9B;+GArJJ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;AC9BD;;AAEG;;;;"}