@honua/react 0.1.12 → 0.1.14

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.
Files changed (195) hide show
  1. package/columnar/apache-arrow.d.ts +17 -0
  2. package/columnar/apache-arrow.d.ts.map +1 -0
  3. package/columnar/apache-arrow.js +1036 -0
  4. package/columnar/batch-cache-conformance.d.ts +66 -0
  5. package/columnar/batch-cache-conformance.d.ts.map +1 -0
  6. package/columnar/batch-cache-conformance.js +317 -0
  7. package/columnar/batch-cache-indexeddb.d.ts +31 -0
  8. package/columnar/batch-cache-indexeddb.d.ts.map +1 -0
  9. package/columnar/batch-cache-indexeddb.js +148 -0
  10. package/columnar/batch-cache.d.ts +298 -0
  11. package/columnar/batch-cache.d.ts.map +1 -0
  12. package/columnar/batch-cache.js +757 -0
  13. package/columnar/geoarrow-aggregate.d.ts +178 -0
  14. package/columnar/geoarrow-aggregate.d.ts.map +1 -0
  15. package/columnar/geoarrow-aggregate.js +976 -0
  16. package/columnar/geoarrow-patch.d.ts +382 -0
  17. package/columnar/geoarrow-patch.d.ts.map +1 -0
  18. package/columnar/geoarrow-patch.js +1656 -0
  19. package/columnar/geoarrow-reproject.d.ts +22 -0
  20. package/columnar/geoarrow-reproject.d.ts.map +1 -0
  21. package/columnar/geoarrow-reproject.js +119 -0
  22. package/columnar/geoarrow-serialization.d.ts +68 -0
  23. package/columnar/geoarrow-serialization.d.ts.map +1 -0
  24. package/columnar/geoarrow-serialization.js +331 -0
  25. package/columnar/geoarrow-types.d.ts +271 -0
  26. package/columnar/geoarrow-types.d.ts.map +1 -0
  27. package/columnar/geoarrow-types.js +15 -0
  28. package/columnar/geoarrow.d.ts +52 -0
  29. package/columnar/geoarrow.d.ts.map +1 -0
  30. package/columnar/geoarrow.js +1469 -0
  31. package/columnar/index.d.ts +43 -0
  32. package/columnar/index.d.ts.map +1 -0
  33. package/columnar/index.js +29 -0
  34. package/columnar/operators.d.ts +70 -0
  35. package/columnar/operators.d.ts.map +1 -0
  36. package/columnar/operators.js +307 -0
  37. package/columnar/result.d.ts +369 -0
  38. package/columnar/result.d.ts.map +1 -0
  39. package/columnar/result.js +815 -0
  40. package/columnar/telemetry.d.ts +152 -0
  41. package/columnar/telemetry.d.ts.map +1 -0
  42. package/columnar/telemetry.js +265 -0
  43. package/columnar/transfer.d.ts +28 -0
  44. package/columnar/transfer.d.ts.map +1 -0
  45. package/columnar/transfer.js +669 -0
  46. package/columnar/types.d.ts +175 -0
  47. package/columnar/types.d.ts.map +1 -0
  48. package/columnar/types.js +22 -0
  49. package/columnar/worker.d.ts +157 -0
  50. package/columnar/worker.d.ts.map +1 -0
  51. package/columnar/worker.js +1059 -0
  52. package/connect-url-safety.d.ts +53 -0
  53. package/connect-url-safety.js +189 -0
  54. package/contract/pmtiles.d.ts +6 -5
  55. package/contract/pmtiles.d.ts.map +1 -1
  56. package/contract/pmtiles.js +30 -5
  57. package/contract/source.d.ts.map +1 -1
  58. package/contract/source.js +11 -8
  59. package/core/client.d.ts.map +1 -1
  60. package/core/client.js +87 -19
  61. package/core/deprecation-notice.d.ts +28 -0
  62. package/core/deprecation-notice.d.ts.map +1 -0
  63. package/core/deprecation-notice.js +22 -0
  64. package/core/esri-geojson.d.ts.map +1 -1
  65. package/core/esri-geojson.js +14 -8
  66. package/core/optional-grpc-peer.d.ts +15 -0
  67. package/core/optional-grpc-peer.d.ts.map +1 -0
  68. package/core/optional-grpc-peer.js +60 -0
  69. package/esri-compat/basemap-gallery.d.ts +2 -0
  70. package/esri-compat/basemap-gallery.d.ts.map +1 -1
  71. package/esri-compat/basemap-gallery.js +12 -0
  72. package/esri-compat/basemap.d.ts +4 -0
  73. package/esri-compat/basemap.d.ts.map +1 -1
  74. package/esri-compat/basemap.js +70 -0
  75. package/esri-compat/bookmarks.d.ts +2 -0
  76. package/esri-compat/bookmarks.d.ts.map +1 -1
  77. package/esri-compat/bookmarks.js +12 -0
  78. package/esri-compat/controls.d.ts +18 -0
  79. package/esri-compat/controls.d.ts.map +1 -1
  80. package/esri-compat/controls.js +120 -57
  81. package/esri-compat/directions.d.ts +4 -0
  82. package/esri-compat/directions.d.ts.map +1 -1
  83. package/esri-compat/directions.js +30 -20
  84. package/esri-compat/editor.d.ts +4 -0
  85. package/esri-compat/editor.d.ts.map +1 -1
  86. package/esri-compat/editor.js +16 -0
  87. package/esri-compat/esri-config.d.ts +2 -1
  88. package/esri-compat/esri-config.d.ts.map +1 -1
  89. package/esri-compat/feature-effect.d.ts +23 -0
  90. package/esri-compat/feature-effect.d.ts.map +1 -0
  91. package/esri-compat/feature-effect.js +12 -0
  92. package/esri-compat/feature-form.d.ts +6 -0
  93. package/esri-compat/feature-form.d.ts.map +1 -1
  94. package/esri-compat/feature-form.js +63 -0
  95. package/esri-compat/feature-layer.d.ts +21 -2
  96. package/esri-compat/feature-layer.d.ts.map +1 -1
  97. package/esri-compat/feature-layer.js +172 -1
  98. package/esri-compat/feature-table.d.ts +5 -0
  99. package/esri-compat/feature-table.d.ts.map +1 -1
  100. package/esri-compat/feature-table.js +23 -0
  101. package/esri-compat/identity-manager.d.ts +1 -1
  102. package/esri-compat/identity-manager.js +1 -1
  103. package/esri-compat/legend.d.ts +2 -0
  104. package/esri-compat/legend.d.ts.map +1 -1
  105. package/esri-compat/legend.js +98 -0
  106. package/esri-compat/locator.d.ts +1 -1
  107. package/esri-compat/locator.js +1 -1
  108. package/esri-compat/map-view-mount.d.ts +1 -0
  109. package/esri-compat/map-view-mount.d.ts.map +1 -1
  110. package/esri-compat/map-view-mount.js +46 -25
  111. package/esri-compat/map-view.d.ts +13 -0
  112. package/esri-compat/map-view.d.ts.map +1 -1
  113. package/esri-compat/map-view.js +94 -8
  114. package/esri-compat/map.d.ts +5 -1
  115. package/esri-compat/map.d.ts.map +1 -1
  116. package/esri-compat/map.js +10 -0
  117. package/esri-compat/measurement.d.ts +2 -0
  118. package/esri-compat/measurement.d.ts.map +1 -1
  119. package/esri-compat/measurement.js +14 -0
  120. package/esri-compat/point.d.ts +7 -0
  121. package/esri-compat/point.d.ts.map +1 -1
  122. package/esri-compat/point.js +33 -3
  123. package/esri-compat/popup.d.ts +2 -0
  124. package/esri-compat/popup.d.ts.map +1 -1
  125. package/esri-compat/popup.js +12 -0
  126. package/esri-compat/portal.d.ts +1 -1
  127. package/esri-compat/portal.js +1 -1
  128. package/esri-compat/print.d.ts +3 -0
  129. package/esri-compat/print.d.ts.map +1 -1
  130. package/esri-compat/print.js +15 -0
  131. package/esri-compat/search.d.ts +4 -0
  132. package/esri-compat/search.d.ts.map +1 -1
  133. package/esri-compat/search.js +25 -28
  134. package/esri-compat/sketch.d.ts +2 -0
  135. package/esri-compat/sketch.d.ts.map +1 -1
  136. package/esri-compat/sketch.js +12 -0
  137. package/esri-compat/widget-host.d.ts +46 -17
  138. package/esri-compat/widget-host.d.ts.map +1 -1
  139. package/esri-compat/widget-host.js +84 -20
  140. package/esri-compat/widget-shell-hosts.d.ts +61 -0
  141. package/esri-compat/widget-shell-hosts.d.ts.map +1 -0
  142. package/esri-compat/widget-shell-hosts.js +76 -0
  143. package/geocoding/index.d.ts +114 -0
  144. package/geocoding/index.d.ts.map +1 -0
  145. package/geocoding/index.js +293 -0
  146. package/geocoding/provider-http.d.ts +37 -0
  147. package/geocoding/provider-http.d.ts.map +1 -0
  148. package/geocoding/provider-http.js +93 -0
  149. package/geocoding/provider.d.ts +145 -0
  150. package/geocoding/provider.d.ts.map +1 -0
  151. package/geocoding/provider.js +41 -0
  152. package/geocoding/providers/honua.d.ts +28 -0
  153. package/geocoding/providers/honua.d.ts.map +1 -0
  154. package/geocoding/providers/honua.js +68 -0
  155. package/geocoding/providers/nominatim.d.ts +47 -0
  156. package/geocoding/providers/nominatim.d.ts.map +1 -0
  157. package/geocoding/providers/nominatim.js +105 -0
  158. package/geocoding/providers/pelias.d.ts +40 -0
  159. package/geocoding/providers/pelias.d.ts.map +1 -0
  160. package/geocoding/providers/pelias.js +115 -0
  161. package/geocoding/providers/photon.d.ts +39 -0
  162. package/geocoding/providers/photon.d.ts.map +1 -0
  163. package/geocoding/providers/photon.js +107 -0
  164. package/geometry/convert.d.ts +13 -0
  165. package/geometry/convert.d.ts.map +1 -0
  166. package/geometry/convert.js +12 -0
  167. package/geometry/index.d.ts +17 -0
  168. package/geometry/index.d.ts.map +1 -0
  169. package/geometry/index.js +15 -0
  170. package/geometry/internal.d.ts +25 -0
  171. package/geometry/internal.d.ts.map +1 -0
  172. package/geometry/internal.js +40 -0
  173. package/geometry/ops.d.ts +71 -0
  174. package/geometry/ops.d.ts.map +1 -0
  175. package/geometry/ops.js +147 -0
  176. package/geometry/project.d.ts +40 -0
  177. package/geometry/project.d.ts.map +1 -0
  178. package/geometry/project.js +88 -0
  179. package/geometry/types.d.ts +36 -0
  180. package/geometry/types.d.ts.map +1 -0
  181. package/geometry/types.js +12 -0
  182. package/kernel/renderer.d.ts +82 -0
  183. package/kernel/renderer.js +1 -0
  184. package/offline/digest.d.ts +15 -0
  185. package/offline/digest.js +58 -0
  186. package/offline/quota.d.ts +161 -0
  187. package/offline/quota.js +370 -0
  188. package/offline/types.d.ts +349 -0
  189. package/offline/types.js +75 -0
  190. package/package.json +14 -2
  191. package/realtime/odata-delta.d.ts +1 -1
  192. package/realtime/odata-delta.d.ts.map +1 -1
  193. package/realtime/odata-delta.js +38 -10
  194. package/widget-capabilities.d.ts +67 -0
  195. package/widget-capabilities.js +152 -0
