@geoit/ui 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -100,6 +100,7 @@ import * as i1$6 from 'ng-zorro-antd/core/transition-patch';
100
100
  import { Subscription } from 'rxjs';
101
101
  import { NzConfigService } from 'ng-zorro-antd/core/config';
102
102
  import GeoJSON from 'ol/format/GeoJSON';
103
+ import LayerGroup from 'ol/layer/Group';
103
104
  import TileLayer from 'ol/layer/Tile';
104
105
  import VectorLayer from 'ol/layer/Vector';
105
106
  import OSM from 'ol/source/OSM';
@@ -110,6 +111,7 @@ import WMTS from 'ol/source/WMTS';
110
111
  import WMTSTileGrid from 'ol/tilegrid/WMTS';
111
112
  import { get, transform, transformExtent, fromLonLat } from 'ol/proj';
112
113
  import { getWidth, getTopLeft, getCenter } from 'ol/extent';
114
+ import { apply } from 'ol-mapbox-style';
113
115
  import { register } from 'ol/proj/proj4';
114
116
  import proj4 from 'proj4';
115
117
  import OlMap from 'ol/Map';
@@ -4189,6 +4191,18 @@ const GEO_MAP_DEFAULT_TOOLBAR_ACTIONS = [
4189
4191
  tooltip: 'Chụp ảnh bản đồ',
4190
4192
  },
4191
4193
  ];
