@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.
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
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
|
|
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
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
203
|
+
desiredMode = undefined;
|
|
204
|
+
const capability = workflow.startSketch(tool);
|
|
205
|
+
rebind();
|
|
206
|
+
return capability;
|
|
142
207
|
},
|
|
143
208
|
select() {
|
|
144
|
-
|
|
209
|
+
tool = workflow.snapshot().sketch?.activeTool;
|
|
210
|
+
desiredMode = canSelect ? "select" : "static";
|
|
211
|
+
rebind();
|
|
145
212
|
},
|
|
146
213
|
cancel() {
|
|
147
|
-
|
|
214
|
+
tool = workflow.snapshot().sketch?.activeTool;
|
|
215
|
+
desiredMode = "static";
|
|
216
|
+
rebind();
|
|
148
217
|
},
|
|
149
218
|
undo() {
|
|
150
|
-
|
|
219
|
+
const changed = workflow.undo();
|
|
220
|
+
rebind();
|
|
221
|
+
return changed;
|
|
151
222
|
},
|
|
152
223
|
redo() {
|
|
153
|
-
|
|
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
|
-
|
|
165
|
-
|
|
166
|
-
bound = undefined;
|
|
239
|
+
detach();
|
|
240
|
+
drawOf().setMode("static");
|
|
167
241
|
},
|
|
168
242
|
};
|
|
169
243
|
}
|