callman-core 1.28.0 → 1.29.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.
- package/ai-packs/scenario-nodes.md +451 -0
- package/dist/ai/index.d.ts +2 -1
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/outputSchemas.d.ts +3 -0
- package/dist/ai/outputSchemas.d.ts.map +1 -1
- package/dist/ai/outputSchemas.js +1 -0
- package/dist/ai/outputSchemas.js.map +1 -1
- package/dist/ai/parse/diagram.d.ts.map +1 -1
- package/dist/ai/parse/diagram.js +6 -3
- package/dist/ai/parse/diagram.js.map +1 -1
- package/dist/ai/prompts/diagram.d.ts +7 -3
- package/dist/ai/prompts/diagram.d.ts.map +1 -1
- package/dist/ai/prompts/diagram.js +44 -5
- package/dist/ai/prompts/diagram.js.map +1 -1
- package/dist/ai/prompts/scenario.d.ts.map +1 -1
- package/dist/ai/prompts/scenario.js +9 -8
- package/dist/ai/prompts/scenario.js.map +1 -1
- package/dist/ai/prompts/scenarioNodeReference.d.ts +16 -0
- package/dist/ai/prompts/scenarioNodeReference.d.ts.map +1 -0
- package/dist/ai/prompts/scenarioNodeReference.js +882 -0
- package/dist/ai/prompts/scenarioNodeReference.js.map +1 -0
- package/dist/ai/types.d.ts +6 -0
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/diagram/bpmn/derive.d.ts +74 -0
- package/dist/diagram/bpmn/derive.d.ts.map +1 -0
- package/dist/diagram/bpmn/derive.js +392 -0
- package/dist/diagram/bpmn/derive.js.map +1 -0
- package/dist/diagram/bpmn/index.d.ts +7 -0
- package/dist/diagram/bpmn/index.d.ts.map +1 -0
- package/dist/diagram/bpmn/index.js +12 -0
- package/dist/diagram/bpmn/index.js.map +1 -0
- package/dist/diagram/bpmn/patch.d.ts +14 -0
- package/dist/diagram/bpmn/patch.d.ts.map +1 -0
- package/dist/diagram/bpmn/patch.js +770 -0
- package/dist/diagram/bpmn/patch.js.map +1 -0
- package/dist/diagram/bpmn/place.d.ts +4 -0
- package/dist/diagram/bpmn/place.d.ts.map +1 -0
- package/dist/diagram/bpmn/place.js +65 -0
- package/dist/diagram/bpmn/place.js.map +1 -0
- package/dist/diagram/bpmn/serialize.d.ts +12 -0
- package/dist/diagram/bpmn/serialize.d.ts.map +1 -0
- package/dist/diagram/bpmn/serialize.js +292 -0
- package/dist/diagram/bpmn/serialize.js.map +1 -0
- package/dist/diagram/bpmn/types.d.ts +42 -0
- package/dist/diagram/bpmn/types.d.ts.map +1 -0
- package/dist/diagram/bpmn/types.js +84 -0
- package/dist/diagram/bpmn/types.js.map +1 -0
- package/dist/diagram/bpmn/xml.d.ts +60 -0
- package/dist/diagram/bpmn/xml.d.ts.map +1 -0
- package/dist/diagram/bpmn/xml.js +342 -0
- package/dist/diagram/bpmn/xml.js.map +1 -0
- package/dist/diagram/elkGraph.d.ts +1 -3
- package/dist/diagram/elkGraph.d.ts.map +1 -1
- package/dist/diagram/elkGraph.js +1 -0
- package/dist/diagram/elkGraph.js.map +1 -1
- package/dist/diagram/fixtures.d.ts +10 -0
- package/dist/diagram/fixtures.d.ts.map +1 -0
- package/dist/diagram/fixtures.js +113 -0
- package/dist/diagram/fixtures.js.map +1 -0
- package/dist/diagram/geometry.d.ts +27 -0
- package/dist/diagram/geometry.d.ts.map +1 -0
- package/dist/diagram/geometry.js +122 -0
- package/dist/diagram/geometry.js.map +1 -0
- package/dist/diagram/history.d.ts +36 -0
- package/dist/diagram/history.d.ts.map +1 -0
- package/dist/diagram/history.js +54 -0
- package/dist/diagram/history.js.map +1 -0
- package/dist/diagram/ids.d.ts +5 -0
- package/dist/diagram/ids.d.ts.map +1 -0
- package/dist/diagram/ids.js +52 -0
- package/dist/diagram/ids.js.map +1 -0
- package/dist/diagram/index.d.ts +14 -2
- package/dist/diagram/index.d.ts.map +1 -1
- package/dist/diagram/index.js +20 -8
- package/dist/diagram/index.js.map +1 -1
- package/dist/diagram/layout.d.ts +107 -0
- package/dist/diagram/layout.d.ts.map +1 -0
- package/dist/diagram/layout.js +356 -0
- package/dist/diagram/layout.js.map +1 -0
- package/dist/diagram/mermaid/derive.d.ts +55 -0
- package/dist/diagram/mermaid/derive.d.ts.map +1 -0
- package/dist/diagram/mermaid/derive.js +343 -0
- package/dist/diagram/mermaid/derive.js.map +1 -0
- package/dist/diagram/mermaid/index.d.ts +8 -0
- package/dist/diagram/mermaid/index.d.ts.map +1 -0
- package/dist/diagram/mermaid/index.js +24 -0
- package/dist/diagram/mermaid/index.js.map +1 -0
- package/dist/diagram/mermaid/parse.d.ts +96 -0
- package/dist/diagram/mermaid/parse.d.ts.map +1 -0
- package/dist/diagram/mermaid/parse.js +672 -0
- package/dist/diagram/mermaid/parse.js.map +1 -0
- package/dist/diagram/mermaid/patch.d.ts +16 -0
- package/dist/diagram/mermaid/patch.d.ts.map +1 -0
- package/dist/diagram/mermaid/patch.js +463 -0
- package/dist/diagram/mermaid/patch.js.map +1 -0
- package/dist/diagram/mermaid/serialize.d.ts +14 -0
- package/dist/diagram/mermaid/serialize.d.ts.map +1 -0
- package/dist/diagram/mermaid/serialize.js +125 -0
- package/dist/diagram/mermaid/serialize.js.map +1 -0
- package/dist/diagram/mermaid/shapes.d.ts +11 -0
- package/dist/diagram/mermaid/shapes.d.ts.map +1 -0
- package/dist/diagram/mermaid/shapes.js +320 -0
- package/dist/diagram/mermaid/shapes.js.map +1 -0
- package/dist/diagram/migrations.d.ts +1 -0
- package/dist/diagram/migrations.d.ts.map +1 -1
- package/dist/diagram/migrations.js +7 -2
- package/dist/diagram/migrations.js.map +1 -1
- package/dist/diagram/normalize.d.ts +9 -1
- package/dist/diagram/normalize.d.ts.map +1 -1
- package/dist/diagram/normalize.js +194 -0
- package/dist/diagram/normalize.js.map +1 -1
- package/dist/diagram/ops.d.ts +146 -0
- package/dist/diagram/ops.d.ts.map +1 -0
- package/dist/diagram/ops.js +823 -0
- package/dist/diagram/ops.js.map +1 -0
- package/dist/diagram/opsReference.d.ts +3 -0
- package/dist/diagram/opsReference.d.ts.map +1 -0
- package/dist/diagram/opsReference.js +51 -0
- package/dist/diagram/opsReference.js.map +1 -0
- package/dist/diagram/patchInput.d.ts +193 -0
- package/dist/diagram/patchInput.d.ts.map +1 -0
- package/dist/diagram/patchInput.js +621 -0
- package/dist/diagram/patchInput.js.map +1 -0
- package/dist/diagram/routing/batch.d.ts +45 -0
- package/dist/diagram/routing/batch.d.ts.map +1 -0
- package/dist/diagram/routing/batch.js +136 -0
- package/dist/diagram/routing/batch.js.map +1 -0
- package/dist/diagram/routing/curves.d.ts +7 -0
- package/dist/diagram/routing/curves.d.ts.map +1 -0
- package/dist/diagram/routing/curves.js +120 -0
- package/dist/diagram/routing/curves.js.map +1 -0
- package/dist/diagram/routing/grid.d.ts +15 -0
- package/dist/diagram/routing/grid.d.ts.map +1 -0
- package/dist/diagram/routing/grid.js +245 -0
- package/dist/diagram/routing/grid.js.map +1 -0
- package/dist/diagram/routing/index.d.ts +10 -0
- package/dist/diagram/routing/index.d.ts.map +1 -0
- package/dist/diagram/routing/index.js +10 -0
- package/dist/diagram/routing/index.js.map +1 -0
- package/dist/diagram/routing/legacy.d.ts +6 -0
- package/dist/diagram/routing/legacy.d.ts.map +1 -0
- package/dist/diagram/routing/legacy.js +27 -0
- package/dist/diagram/routing/legacy.js.map +1 -0
- package/dist/diagram/routing/nudge.d.ts +4 -0
- package/dist/diagram/routing/nudge.d.ts.map +1 -0
- package/dist/diagram/routing/nudge.js +96 -0
- package/dist/diagram/routing/nudge.js.map +1 -0
- package/dist/diagram/routing/orthogonal.d.ts +6 -0
- package/dist/diagram/routing/orthogonal.d.ts.map +1 -0
- package/dist/diagram/routing/orthogonal.js +56 -0
- package/dist/diagram/routing/orthogonal.js.map +1 -0
- package/dist/diagram/routing/path.d.ts +16 -0
- package/dist/diagram/routing/path.d.ts.map +1 -0
- package/dist/diagram/routing/path.js +128 -0
- package/dist/diagram/routing/path.js.map +1 -0
- package/dist/diagram/routing/sides.d.ts +22 -0
- package/dist/diagram/routing/sides.d.ts.map +1 -0
- package/dist/diagram/routing/sides.js +74 -0
- package/dist/diagram/routing/sides.js.map +1 -0
- package/dist/diagram/routing/types.d.ts +46 -0
- package/dist/diagram/routing/types.d.ts.map +1 -0
- package/dist/diagram/routing/types.js +11 -0
- package/dist/diagram/routing/types.js.map +1 -0
- package/dist/diagram/schema.d.ts +70 -37
- package/dist/diagram/schema.d.ts.map +1 -1
- package/dist/diagram/schema.js +62 -8
- package/dist/diagram/schema.js.map +1 -1
- package/dist/diagram/styleInput.d.ts +41 -0
- package/dist/diagram/styleInput.d.ts.map +1 -0
- package/dist/diagram/styleInput.js +105 -0
- package/dist/diagram/styleInput.js.map +1 -0
- package/dist/diagram/views.d.ts +9 -0
- package/dist/diagram/views.d.ts.map +1 -0
- package/dist/diagram/views.js +42 -0
- package/dist/diagram/views.js.map +1 -0
- package/dist/http-file/flatImport.d.ts +1 -0
- package/dist/http-file/flatImport.d.ts.map +1 -1
- package/dist/http-file/flatImport.js.map +1 -1
- package/dist/http-file/index.d.ts +1 -1
- package/dist/http-file/index.d.ts.map +1 -1
- package/dist/http-file/index.js +1 -1
- package/dist/http-file/index.js.map +1 -1
- package/dist/http-file/parseHttpFile.d.ts +1 -0
- package/dist/http-file/parseHttpFile.d.ts.map +1 -1
- package/dist/http-file/parseHttpFile.js +40 -8
- package/dist/http-file/parseHttpFile.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/request/requestBody.d.ts +55 -0
- package/dist/request/requestBody.d.ts.map +1 -0
- package/dist/request/requestBody.js +198 -0
- package/dist/request/requestBody.js.map +1 -0
- package/dist/runner/requestRunner.d.ts.map +1 -1
- package/dist/runner/requestRunner.js +127 -43
- package/dist/runner/requestRunner.js.map +1 -1
- package/dist/runner/runCollection.d.ts +1 -1
- package/dist/runner/runCollection.d.ts.map +1 -1
- package/dist/runner/runCollection.js +9 -2
- package/dist/runner/runCollection.js.map +1 -1
- package/dist/scenario-runner/adapters/helpers/request-helpers.d.ts +2 -1
- package/dist/scenario-runner/adapters/helpers/request-helpers.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/helpers/request-helpers.js +8 -40
- package/dist/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
- package/dist/scenario-runner/adapters/request-executor.d.ts.map +1 -1
- package/dist/scenario-runner/adapters/request-executor.js +2 -29
- package/dist/scenario-runner/adapters/request-executor.js.map +1 -1
- package/dist/scenario-runner/index.d.ts +1 -0
- package/dist/scenario-runner/index.d.ts.map +1 -1
- package/dist/scenario-runner/index.js +1 -0
- package/dist/scenario-runner/index.js.map +1 -1
- package/dist/scenario-runner/labels.d.ts +3 -0
- package/dist/scenario-runner/labels.d.ts.map +1 -0
- package/dist/scenario-runner/labels.js +20 -0
- package/dist/scenario-runner/labels.js.map +1 -0
- package/dist/scenario-runner/runScenario.d.ts.map +1 -1
- package/dist/scenario-runner/runScenario.js +4 -11
- package/dist/scenario-runner/runScenario.js.map +1 -1
- package/dist/script/legacy.d.ts.map +1 -1
- package/dist/script/legacy.js +24 -9
- package/dist/script/legacy.js.map +1 -1
- package/dist/types/index.d.ts +18 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/variables/resolver.d.ts.map +1 -1
- package/dist/variables/resolver.js +27 -5
- package/dist/variables/resolver.js.map +1 -1
- package/dist-cjs/ai/index.js +4 -1
- package/dist-cjs/ai/index.js.map +1 -1
- package/dist-cjs/ai/outputSchemas.js +1 -0
- package/dist-cjs/ai/outputSchemas.js.map +1 -1
- package/dist-cjs/ai/parse/diagram.js +6 -3
- package/dist-cjs/ai/parse/diagram.js.map +1 -1
- package/dist-cjs/ai/prompts/diagram.js +44 -5
- package/dist-cjs/ai/prompts/diagram.js.map +1 -1
- package/dist-cjs/ai/prompts/scenario.js +9 -8
- package/dist-cjs/ai/prompts/scenario.js.map +1 -1
- package/dist-cjs/ai/prompts/scenarioNodeReference.js +886 -0
- package/dist-cjs/ai/prompts/scenarioNodeReference.js.map +1 -0
- package/dist-cjs/diagram/bpmn/derive.js +398 -0
- package/dist-cjs/diagram/bpmn/derive.js.map +1 -0
- package/dist-cjs/diagram/bpmn/index.js +31 -0
- package/dist-cjs/diagram/bpmn/index.js.map +1 -0
- package/dist-cjs/diagram/bpmn/patch.js +774 -0
- package/dist-cjs/diagram/bpmn/patch.js.map +1 -0
- package/dist-cjs/diagram/bpmn/place.js +69 -0
- package/dist-cjs/diagram/bpmn/place.js.map +1 -0
- package/dist-cjs/diagram/bpmn/serialize.js +299 -0
- package/dist-cjs/diagram/bpmn/serialize.js.map +1 -0
- package/dist-cjs/diagram/bpmn/types.js +99 -0
- package/dist-cjs/diagram/bpmn/types.js.map +1 -0
- package/dist-cjs/diagram/bpmn/xml.js +367 -0
- package/dist-cjs/diagram/bpmn/xml.js.map +1 -0
- package/dist-cjs/diagram/elkGraph.js +1 -0
- package/dist-cjs/diagram/elkGraph.js.map +1 -1
- package/dist-cjs/diagram/fixtures.js +117 -0
- package/dist-cjs/diagram/fixtures.js.map +1 -0
- package/dist-cjs/diagram/geometry.js +143 -0
- package/dist-cjs/diagram/geometry.js.map +1 -0
- package/dist-cjs/diagram/history.js +65 -0
- package/dist-cjs/diagram/history.js.map +1 -0
- package/dist-cjs/diagram/ids.js +58 -0
- package/dist-cjs/diagram/ids.js.map +1 -0
- package/dist-cjs/diagram/index.js +23 -8
- package/dist-cjs/diagram/index.js.map +1 -1
- package/dist-cjs/diagram/layout.js +364 -0
- package/dist-cjs/diagram/layout.js.map +1 -0
- package/dist-cjs/diagram/mermaid/derive.js +353 -0
- package/dist-cjs/diagram/mermaid/derive.js.map +1 -0
- package/dist-cjs/diagram/mermaid/index.js +44 -0
- package/dist-cjs/diagram/mermaid/index.js.map +1 -0
- package/dist-cjs/diagram/mermaid/parse.js +681 -0
- package/dist-cjs/diagram/mermaid/parse.js.map +1 -0
- package/dist-cjs/diagram/mermaid/patch.js +468 -0
- package/dist-cjs/diagram/mermaid/patch.js.map +1 -0
- package/dist-cjs/diagram/mermaid/serialize.js +133 -0
- package/dist-cjs/diagram/mermaid/serialize.js.map +1 -0
- package/dist-cjs/diagram/mermaid/shapes.js +327 -0
- package/dist-cjs/diagram/mermaid/shapes.js.map +1 -0
- package/dist-cjs/diagram/migrations.js +9 -3
- package/dist-cjs/diagram/migrations.js.map +1 -1
- package/dist-cjs/diagram/normalize.js +198 -1
- package/dist-cjs/diagram/normalize.js.map +1 -1
- package/dist-cjs/diagram/ops.js +829 -0
- package/dist-cjs/diagram/ops.js.map +1 -0
- package/dist-cjs/diagram/opsReference.js +55 -0
- package/dist-cjs/diagram/opsReference.js.map +1 -0
- package/dist-cjs/diagram/patchInput.js +636 -0
- package/dist-cjs/diagram/patchInput.js.map +1 -0
- package/dist-cjs/diagram/routing/batch.js +142 -0
- package/dist-cjs/diagram/routing/batch.js.map +1 -0
- package/dist-cjs/diagram/routing/curves.js +127 -0
- package/dist-cjs/diagram/routing/curves.js.map +1 -0
- package/dist-cjs/diagram/routing/grid.js +250 -0
- package/dist-cjs/diagram/routing/grid.js.map +1 -0
- package/dist-cjs/diagram/routing/index.js +29 -0
- package/dist-cjs/diagram/routing/index.js.map +1 -0
- package/dist-cjs/diagram/routing/legacy.js +32 -0
- package/dist-cjs/diagram/routing/legacy.js.map +1 -0
- package/dist-cjs/diagram/routing/nudge.js +100 -0
- package/dist-cjs/diagram/routing/nudge.js.map +1 -0
- package/dist-cjs/diagram/routing/orthogonal.js +62 -0
- package/dist-cjs/diagram/routing/orthogonal.js.map +1 -0
- package/dist-cjs/diagram/routing/path.js +137 -0
- package/dist-cjs/diagram/routing/path.js.map +1 -0
- package/dist-cjs/diagram/routing/sides.js +82 -0
- package/dist-cjs/diagram/routing/sides.js.map +1 -0
- package/dist-cjs/diagram/routing/types.js +15 -0
- package/dist-cjs/diagram/routing/types.js.map +1 -0
- package/dist-cjs/diagram/schema.js +64 -9
- package/dist-cjs/diagram/schema.js.map +1 -1
- package/dist-cjs/diagram/styleInput.js +113 -0
- package/dist-cjs/diagram/styleInput.js.map +1 -0
- package/dist-cjs/diagram/views.js +46 -0
- package/dist-cjs/diagram/views.js.map +1 -0
- package/dist-cjs/http-file/flatImport.js.map +1 -1
- package/dist-cjs/http-file/index.js +2 -1
- package/dist-cjs/http-file/index.js.map +1 -1
- package/dist-cjs/http-file/parseHttpFile.js +42 -9
- package/dist-cjs/http-file/parseHttpFile.js.map +1 -1
- package/dist-cjs/index.js +9 -1
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/request/requestBody.js +206 -0
- package/dist-cjs/request/requestBody.js.map +1 -0
- package/dist-cjs/runner/requestRunner.js +127 -43
- package/dist-cjs/runner/requestRunner.js.map +1 -1
- package/dist-cjs/runner/runCollection.js +9 -2
- package/dist-cjs/runner/runCollection.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js +7 -42
- package/dist-cjs/scenario-runner/adapters/helpers/request-helpers.js.map +1 -1
- package/dist-cjs/scenario-runner/adapters/request-executor.js +3 -30
- package/dist-cjs/scenario-runner/adapters/request-executor.js.map +1 -1
- package/dist-cjs/scenario-runner/index.js +4 -1
- package/dist-cjs/scenario-runner/index.js.map +1 -1
- package/dist-cjs/scenario-runner/labels.js +24 -0
- package/dist-cjs/scenario-runner/labels.js.map +1 -0
- package/dist-cjs/scenario-runner/runScenario.js +4 -11
- package/dist-cjs/scenario-runner/runScenario.js.map +1 -1
- package/dist-cjs/script/legacy.js +24 -9
- package/dist-cjs/script/legacy.js.map +1 -1
- package/dist-cjs/variables/resolver.js +27 -5
- package/dist-cjs/variables/resolver.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patchInput.js","sourceRoot":"","sources":["../../src/diagram/patchInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dirtyEdgesFor = exports.routeBatch = exports.routeEdge = void 0;
|
|
4
|
+
// The batch protocol a host's routing worker speaks: absolute node rects +
|
|
5
|
+
// edges in → routed paths out, versioned so stale answers are dropped, and
|
|
6
|
+
// incremental — only the edges in `dirty` are recomputed, the rest reuse
|
|
7
|
+
// `previous`. Pure, so it runs identically on the main thread, in a Web
|
|
8
|
+
// Worker, or in a Node test.
|
|
9
|
+
const geometry_js_1 = require("../geometry.js");
|
|
10
|
+
const curves_js_1 = require("./curves.js");
|
|
11
|
+
const legacy_js_1 = require("./legacy.js");
|
|
12
|
+
const nudge_js_1 = require("./nudge.js");
|
|
13
|
+
const orthogonal_js_1 = require("./orthogonal.js");
|
|
14
|
+
const types_js_1 = require("./types.js");
|
|
15
|
+
const terminalFor = (id, point, side, nodes) => {
|
|
16
|
+
if (id) {
|
|
17
|
+
const node = nodes.get(id);
|
|
18
|
+
if (!node)
|
|
19
|
+
return null;
|
|
20
|
+
return { rect: node.rect, side };
|
|
21
|
+
}
|
|
22
|
+
if (point)
|
|
23
|
+
return { rect: { x: point.x, y: point.y, width: 0, height: 0 }, point };
|
|
24
|
+
return null;
|
|
25
|
+
};
|
|
26
|
+
// Route ONE edge given the terminals; the routing kind decides the router.
|
|
27
|
+
const routeEdge = (edge, source, target, obstacles, defaultRouting, options, previous) => {
|
|
28
|
+
const withPrevious = previous
|
|
29
|
+
? { ...options, previous: { source: previous.sourceSide, target: previous.targetSide } }
|
|
30
|
+
: options;
|
|
31
|
+
if ((0, legacy_js_1.isLegacyPinnedEdge)(edge))
|
|
32
|
+
return (0, legacy_js_1.legacyPinnedPath)(edge, source.rect, target.rect);
|
|
33
|
+
let routing = edge.routing ?? defaultRouting ?? "orthogonal";
|
|
34
|
+
// A free "Line" (an end that is a point, not a node) is a straight line
|
|
35
|
+
// unless the user asked for a curve — there is no side to leave from.
|
|
36
|
+
if ((source.point || target.point) && routing !== "curved")
|
|
37
|
+
routing = "straight";
|
|
38
|
+
if (edge.waypoints && edge.waypoints.length > 0) {
|
|
39
|
+
return (0, curves_js_1.routeThroughWaypoints)(source, target, edge.waypoints, routing, withPrevious);
|
|
40
|
+
}
|
|
41
|
+
switch (routing) {
|
|
42
|
+
case "straight":
|
|
43
|
+
return (0, curves_js_1.straightRoute)(source, target, withPrevious);
|
|
44
|
+
case "curved":
|
|
45
|
+
return (0, curves_js_1.curvedRoute)(source, target, withPrevious);
|
|
46
|
+
case "smart": {
|
|
47
|
+
const smart = (0, orthogonal_js_1.smartRoute)(source, target, obstacles, withPrevious);
|
|
48
|
+
if (smart)
|
|
49
|
+
return smart;
|
|
50
|
+
return { ...(0, orthogonal_js_1.orthogonalRoute)(source, target, withPrevious), via: "smart-fallback" };
|
|
51
|
+
}
|
|
52
|
+
case "orthogonal":
|
|
53
|
+
default:
|
|
54
|
+
return (0, orthogonal_js_1.orthogonalRoute)(source, target, withPrevious);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
exports.routeEdge = routeEdge;
|
|
58
|
+
const routeBatch = (request) => {
|
|
59
|
+
const nodes = new Map(request.nodes.map((node) => [node.id, node]));
|
|
60
|
+
const obstacles = request.nodes.filter((node) => node.obstacle).map((node) => node.rect);
|
|
61
|
+
const dirty = request.dirty ? new Set(request.dirty) : null;
|
|
62
|
+
const previous = request.previous ?? {};
|
|
63
|
+
const options = request.options ?? {};
|
|
64
|
+
const paths = {};
|
|
65
|
+
const stats = { routed: 0, reused: 0, smart: 0, fallback: 0 };
|
|
66
|
+
for (const edge of request.edges) {
|
|
67
|
+
if (dirty && !dirty.has(edge.id) && previous[edge.id]) {
|
|
68
|
+
paths[edge.id] = previous[edge.id];
|
|
69
|
+
stats.reused += 1;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const source = terminalFor(edge.source, edge.sourcePoint, edge.sourceHandle, nodes);
|
|
73
|
+
const target = terminalFor(edge.target, edge.targetPoint, edge.targetHandle, nodes);
|
|
74
|
+
if (!source || !target)
|
|
75
|
+
continue;
|
|
76
|
+
const route = (0, exports.routeEdge)(edge, source, target, obstacles, request.defaultRouting, options, previous[edge.id]);
|
|
77
|
+
paths[edge.id] = route;
|
|
78
|
+
stats.routed += 1;
|
|
79
|
+
if (route.via === "smart")
|
|
80
|
+
stats.smart += 1;
|
|
81
|
+
if (route.via === "smart-fallback")
|
|
82
|
+
stats.fallback += 1;
|
|
83
|
+
}
|
|
84
|
+
const resolved = (0, types_js_1.resolveRouteOptions)(options);
|
|
85
|
+
const out = request.nudge === false ? paths : (0, nudge_js_1.nudgeRoutes)(paths, resolved.nudgeGap, obstacles, Math.max(0, resolved.margin - 4));
|
|
86
|
+
return { version: request.version, paths: out, stats };
|
|
87
|
+
};
|
|
88
|
+
exports.routeBatch = routeBatch;
|
|
89
|
+
// Which edges must be re-routed after the nodes changed from `before` to
|
|
90
|
+
// `after`: those touching a changed node, plus smart edges whose corridor a
|
|
91
|
+
// changed node entered or left.
|
|
92
|
+
const dirtyEdgesFor = (before, after, edges, defaultRouting, options = {}) => {
|
|
93
|
+
const resolved = (0, types_js_1.resolveRouteOptions)(options);
|
|
94
|
+
const prior = new Map(before.map((node) => [node.id, node]));
|
|
95
|
+
const changed = [];
|
|
96
|
+
const changedIds = new Set();
|
|
97
|
+
for (const node of after) {
|
|
98
|
+
const old = prior.get(node.id);
|
|
99
|
+
if (!old) {
|
|
100
|
+
changedIds.add(node.id);
|
|
101
|
+
changed.push(node.rect);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (old.rect.x !== node.rect.x || old.rect.y !== node.rect.y || old.rect.width !== node.rect.width || old.rect.height !== node.rect.height || old.obstacle !== node.obstacle) {
|
|
105
|
+
changedIds.add(node.id);
|
|
106
|
+
changed.push(old.rect, node.rect);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (const node of before) {
|
|
110
|
+
if (!after.some((candidate) => candidate.id === node.id)) {
|
|
111
|
+
changedIds.add(node.id);
|
|
112
|
+
changed.push(node.rect);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (changedIds.size === 0)
|
|
116
|
+
return [];
|
|
117
|
+
const afterById = new Map(after.map((node) => [node.id, node]));
|
|
118
|
+
const out = [];
|
|
119
|
+
for (const edge of edges) {
|
|
120
|
+
if ((edge.source && changedIds.has(edge.source)) || (edge.target && changedIds.has(edge.target))) {
|
|
121
|
+
out.push(edge.id);
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
if ((edge.routing ?? defaultRouting) !== "smart")
|
|
125
|
+
continue;
|
|
126
|
+
const source = edge.source ? afterById.get(edge.source)?.rect : undefined;
|
|
127
|
+
const target = edge.target ? afterById.get(edge.target)?.rect : undefined;
|
|
128
|
+
if (!source || !target)
|
|
129
|
+
continue;
|
|
130
|
+
const region = (0, geometry_js_1.inflateRect)({
|
|
131
|
+
x: Math.min(source.x, target.x),
|
|
132
|
+
y: Math.min(source.y, target.y),
|
|
133
|
+
width: Math.max(source.x + source.width, target.x + target.width) - Math.min(source.x, target.x),
|
|
134
|
+
height: Math.max(source.y + source.height, target.y + target.height) - Math.min(source.y, target.y),
|
|
135
|
+
}, resolved.regionPad);
|
|
136
|
+
if (changed.some((rect) => (0, geometry_js_1.rectsIntersect)(region, rect)))
|
|
137
|
+
out.push(edge.id);
|
|
138
|
+
}
|
|
139
|
+
return out;
|
|
140
|
+
};
|
|
141
|
+
exports.dirtyEdgesFor = dirtyEdgesFor;
|
|
142
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/diagram/routing/batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.routeThroughWaypoints = exports.catmullRomCurves = exports.curvedRoute = exports.straightRoute = void 0;
|
|
4
|
+
// Straight and curved routes, and the polyline-through-waypoints router used
|
|
5
|
+
// when the user has bent an edge by hand. Curved paths are cubic beziers:
|
|
6
|
+
// two-point edges leave/enter along the side normal (like React Flow's
|
|
7
|
+
// bezier); paths through waypoints are Catmull-Rom splines converted to
|
|
8
|
+
// cubics.
|
|
9
|
+
const geometry_js_1 = require("../geometry.js");
|
|
10
|
+
const grid_js_1 = require("./grid.js");
|
|
11
|
+
const sides_js_1 = require("./sides.js");
|
|
12
|
+
const types_js_1 = require("./types.js");
|
|
13
|
+
const attachToward = (terminal, side, toward) => {
|
|
14
|
+
if (terminal.point)
|
|
15
|
+
return terminal.point;
|
|
16
|
+
if (side)
|
|
17
|
+
return (0, sides_js_1.attachPoint)(terminal, side);
|
|
18
|
+
if (terminal.rect.width === 0 && terminal.rect.height === 0)
|
|
19
|
+
return { x: terminal.rect.x, y: terminal.rect.y };
|
|
20
|
+
return (0, sides_js_1.boundaryToward)(terminal.rect, toward);
|
|
21
|
+
};
|
|
22
|
+
const straightRoute = (source, target, options = {}) => {
|
|
23
|
+
const resolved = (0, types_js_1.resolveRouteOptions)(options);
|
|
24
|
+
const sides = (0, sides_js_1.sidesFor)(source, target, resolved.previous);
|
|
25
|
+
const start = attachToward(source, source.side, (0, geometry_js_1.rectCenter)(target.rect));
|
|
26
|
+
const end = attachToward(target, target.side, (0, geometry_js_1.rectCenter)(source.rect));
|
|
27
|
+
return { points: [start, end], kind: "straight", sourceSide: sides.source, targetSide: sides.target, via: "straight" };
|
|
28
|
+
};
|
|
29
|
+
exports.straightRoute = straightRoute;
|
|
30
|
+
const controlOffset = (a, b) => {
|
|
31
|
+
const distance = Math.hypot(b.x - a.x, b.y - a.y);
|
|
32
|
+
return Math.min(250, Math.max(40, distance * 0.45));
|
|
33
|
+
};
|
|
34
|
+
const curvedRoute = (source, target, options = {}) => {
|
|
35
|
+
const resolved = (0, types_js_1.resolveRouteOptions)(options);
|
|
36
|
+
const sides = (0, sides_js_1.sidesFor)(source, target, resolved.previous);
|
|
37
|
+
const start = (0, sides_js_1.attachPoint)(source, sides.source);
|
|
38
|
+
const end = (0, sides_js_1.attachPoint)(target, sides.target);
|
|
39
|
+
const sv = (0, sides_js_1.sideVector)(sides.source);
|
|
40
|
+
const tv = (0, sides_js_1.sideVector)(sides.target);
|
|
41
|
+
const offset = controlOffset(start, end);
|
|
42
|
+
const c1 = { x: start.x + sv.x * offset, y: start.y + sv.y * offset };
|
|
43
|
+
const c2 = { x: end.x + tv.x * offset, y: end.y + tv.y * offset };
|
|
44
|
+
return {
|
|
45
|
+
points: [start, end],
|
|
46
|
+
kind: "curved",
|
|
47
|
+
sourceSide: sides.source,
|
|
48
|
+
targetSide: sides.target,
|
|
49
|
+
curves: [[c1, c2, end]],
|
|
50
|
+
via: "curved",
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
exports.curvedRoute = curvedRoute;
|
|
54
|
+
// Catmull-Rom → cubic bezier segments through every point.
|
|
55
|
+
const catmullRomCurves = (points, tension = 0.5) => {
|
|
56
|
+
const curves = [];
|
|
57
|
+
for (let i = 0; i < points.length - 1; i += 1) {
|
|
58
|
+
const p0 = points[i - 1] ?? points[i];
|
|
59
|
+
const p1 = points[i];
|
|
60
|
+
const p2 = points[i + 1];
|
|
61
|
+
const p3 = points[i + 2] ?? p2;
|
|
62
|
+
const k = tension / 3;
|
|
63
|
+
curves.push([
|
|
64
|
+
{ x: p1.x + (p2.x - p0.x) * k, y: p1.y + (p2.y - p0.y) * k },
|
|
65
|
+
{ x: p2.x - (p3.x - p1.x) * k, y: p2.y - (p3.y - p1.y) * k },
|
|
66
|
+
p2,
|
|
67
|
+
]);
|
|
68
|
+
}
|
|
69
|
+
return curves;
|
|
70
|
+
};
|
|
71
|
+
exports.catmullRomCurves = catmullRomCurves;
|
|
72
|
+
// Manual bends: the path must pass through every waypoint in order. The
|
|
73
|
+
// terminal stubs are re-solved from the current node positions so moving a
|
|
74
|
+
// node keeps the bends but never leaves a dangling end.
|
|
75
|
+
const routeThroughWaypoints = (source, target, waypoints, routing, options = {}) => {
|
|
76
|
+
const resolved = (0, types_js_1.resolveRouteOptions)(options);
|
|
77
|
+
const first = waypoints[0];
|
|
78
|
+
const last = waypoints[waypoints.length - 1];
|
|
79
|
+
const kind = routing === "straight" ? "straight" : routing === "curved" ? "curved" : "orthogonal";
|
|
80
|
+
if (kind === "straight" || kind === "curved") {
|
|
81
|
+
const start = attachToward(source, source.side, first);
|
|
82
|
+
const end = attachToward(target, target.side, last);
|
|
83
|
+
const sides = (0, sides_js_1.sidesFor)(source, target, resolved.previous);
|
|
84
|
+
const points = [start, ...waypoints, end];
|
|
85
|
+
return {
|
|
86
|
+
points,
|
|
87
|
+
kind,
|
|
88
|
+
sourceSide: source.side ?? sides.source,
|
|
89
|
+
targetSide: target.side ?? sides.target,
|
|
90
|
+
...(kind === "curved" ? { curves: (0, exports.catmullRomCurves)(points) } : {}),
|
|
91
|
+
via: "waypoints",
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
// Orthogonal: leave perpendicular, then reach each bend with an L whose
|
|
95
|
+
// first leg continues the current heading.
|
|
96
|
+
const sourceSide = source.side ?? (0, sides_js_1.sidesFor)(source, { rect: { x: first.x, y: first.y, width: 0, height: 0 } }).source;
|
|
97
|
+
const targetSide = target.side ?? (0, sides_js_1.sidesFor)({ rect: { x: last.x, y: last.y, width: 0, height: 0 } }, target).target;
|
|
98
|
+
const start = (0, sides_js_1.attachPoint)(source, sourceSide);
|
|
99
|
+
const end = (0, sides_js_1.attachPoint)(target, targetSide);
|
|
100
|
+
const sv = (0, sides_js_1.sideVector)(sourceSide);
|
|
101
|
+
const tv = (0, sides_js_1.sideVector)(targetSide);
|
|
102
|
+
const stubStart = { x: start.x + sv.x * resolved.margin, y: start.y + sv.y * resolved.margin };
|
|
103
|
+
const stubEnd = { x: end.x + tv.x * resolved.margin, y: end.y + tv.y * resolved.margin };
|
|
104
|
+
const points = [start, stubStart];
|
|
105
|
+
let horizontal = sv.x !== 0;
|
|
106
|
+
let current = stubStart;
|
|
107
|
+
for (const bend of [...waypoints, stubEnd]) {
|
|
108
|
+
if (Math.abs(bend.x - current.x) > 1e-6 && Math.abs(bend.y - current.y) > 1e-6) {
|
|
109
|
+
// Two legs: continue the current heading first.
|
|
110
|
+
const corner = horizontal ? { x: bend.x, y: current.y } : { x: current.x, y: bend.y };
|
|
111
|
+
points.push(corner);
|
|
112
|
+
horizontal = !horizontal;
|
|
113
|
+
}
|
|
114
|
+
else if (Math.abs(bend.x - current.x) > 1e-6) {
|
|
115
|
+
horizontal = true;
|
|
116
|
+
}
|
|
117
|
+
else if (Math.abs(bend.y - current.y) > 1e-6) {
|
|
118
|
+
horizontal = false;
|
|
119
|
+
}
|
|
120
|
+
points.push(bend);
|
|
121
|
+
current = bend;
|
|
122
|
+
}
|
|
123
|
+
points.push(end);
|
|
124
|
+
return { points: (0, grid_js_1.simplifyPolyline)(points), kind: "orthogonal", sourceSide, targetSide, via: "waypoints" };
|
|
125
|
+
};
|
|
126
|
+
exports.routeThroughWaypoints = routeThroughWaypoints;
|
|
127
|
+
//# sourceMappingURL=curves.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curves.js","sourceRoot":"","sources":["../../../src/diagram/routing/curves.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.simplifyPolyline = exports.gridRoute = void 0;
|
|
4
|
+
// Orthogonal connector routing on a SPARSE grid (Wybrow et al., "Orthogonal
|
|
5
|
+
// Connector Routing", GD 2009 — the idea behind libavoid, draw.io's
|
|
6
|
+
// orthogonal edge style and Excalidraw's elbow arrows). Grid lines are the
|
|
7
|
+
// inflated boundaries of the rectangles that matter plus the midlines
|
|
8
|
+
// between them, so the search space stays tiny (a few hundred points for two
|
|
9
|
+
// nodes, a few thousand with obstacles) instead of pixel-sized. A* with a
|
|
10
|
+
// bend penalty then finds the shortest, straightest path that leaves the
|
|
11
|
+
// source perpendicular to its side and enters the target the same way.
|
|
12
|
+
//
|
|
13
|
+
// The same routine serves both the default "orthogonal" edge (obstacles =
|
|
14
|
+
// none, only the two terminals are avoided) and the "smart" edge (obstacles
|
|
15
|
+
// = every node in the region).
|
|
16
|
+
const geometry_js_1 = require("../geometry.js");
|
|
17
|
+
const sides_js_1 = require("./sides.js");
|
|
18
|
+
const EPS = 1e-6;
|
|
19
|
+
const MAX_GRID_POINTS = 12_000;
|
|
20
|
+
const DIRS = [
|
|
21
|
+
{ dx: 1, dy: 0 },
|
|
22
|
+
{ dx: -1, dy: 0 },
|
|
23
|
+
{ dx: 0, dy: 1 },
|
|
24
|
+
{ dx: 0, dy: -1 },
|
|
25
|
+
];
|
|
26
|
+
const dedupeSorted = (values) => {
|
|
27
|
+
values.sort((a, b) => a - b);
|
|
28
|
+
const out = [];
|
|
29
|
+
for (const value of values)
|
|
30
|
+
if (out.length === 0 || value - out[out.length - 1] > EPS)
|
|
31
|
+
out.push(value);
|
|
32
|
+
return out;
|
|
33
|
+
};
|
|
34
|
+
const withMidlines = (values) => {
|
|
35
|
+
const out = [];
|
|
36
|
+
for (let i = 0; i < values.length; i += 1) {
|
|
37
|
+
out.push(values[i]);
|
|
38
|
+
if (i + 1 < values.length && values[i + 1] - values[i] > 2)
|
|
39
|
+
out.push((values[i] + values[i + 1]) / 2);
|
|
40
|
+
}
|
|
41
|
+
return out;
|
|
42
|
+
};
|
|
43
|
+
const strictlyInside = (rect, x, y) => x > rect.x + EPS && x < rect.x + rect.width - EPS && y > rect.y + EPS && y < rect.y + rect.height - EPS;
|
|
44
|
+
const onBoundary = (rect, x, y) => x >= rect.x - EPS &&
|
|
45
|
+
x <= rect.x + rect.width + EPS &&
|
|
46
|
+
y >= rect.y - EPS &&
|
|
47
|
+
y <= rect.y + rect.height + EPS &&
|
|
48
|
+
(Math.abs(x - rect.x) < EPS || Math.abs(x - rect.x - rect.width) < EPS || Math.abs(y - rect.y) < EPS || Math.abs(y - rect.y - rect.height) < EPS);
|
|
49
|
+
// Binary heap keyed on f.
|
|
50
|
+
class Heap {
|
|
51
|
+
items = [];
|
|
52
|
+
get size() {
|
|
53
|
+
return this.items.length;
|
|
54
|
+
}
|
|
55
|
+
push(key, value) {
|
|
56
|
+
const items = this.items;
|
|
57
|
+
items.push({ key, value });
|
|
58
|
+
let i = items.length - 1;
|
|
59
|
+
while (i > 0) {
|
|
60
|
+
const parent = (i - 1) >> 1;
|
|
61
|
+
if (items[parent].key <= items[i].key)
|
|
62
|
+
break;
|
|
63
|
+
[items[parent], items[i]] = [items[i], items[parent]];
|
|
64
|
+
i = parent;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
pop() {
|
|
68
|
+
const items = this.items;
|
|
69
|
+
if (items.length === 0)
|
|
70
|
+
return undefined;
|
|
71
|
+
const top = items[0].value;
|
|
72
|
+
const last = items.pop();
|
|
73
|
+
if (items.length > 0) {
|
|
74
|
+
items[0] = last;
|
|
75
|
+
let i = 0;
|
|
76
|
+
for (;;) {
|
|
77
|
+
const l = i * 2 + 1;
|
|
78
|
+
const r = l + 1;
|
|
79
|
+
let m = i;
|
|
80
|
+
if (l < items.length && items[l].key < items[m].key)
|
|
81
|
+
m = l;
|
|
82
|
+
if (r < items.length && items[r].key < items[m].key)
|
|
83
|
+
m = r;
|
|
84
|
+
if (m === i)
|
|
85
|
+
break;
|
|
86
|
+
[items[m], items[i]] = [items[i], items[m]];
|
|
87
|
+
i = m;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return top;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Returns null when no path exists on the grid (boxed in) or the grid would
|
|
94
|
+
// be too large; the caller falls back.
|
|
95
|
+
const gridRoute = (input, options) => {
|
|
96
|
+
const { source, target } = input;
|
|
97
|
+
const sides = input.sides ?? (0, sides_js_1.sidesFor)(source, target, options.previous);
|
|
98
|
+
const margin = options.margin;
|
|
99
|
+
const start = (0, sides_js_1.attachPoint)(source, sides.source);
|
|
100
|
+
const end = (0, sides_js_1.attachPoint)(target, sides.target);
|
|
101
|
+
const sv = (0, sides_js_1.sideVector)(sides.source);
|
|
102
|
+
const tv = (0, sides_js_1.sideVector)(sides.target);
|
|
103
|
+
const stubStart = { x: start.x + sv.x * margin, y: start.y + sv.y * margin };
|
|
104
|
+
const stubEnd = { x: end.x + tv.x * margin, y: end.y + tv.y * margin };
|
|
105
|
+
// Every rectangle the path must not cross, inflated by the margin so the
|
|
106
|
+
// path keeps a gutter. Zero-size terminals (free points) are not obstacles.
|
|
107
|
+
const blockers = [];
|
|
108
|
+
for (const rect of [source.rect, target.rect]) {
|
|
109
|
+
if (rect.width > 0 && rect.height > 0)
|
|
110
|
+
blockers.push((0, geometry_js_1.inflateRect)(rect, margin));
|
|
111
|
+
}
|
|
112
|
+
for (const rect of input.obstacles)
|
|
113
|
+
blockers.push((0, geometry_js_1.inflateRect)(rect, margin));
|
|
114
|
+
const xs = dedupeSorted([stubStart.x, stubEnd.x, ...blockers.flatMap((r) => [r.x, r.x + r.width])]);
|
|
115
|
+
const ys = dedupeSorted([stubStart.y, stubEnd.y, ...blockers.flatMap((r) => [r.y, r.y + r.height])]);
|
|
116
|
+
const gx = withMidlines(xs);
|
|
117
|
+
const gy = withMidlines(ys);
|
|
118
|
+
if (gx.length * gy.length > MAX_GRID_POINTS)
|
|
119
|
+
return null;
|
|
120
|
+
const indexOf = (values, v) => {
|
|
121
|
+
let lo = 0;
|
|
122
|
+
let hi = values.length - 1;
|
|
123
|
+
while (lo <= hi) {
|
|
124
|
+
const mid = (lo + hi) >> 1;
|
|
125
|
+
if (Math.abs(values[mid] - v) <= EPS)
|
|
126
|
+
return mid;
|
|
127
|
+
if (values[mid] < v)
|
|
128
|
+
lo = mid + 1;
|
|
129
|
+
else
|
|
130
|
+
hi = mid - 1;
|
|
131
|
+
}
|
|
132
|
+
return -1;
|
|
133
|
+
};
|
|
134
|
+
const sx = indexOf(gx, stubStart.x);
|
|
135
|
+
const sy = indexOf(gy, stubStart.y);
|
|
136
|
+
const ex = indexOf(gx, stubEnd.x);
|
|
137
|
+
const ey = indexOf(gy, stubEnd.y);
|
|
138
|
+
if (sx < 0 || sy < 0 || ex < 0 || ey < 0)
|
|
139
|
+
return null;
|
|
140
|
+
const blocked = (x, y) => blockers.some((r) => strictlyInside(r, x, y));
|
|
141
|
+
const hugs = (x, y) => blockers.some((r) => onBoundary(r, x, y));
|
|
142
|
+
// A segment between neighbouring grid lines is inside an obstacle iff its
|
|
143
|
+
// midpoint is (grid lines include every obstacle boundary).
|
|
144
|
+
const passable = (x1, y1, x2, y2) => !blocked((x1 + x2) / 2, (y1 + y2) / 2);
|
|
145
|
+
const cols = gx.length;
|
|
146
|
+
const rows = gy.length;
|
|
147
|
+
const stateId = (xi, yi, d) => (yi * cols + xi) * 4 + d;
|
|
148
|
+
const g = new Float64Array(cols * rows * 4).fill(Infinity);
|
|
149
|
+
const cameFrom = new Int32Array(cols * rows * 4).fill(-1);
|
|
150
|
+
const closed = new Uint8Array(cols * rows * 4);
|
|
151
|
+
const heap = new Heap();
|
|
152
|
+
const heuristic = (xi, yi) => Math.abs(gx[xi] - gx[ex]) + Math.abs(gy[yi] - gy[ey]);
|
|
153
|
+
// Start facing outward: the first move continues away from the source.
|
|
154
|
+
const startDir = DIRS.findIndex((d) => d.dx === sv.x && d.dy === sv.y);
|
|
155
|
+
const goalDir = DIRS.findIndex((d) => d.dx === -tv.x && d.dy === -tv.y);
|
|
156
|
+
const startState = stateId(sx, sy, startDir);
|
|
157
|
+
g[startState] = 0;
|
|
158
|
+
heap.push(heuristic(sx, sy), startState);
|
|
159
|
+
let found = -1;
|
|
160
|
+
while (heap.size > 0) {
|
|
161
|
+
const current = heap.pop();
|
|
162
|
+
if (closed[current])
|
|
163
|
+
continue;
|
|
164
|
+
closed[current] = 1;
|
|
165
|
+
const d = current % 4;
|
|
166
|
+
const cell = (current - d) / 4;
|
|
167
|
+
const xi = cell % cols;
|
|
168
|
+
const yi = (cell - xi) / cols;
|
|
169
|
+
if (xi === ex && yi === ey && d === goalDir) {
|
|
170
|
+
found = current;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
if (xi === ex && yi === ey) {
|
|
174
|
+
// Arrived, but not facing the target: allow a final turn in place so
|
|
175
|
+
// the entry is perpendicular (costs a bend).
|
|
176
|
+
const turned = stateId(xi, yi, goalDir);
|
|
177
|
+
const cost = g[current] + options.bendPenalty;
|
|
178
|
+
if (cost < g[turned]) {
|
|
179
|
+
g[turned] = cost;
|
|
180
|
+
cameFrom[turned] = current;
|
|
181
|
+
heap.push(cost, turned);
|
|
182
|
+
}
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
for (let nd = 0; nd < 4; nd += 1) {
|
|
186
|
+
const dir = DIRS[nd];
|
|
187
|
+
// Never reverse into the previous segment.
|
|
188
|
+
if (dir.dx === -DIRS[d].dx && dir.dy === -DIRS[d].dy)
|
|
189
|
+
continue;
|
|
190
|
+
const nx = xi + dir.dx;
|
|
191
|
+
const ny = yi + dir.dy;
|
|
192
|
+
if (nx < 0 || ny < 0 || nx >= cols || ny >= rows)
|
|
193
|
+
continue;
|
|
194
|
+
if (!passable(gx[xi], gy[yi], gx[nx], gy[ny]))
|
|
195
|
+
continue;
|
|
196
|
+
const step = Math.abs(gx[nx] - gx[xi]) + Math.abs(gy[ny] - gy[yi]);
|
|
197
|
+
let cost = g[current] + step;
|
|
198
|
+
if (nd !== d)
|
|
199
|
+
cost += options.bendPenalty;
|
|
200
|
+
if (hugs(gx[nx], gy[ny]))
|
|
201
|
+
cost += options.hugPenalty;
|
|
202
|
+
const next = stateId(nx, ny, nd);
|
|
203
|
+
if (cost < g[next]) {
|
|
204
|
+
g[next] = cost;
|
|
205
|
+
cameFrom[next] = current;
|
|
206
|
+
heap.push(cost + heuristic(nx, ny), next);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (found < 0)
|
|
211
|
+
return null;
|
|
212
|
+
const gridPoints = [];
|
|
213
|
+
for (let state = found; state >= 0; state = cameFrom[state]) {
|
|
214
|
+
const d = state % 4;
|
|
215
|
+
const cell = (state - d) / 4;
|
|
216
|
+
const xi = cell % cols;
|
|
217
|
+
const yi = (cell - xi) / cols;
|
|
218
|
+
const point = { x: gx[xi], y: gy[yi] };
|
|
219
|
+
const last = gridPoints[gridPoints.length - 1];
|
|
220
|
+
if (!last || Math.abs(last.x - point.x) > EPS || Math.abs(last.y - point.y) > EPS)
|
|
221
|
+
gridPoints.push(point);
|
|
222
|
+
}
|
|
223
|
+
gridPoints.reverse();
|
|
224
|
+
const round = (p) => ({ x: Math.round(p.x * 100) / 100, y: Math.round(p.y * 100) / 100 });
|
|
225
|
+
const points = (0, exports.simplifyPolyline)([start, ...gridPoints, end].map(round));
|
|
226
|
+
return { points, kind: "orthogonal", sourceSide: sides.source, targetSide: sides.target, via: "orthogonal" };
|
|
227
|
+
};
|
|
228
|
+
exports.gridRoute = gridRoute;
|
|
229
|
+
// Drop collinear and duplicate vertices.
|
|
230
|
+
const simplifyPolyline = (points) => {
|
|
231
|
+
const out = [];
|
|
232
|
+
for (const point of points) {
|
|
233
|
+
const last = out[out.length - 1];
|
|
234
|
+
if (last && Math.abs(last.x - point.x) < EPS && Math.abs(last.y - point.y) < EPS)
|
|
235
|
+
continue;
|
|
236
|
+
if (out.length >= 2) {
|
|
237
|
+
const a = out[out.length - 2];
|
|
238
|
+
const b = last;
|
|
239
|
+
const collinear = (Math.abs(a.x - b.x) < EPS && Math.abs(b.x - point.x) < EPS) || (Math.abs(a.y - b.y) < EPS && Math.abs(b.y - point.y) < EPS);
|
|
240
|
+
if (collinear) {
|
|
241
|
+
out[out.length - 1] = point;
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
out.push(point);
|
|
246
|
+
}
|
|
247
|
+
return out;
|
|
248
|
+
};
|
|
249
|
+
exports.simplifyPolyline = simplifyPolyline;
|
|
250
|
+
//# sourceMappingURL=grid.js.map
|