@honua/app-platform 0.2.0 → 0.2.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@honua/app-platform",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "Honua application-platform surfaces: app-shell, workspace, scene, operator, studio, and hosted-product clients",
5
5
  "keywords": [
6
6
  "gis",
@@ -121,7 +121,7 @@
121
121
  "proj4": "^2.20.9"
122
122
  },
123
123
  "peerDependencies": {
124
- "@honua/sdk": "0.2.0",
124
+ "@honua/sdk": "0.2.1",
125
125
  "@bufbuild/protobuf": "^2.0.0",
126
126
  "@connectrpc/connect": "^2.0.0",
127
127
  "@connectrpc/connect-web": "^2.0.0",
@@ -132,6 +132,8 @@ export interface BindTerraDrawSketchOptions<T = Record<string, unknown>> {
132
132
  featureFilter?(id: TerraDrawSketchFeatureId, feature: TerraDrawSketchFeature): boolean;
133
133
  /** Override the terra-draw mode → sketch tool mapping. */
134
134
  toolForMode?(mode: string): EditSketchTool | undefined;
135
+ /** Optional owning-workflow writer; replaces the model write, preserving one undo entry. */
136
+ applyGeometry?(tool: EditSketchTool, geometry: Record<string, unknown> | null): boolean;
135
137
  /** Fired after every terra-draw `finish` event, applied or not. */
136
138
  onFinish?(event: TerraDrawSketchFinishEvent): void;
137
139
  /** Fired when the tracked sketch feature is deleted in terra-draw. */
@@ -1 +1 @@
1
- {"version":3,"file":"terra-draw-sketch.d.ts","sourceRoot":"","sources":["../../../src/runtime/terra-draw-sketch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terra-draw-sketch.d.ts","sourceRoot":"","sources":["../../../src/runtime/terra-draw-sketch.ts"],"names":[],"mappings":"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"}
@@ -132,7 +132,9 @@ export function bindTerraDrawSketch(draw, options) {
132
132
  if (feature && tool && included) {
133
133
  const cloned = cloneJsonLike(feature.geometry);
134
134
  geometry = options.transformGeometry ? options.transformGeometry(cloned) : cloned;
135
- applied = model.setSketchGeometry(tool, geometry).toolCapability(tool).state === "supported";
135
+ applied = options.applyGeometry
136
+ ? options.applyGeometry(tool, geometry)
137
+ : model.setSketchGeometry(tool, geometry).toolCapability(tool).state === "supported";
136
138
  if (applied) {
137
139
  const previousId = activeFeatureId;
138
140
  activeFeatureId = id;
@@ -158,7 +160,10 @@ export function bindTerraDrawSketch(draw, options) {
158
160
  return;
159
161
  const removedId = activeFeatureId;
160
162
  const tool = toolsByFeature.get(removedId) ?? model.snapshot().sketch.tool ?? "point";
161
- model.setSketchGeometry(tool, null);
163
+ if (options.applyGeometry)
164
+ options.applyGeometry(tool, null);
165
+ else
166
+ model.setSketchGeometry(tool, null);
162
167
  toolsByFeature.delete(removedId);
163
168
  activeFeatureId = undefined;
164
169
  if (selectedFeatureId === removedId)
@@ -198,7 +203,8 @@ export function bindTerraDrawSketch(draw, options) {
198
203
  ? options.restoreGeometry(cloneJsonLike(geometry))
199
204
  : cloneJsonLike(geometry);
200
205
  const tool = (activeFeatureId !== undefined ? toolsByFeature.get(activeFeatureId) : undefined) ?? snapshot.sketch.tool;
201
- const mode = tool ? (TERRA_DRAW_SKETCH_TOOL_MODES[tool] ?? "polygon") : "polygon";
206
+ const inferredMode = restored.type === "Point" ? "point" : restored.type === "LineString" ? "linestring" : "polygon";
207
+ const mode = tool ? (TERRA_DRAW_SKETCH_TOOL_MODES[tool] ?? inferredMode) : inferredMode;
202
208
  const restoreId = activeFeatureId;
203
209
  const feature = {
204
210
  ...(restoreId !== undefined ? { id: restoreId } : {}),
@@ -107,6 +107,7 @@ export async function createTerraDrawEditorSketch(map, options) {
107
107
  // ── shared adapter ───────────────────────────────────────────────────────
108
108
  function createAdapter(options, drawOf) {
109
109
  const { workflow } = options;
110
+ const canSelect = options.modes === undefined || options.modes.includes("select");
110
111
  // Report terra-draw's real tool support so the editor's rectangle / circle
111
112
  // buttons stop showing the contract's "requires renderer support" reason.
112
113
  workflow.configureSketchTools(terraDrawSketchToolCapabilities(options.modes));
@@ -114,18 +115,81 @@ function createAdapter(options, drawOf) {
114
115
  let bound;
115
116
  let pending = Promise.resolve();
116
117
  let removed = false;
118
+ let geometryKey;
119
+ let tool;
120
+ let desiredMode;
121
+ let appliedMode;
122
+ const detach = () => {
123
+ const ownedId = handle?.activeFeatureId;
124
+ handle?.remove();
125
+ handle = undefined;
126
+ if (ownedId !== undefined)
127
+ drawOf().removeFeatures?.([ownedId]);
128
+ bound = undefined;
129
+ geometryKey = undefined;
130
+ tool = undefined;
131
+ desiredMode = undefined;
132
+ appliedMode = undefined;
133
+ };
117
134
  const rebind = () => {
118
135
  if (removed)
119
136
  return;
120
- const model = workflow.sketchModel();
121
- if (model === bound)
122
- return;
123
- handle?.remove();
124
- handle = undefined;
125
- bound = model;
126
- if (!model)
137
+ const snapshot = workflow.snapshot();
138
+ const model = snapshot.operation !== "delete" && snapshot.status !== "committed" && snapshot.status !== "queued"
139
+ ? workflow.sketchModel()
140
+ : undefined;
141
+ if (model !== bound) {
142
+ detach();
143
+ bound = model;
144
+ if (model) {
145
+ handle = bindTerraDrawSketch(drawOf(), {
146
+ model,
147
+ ...bindPassThrough(options),
148
+ applyGeometry(nextTool, geometry) {
149
+ const current = workflow.snapshot();
150
+ if (removed ||
151
+ workflow.sketchModel() !== model ||
152
+ current.busy ||
153
+ current.status === "committed" ||
154
+ current.status === "queued" ||
155
+ current.operation === "delete")
156
+ return false;
157
+ if (model.toolCapability(nextTool).state !== "supported")
158
+ return false;
159
+ workflow.setGeometry(nextTool, geometry);
160
+ // Renderer already owns this geometry; avoid replacing its selected vertex.
161
+ geometryKey = JSON.stringify(geometry ?? null);
162
+ return true;
163
+ },
164
+ });
165
+ }
166
+ }
167
+ if (!handle || !model) {
168
+ drawOf().setMode("static");
127
169
  return;
128
- handle = bindTerraDrawSketch(drawOf(), { model, ...bindPassThrough(options) });
170
+ }
171
+ const nextGeometry = JSON.stringify(snapshot.sketch?.geometry ?? null);
172
+ if (geometryKey !== nextGeometry) {
173
+ handle.syncFromModel();
174
+ geometryKey = nextGeometry;
175
+ }
176
+ const nextTool = snapshot.sketch?.activeTool;
177
+ // An unchanged workflow tool is not a new renderer command: preserve an
178
+ // explicit cancel and the current selection across attribute notifications.
179
+ if (desiredMode === undefined || nextTool !== tool) {
180
+ desiredMode = nextTool ?? (canSelect ? "select" : "static");
181
+ }
182
+ tool = nextTool;
183
+ const nextMode = snapshot.busy ? "static" : desiredMode;
184
+ if (nextMode !== appliedMode) {
185
+ if (nextMode === "select")
186
+ handle.select();
187
+ else if (nextMode === "static")
188
+ handle.cancel();
189
+ else
190
+ handle.setTool(nextMode);
191
+ appliedMode = nextMode;
192
+ }
129
193
  };
130
194
  const schedule = () => {
131
195
  pending = pending.then(() => {
@@ -136,21 +200,30 @@ function createAdapter(options, drawOf) {
136
200
  rebind();
137
201
  return {
138
202
  setTool(tool) {
139
- if (handle)
140
- return handle.setTool(tool);
141
- return workflow.startSketch(tool);
203
+ desiredMode = undefined;
204
+ const capability = workflow.startSketch(tool);
205
+ rebind();
206
+ return capability;
142
207
  },
143
208
  select() {
144
- handle?.select();
209
+ tool = workflow.snapshot().sketch?.activeTool;
210
+ desiredMode = canSelect ? "select" : "static";
211
+ rebind();
145
212
  },
146
213
  cancel() {
147
- handle?.cancel();
214
+ tool = workflow.snapshot().sketch?.activeTool;
215
+ desiredMode = "static";
216
+ rebind();
148
217
  },
149
218
  undo() {
150
- return handle ? handle.undo() : workflow.undo();
219
+ const changed = workflow.undo();
220
+ rebind();
221
+ return changed;
151
222
  },
152
223
  redo() {
153
- return handle ? handle.redo() : workflow.redo();
224
+ const changed = workflow.redo();
225
+ rebind();
226
+ return changed;
154
227
  },
155
228
  syncFromModel() {
156
229
  return handle?.syncFromModel() ?? false;
@@ -159,11 +232,12 @@ function createAdapter(options, drawOf) {
159
232
  return pending;
160
233
  },
161
234
  remove() {
235
+ if (removed)
236
+ return;
162
237
  removed = true;
163
238
  subscription.remove();
164
- handle?.remove();
165
- handle = undefined;
166
- bound = undefined;
239
+ detach();
240
+ drawOf().setMode("static");
167
241
  },
168
242
  };
169
243
  }