4194
+ /**
4195
+ * Built-in "Vị trí của tôi" toolbar action — pair with `id: 'locate'` handling that
4196
+ * `geo-map-shell` already resolves internally (geolocate + emit `located`/`locateError`).
4197
+ * Not included in `GEO_MAP_DEFAULT_TOOLBAR_ACTIONS`; host apps opt in explicitly.
4198
+ */
4199
+ const GEO_MAP_LOCATE_TOOLBAR_ACTION = {
4200
+ id: 'locate',
4201
+ label: 'Vị trí của tôi',
4202
+ icon: 'aim',
4203
+ iconOnly: true,
4204
+ tooltip: 'Vị trí của tôi',
4205
+ };
4192
4206
  /**
4193
4207
  * Demo thematic overlays for Storybook (offline-friendly GeoJSON).
4194
4208
  * Groups match portal layers popover: QHSDD · địa chính · hiện trạng.
@@ -4740,6 +4754,22 @@ class GeoMapLayerService {
4740
4754
  };
4741
4755
  return this.createLayer(config);
4742
4756
  }
4757
+ if (basemap.type === 'mapbox-style') {
4758
+ const config = {
4759
+ id: GEO_MAP_BASEMAP_LAYER_ID,
4760
+ title: basemap.title ?? 'Mapbox style basemap',
4761
+ type: 'mapbox-style',
4762
+ styleJson: basemap.styleJson,
4763
+ styleUrl: basemap.styleUrl,
4764
+ transformRequest: basemap.transformRequest,
4765
+ visible: true,
4766
+ opacity: 1,
4767
+ zIndex: 0,
4768
+ basemap: true,
4769
+ group: 'base-map',
4770
+ };
4771
+ return this.createLayer(config);
4772
+ }
4743
4773
  const config = {
4744
4774
  id: GEO_MAP_BASEMAP_LAYER_ID,
4745
4775
  title: basemap.title ?? 'XYZ basemap',
@@ -4779,6 +4809,9 @@ class GeoMapLayerService {
4779
4809
  case 'vector':
4780
4810
  layer = this.createVectorLayer(config);
4781
4811
  break;
4812
+ case 'mapbox-style':
4813
+ layer = this.createMapboxStyleLayer(config);
4814
+ break;
4782
4815
  default: {
4783
4816
  const _exhaustive = config;
4784
4817
  throw new Error(`Unsupported layer type: ${JSON.stringify(_exhaustive)}`);
@@ -4834,6 +4867,10 @@ class GeoMapLayerService {
4834
4867
  previous.dataProjection !== next.dataProjection);
4835
4868
  case 'vector':
4836
4869
  return previous.features !== next.features;
4870
+ case 'mapbox-style':
4871
+ return (previous.styleUrl !== next.styleUrl ||
4872
+ JSON.stringify(previous.styleJson) !==
4873
+ JSON.stringify(next.styleJson));
4837
4874
  default:
4838
4875
  return true;
4839
4876
  }
@@ -4903,6 +4940,9 @@ class GeoMapLayerService {
4903
4940
  if (config.type === 'geojson' && config.data == null) {
4904
4941
  throw new Error(`GeoJSON layer "${config.id}" is missing data.`);
4905
4942
  }
4943
+ if (config.type === 'mapbox-style' && !config.styleJson && !config.styleUrl?.trim()) {
4944
+ throw new Error(`Mapbox-style layer "${config.id}" requires styleJson or styleUrl.`);
4945
+ }
4906
4946
  }
4907
4947
  applyCommonOptions(layer, config) {
4908
4948
  layer.set(LAYER_ID_KEY, config.id);
@@ -5055,6 +5095,26 @@ class GeoMapLayerService {
5055
5095
  });
5056
5096
  return new VectorLayer({ source });
5057
5097
  }
5098
+ createMapboxStyleLayer(config) {
5099
+ const group = new LayerGroup({ layers: [] });
5100
+ const styleInput = config.styleJson ?? config.styleUrl;
5101
+ if (!styleInput) {
5102
+ throw new Error(`Mapbox-style layer "${config.id}" is missing styleJson/styleUrl.`);
5103
+ }
5104
+ apply(group, styleInput, { transformRequest: config.transformRequest })
5105
+ .then(() => {
5106
+ this.runtime.set(config.id, { id: config.id, status: 'ready' });
5107
+ })
5108
+ .catch((err) => {
5109
+ console.error(`[GeoMapLayerService] Mapbox style apply error "${config.id}"`, err);
5110
+ this.runtime.set(config.id, {
5111
+ id: config.id,
5112
+ status: 'error',
5113
+ errorMessage: 'Không áp được style bản đồ nền.',
5114
+ });
5115
+ });
5116
+ return group;
5117
+ }
5058
5118
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5059
5119
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLayerService });
5060
5120
  }
@@ -6137,6 +6197,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6137
6197
  args: [{ selector: 'geo-map-zoom', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-zoom-host' }, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"md\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Thu nh\u1ECF\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF\"\n [disabled]=\"!controller()\"\n (click)=\"zoomOut()\"\n >\n <geo-icon type=\"minus\" size=\"md\" />\n </button>\n\n @if (showNav()) {\n <span class=\"geo-map-zoom__divider\" aria-hidden=\"true\"></span>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'in'\"\n nz-tooltip=\"Ph\u00F3ng to theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('in')\"\n >\n <geo-icon type=\"zoom-in\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'out'\"\n nz-tooltip=\"Thu nh\u1ECF theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('out')\"\n >\n <geo-icon type=\"zoom-out\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom tr\u01B0\u1EDBc\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom tr\u01B0\u1EDBc\"\n [disabled]=\"!controller() || !canZoomPrev()\"\n (click)=\"zoomPrev()\"\n >\n <geo-icon type=\"left\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom sau\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom sau\"\n [disabled]=\"!controller() || !canZoomNext()\"\n (click)=\"zoomNext()\"\n >\n <geo-icon type=\"right\" size=\"sm\" />\n </button>\n @if (showFitProvince()) {\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Xem to\u00E0n t\u1EC9nh\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Xem to\u00E0n t\u1EC9nh\"\n [disabled]=\"!controller()\"\n (click)=\"fitProvince()\"\n >\n <geo-icon type=\"expand\" size=\"sm\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"isFullscreen()\"\n [nz-tooltip]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n [disabled]=\"!controller()\"\n (click)=\"toggleFullscreen()\"\n >\n <geo-icon\n [type]=\"isFullscreen() ? 'fullscreen-exit' : 'fullscreen'\"\n size=\"sm\"\n />\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.geo-map-zoom-host{display:block}.geo-map-zoom{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:4px}.geo-map-zoom__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:40px;padding:0}.geo-map-zoom__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-zoom__btn:active:not(:disabled){transform:scale(.98)}.geo-map-zoom__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-zoom__btn--active,.geo-map-zoom__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__btn--icon-only{width:40px;padding:0}.geo-map-zoom__btn--active{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__dragbox{background:color-mix(in srgb,var(--geo-color-primary-default) 18%,transparent);border:2px solid var(--geo-color-primary-default)}.geo-map-zoom__divider{height:1px;margin:2px 6px;background:var(--geo-color-neutral-100)}\n"] }]
6138
6198
  }], ctorParameters: () => [] });
6139
6199
 
6200
+ /**
6201
+ * Shared browser-geolocation trigger — centers `ctrl` on the user and reports the outcome.
6202
+ * Used by both `geo-map-locate` (standalone button) and `geo-map-shell`'s built-in locate
6203
+ * toolbar action so the two never drift on error-reason mapping.
6204
+ */
6205
+ function runGeoMapLocate(ctrl, callbacks) {
6206
+ if (typeof navigator === 'undefined' || !navigator.geolocation) {
6207
+ callbacks.onError?.({
6208
+ reason: 'unsupported',
6209
+ message: 'Trình duyệt không hỗ trợ định vị.',
6210
+ });
6211
+ return;
6212
+ }
6213
+ navigator.geolocation.getCurrentPosition((pos) => {
6214
+ const lonLat = [pos.coords.longitude, pos.coords.latitude];
6215
+ const mercator = fromLonLat(lonLat);
6216
+ ctrl.setCenter(mercator, Math.max(ctrl.getZoom() ?? 14, 14));
6217
+ callbacks.onLocated?.(lonLat);
6218
+ }, (err) => {
6219
+ if (err.code === err.PERMISSION_DENIED) {
6220
+ callbacks.onDenied?.();
6221
+ callbacks.onError?.({ reason: 'denied', message: err.message });
6222
+ return;
6223
+ }
6224
+ const reason = err.code === err.POSITION_UNAVAILABLE
6225
+ ? 'unavailable'
6226
+ : err.code === err.TIMEOUT
6227
+ ? 'timeout'
6228
+ : 'unknown';
6229
+ callbacks.onError?.({ reason, message: err.message });
6230
+ }, {
6231
+ enableHighAccuracy: true,
6232
+ timeout: 12000,
6233
+ maximumAge: 0,
6234
+ });
6235
+ }
6236
+
6140
6237
  /**
6141
6238
  * Geolocation button: center map on user after permission.
6142
6239
  *
@@ -6156,43 +6253,20 @@ class GeoMapLocateComponent {
6156
6253
  if (!ctrl || this.busy()) {
6157
6254
  return;
6158
6255
  }
6159
- if (typeof navigator === 'undefined' || !navigator.geolocation) {
6160
- this.locateError.emit({
6161
- reason: 'unsupported',
6162
- message: 'Trình duyệt không hỗ trợ định vị.',
6163
- });
6164
- return;
6165
- }
6166
6256
  this.busy.set(true);
6167
- navigator.geolocation.getCurrentPosition((pos) => {
6168
- this.busy.set(false);
6169
- const lonLat = [
6170
- pos.coords.longitude,
6171
- pos.coords.latitude,
6172
- ];
6173
- const mercator = fromLonLat(lonLat);
6174
- ctrl.setCenter(mercator, Math.max(ctrl.getZoom() ?? 14, 14));
6175
- this.located.emit(lonLat);
6176
- }, (err) => {
6177
- this.busy.set(false);
6178
- if (err.code === err.PERMISSION_DENIED) {
6257
+ runGeoMapLocate(ctrl, {
6258
+ onLocated: (lonLat) => {
6259
+ this.busy.set(false);
6260
+ this.located.emit(lonLat);
6261
+ },
6262
+ onDenied: () => {
6263
+ this.busy.set(false);
6179
6264
  this.denied.emit();
6180
- this.locateError.emit({
6181
- reason: 'denied',
6182
- message: err.message,
6183
- });
6184
- return;
6185
- }
6186
- const reason = err.code === err.POSITION_UNAVAILABLE
6187
- ? 'unavailable'
6188
- : err.code === err.TIMEOUT
6189
- ? 'timeout'
6190
- : 'unknown';
6191
- this.locateError.emit({ reason, message: err.message });
6192
- }, {
6193
- enableHighAccuracy: true,
6194
- timeout: 12000,
6195
- maximumAge: 0,
6265
+ },
6266
+ onError: (error) => {
6267
+ this.busy.set(false);
6268
+ this.locateError.emit(error);
6269
+ },
6196
6270
  });
6197
6271
  }
6198
6272
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLocateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -7554,6 +7628,8 @@ class GeoMapShellComponent {
7554
7628
  /** Extra overlays merged after demo thematic + traffic. */