@@ -53,10 +53,12 @@ export declare class BaseControlCompat {
53
53
  }
54
54
  export declare class HomeCompat extends BaseControlCompat {
55
55
  viewpoint: HomeViewpointCompat;
56
+ private widgetHost;
56
57
  protected get controlName(): string;
57
58
  constructor(options?: HomeCompatOptions);
58
59
  go(): Promise<void>;
59
60
  reset(): void;
61
+ private pushWidgetHost;
60
62
  }
61
63
  export interface BasemapToggleCompatOptions {
62
64
  view?: unknown;
@@ -69,9 +71,11 @@ export declare class BasemapToggleCompat extends BaseControlCompat {
69
71
  readonly map: unknown;
70
72
  activeBasemap: unknown;
71
73
  nextBasemap: unknown;
74
+ private widgetHost;
72
75
  protected get controlName(): string;
73
76
  constructor(options?: BasemapToggleCompatOptions);
74
77
  toggle(): unknown;
78
+ private pushWidgetHost;
75
79
  }
76
80
  export type ScaleBarUnitCompat = "metric" | "imperial" | "dual";
77
81
  export interface ScaleBarCompatOptions {
@@ -84,10 +88,12 @@ export declare class ScaleBarCompat extends BaseControlCompat {
84
88
  unit: ScaleBarUnitCompat;
85
89
  scale: number | undefined;
86
90
  text: string;
91
+ private widgetHost;
87
92
  protected get controlName(): string;
88
93
  constructor(options?: ScaleBarCompatOptions);
89
94
  protected onLoad(): void;
90
95
  refresh(): string;
96
+ private pushWidgetHost;
91
97
  }
92
98
  export interface LocateCompatOptions {
93
99
  view?: unknown;
@@ -113,10 +119,12 @@ export declare class LocateCompat extends BaseControlCompat {
113
119
  /** The latest locate result, so a directions stop can clone it. */
114
120
  graphic: GraphicCompat | undefined;
115
121
  private readonly locateProvider;
122
+ private widgetHost;
116
123
  protected get controlName(): string;
117
124
  constructor(options?: LocateCompatOptions);
118
125
  attachContainer(element: HTMLElement): void;
119
126
  locate(): Promise<LocatePositionCompat>;
127
+ private pushWidgetHost;
120
128
  }
121
129
  export interface CompassCompatOptions {
122
130
  view?: unknown;
@@ -125,9 +133,12 @@ export interface CompassCompatOptions {
125
133
  }
126
134
  export declare class CompassCompat extends BaseControlCompat {
127
135
  orientation: number;
136
+ private widgetHost;
128
137
  protected get controlName(): string;
129
138
  constructor(options?: CompassCompatOptions);
139
+ attachContainer(element: HTMLElement): void;
130
140
  rotateTo(rotation: number): number;
141
+ private pushWidgetHost;
131
142
  reset(): number;
132
143
  goToNorth(): number;
133
144
  }
@@ -139,12 +150,14 @@ export interface ZoomCompatOptions {
139
150
  }
140
151
  export declare class ZoomCompat extends BaseControlCompat {
141
152
  readonly layout: "vertical" | "horizontal";
153
+ private widgetHost;
142
154
  protected get controlName(): string;
143
155
  constructor(options?: ZoomCompatOptions);
144
156
  attachContainer(element: HTMLElement): void;
145
157
  zoomIn(step?: number): number | undefined;
146
158
  zoomOut(step?: number): number | undefined;
147
159
  private adjustZoom;
160
+ private pushWidgetHost;
148
161
  }
149
162
  export interface FullscreenCompatOptions {
150
163
  view?: unknown;
@@ -155,10 +168,12 @@ export interface FullscreenCompatOptions {
155
168
  export declare class FullscreenCompat extends BaseControlCompat {
156
169
  readonly element: HTMLElement | null;
157
170
  active: boolean;
171
+ private widgetHost;
158
172
  protected get controlName(): string;
159
173
  constructor(options?: FullscreenCompatOptions);
160
174
  enter(): void;
161
175
  exit(): void;
176
+ private pushWidgetHost;
162
177
  toggle(force?: boolean): boolean;
163
178
  }
164
179
  export interface AttributionCompatOptions {
@@ -173,10 +188,13 @@ export declare class AttributionCompat extends BaseControlCompat {
173
188
  readonly map: unknown;
174
189
  itemDelimiter: string;
175
190
  attributions: string[];
191
+ private widgetHost;
176
192
  protected get controlName(): string;
177
193
  constructor(options?: AttributionCompatOptions);
194
+ attachContainer(element: HTMLElement): void;
178
195
  addAttribution(value: string): void;
179
196
  removeAttribution(value: string): boolean;
197
+ private pushWidgetHost;
180
198
  getText(): string;
181
199
  }
182
200
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/controls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/controls.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener, } from "./event-bus.js";
2
2
  import { GraphicCompat } from "./graphic.js";
3
+ import { bindHonuaWidgetHost, pushWidgetHostState } from "./widget-host.js";
4
+ /** Map construction replaces the view's children, so a later slot is a new container. */
5
+ function retargetWidgetHost(current, tagName, element, eventBus) {
6
+ current?.destroy();
7
+ return bindHonuaWidgetHost(tagName, element, eventBus);
8
+ }
3
9
  export class BaseControlCompat {
4
10
  view;
5
11
  container;
@@ -85,6 +91,7 @@ export class BaseControlCompat {
85
91
  // ---------------------------------------------------------------------------
86
92
  export class HomeCompat extends BaseControlCompat {
87
93
  viewpoint;
94
+ widgetHost;
88
95
  get controlName() {
89
96
  return "home";
90
97
  }
@@ -94,6 +101,8 @@ export class HomeCompat extends BaseControlCompat {
94
101
  center: extractViewCenter(options.view),
95
102
  zoom: extractViewZoom(options.view),
96
103
  };
104
+ this.widgetHost = bindHonuaWidgetHost("honua-home", this.container, this.eventBus);
105
+ this.pushWidgetHost();
97
106
  }
98
107
  async go() {
99
108
  const target = {
@@ -115,12 +124,20 @@ export class HomeCompat extends BaseControlCompat {
115
124
  };
116
125
  this.notifyWatchers("viewpoint", this.viewpoint);
117
126
  this.eventBus.emit("home.reset", this.viewpoint, this);
127
+ this.pushWidgetHost();
128
+ }
129
+ pushWidgetHost() {
130
+ pushWidgetHostState(this.widgetHost, {
131
+ view: this.view,
132
+ viewpoint: this.viewpoint,
133
+ });
118
134
  }
119
135
  }
120
136
  export class BasemapToggleCompat extends BaseControlCompat {
121
137
  map;
122
138
  activeBasemap;
123
139
  nextBasemap;
140
+ widgetHost;
124
141
  get controlName() {
125
142
  return "basemap-toggle";
126
143
  }
@@ -130,6 +147,8 @@ export class BasemapToggleCompat extends BaseControlCompat {
130
147
  this.map = map;
131
148
  this.activeBasemap = extractMapBasemap(this.map);
132
149
  this.nextBasemap = options.nextBasemap;
150
+ this.widgetHost = bindHonuaWidgetHost("honua-basemap-control", this.container, this.eventBus);
151
+ this.pushWidgetHost();
133
152
  this.subscriptions.push(this.eventBus.on("map.basemap-changed", (event) => {
134
153
  this.activeBasemap = extractPayloadBasemap(event.payload);
135
154
  this.notifyWatchers("activeBasemap", this.activeBasemap);
@@ -150,13 +169,22 @@ export class BasemapToggleCompat extends BaseControlCompat {
150
169
  activeBasemap: this.activeBasemap,
151
170
  nextBasemap: this.nextBasemap,
152
171
  }, this);
172
+ this.pushWidgetHost();
153
173
  return this.activeBasemap;
154
174
  }
175
+ pushWidgetHost() {
176
+ pushWidgetHostState(this.widgetHost, {
177
+ view: this.view,
178
+ mode: "toggle",
179
+ nextBasemap: this.nextBasemap,
180
+ });
181
+ }
155
182
  }
156
183
  export class ScaleBarCompat extends BaseControlCompat {
157
184
  unit;
158
185
  scale;
159
186
  text;
187
+ widgetHost;
160
188
  get controlName() {
161
189
  return "scalebar";
162
190
  }
@@ -165,6 +193,7 @@ export class ScaleBarCompat extends BaseControlCompat {
165
193
  this.unit = options.unit ?? "metric";
166
194
  this.scale = undefined;
167
195
  this.text = "";
196
+ this.widgetHost = bindHonuaWidgetHost("honua-scale-bar", this.container, this.eventBus);
168
197
  this.subscriptions.push(this.eventBus.on("view.go-to", () => {
169
198
  this.refresh();
170
199
  }));
@@ -180,6 +209,7 @@ export class ScaleBarCompat extends BaseControlCompat {
180
209
  this.notifyWatchers("scale", this.scale);
181
210
  this.text = "";
182
211
  this.notifyWatchers("text", this.text);
212
+ this.pushWidgetHost();
183
213
  return this.text;
184
214
  }
185
215
  const mapScale = 591657527.591555 / 2 ** zoom;
@@ -188,8 +218,17 @@ export class ScaleBarCompat extends BaseControlCompat {
188
218
  this.text = buildScaleBarText(mapScale, this.unit);
189
219
  this.notifyWatchers("text", this.text);
190
220
  this.eventBus.emit("scalebar.updated", { scale: mapScale, text: this.text, unit: this.unit }, this);
221
+ this.pushWidgetHost();
191
222
  return this.text;
192
223
  }
224
+ pushWidgetHost() {
225
+ pushWidgetHostState(this.widgetHost, {
226
+ view: this.view,
227
+ map: this.view,
228
+ unit: this.unit,
229
+ text: this.text,
230
+ });
231
+ }
193
232
  }
194
233
  export class LocateCompat extends BaseControlCompat {
195
234
  zoom;
@@ -199,6 +238,7 @@ export class LocateCompat extends BaseControlCompat {
199
238
  /** The latest locate result, so a directions stop can clone it. */
200
239
  graphic;
201
240
  locateProvider;
241
+ widgetHost;
202
242
  get controlName() {
203
243
  return "locate";
204
244
  }
@@ -209,14 +249,21 @@ export class LocateCompat extends BaseControlCompat {
209
249
  this.graphic = undefined;
210
250
  this.viewModel = { state: "ready" };
211
251
  this.locateProvider = options.locateProvider ?? getDefaultLocateProvider();
212
- mountLocateButton(this);
252
+ this.widgetHost = bindHonuaWidgetHost("honua-locate-control", this.container, this.eventBus);
253
+ this.pushWidgetHost();
213
254
  }
214
255
  attachContainer(element) {
256
+ if (this.container === element && this.widgetHost) {
257
+ this.pushWidgetHost();
258
+ return;
259
+ }
215
260
  this.container = element;
216
- mountLocateButton(this);
261
+ this.widgetHost = retargetWidgetHost(this.widgetHost, "honua-locate-control", element, this.eventBus);
262
+ this.pushWidgetHost();
217
263
  }
218
264
  async locate() {
219
265
  this.viewModel.state = "disabled";
266
+ this.pushWidgetHost();
220
267
  this.eventBus.emit("locate.start", undefined, this);
221
268
  try {
222
269
  const position = await this.locateProvider();
@@ -243,23 +290,43 @@ export class LocateCompat extends BaseControlCompat {
243
290
  zoom: this.zoom,
244
291
  }, this);
245
292
  this.viewModel.state = "ready";
293
+ this.pushWidgetHost();
246
294
  return position;
247
295
  }
248
296
  catch (error) {
249
297
  this.viewModel.state = "ready";
298
+ this.pushWidgetHost();
250
299
  this.eventBus.emit("locate.error", { error }, this);
251
300
  throw error;
252
301
  }
253
302
  }
303
+ pushWidgetHost() {
304
+ pushWidgetHostState(this.widgetHost, {
305
+ view: this.view,
306
+ locateState: this.viewModel.state,
307
+ });
308
+ }
254
309
  }
255
310
  export class CompassCompat extends BaseControlCompat {
256
311
  orientation;
312
+ widgetHost;
257
313
  get controlName() {
258
314
  return "compass";
259
315
  }
260
316
  constructor(options = {}) {
261
317
  super(options);
262
318
  this.orientation = extractViewRotation(options.view) ?? 0;
319
+ this.widgetHost = bindHonuaWidgetHost("honua-compass", this.container, this.eventBus);
320
+ this.pushWidgetHost();
321
+ }
322
+ attachContainer(element) {
323
+ if (this.container === element && this.widgetHost) {
324
+ this.pushWidgetHost();
325
+ return;
326
+ }
327
+ this.container = element;
328
+ this.widgetHost = retargetWidgetHost(this.widgetHost, "honua-compass", element, this.eventBus);
329
+ this.pushWidgetHost();
263
330
  }
264
331
  rotateTo(rotation) {
265
332
  const next = Number.isFinite(rotation) ? rotation : this.orientation;
@@ -269,8 +336,12 @@ export class CompassCompat extends BaseControlCompat {
269
336
  this.view.rotation = next;
270
337
  }
271
338
  this.eventBus.emit("compass.rotated", { rotation: next }, this);
339
+ this.pushWidgetHost();
272
340
  return this.orientation;
273
341
  }
342
+ pushWidgetHost() {
343
+ pushWidgetHostState(this.widgetHost, { view: this.view });
344
+ }
274
345
  reset() {
275
346
  const rotation = this.rotateTo(0);
276
347
  this.eventBus.emit("compass.reset", { rotation }, this);
@@ -282,17 +353,24 @@ export class CompassCompat extends BaseControlCompat {
282
353
  }
283
354
  export class ZoomCompat extends BaseControlCompat {
284
355
  layout;
356
+ widgetHost;
285
357
  get controlName() {
286
358
  return "zoom";
287
359
  }
288
360
  constructor(options = {}) {
289
361
  super(options);
290
362
  this.layout = options.layout ?? "vertical";
291
- mountZoomButtons(this);
363
+ this.widgetHost = bindHonuaWidgetHost("honua-zoom", this.container, this.eventBus);
364
+ this.pushWidgetHost();
292
365
  }
293
366
  attachContainer(element) {
367
+ if (this.container === element && this.widgetHost) {
368
+ this.pushWidgetHost();
369
+ return;
370
+ }
294
371
  this.container = element;
295
- mountZoomButtons(this);
372
+ this.widgetHost = retargetWidgetHost(this.widgetHost, "honua-zoom", element, this.eventBus);
373
+ this.pushWidgetHost();
296
374
  }
297
375
  zoomIn(step = 1) {
298
376
  return this.adjustZoom(Math.abs(step));
@@ -315,65 +393,18 @@ export class ZoomCompat extends BaseControlCompat {
315
393
  this.eventBus.emit("zoom.changed", { zoom: next, delta }, this);
316
394
  return next;
317
395
  }
318
- }
319
- function mountZoomButtons(zoom) {
320
- const container = zoom.container;
321
- const element = typeof HTMLElement !== "undefined" && container instanceof HTMLElement
322
- ? container
323
- : typeof container === "string" && typeof document !== "undefined"
324
- ? document.getElementById(container)
325
- : null;
326
- if (!element) {
327
- return;
328
- }
329
- element.querySelector(":scope > .honua-zoom")?.remove();
330
- const bar = document.createElement("div");
331
- bar.className = "honua-zoom";
332
- bar.style.display = "flex";
333
- bar.style.flexDirection = zoom.layout === "horizontal" ? "row" : "column";
334
- bar.style.gap = "4px";
335
- for (const [label, step] of [
336
- ["+", 1],
337
- ["−", -1],
338
- ]) {
339
- const button = document.createElement("button");
340
- button.type = "button";
341
- button.textContent = label;
342
- button.addEventListener("click", () => {
343
- if (step > 0) {
344
- zoom.zoomIn();
345
- }
346
- else {
347
- zoom.zoomOut();
348
- }
396
+ pushWidgetHost() {
397
+ pushWidgetHostState(this.widgetHost, {
398
+ view: this.view,
399
+ map: this.view,
400
+ layout: this.layout,
349
401
  });
350
- bar.append(button);
351
402
  }
352
- element.append(bar);
353
- }
354
- function mountLocateButton(locate) {
355
- const container = locate.container;
356
- const element = typeof HTMLElement !== "undefined" && container instanceof HTMLElement
357
- ? container
358
- : typeof container === "string" && typeof document !== "undefined"
359
- ? document.getElementById(container)
360
- : null;
361
- if (!element) {
362
- return;
363
- }
364
- element.querySelector(":scope > .honua-locate")?.remove();
365
- const button = document.createElement("button");
366
- button.type = "button";
367
- button.className = "honua-locate";
368
- button.textContent = "Locate";
369
- button.addEventListener("click", () => {
370
- void locate.locate();
371
- });
372
- element.append(button);
373
403
  }
374
404
  export class FullscreenCompat extends BaseControlCompat {
375
405
  element;
376
406
  active;
407
+ widgetHost;
377
408
  get controlName() {
378
409
  return "fullscreen";
379
410
  }
@@ -381,6 +412,8 @@ export class FullscreenCompat extends BaseControlCompat {
381
412
  super(options);
382
413
  this.element = options.element ?? null;
383
414
  this.active = false;
415
+ this.widgetHost = bindHonuaWidgetHost("honua-fullscreen", this.container, this.eventBus);
416
+ this.pushWidgetHost();
384
417
  }
385
418
  enter() {
386
419
  if (this.active) {
@@ -389,6 +422,7 @@ export class FullscreenCompat extends BaseControlCompat {
389
422
  this.active = true;
390
423
  this.notifyWatchers("active", this.active);
391
424
  this.eventBus.emit("fullscreen.changed", { active: true }, this);
425
+ this.pushWidgetHost();
392
426
  }
393
427
  exit() {
394
428
  if (!this.active) {
@@ -397,6 +431,14 @@ export class FullscreenCompat extends BaseControlCompat {
397
431
  this.active = false;
398
432
  this.notifyWatchers("active", this.active);
399
433
  this.eventBus.emit("fullscreen.changed", { active: false }, this);
434
+ this.pushWidgetHost();
435
+ }
436
+ pushWidgetHost() {
437
+ pushWidgetHostState(this.widgetHost, {
438
+ view: this.view,
439
+ map: this.view,
440
+ active: this.active,
441
+ });
400
442
  }
401
443
  toggle(force) {
402
444
  const next = force ?? !this.active;
@@ -413,6 +455,7 @@ export class AttributionCompat extends BaseControlCompat {
413
455
  map;
414
456
  itemDelimiter;
415
457
  attributions;
458
+ widgetHost;
416
459
  get controlName() {
417
460
  return "attribution";
418
461
  }
@@ -421,6 +464,17 @@ export class AttributionCompat extends BaseControlCompat {
421
464
  this.map = options.map ?? extractViewMap(options.view);
422
465
  this.itemDelimiter = options.itemDelimiter ?? " | ";
423
466
  this.attributions = options.attributions ? [...options.attributions] : [];
467
+ this.widgetHost = bindHonuaWidgetHost("honua-attribution", this.container, this.eventBus);
468
+ this.pushWidgetHost();
469
+ }
470
+ attachContainer(element) {
471
+ if (this.container === element && this.widgetHost) {
472
+ this.pushWidgetHost();
473
+ return;
474
+ }
475
+ this.container = element;
476
+ this.widgetHost = retargetWidgetHost(this.widgetHost, "honua-attribution", element, this.eventBus);
477
+ this.pushWidgetHost();
424
478
  }
425
479
  addAttribution(value) {
426
480
  if (value.trim().length === 0) {
@@ -430,6 +484,7 @@ export class AttributionCompat extends BaseControlCompat {
430
484
  this.notifyWatchers("attributions", this.attributions);
431
485
  this.notifyWatchers("text", this.getText());
432
486
  this.eventBus.emit("attribution.updated", { count: this.attributions.length }, this);
487
+ this.pushWidgetHost();
433
488
  }
434
489
  removeAttribution(value) {
435
490
  const index = this.attributions.indexOf(value);
@@ -440,8 +495,16 @@ export class AttributionCompat extends BaseControlCompat {
440
495
  this.notifyWatchers("attributions", this.attributions);
441
496
  this.notifyWatchers("text", this.getText());
442
497
  this.eventBus.emit("attribution.updated", { count: this.attributions.length }, this);
498
+ this.pushWidgetHost();
443
499
  return true;
444
500
  }
501
+ pushWidgetHost() {
502
+ pushWidgetHostState(this.widgetHost, {
503
+ view: this.view,
504
+ map: this.map,
505
+ attributions: this.attributions,
506
+ });
507
+ }
445
508
  getText() {
446
509
  if (this.attributions.length === 0) {
447
510
  return "";
@@ -33,6 +33,7 @@ export declare class DirectionsCompat {
33
33
  readonly layer: RouteLayerCompat;
34
34
  route: RouteSolveResultCompat | undefined;
35
35
  private readonly watchListeners;
36
+ private widgetHost;
36
37
  constructor(options?: DirectionsCompatOptions);
37
38
  load(): Promise<DirectionsCompat>;
38
39
  when(callback?: (widget: DirectionsCompat) => void): Promise<DirectionsCompat>;
@@ -41,6 +42,9 @@ export declare class DirectionsCompat {
41
42
  addStop(stop: RouteStopCompat): void;
42
43
  clearStops(): void;
43
44
  solve(): Promise<RouteSolveResultCompat | undefined>;
45
+ /** Shows a route result that already exists. Does not invent maneuvers from a polyline. */
46
+ setRoute(route: RouteSolveResultCompat | undefined): void;
47
+ private pushWidgetHost;
44
48
  getSummary(): DirectionsSolveSummaryCompat | undefined;
45
49
  destroy(): void;
46
50
  private notifyWatchers;
@@ -1 +1 @@
1
- {"version":3,"file":"directions.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/directions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directions.d.ts","sourceRoot":"","sources":["../../../src/esri-compat/directions.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { CompatEventBus, resolveCompatEventBus, safeInvokeCompatListener } from
3
3
  import { identityManager } from "./identity-manager.js";
4
4
  import { RouteLayerCompat, routeStopFromUnknown, } from "./route-layer.js";
5
5
  import { RouteTaskCompat, arcGisRouteServiceProvider } from "./route-task.js";
6
+ import { bindHonuaWidgetHost, pushWidgetHostState } from "./widget-host.js";
6
7
  /** Default `routeServiceUrl` on Esri `DirectionsViewModel` for the 4.x widget apps. */
7
8
  const DEFAULT_ROUTE_SERVICE_URL = "https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World";
8
9
  export class DirectionsCompat {
@@ -16,6 +17,7 @@ export class DirectionsCompat {
16
17
  layer;
17
18
  route;
18
19
  watchListeners;
20
+ widgetHost;
19
21
  constructor(options = {}) {
20
22
  this.view = options.view;
21
23
  this.container = options.container;
@@ -33,9 +35,10 @@ export class DirectionsCompat {
33
35
  routeProvider: options.routeProvider ?? arcGisRouteServiceProvider(routeServiceUrl, options.apiKey),
34
36
  eventBus: this.eventBus,
35
37
  });
36
- mountDirectionsPanel(this.container);
37
38
  this.route = undefined;
38
39
  this.watchListeners = new Map();
40
+ this.widgetHost = bindHonuaWidgetHost("honua-directions", this.container, this.eventBus);
41
+ this.pushWidgetHost();
39
42
  }
40
43
  async load() {
41
44
  if (this.loaded) {
@@ -88,6 +91,7 @@ export class DirectionsCompat {
88
91
  this.notifyWatchers("stops", this.layer.stops);
89
92
  this.route = undefined;
90
93
  this.notifyWatchers("route", this.route);
94
+ this.pushWidgetHost();
91
95
  this.eventBus.emit("directions.stops-cleared", undefined, this);
92
96
  }
93
97
  async solve() {
@@ -96,16 +100,30 @@ export class DirectionsCompat {
96
100
  const route = await this.layer.solve();
97
101
  this.route = route;
98
102
  this.notifyWatchers("route", this.route);
103
+ this.pushWidgetHost();
99
104
  this.eventBus.emit("directions.solve-completed", { route }, this);
100
105
  return route;
101
106
  }
102
107
  catch (error) {
103
108
  this.route = undefined;
104
109
  this.notifyWatchers("route", this.route);
110
+ this.pushWidgetHost();
105
111
  this.eventBus.emit("directions.solve-error", { error }, this);
106
112
  throw error;
107
113
  }
108
114
  }
115
+ /** Shows a route result that already exists. Does not invent maneuvers from a polyline. */
116
+ setRoute(route) {
117
+ this.route = route;
118
+ this.notifyWatchers("route", this.route);
119
+ this.pushWidgetHost();
120
+ }
121
+ pushWidgetHost() {
122
+ pushWidgetHostState(this.widgetHost, {
123
+ view: this.view,
124
+ route: directionRoute(this.route),
125
+ });
126
+ }
109
127
  getSummary() {
110
128
  if (!this.route) {
111
129
  return undefined;
@@ -213,25 +231,17 @@ async function readTravelModes(url, token) {
213
231
  }
214
232
  return (json.supportedTravelModes ?? []).filter((mode) => mode && typeof mode === "object");
215
233
  }
216
- function mountDirectionsPanel(container) {
217
- const element = resolveWidgetElement(container);
218
- if (!element || typeof document === "undefined") {
219
- return;
220
- }
221
- const panel = document.createElement("div");
222
- panel.className = "honua-directions";
223
- panel.textContent = "Directions";
224
- element.append(panel);
225
- }
226
- function resolveWidgetElement(container) {
227
- if (typeof HTMLElement !== "undefined" && container instanceof HTMLElement) {
228
- return container;
229
- }
230
- if (typeof container === "string" && typeof document !== "undefined") {
231
- const element = document.getElementById(container);
232
- return typeof HTMLElement !== "undefined" && element instanceof HTMLElement ? element : undefined;
233
- }
234
- return undefined;
234
+ function directionRoute(route) {
235
+ if (!route)
236
+ return undefined;
237
+ const withSteps = route;
238
+ const steps = withSteps.directionFeatures?.map((step) => ({ text: step.text, maneuver: step.text })) ?? withSteps.steps;
239
+ const summary = withSteps.summary ?? `${withSteps.totalLengthMeters} m`;
240
+ return {
241
+ summary,
242
+ steps,
243
+ polyline: withSteps.polyline ?? withSteps.path,
244
+ };
235
245
  }
236
246
  function tokenForRouteService(url, apiKey) {
237
247
  if (apiKey) {
@@ -36,7 +36,10 @@ export declare class EditorCompat {
36
36
  selectedFeature: Record<string, unknown> | null;
37
37
  snappingOptions: SnappingOptionsCompat;
38
38
  private readonly watchListeners;
39
+ private readonly widgetHost;
39
40
  constructor(options?: EditorCompatOptions);
41
+ /** First configured layer, pushed into `<honua-editor>`. */
42
+ get layer(): unknown;
40
43
  /** Replace the ArcGIS-shaped snapping options and notify watchers. */
41
44
  setSnappingOptions(options: SnappingOptionsCompat): void;
42
45
  /** The snapping options mapped onto the contract `SnappingConfig`. */
@@ -50,6 +53,7 @@ export declare class EditorCompat {
50
53
  deleteFeatureFromWorkflow(feature?: unknown): boolean;
51
54
  stopWorkflow(): void;
52
55
  destroy(): void;
56
+ private pushWidgetHost;
53
57
  private notifyWatchers;
54
58
  }
55
59
  //# sourceMappingURL=editor.d.ts.map