7555
7629
  layers = input([]);
7556
7630
  legendItems = input(GEO_MAP_DEMO_LEGEND_ITEMS);
7631
+ /** Host app sets true when the legend catalog (loại đất/ký hiệu/màu) failed to load. */
7632
+ legendCatalogMissing = input(false);
7557
7633
  showNav = input(true);
7558
7634
  includeDemoLayers = input(true);
7559
7635
  adminNodes = input(GEO_MAP_DEMO_ADMIN_NODES);
@@ -7584,7 +7660,9 @@ class GeoMapShellComponent {
7584
7660
  adminExpandedKeys = model(['lam-dong']);
7585
7661
  mapReady = output();
7586
7662
  mapClick = output();
7663
+ located = output();
7587
7664
  locateDenied = output();
7665
+ locateError = output();
7588
7666
  actionClick = output();
7589
7667
  search = output();
7590
7668
  searchReset = output();
@@ -7778,6 +7856,9 @@ class GeoMapShellComponent {
7778
7856
  case 'fit-province':
7779
7857
  this.zoomRef()?.fitProvince();
7780
7858
  break;
7859
+ case 'locate':
7860
+ this.triggerLocate();
7861
+ break;
7781
7862
  case 'pan':
7782
7863
  if (this.toolMode() === 'pan') {
7783
7864
  this.exitToolMode();
@@ -7991,6 +8072,18 @@ class GeoMapShellComponent {
7991
8072
  }
7992
8073
  this.setMapCursor('grab');
7993
8074
  }
8075
+ /** Backing action for the `locate` toolbar entry (`GEO_MAP_LOCATE_TOOLBAR_ACTION`). */
8076
+ triggerLocate() {
8077
+ const ctrl = this.controller();
8078
+ if (!ctrl) {
8079
+ return;
8080
+ }
8081
+ runGeoMapLocate(ctrl, {
8082
+ onLocated: () => this.located.emit(),
8083
+ onDenied: () => this.locateDenied.emit(),
8084
+ onError: (error) => this.locateError.emit(error),
8085
+ });
8086
+ }
7994
8087
  setMapCursor(cursor) {
7995
8088
  const el = this.controller()?.getMap()?.getTargetElement();
7996
8089
  if (!el) {
@@ -8069,7 +8162,7 @@ class GeoMapShellComponent {
8069
8162
  this.managedLayers.set(next);
8070
8163
  }
8071
8164
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8072
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapShellComponent, isStandalone: true, selector: "geo-map-shell", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showMousePosition: { classPropertyName: "showMousePosition", publicName: "showMousePosition", isSignal: true, isRequired: false, transformFunction: null }, basemapOptions: { classPropertyName: "basemapOptions", publicName: "basemapOptions", isSignal: true, isRequired: false, transformFunction: null }, toolbarActions: { classPropertyName: "toolbarActions", publicName: "toolbarActions", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null }, legendItems: { classPropertyName: "legendItems", publicName: "legendItems", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, includeDemoLayers: { classPropertyName: "includeDemoLayers", publicName: "includeDemoLayers", isSignal: true, isRequired: false, transformFunction: null }, adminNodes: { classPropertyName: "adminNodes", publicName: "adminNodes", isSignal: true, isRequired: false, transformFunction: null }, locationLabel: { classPropertyName: "locationLabel", publicName: "locationLabel", isSignal: true, isRequired: false, transformFunction: null }, parcelAudience: { classPropertyName: "parcelAudience", publicName: "parcelAudience", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, demoSearch: { classPropertyName: "demoSearch", publicName: "demoSearch", isSignal: true, isRequired: false, transformFunction: null }, homeMode: { classPropertyName: "homeMode", publicName: "homeMode", isSignal: true, isRequired: false, transformFunction: null }, basemapId: { classPropertyName: "basemapId", publicName: "basemapId", isSignal: true, isRequired: false, transformFunction: null }, measureMode: { classPropertyName: "measureMode", publicName: "measureMode", isSignal: true, isRequired: false, transformFunction: null }, checkedMap: { classPropertyName: "checkedMap", publicName: "checkedMap", isSignal: true, isRequired: false, transformFunction: null }, layersOpen: { classPropertyName: "layersOpen", publicName: "layersOpen", isSignal: true, isRequired: false, transformFunction: null }, legendOpen: { classPropertyName: "legendOpen", publicName: "legendOpen", isSignal: true, isRequired: false, transformFunction: null }, helpOpen: { classPropertyName: "helpOpen", publicName: "helpOpen", isSignal: true, isRequired: false, transformFunction: null }, swipeActive: { classPropertyName: "swipeActive", publicName: "swipeActive", isSignal: true, isRequired: false, transformFunction: null }, searchOpen: { classPropertyName: "searchOpen", publicName: "searchOpen", isSignal: true, isRequired: false, transformFunction: null }, adminFilterOpen: { classPropertyName: "adminFilterOpen", publicName: "adminFilterOpen", isSignal: true, isRequired: false, transformFunction: null }, parcelOpen: { classPropertyName: "parcelOpen", publicName: "parcelOpen", isSignal: true, isRequired: false, transformFunction: null }, managedLayers: { classPropertyName: "managedLayers", publicName: "managedLayers", isSignal: true, isRequired: false, transformFunction: null }, searchResults: { classPropertyName: "searchResults", publicName: "searchResults", isSignal: true, isRequired: false, transformFunction: null }, selectedParcel: { classPropertyName: "selectedParcel", publicName: "selectedParcel", isSignal: true, isRequired: false, transformFunction: null }, adminCheckedKeys: { classPropertyName: "adminCheckedKeys", publicName: "adminCheckedKeys", isSignal: true, isRequired: false, transformFunction: null }, adminExpandedKeys: { classPropertyName: "adminExpandedKeys", publicName: "adminExpandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { basemapId: "basemapIdChange", measureMode: "measureModeChange", checkedMap: "checkedMapChange", layersOpen: "layersOpenChange", legendOpen: "legendOpenChange", helpOpen: "helpOpenChange", swipeActive: "swipeActiveChange", searchOpen: "searchOpenChange", adminFilterOpen: "adminFilterOpenChange", parcelOpen: "parcelOpenChange", managedLayers: "managedLayersChange", searchResults: "searchResultsChange", selectedParcel: "selectedParcelChange", adminCheckedKeys: "adminCheckedKeysChange", adminExpandedKeys: "adminExpandedKeysChange", mapReady: "mapReady", mapClick: "mapClick", locateDenied: "locateDenied", actionClick: "actionClick", search: "search", searchReset: "searchReset", resultSelect: "resultSelect", parcelExport: "parcelExport", adminApply: "adminApply" }, host: { properties: { "style.height": "height()" }, classAttribute: "geo-map-shell-host" }, viewQueries: [{ propertyName: "snapshotRef", first: true, predicate: GeoMapSnapshotComponent, descendants: true, isSignal: true }, { propertyName: "zoomRef", first: true, predicate: GeoMapZoomComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"], dependencies: [{ kind: "component", type: GeoMapComponent, selector: "geo-map", inputs: ["center", "zoom", "minZoom", "maxZoom", "viewProjection", "basemap", "layers", "height", "registerProjections", "projections", "showMousePosition", "mousePositionProjection", "showZoomControl"], outputs: ["mapReady", "mapClick", "viewChange", "initError"] }, { kind: "component", type: GeoMapToolbarComponent, selector: "geo-map-toolbar", inputs: ["controller", "actions", "compact", "checkedMap"], outputs: ["checkedMapChange", "actionClick", "actionToggle"] }, { kind: "component", type: GeoMapZoomComponent, selector: "geo-map-zoom", inputs: ["controller", "showNav", "showFitProvince", "provinceExtent", "fullscreenTarget"] }, { kind: "component", type: GeoMapSnapshotComponent, selector: "geo-map-snapshot", inputs: ["controller", "label", "filename"], outputs: ["captured", "captureError"] }, { kind: "component", type: GeoMapMeasureComponent, selector: "geo-map-measure", inputs: ["controller", "mode", "showResult"], outputs: ["modeChange", "measureChange"] }, { kind: "component", type: GeoMapLayersDrawerComponent, selector: "geo-map-layers-drawer", inputs: ["controller", "open", "title", "legendItems", "showOpacity", "showLegend", "layers"], outputs: ["openChange", "layersChange", "closed"] }, { kind: "component", type: GeoMapLegendComponent, selector: "geo-map-legend", inputs: ["title", "items", "open"], outputs: ["openChange", "closed"] }, { kind: "component", type: GeoMapHelpComponent, selector: "geo-map-help", inputs: ["open", "title", "sections"], outputs: ["openChange"] }, { kind: "component", type: GeoMapSwipeComponent, selector: "geo-map-swipe", inputs: ["controller", "active", "position", "layerId"], outputs: ["activeChange", "positionChange"] }, { kind: "component", type: GeoMapSearchComponent, selector: "geo-map-search", inputs: ["open", "title", "mode", "results", "loading", "pageIndex", "pageSize", "total", "emptyText"], outputs: ["openChange", "modeChange", "pageIndexChange", "pageSizeChange", "search", "reset", "resultSelect", "closed"] }, { kind: "component", type: GeoMapAdminFilterComponent, selector: "geo-map-admin-filter", inputs: ["open", "title", "nodes", "checkedKeys", "expandedKeys"], outputs: ["openChange", "checkedKeysChange", "expandedKeysChange", "apply", "reset", "fitProvince", "closed", "selectionChange"] }, { kind: "component", type: GeoMapParcelPopupComponent, selector: "geo-map-parcel-popup", inputs: ["open", "title", "parcel", "audience", "showExport"], outputs: ["openChange", "closed", "back", "exportClick", "diagramClick"] }, { kind: "component", type: GeoMapLocationChipComponent, selector: "geo-map-location-chip", inputs: ["label", "icon"] }, { kind: "component", type: GeoMapBasemapSwitcherComponent, selector: "geo-map-basemap-switcher", inputs: ["options", "selectedId", "label", "tooltip"], outputs: ["selectedIdChange", "basemapChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8165
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapShellComponent, isStandalone: true, selector: "geo-map-shell", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showMousePosition: { classPropertyName: "showMousePosition", publicName: "showMousePosition", isSignal: true, isRequired: false, transformFunction: null }, basemapOptions: { classPropertyName: "basemapOptions", publicName: "basemapOptions", isSignal: true, isRequired: false, transformFunction: null }, toolbarActions: { classPropertyName: "toolbarActions", publicName: "toolbarActions", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null }, legendItems: { classPropertyName: "legendItems", publicName: "legendItems", isSignal: true, isRequired: false, transformFunction: null }, legendCatalogMissing: { classPropertyName: "legendCatalogMissing", publicName: "legendCatalogMissing", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, includeDemoLayers: { classPropertyName: "includeDemoLayers", publicName: "includeDemoLayers", isSignal: true, isRequired: false, transformFunction: null }, adminNodes: { classPropertyName: "adminNodes", publicName: "adminNodes", isSignal: true, isRequired: false, transformFunction: null }, locationLabel: { classPropertyName: "locationLabel", publicName: "locationLabel", isSignal: true, isRequired: false, transformFunction: null }, parcelAudience: { classPropertyName: "parcelAudience", publicName: "parcelAudience", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, demoSearch: { classPropertyName: "demoSearch", publicName: "demoSearch", isSignal: true, isRequired: false, transformFunction: null }, homeMode: { classPropertyName: "homeMode", publicName: "homeMode", isSignal: true, isRequired: false, transformFunction: null }, basemapId: { classPropertyName: "basemapId", publicName: "basemapId", isSignal: true, isRequired: false, transformFunction: null }, measureMode: { classPropertyName: "measureMode", publicName: "measureMode", isSignal: true, isRequired: false, transformFunction: null }, checkedMap: { classPropertyName: "checkedMap", publicName: "checkedMap", isSignal: true, isRequired: false, transformFunction: null }, layersOpen: { classPropertyName: "layersOpen", publicName: "layersOpen", isSignal: true, isRequired: false, transformFunction: null }, legendOpen: { classPropertyName: "legendOpen", publicName: "legendOpen", isSignal: true, isRequired: false, transformFunction: null }, helpOpen: { classPropertyName: "helpOpen", publicName: "helpOpen", isSignal: true, isRequired: false, transformFunction: null }, swipeActive: { classPropertyName: "swipeActive", publicName: "swipeActive", isSignal: true, isRequired: false, transformFunction: null }, searchOpen: { classPropertyName: "searchOpen", publicName: "searchOpen", isSignal: true, isRequired: false, transformFunction: null }, adminFilterOpen: { classPropertyName: "adminFilterOpen", publicName: "adminFilterOpen", isSignal: true, isRequired: false, transformFunction: null }, parcelOpen: { classPropertyName: "parcelOpen", publicName: "parcelOpen", isSignal: true, isRequired: false, transformFunction: null }, managedLayers: { classPropertyName: "managedLayers", publicName: "managedLayers", isSignal: true, isRequired: false, transformFunction: null }, searchResults: { classPropertyName: "searchResults", publicName: "searchResults", isSignal: true, isRequired: false, transformFunction: null }, selectedParcel: { classPropertyName: "selectedParcel", publicName: "selectedParcel", isSignal: true, isRequired: false, transformFunction: null }, adminCheckedKeys: { classPropertyName: "adminCheckedKeys", publicName: "adminCheckedKeys", isSignal: true, isRequired: false, transformFunction: null }, adminExpandedKeys: { classPropertyName: "adminExpandedKeys", publicName: "adminExpandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { basemapId: "basemapIdChange", measureMode: "measureModeChange", checkedMap: "checkedMapChange", layersOpen: "layersOpenChange", legendOpen: "legendOpenChange", helpOpen: "helpOpenChange", swipeActive: "swipeActiveChange", searchOpen: "searchOpenChange", adminFilterOpen: "adminFilterOpenChange", parcelOpen: "parcelOpenChange", managedLayers: "managedLayersChange", searchResults: "searchResultsChange", selectedParcel: "selectedParcelChange", adminCheckedKeys: "adminCheckedKeysChange", adminExpandedKeys: "adminExpandedKeysChange", mapReady: "mapReady", mapClick: "mapClick", located: "located", locateDenied: "locateDenied", locateError: "locateError", actionClick: "actionClick", search: "search", searchReset: "searchReset", resultSelect: "resultSelect", parcelExport: "parcelExport", adminApply: "adminApply" }, host: { properties: { "style.height": "height()" }, classAttribute: "geo-map-shell-host" }, viewQueries: [{ propertyName: "snapshotRef", first: true, predicate: GeoMapSnapshotComponent, descendants: true, isSignal: true }, { propertyName: "zoomRef", first: true, predicate: GeoMapZoomComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n @if (legendCatalogMissing()) {\n <div class=\"geo-map-shell__notice\">\n <geo-alert\n type=\"warning\"\n [showIcon]=\"true\"\n title=\"Ch\u01B0a c\u00F3 danh m\u1EE5c ch\u00FA gi\u1EA3i\"\n message=\"Danh m\u1EE5c lo\u1EA1i \u0111\u1EA5t v\u00E0 k\u00FD hi\u1EC7u/m\u00E0u c\u1EE7a t\u1EC9nh ch\u01B0a \u0111\u01B0\u1EE3c n\u1EA1p v\u00E0o h\u1EC7 th\u1ED1ng. B\u1EA3n \u0111\u1ED3 v\u1EABn hi\u1EC3n th\u1ECB b\u00ECnh th\u01B0\u1EDDng.\"\n />\n </div>\n }\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__notice{position:absolute;top:16px;left:50%;z-index:8;transform:translate(-50%);width:min(480px,100% - 32px);pointer-events:none}.geo-map-shell__notice>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"], dependencies: [{ kind: "component", type: GeoMapComponent, selector: "geo-map", inputs: ["center", "zoom", "minZoom", "maxZoom", "viewProjection", "basemap", "layers", "height", "registerProjections", "projections", "showMousePosition", "mousePositionProjection", "showZoomControl"], outputs: ["mapReady", "mapClick", "viewChange", "initError"] }, { kind: "component", type: GeoMapToolbarComponent, selector: "geo-map-toolbar", inputs: ["controller", "actions", "compact", "checkedMap"], outputs: ["checkedMapChange", "actionClick", "actionToggle"] }, { kind: "component", type: GeoMapZoomComponent, selector: "geo-map-zoom", inputs: ["controller", "showNav", "showFitProvince", "provinceExtent", "fullscreenTarget"] }, { kind: "component", type: GeoMapSnapshotComponent, selector: "geo-map-snapshot", inputs: ["controller", "label", "filename"], outputs: ["captured", "captureError"] }, { kind: "component", type: GeoMapMeasureComponent, selector: "geo-map-measure", inputs: ["controller", "mode", "showResult"], outputs: ["modeChange", "measureChange"] }, { kind: "component", type: GeoMapLayersDrawerComponent, selector: "geo-map-layers-drawer", inputs: ["controller", "open", "title", "legendItems", "showOpacity", "showLegend", "layers"], outputs: ["openChange", "layersChange", "closed"] }, { kind: "component", type: GeoMapLegendComponent, selector: "geo-map-legend", inputs: ["title", "items", "open"], outputs: ["openChange", "closed"] }, { kind: "component", type: GeoMapHelpComponent, selector: "geo-map-help", inputs: ["open", "title", "sections"], outputs: ["openChange"] }, { kind: "component", type: GeoMapSwipeComponent, selector: "geo-map-swipe", inputs: ["controller", "active", "position", "layerId"], outputs: ["activeChange", "positionChange"] }, { kind: "component", type: GeoMapSearchComponent, selector: "geo-map-search", inputs: ["open", "title", "mode", "results", "loading", "pageIndex", "pageSize", "total", "emptyText"], outputs: ["openChange", "modeChange", "pageIndexChange", "pageSizeChange", "search", "reset", "resultSelect", "closed"] }, { kind: "component", type: GeoMapAdminFilterComponent, selector: "geo-map-admin-filter", inputs: ["open", "title", "nodes", "checkedKeys", "expandedKeys"], outputs: ["openChange", "checkedKeysChange", "expandedKeysChange", "apply", "reset", "fitProvince", "closed", "selectionChange"] }, { kind: "component", type: GeoMapParcelPopupComponent, selector: "geo-map-parcel-popup", inputs: ["open", "title", "parcel", "audience", "showExport"], outputs: ["openChange", "closed", "back", "exportClick", "diagramClick"] }, { kind: "component", type: GeoMapLocationChipComponent, selector: "geo-map-location-chip", inputs: ["label", "icon"] }, { kind: "component", type: GeoMapBasemapSwitcherComponent, selector: "geo-map-basemap-switcher", inputs: ["options", "selectedId", "label", "tooltip"], outputs: ["selectedIdChange", "basemapChange"] }, { kind: "component", type: GeoAlertComponent, selector: "geo-alert", inputs: ["type", "title", "message", "closable", "visible", "showIcon"], outputs: ["visibleChange", "closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8073
8166
  }
8074
8167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapShellComponent, decorators: [{
8075
8168
  type: Component,
@@ -8088,10 +8181,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
8088
8181
  GeoMapParcelPopupComponent,
8089
8182
  GeoMapLocationChipComponent,
8090
8183
  GeoMapBasemapSwitcherComponent,
8184
+ GeoAlertComponent,
8091
8185
  ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
8092
8186
  class: 'geo-map-shell-host',
8093
8187
  '[style.height]': 'height()',
8094
- }, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"] }]
8188
+ }, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n @if (legendCatalogMissing()) {\n <div class=\"geo-map-shell__notice\">\n <geo-alert\n type=\"warning\"\n [showIcon]=\"true\"\n title=\"Ch\u01B0a c\u00F3 danh m\u1EE5c ch\u00FA gi\u1EA3i\"\n message=\"Danh m\u1EE5c lo\u1EA1i \u0111\u1EA5t v\u00E0 k\u00FD hi\u1EC7u/m\u00E0u c\u1EE7a t\u1EC9nh ch\u01B0a \u0111\u01B0\u1EE3c n\u1EA1p v\u00E0o h\u1EC7 th\u1ED1ng. B\u1EA3n \u0111\u1ED3 v\u1EABn hi\u1EC3n th\u1ECB b\u00ECnh th\u01B0\u1EDDng.\"\n />\n </div>\n }\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__notice{position:absolute;top:16px;left:50%;z-index:8;transform:translate(-50%);width:min(480px,100% - 32px);pointer-events:none}.geo-map-shell__notice>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"] }]
8095
8189
  }], ctorParameters: () => [] });
8096
8190
 
8097
8191
  /*
@@ -8102,5 +8196,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
8102
8196
  * Generated bundle index. Do not edit.
8103
8197
  */
8104
8198
 
8105
- export { DEFAULT_UI_ROW_ACTIONS, DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS, GEO_ICON_SIZE_MAP, GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, GEO_MAP_BASEMAP_LAYER_ID, GEO_MAP_BUILTIN_PROJECTIONS, GEO_MAP_DEFAULT_BASEMAP_OPTIONS, GEO_MAP_DEFAULT_CENTER, GEO_MAP_DEFAULT_HEIGHT, GEO_MAP_DEFAULT_HELP_SECTIONS, GEO_MAP_DEFAULT_MAX_ZOOM, GEO_MAP_DEFAULT_MIN_ZOOM, GEO_MAP_DEFAULT_PLANNING_LAYERS, GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326, GEO_MAP_DEFAULT_TOOLBAR_ACTIONS, GEO_MAP_DEFAULT_VIEW_PROJECTION, GEO_MAP_DEFAULT_ZOOM, GEO_MAP_DEMO_ADMIN_NODES, GEO_MAP_DEMO_LEGEND_ITEMS, GEO_MAP_DEMO_PARCEL_DETAIL, GEO_MAP_DEMO_THEMATIC_LAYERS, GEO_MAP_ENV_PLACEHOLDERS, GEO_MAP_ESRI_IMAGERY_URL, GEO_MAP_ESRI_STREETS_URL, GEO_MAP_ESRI_TRANSPORT_URL, GEO_MAP_HIGHLIGHT_LAYER_ID, GEO_MAP_MEASURE_LAYER_ID, GEO_MAP_SELECTION_LAYER_ID, GEO_MAP_TOOLBAR_ASSET_BASE, GEO_MAP_TOOLBAR_ICONS, GEO_MAP_TRAFFIC_LAYER_ID, GEO_MAP_TRAFFIC_OVERLAY, GEO_STATUS_COLOR_MAP, GEO_STATUS_LABELS, GEO_TOAST_DEFAULT_TITLES, GEO_TOAST_ICONS, GEO_TYPOGRAPHY_TAG, GEO_TYPOGRAPHY_VARIANTS, GeoAccordionComponent, GeoAccordionPanelDirective, GeoAlertComponent, GeoBackButtonComponent, GeoBreadcrumbComponent, GeoButtonComponent, GeoChartComponent, GeoCheckboxComponent, GeoColumnPickerComponent, GeoConfirmModalComponent, GeoDashboardComponent, GeoDatePickerComponent, GeoDateRangePickerComponent, GeoDetailViewComponent, GeoDetailViewItemDirective, GeoEmptyStateComponent, GeoFeedbackFormComponent, GeoFilePickerComponent, GeoForgotPasswordComponent, GeoFormModalComponent, GeoIconComponent, GeoInputComponent, GeoLayoutActionsDirective, GeoLayoutComponent, GeoLayoutFooterComponent, GeoLayoutHeaderActionsComponent, GeoLayoutHeaderComponent, GeoLayoutSidebarComponent, GeoListPageComponent, GeoLoginComponent, GeoMapAdminFilterComponent, GeoMapBasemapSwitcherComponent, GeoMapComponent, GeoMapController, GeoMapHelpComponent, GeoMapLayerCardComponent, GeoMapLayerPanelComponent, GeoMapLayerService, GeoMapLayersDrawerComponent, GeoMapLegendComponent, GeoMapLocateComponent, GeoMapLocationChipComponent, GeoMapMeasureComponent, GeoMapOpacityComponent, GeoMapParcelPopupComponent, GeoMapProjectionError, GeoMapProjectionService, GeoMapSearchComponent, GeoMapService, GeoMapShellComponent, GeoMapSnapshotComponent, GeoMapSwipeComponent, GeoMapToolbarComponent, GeoMapZoomComponent, GeoOverlapResultComponent, GeoPageHeaderComponent, GeoPageTitleComponent, GeoPaginationComponent, GeoRadioComponent, GeoRowActionsComponent, GeoSelectComponent, GeoSliderComponent, GeoStatCardComponent, GeoStatusTagComponent, GeoStepFormLayoutComponent, GeoStepperComponent, GeoSwitchComponent, GeoTabDirective, GeoTableComponent, GeoTableFilterComponent, GeoTablePaginationComponent, GeoTableToolbarComponent, GeoTabsComponent, GeoTextareaComponent, GeoToastComponent, GeoToastService, GeoTreeComponent, GeoTypographyComponent, GeoUploadComponent, NgZorroAntdModule, UI_ALERT_DEFAULT_TITLES, UI_STATUS_LABELS, UI_TABLE_MOBILE_BREAKPOINT, applyColumnPickerState, cssVar, geoColorCssVars, geoColorTokens, geoFormatBytes, geoFormatSpeed, geoRadiusCssVars, geoRadiusTokens, geoShadowTokens, geoTypographyTokens, geoUploadPercent, loadColumnPickerState, mergeColumnPickerItems, pickInlineRowActions, pickOverflowRowActions, saveColumnPickerState };
8199
+ export { DEFAULT_UI_ROW_ACTIONS, DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS, GEO_ICON_SIZE_MAP, GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, GEO_MAP_BASEMAP_LAYER_ID, GEO_MAP_BUILTIN_PROJECTIONS, GEO_MAP_DEFAULT_BASEMAP_OPTIONS, GEO_MAP_DEFAULT_CENTER, GEO_MAP_DEFAULT_HEIGHT, GEO_MAP_DEFAULT_HELP_SECTIONS, GEO_MAP_DEFAULT_MAX_ZOOM, GEO_MAP_DEFAULT_MIN_ZOOM, GEO_MAP_DEFAULT_PLANNING_LAYERS, GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326, GEO_MAP_DEFAULT_TOOLBAR_ACTIONS, GEO_MAP_DEFAULT_VIEW_PROJECTION, GEO_MAP_DEFAULT_ZOOM, GEO_MAP_DEMO_ADMIN_NODES, GEO_MAP_DEMO_LEGEND_ITEMS, GEO_MAP_DEMO_PARCEL_DETAIL, GEO_MAP_DEMO_THEMATIC_LAYERS, GEO_MAP_ENV_PLACEHOLDERS, GEO_MAP_ESRI_IMAGERY_URL, GEO_MAP_ESRI_STREETS_URL, GEO_MAP_ESRI_TRANSPORT_URL, GEO_MAP_HIGHLIGHT_LAYER_ID, GEO_MAP_LOCATE_TOOLBAR_ACTION, GEO_MAP_MEASURE_LAYER_ID, GEO_MAP_SELECTION_LAYER_ID, GEO_MAP_TOOLBAR_ASSET_BASE, GEO_MAP_TOOLBAR_ICONS, GEO_MAP_TRAFFIC_LAYER_ID, GEO_MAP_TRAFFIC_OVERLAY, GEO_STATUS_COLOR_MAP, GEO_STATUS_LABELS, GEO_TOAST_DEFAULT_TITLES, GEO_TOAST_ICONS, GEO_TYPOGRAPHY_TAG, GEO_TYPOGRAPHY_VARIANTS, GeoAccordionComponent, GeoAccordionPanelDirective, GeoAlertComponent, GeoBackButtonComponent, GeoBreadcrumbComponent, GeoButtonComponent, GeoChartComponent, GeoCheckboxComponent, GeoColumnPickerComponent, GeoConfirmModalComponent, GeoDashboardComponent, GeoDatePickerComponent, GeoDateRangePickerComponent, GeoDetailViewComponent, GeoDetailViewItemDirective, GeoEmptyStateComponent, GeoFeedbackFormComponent, GeoFilePickerComponent, GeoForgotPasswordComponent, GeoFormModalComponent, GeoIconComponent, GeoInputComponent, GeoLayoutActionsDirective, GeoLayoutComponent, GeoLayoutFooterComponent, GeoLayoutHeaderActionsComponent, GeoLayoutHeaderComponent, GeoLayoutSidebarComponent, GeoListPageComponent, GeoLoginComponent, GeoMapAdminFilterComponent, GeoMapBasemapSwitcherComponent, GeoMapComponent, GeoMapController, GeoMapHelpComponent, GeoMapLayerCardComponent, GeoMapLayerPanelComponent, GeoMapLayerService, GeoMapLayersDrawerComponent, GeoMapLegendComponent, GeoMapLocateComponent, GeoMapLocationChipComponent, GeoMapMeasureComponent, GeoMapOpacityComponent, GeoMapParcelPopupComponent, GeoMapProjectionError, GeoMapProjectionService, GeoMapSearchComponent, GeoMapService, GeoMapShellComponent, GeoMapSnapshotComponent, GeoMapSwipeComponent, GeoMapToolbarComponent, GeoMapZoomComponent, GeoOverlapResultComponent, GeoPageHeaderComponent, GeoPageTitleComponent, GeoPaginationComponent, GeoRadioComponent, GeoRowActionsComponent, GeoSelectComponent, GeoSliderComponent, GeoStatCardComponent, GeoStatusTagComponent, GeoStepFormLayoutComponent, GeoStepperComponent, GeoSwitchComponent, GeoTabDirective, GeoTableComponent, GeoTableFilterComponent, GeoTablePaginationComponent, GeoTableToolbarComponent, GeoTabsComponent, GeoTextareaComponent, GeoToastComponent, GeoToastService, GeoTreeComponent, GeoTypographyComponent, GeoUploadComponent, NgZorroAntdModule, UI_ALERT_DEFAULT_TITLES, UI_STATUS_LABELS, UI_TABLE_MOBILE_BREAKPOINT, applyColumnPickerState, cssVar, geoColorCssVars, geoColorTokens, geoFormatBytes, geoFormatSpeed, geoRadiusCssVars, geoRadiusTokens, geoShadowTokens, geoTypographyTokens, geoUploadPercent, loadColumnPickerState, mergeColumnPickerItems, pickInlineRowActions, pickOverflowRowActions, saveColumnPickerState };
8106
8200
  //# sourceMappingURL=geoit-ui.mjs.map