@foblex/flow 17.0.6 → 17.0.7
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/domain/f-connection/find-closest-input/find-closest-input.execution.d.ts +11 -0
- package/domain/f-connection/{find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.d.ts → find-closest-input/find-closest-input.request.d.ts} +2 -3
- package/domain/f-connection/find-closest-input/i-closest-input.d.ts +7 -0
- package/domain/f-connection/find-closest-input/index.d.ts +3 -0
- package/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.d.ts +2 -3
- package/domain/f-connection/index.d.ts +1 -1
- package/domain/f-connection/providers.d.ts +2 -2
- package/domain/get-normalized-element-rect/get-normalized-element-rect-request.d.ts +2 -1
- package/domain/providers.d.ts +1 -1
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.mjs +1 -1
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.mjs +5 -3
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.mjs +19 -29
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.mjs +6 -3
- package/esm2022/domain/f-connection/find-closest-input/find-closest-input.execution.mjs +42 -0
- package/esm2022/domain/f-connection/find-closest-input/find-closest-input.request.mjs +9 -0
- package/esm2022/domain/f-connection/find-closest-input/i-closest-input.mjs +2 -0
- package/esm2022/domain/f-connection/find-closest-input/index.mjs +4 -0
- package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.mjs +1 -1
- package/esm2022/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.mjs +7 -11
- package/esm2022/domain/f-connection/index.mjs +2 -2
- package/esm2022/domain/f-connection/providers.mjs +3 -3
- package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +2 -2
- package/esm2022/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +3 -3
- package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect-request.mjs +4 -2
- package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect.execution.mjs +5 -5
- package/esm2022/f-connection/f-connection/f-connection.component.mjs +6 -5
- package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +33 -19
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +29 -21
- package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +2 -2
- package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +2 -2
- package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +2 -2
- package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +2 -2
- package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +2 -2
- package/esm2022/f-draggable/node/connection.drag-handler.mjs +2 -2
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +2 -2
- package/esm2022/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.mjs +15 -8
- package/esm2022/f-draggable/node/node-drag-to-parent.drag-handler.mjs +32 -17
- package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +1 -1
- package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.mjs +2 -2
- package/esm2022/f-draggable/node-resize/node-resize.drag-handler.mjs +2 -2
- package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.execution.mjs +2 -2
- package/esm2022/f-line-alignment/domain/index.mjs +1 -2
- package/esm2022/f-line-alignment/f-line-alignment.component.mjs +17 -12
- package/f-connection/f-connection/f-connection.component.d.ts +4 -2
- package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +8 -4
- package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +7 -4
- package/f-draggable/node/connection-base-drag-handler.d.ts +1 -1
- package/f-draggable/node/node-drag-to-parent-preparation/node-drag-to-parent-preparation.execution.d.ts +4 -3
- package/f-draggable/node/node-drag-to-parent.drag-handler.d.ts +9 -4
- package/f-line-alignment/domain/index.d.ts +0 -1
- package/f-line-alignment/f-line-alignment.component.d.ts +2 -1
- package/fesm2022/foblex-flow.mjs +185 -242
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/package.json +3 -3
- package/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.d.ts +0 -11
- package/domain/f-connection/find-closest-input-using-snap-threshold/index.d.ts +0 -2
- package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.mjs +0 -39
- package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.mjs +0 -11
- package/esm2022/domain/f-connection/find-closest-input-using-snap-threshold/index.mjs +0 -3
- package/esm2022/f-line-alignment/domain/nearest-coordinate.mjs +0 -104
- package/f-line-alignment/domain/nearest-coordinate.d.ts +0 -27
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@foblex/flow",
|
|
3
|
-
"version": "17.0.
|
|
3
|
+
"version": "17.0.7",
|
|
4
4
|
"description": "An Angular library designed to simplify the creation and manipulation of dynamic flow. Provides components for flows, nodes, and connections, automating node manipulation and inter-node connections.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"@angular/common": ">=15.0.0",
|
|
33
33
|
"@angular/core": ">=15.0.0",
|
|
34
34
|
"@foblex/platform": "1.0.4",
|
|
35
|
-
"@foblex/mediator": "1.1.
|
|
36
|
-
"@foblex/2d": "1.1.
|
|
35
|
+
"@foblex/mediator": "1.1.2",
|
|
36
|
+
"@foblex/2d": "1.1.7",
|
|
37
37
|
"@foblex/drag-toolkit": "1.1.0",
|
|
38
38
|
"@foblex/utils": "1.1.0"
|
|
39
39
|
},
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { FindClosestInputUsingSnapThresholdRequest } from './find-closest-input-using-snap-threshold.request';
|
|
2
|
-
import { IExecution } from '@foblex/mediator';
|
|
3
|
-
import { IConnectorWithRect } from '../get-connector-with-rect';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export declare class FindClosestInputUsingSnapThresholdExecution implements IExecution<FindClosestInputUsingSnapThresholdRequest, IConnectorWithRect | undefined> {
|
|
6
|
-
handle(payload: FindClosestInputUsingSnapThresholdRequest): IConnectorWithRect | undefined;
|
|
7
|
-
private distanceToRectangle;
|
|
8
|
-
private clamp;
|
|
9
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<FindClosestInputUsingSnapThresholdExecution, never>;
|
|
10
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<FindClosestInputUsingSnapThresholdExecution>;
|
|
11
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { FindClosestInputUsingSnapThresholdRequest } from './find-closest-input-using-snap-threshold.request';
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import { FExecutionRegister } from '@foblex/mediator';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
let FindClosestInputUsingSnapThresholdExecution = class FindClosestInputUsingSnapThresholdExecution {
|
|
7
|
-
handle(payload) {
|
|
8
|
-
let result;
|
|
9
|
-
let minDistance = Infinity;
|
|
10
|
-
for (const element of payload.canBeConnectedInputs) {
|
|
11
|
-
const distance = this.distanceToRectangle(payload.position, element);
|
|
12
|
-
if (distance < minDistance) {
|
|
13
|
-
minDistance = distance;
|
|
14
|
-
result = element;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return minDistance < payload.snapThreshold ? result : undefined;
|
|
18
|
-
}
|
|
19
|
-
distanceToRectangle(point, inputWithRect) {
|
|
20
|
-
const closestX = this.clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);
|
|
21
|
-
const closestY = this.clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);
|
|
22
|
-
const dx = point.x - closestX;
|
|
23
|
-
const dy = point.y - closestY;
|
|
24
|
-
return Math.sqrt(dx * dx + dy * dy);
|
|
25
|
-
}
|
|
26
|
-
clamp(value, min, max) {
|
|
27
|
-
return Math.max(min, Math.min(max, value));
|
|
28
|
-
}
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputUsingSnapThresholdExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
30
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputUsingSnapThresholdExecution });
|
|
31
|
-
};
|
|
32
|
-
FindClosestInputUsingSnapThresholdExecution = __decorate([
|
|
33
|
-
FExecutionRegister(FindClosestInputUsingSnapThresholdRequest)
|
|
34
|
-
], FindClosestInputUsingSnapThresholdExecution);
|
|
35
|
-
export { FindClosestInputUsingSnapThresholdExecution };
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FindClosestInputUsingSnapThresholdExecution, decorators: [{
|
|
37
|
-
type: Injectable
|
|
38
|
-
}] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1jbG9zZXN0LWlucHV0LXVzaW5nLXNuYXAtdGhyZXNob2xkLmV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2YtY29ubmVjdGlvbi9maW5kLWNsb3Nlc3QtaW5wdXQtdXNpbmctc25hcC10aHJlc2hvbGQvZmluZC1jbG9zZXN0LWlucHV0LXVzaW5nLXNuYXAtdGhyZXNob2xkLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDOUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFNM0QsSUFBTSwyQ0FBMkMsR0FBakQsTUFBTSwyQ0FBMkM7SUFJL0MsTUFBTSxDQUFDLE9BQWtEO1FBQzlELElBQUksTUFBc0MsQ0FBQztRQUMzQyxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFFM0IsS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVyRSxJQUFJLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQztnQkFDM0IsV0FBVyxHQUFHLFFBQVEsQ0FBQztnQkFDdkIsTUFBTSxHQUFHLE9BQU8sQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sV0FBVyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUFhLEVBQUUsYUFBaUM7UUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0csTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEgsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDOUIsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7UUFFOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxLQUFLLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxHQUFXO1FBQ25ELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO3VHQWhDVSwyQ0FBMkM7MkdBQTNDLDJDQUEyQzs7QUFBM0MsMkNBQTJDO0lBRHZELGtCQUFrQixDQUFDLHlDQUF5QyxDQUFDO0dBQ2pELDJDQUEyQyxDQWlDdkQ7OzJGQWpDWSwyQ0FBMkM7a0JBRnZELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaW5kQ2xvc2VzdElucHV0VXNpbmdTbmFwVGhyZXNob2xkUmVxdWVzdCB9IGZyb20gJy4vZmluZC1jbG9zZXN0LWlucHV0LXVzaW5nLXNuYXAtdGhyZXNob2xkLnJlcXVlc3QnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRkV4ZWN1dGlvblJlZ2lzdGVyLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IElDb25uZWN0b3JXaXRoUmVjdCB9IGZyb20gJy4uL2dldC1jb25uZWN0b3Itd2l0aC1yZWN0JztcblxuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihGaW5kQ2xvc2VzdElucHV0VXNpbmdTbmFwVGhyZXNob2xkUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBGaW5kQ2xvc2VzdElucHV0VXNpbmdTbmFwVGhyZXNob2xkRXhlY3V0aW9uXG4gIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxGaW5kQ2xvc2VzdElucHV0VXNpbmdTbmFwVGhyZXNob2xkUmVxdWVzdCwgSUNvbm5lY3RvcldpdGhSZWN0IHwgdW5kZWZpbmVkPiB7XG5cblxuICBwdWJsaWMgaGFuZGxlKHBheWxvYWQ6IEZpbmRDbG9zZXN0SW5wdXRVc2luZ1NuYXBUaHJlc2hvbGRSZXF1ZXN0KTogSUNvbm5lY3RvcldpdGhSZWN0IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgcmVzdWx0OiBJQ29ubmVjdG9yV2l0aFJlY3QgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XG5cbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgcGF5bG9hZC5jYW5CZUNvbm5lY3RlZElucHV0cykge1xuICAgICAgY29uc3QgZGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlVG9SZWN0YW5nbGUocGF5bG9hZC5wb3NpdGlvbiwgZWxlbWVudCk7XG5cbiAgICAgIGlmIChkaXN0YW5jZSA8IG1pbkRpc3RhbmNlKSB7XG4gICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2U7XG4gICAgICAgIHJlc3VsdCA9IGVsZW1lbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1pbkRpc3RhbmNlIDwgcGF5bG9hZC5zbmFwVGhyZXNob2xkID8gcmVzdWx0IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXN0YW5jZVRvUmVjdGFuZ2xlKHBvaW50OiBJUG9pbnQsIGlucHV0V2l0aFJlY3Q6IElDb25uZWN0b3JXaXRoUmVjdCk6IG51bWJlciB7XG4gICAgY29uc3QgY2xvc2VzdFggPSB0aGlzLmNsYW1wKHBvaW50LngsIGlucHV0V2l0aFJlY3QuZlJlY3QueCwgaW5wdXRXaXRoUmVjdC5mUmVjdC54ICsgaW5wdXRXaXRoUmVjdC5mUmVjdC53aWR0aCk7XG4gICAgY29uc3QgY2xvc2VzdFkgPSB0aGlzLmNsYW1wKHBvaW50LnksIGlucHV0V2l0aFJlY3QuZlJlY3QueSwgaW5wdXRXaXRoUmVjdC5mUmVjdC55ICsgaW5wdXRXaXRoUmVjdC5mUmVjdC5oZWlnaHQpO1xuXG4gICAgY29uc3QgZHggPSBwb2ludC54IC0gY2xvc2VzdFg7XG4gICAgY29uc3QgZHkgPSBwb2ludC55IC0gY2xvc2VzdFk7XG5cbiAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xhbXAodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5tYXgobWluLCBNYXRoLm1pbihtYXgsIHZhbHVlKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export class FindClosestInputUsingSnapThresholdRequest {
|
|
2
|
-
position;
|
|
3
|
-
canBeConnectedInputs;
|
|
4
|
-
snapThreshold;
|
|
5
|
-
constructor(position, canBeConnectedInputs, snapThreshold) {
|
|
6
|
-
this.position = position;
|
|
7
|
-
this.canBeConnectedInputs = canBeConnectedInputs;
|
|
8
|
-
this.snapThreshold = snapThreshold;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1jbG9zZXN0LWlucHV0LXVzaW5nLXNuYXAtdGhyZXNob2xkLnJlcXVlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLWNvbm5lY3Rpb24vZmluZC1jbG9zZXN0LWlucHV0LXVzaW5nLXNuYXAtdGhyZXNob2xkL2ZpbmQtY2xvc2VzdC1pbnB1dC11c2luZy1zbmFwLXRocmVzaG9sZC5yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyx5Q0FBeUM7SUFHM0M7SUFDQTtJQUNBO0lBSFQsWUFDUyxRQUFnQixFQUNoQixvQkFBMEMsRUFDMUMsYUFBcUI7UUFGckIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGtCQUFhLEdBQWIsYUFBYSxDQUFRO0lBRTlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludCB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgSUNvbm5lY3RvcldpdGhSZWN0IH0gZnJvbSAnLi4vZ2V0LWNvbm5lY3Rvci13aXRoLXJlY3QnO1xuXG5leHBvcnQgY2xhc3MgRmluZENsb3Nlc3RJbnB1dFVzaW5nU25hcFRocmVzaG9sZFJlcXVlc3Qge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBwb3NpdGlvbjogSVBvaW50LFxuICAgIHB1YmxpYyBjYW5CZUNvbm5lY3RlZElucHV0czogSUNvbm5lY3RvcldpdGhSZWN0W10sXG4gICAgcHVibGljIHNuYXBUaHJlc2hvbGQ6IG51bWJlclxuICApIHtcbiAgfVxufVxuIl19
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export * from './find-closest-input-using-snap-threshold.request';
|
|
2
|
-
export * from './find-closest-input-using-snap-threshold.execution';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLWNvbm5lY3Rpb24vZmluZC1jbG9zZXN0LWlucHV0LXVzaW5nLXNuYXAtdGhyZXNob2xkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbURBQW1ELENBQUM7QUFFbEUsY0FBYyxxREFBcUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmluZC1jbG9zZXN0LWlucHV0LXVzaW5nLXNuYXAtdGhyZXNob2xkLnJlcXVlc3QnO1xuXG5leHBvcnQgKiBmcm9tICcuL2ZpbmQtY2xvc2VzdC1pbnB1dC11c2luZy1zbmFwLXRocmVzaG9sZC5leGVjdXRpb24nO1xuIl19
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A class to find the nearest coordinate.
|
|
3
|
-
*/
|
|
4
|
-
export class NearestCoordinateFinder {
|
|
5
|
-
alignThreshold;
|
|
6
|
-
elements;
|
|
7
|
-
target;
|
|
8
|
-
/**
|
|
9
|
-
* Constructor to initialize the NearestCoordinateFinder.
|
|
10
|
-
* @param elements - The array of IRect elements.
|
|
11
|
-
* @param target - The target IRect element.
|
|
12
|
-
* @param alignThreshold - The threshold to align the elements.
|
|
13
|
-
*/
|
|
14
|
-
constructor(elements, target, alignThreshold = 10) {
|
|
15
|
-
this.alignThreshold = alignThreshold;
|
|
16
|
-
this.elements = elements;
|
|
17
|
-
this.target = target;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Finds the nearest coordinate on a specified axis.
|
|
21
|
-
* @returns The nearest coordinate and its distance.
|
|
22
|
-
*/
|
|
23
|
-
findNearestCoordinateByX() {
|
|
24
|
-
let nearest;
|
|
25
|
-
let minDistance;
|
|
26
|
-
for (const element of this.elements) {
|
|
27
|
-
const distanceLeftLeft = this.target.x - element.x;
|
|
28
|
-
const distanceLeftRight = this.target.x - (element.x + element.width);
|
|
29
|
-
const distanceCenterCenter = this.target.gravityCenter.x - element.gravityCenter.x;
|
|
30
|
-
const distanceRightLeft = (this.target.x + this.target.width) - element.x;
|
|
31
|
-
const distanceRightRight = (this.target.x + this.target.width) - (element.x + element.width);
|
|
32
|
-
if (Math.abs(distanceLeftLeft) <= this.alignThreshold ||
|
|
33
|
-
Math.abs(distanceLeftRight) <= this.alignThreshold ||
|
|
34
|
-
Math.abs(distanceCenterCenter) <= this.alignThreshold ||
|
|
35
|
-
Math.abs(distanceRightLeft) <= this.alignThreshold ||
|
|
36
|
-
Math.abs(distanceRightRight) <= this.alignThreshold) {
|
|
37
|
-
if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {
|
|
38
|
-
minDistance = distanceCenterCenter;
|
|
39
|
-
nearest = element.gravityCenter.x;
|
|
40
|
-
}
|
|
41
|
-
if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {
|
|
42
|
-
minDistance = distanceLeftLeft;
|
|
43
|
-
nearest = element.x;
|
|
44
|
-
}
|
|
45
|
-
if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {
|
|
46
|
-
minDistance = distanceRightRight;
|
|
47
|
-
nearest = element.x + element.width;
|
|
48
|
-
}
|
|
49
|
-
if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {
|
|
50
|
-
minDistance = distanceLeftRight;
|
|
51
|
-
nearest = element.x + element.width;
|
|
52
|
-
}
|
|
53
|
-
if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {
|
|
54
|
-
minDistance = distanceRightLeft;
|
|
55
|
-
nearest = element.x;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return { value: nearest, distance: minDistance };
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Finds the nearest coordinate on a specified axis.
|
|
63
|
-
* @returns The nearest coordinate and its distance.
|
|
64
|
-
*/
|
|
65
|
-
findNearestCoordinateByY() {
|
|
66
|
-
let nearest;
|
|
67
|
-
let minDistance;
|
|
68
|
-
for (const element of this.elements) {
|
|
69
|
-
const distanceTopTop = this.target.y - element.y;
|
|
70
|
-
const distanceTopBottom = this.target.y - (element.y + element.height);
|
|
71
|
-
const distanceCenterCenter = this.target.gravityCenter.y - element.gravityCenter.y;
|
|
72
|
-
const distanceBottomTop = (this.target.y + this.target.height) - element.y;
|
|
73
|
-
const distanceBottomBottom = (this.target.y + this.target.height) - (element.y + element.height);
|
|
74
|
-
if (Math.abs(distanceTopTop) <= this.alignThreshold ||
|
|
75
|
-
Math.abs(distanceTopBottom) <= this.alignThreshold ||
|
|
76
|
-
Math.abs(distanceCenterCenter) <= this.alignThreshold ||
|
|
77
|
-
Math.abs(distanceBottomTop) <= this.alignThreshold ||
|
|
78
|
-
Math.abs(distanceBottomBottom) <= this.alignThreshold) {
|
|
79
|
-
if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {
|
|
80
|
-
minDistance = distanceCenterCenter;
|
|
81
|
-
nearest = element.gravityCenter.y;
|
|
82
|
-
}
|
|
83
|
-
if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {
|
|
84
|
-
minDistance = distanceTopTop;
|
|
85
|
-
nearest = element.y;
|
|
86
|
-
}
|
|
87
|
-
if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {
|
|
88
|
-
minDistance = distanceBottomBottom;
|
|
89
|
-
nearest = element.y + element.height;
|
|
90
|
-
}
|
|
91
|
-
if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {
|
|
92
|
-
minDistance = distanceTopBottom;
|
|
93
|
-
nearest = element.y + element.height;
|
|
94
|
-
}
|
|
95
|
-
if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {
|
|
96
|
-
minDistance = distanceBottomTop;
|
|
97
|
-
nearest = element.y;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return { value: nearest, distance: minDistance };
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVhcmVzdC1jb29yZGluYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWxpbmUtYWxpZ25tZW50L2RvbWFpbi9uZWFyZXN0LWNvb3JkaW5hdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBWW9CO0lBVDlDLFFBQVEsQ0FBVTtJQUNsQixNQUFNLENBQVE7SUFFdEI7Ozs7O09BS0c7SUFDSCxZQUFZLFFBQWlCLEVBQUUsTUFBYSxFQUFVLGlCQUF5QixFQUFFO1FBQTNCLG1CQUFjLEdBQWQsY0FBYyxDQUFhO1FBQy9FLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7O09BR0c7SUFDSSx3QkFBd0I7UUFDN0IsSUFBSSxPQUEyQixDQUFDO1FBQ2hDLElBQUksV0FBK0IsQ0FBQztRQUVwQyxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDMUUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU3RixJQUNJLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYztnQkFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjO2dCQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLElBQUksSUFBSSxDQUFDLGNBQWM7Z0JBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYztnQkFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQ3JELENBQUM7Z0JBQ0QsSUFBSSxXQUFXLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hGLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQztvQkFDbkMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDdkQsV0FBVyxHQUFHLGdCQUFnQixDQUFDO29CQUMvQixPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0JBQ3pELFdBQVcsR0FBRyxrQkFBa0IsQ0FBQztvQkFDakMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDdEMsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hELFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztvQkFDaEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDdEMsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hELFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztvQkFDaEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBR0Q7OztPQUdHO0lBQ0ksd0JBQXdCO1FBQzdCLElBQUksT0FBMkIsQ0FBQztRQUNoQyxJQUFJLFdBQStCLENBQUM7UUFFcEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkUsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDbkYsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUMzRSxNQUFNLG9CQUFvQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWpHLElBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYztnQkFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjO2dCQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLElBQUksSUFBSSxDQUFDLGNBQWM7Z0JBQ3JELElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYztnQkFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQ3ZELENBQUM7Z0JBQ0QsSUFBSSxXQUFXLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0JBQ3hGLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQztvQkFDbkMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7b0JBQ3JELFdBQVcsR0FBRyxjQUFjLENBQUM7b0JBQzdCLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDM0QsV0FBVyxHQUFHLG9CQUFvQixDQUFDO29CQUNuQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDeEQsV0FBVyxHQUFHLGlCQUFpQixDQUFDO29CQUNoQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUN2QyxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDeEQsV0FBVyxHQUFHLGlCQUFpQixDQUFDO29CQUNoQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ25ELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElSZWN0IH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBJTmVhcmVzdENvb3JkaW5hdGVSZXN1bHQgfSBmcm9tICcuL2ktbmVhcmVzdC1jb29yZGluYXRlLXJlc3VsdCc7XG5cbi8qKlxuICogQSBjbGFzcyB0byBmaW5kIHRoZSBuZWFyZXN0IGNvb3JkaW5hdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZWFyZXN0Q29vcmRpbmF0ZUZpbmRlciB7XG5cblxuICBwcml2YXRlIGVsZW1lbnRzOiBJUmVjdFtdO1xuICBwcml2YXRlIHRhcmdldDogSVJlY3Q7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgdGhlIE5lYXJlc3RDb29yZGluYXRlRmluZGVyLlxuICAgKiBAcGFyYW0gZWxlbWVudHMgLSBUaGUgYXJyYXkgb2YgSVJlY3QgZWxlbWVudHMuXG4gICAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IElSZWN0IGVsZW1lbnQuXG4gICAqIEBwYXJhbSBhbGlnblRocmVzaG9sZCAtIFRoZSB0aHJlc2hvbGQgdG8gYWxpZ24gdGhlIGVsZW1lbnRzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoZWxlbWVudHM6IElSZWN0W10sIHRhcmdldDogSVJlY3QsIHByaXZhdGUgYWxpZ25UaHJlc2hvbGQ6IG51bWJlciA9IDEwKSB7XG4gICAgdGhpcy5lbGVtZW50cyA9IGVsZW1lbnRzO1xuICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBuZWFyZXN0IGNvb3JkaW5hdGUgb24gYSBzcGVjaWZpZWQgYXhpcy5cbiAgICogQHJldHVybnMgVGhlIG5lYXJlc3QgY29vcmRpbmF0ZSBhbmQgaXRzIGRpc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGZpbmROZWFyZXN0Q29vcmRpbmF0ZUJ5WCgpOiBJTmVhcmVzdENvb3JkaW5hdGVSZXN1bHQge1xuICAgIGxldCBuZWFyZXN0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgbGV0IG1pbkRpc3RhbmNlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdGhpcy5lbGVtZW50cykge1xuICAgICAgY29uc3QgZGlzdGFuY2VMZWZ0TGVmdCA9IHRoaXMudGFyZ2V0LnggLSBlbGVtZW50Lng7XG4gICAgICBjb25zdCBkaXN0YW5jZUxlZnRSaWdodCA9IHRoaXMudGFyZ2V0LnggLSAoZWxlbWVudC54ICsgZWxlbWVudC53aWR0aCk7XG4gICAgICBjb25zdCBkaXN0YW5jZUNlbnRlckNlbnRlciA9IHRoaXMudGFyZ2V0LmdyYXZpdHlDZW50ZXIueCAtIGVsZW1lbnQuZ3Jhdml0eUNlbnRlci54O1xuICAgICAgY29uc3QgZGlzdGFuY2VSaWdodExlZnQgPSAodGhpcy50YXJnZXQueCArIHRoaXMudGFyZ2V0LndpZHRoKSAtIGVsZW1lbnQueDtcbiAgICAgIGNvbnN0IGRpc3RhbmNlUmlnaHRSaWdodCA9ICh0aGlzLnRhcmdldC54ICsgdGhpcy50YXJnZXQud2lkdGgpIC0gKGVsZW1lbnQueCArIGVsZW1lbnQud2lkdGgpO1xuXG4gICAgICBpZiAoXG4gICAgICAgICAgTWF0aC5hYnMoZGlzdGFuY2VMZWZ0TGVmdCkgPD0gdGhpcy5hbGlnblRocmVzaG9sZCB8fFxuICAgICAgICAgIE1hdGguYWJzKGRpc3RhbmNlTGVmdFJpZ2h0KSA8PSB0aGlzLmFsaWduVGhyZXNob2xkIHx8XG4gICAgICAgICAgTWF0aC5hYnMoZGlzdGFuY2VDZW50ZXJDZW50ZXIpIDw9IHRoaXMuYWxpZ25UaHJlc2hvbGQgfHxcbiAgICAgICAgICBNYXRoLmFicyhkaXN0YW5jZVJpZ2h0TGVmdCkgPD0gdGhpcy5hbGlnblRocmVzaG9sZCB8fFxuICAgICAgICAgIE1hdGguYWJzKGRpc3RhbmNlUmlnaHRSaWdodCkgPD0gdGhpcy5hbGlnblRocmVzaG9sZFxuICAgICAgKSB7XG4gICAgICAgIGlmIChtaW5EaXN0YW5jZSA9PT0gdW5kZWZpbmVkIHx8IE1hdGguYWJzKGRpc3RhbmNlQ2VudGVyQ2VudGVyKSA8IE1hdGguYWJzKG1pbkRpc3RhbmNlKSkge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VDZW50ZXJDZW50ZXI7XG4gICAgICAgICAgbmVhcmVzdCA9IGVsZW1lbnQuZ3Jhdml0eUNlbnRlci54O1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyhkaXN0YW5jZUxlZnRMZWZ0KSA8IE1hdGguYWJzKG1pbkRpc3RhbmNlKSkge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VMZWZ0TGVmdDtcbiAgICAgICAgICBuZWFyZXN0ID0gZWxlbWVudC54O1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyhkaXN0YW5jZVJpZ2h0UmlnaHQpIDwgTWF0aC5hYnMobWluRGlzdGFuY2UpKSB7XG4gICAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZVJpZ2h0UmlnaHQ7XG4gICAgICAgICAgbmVhcmVzdCA9IGVsZW1lbnQueCArIGVsZW1lbnQud2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlTGVmdFJpZ2h0KSA8IE1hdGguYWJzKG1pbkRpc3RhbmNlKSkge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VMZWZ0UmlnaHQ7XG4gICAgICAgICAgbmVhcmVzdCA9IGVsZW1lbnQueCArIGVsZW1lbnQud2lkdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlUmlnaHRMZWZ0KSA8IE1hdGguYWJzKG1pbkRpc3RhbmNlKSkge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VSaWdodExlZnQ7XG4gICAgICAgICAgbmVhcmVzdCA9IGVsZW1lbnQueDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyB2YWx1ZTogbmVhcmVzdCwgZGlzdGFuY2U6IG1pbkRpc3RhbmNlIH07XG4gIH1cblxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgbmVhcmVzdCBjb29yZGluYXRlIG9uIGEgc3BlY2lmaWVkIGF4aXMuXG4gICAqIEByZXR1cm5zIFRoZSBuZWFyZXN0IGNvb3JkaW5hdGUgYW5kIGl0cyBkaXN0YW5jZS5cbiAgICovXG4gIHB1YmxpYyBmaW5kTmVhcmVzdENvb3JkaW5hdGVCeVkoKTogSU5lYXJlc3RDb29yZGluYXRlUmVzdWx0IHtcbiAgICBsZXQgbmVhcmVzdDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGxldCBtaW5EaXN0YW5jZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHRoaXMuZWxlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRpc3RhbmNlVG9wVG9wID0gdGhpcy50YXJnZXQueSAtIGVsZW1lbnQueTtcbiAgICAgIGNvbnN0IGRpc3RhbmNlVG9wQm90dG9tID0gdGhpcy50YXJnZXQueSAtIChlbGVtZW50LnkgKyBlbGVtZW50LmhlaWdodCk7XG4gICAgICBjb25zdCBkaXN0YW5jZUNlbnRlckNlbnRlciA9IHRoaXMudGFyZ2V0LmdyYXZpdHlDZW50ZXIueSAtIGVsZW1lbnQuZ3Jhdml0eUNlbnRlci55O1xuICAgICAgY29uc3QgZGlzdGFuY2VCb3R0b21Ub3AgPSAodGhpcy50YXJnZXQueSArIHRoaXMudGFyZ2V0LmhlaWdodCkgLSBlbGVtZW50Lnk7XG4gICAgICBjb25zdCBkaXN0YW5jZUJvdHRvbUJvdHRvbSA9ICh0aGlzLnRhcmdldC55ICsgdGhpcy50YXJnZXQuaGVpZ2h0KSAtIChlbGVtZW50LnkgKyBlbGVtZW50LmhlaWdodCk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgICBNYXRoLmFicyhkaXN0YW5jZVRvcFRvcCkgPD0gdGhpcy5hbGlnblRocmVzaG9sZCB8fFxuICAgICAgICAgIE1hdGguYWJzKGRpc3RhbmNlVG9wQm90dG9tKSA8PSB0aGlzLmFsaWduVGhyZXNob2xkIHx8XG4gICAgICAgICAgTWF0aC5hYnMoZGlzdGFuY2VDZW50ZXJDZW50ZXIpIDw9IHRoaXMuYWxpZ25UaHJlc2hvbGQgfHxcbiAgICAgICAgICBNYXRoLmFicyhkaXN0YW5jZUJvdHRvbVRvcCkgPD0gdGhpcy5hbGlnblRocmVzaG9sZCB8fFxuICAgICAgICAgIE1hdGguYWJzKGRpc3RhbmNlQm90dG9tQm90dG9tKSA8PSB0aGlzLmFsaWduVGhyZXNob2xkXG4gICAgICApIHtcbiAgICAgICAgaWYgKG1pbkRpc3RhbmNlID09PSB1bmRlZmluZWQgfHwgTWF0aC5hYnMoZGlzdGFuY2VDZW50ZXJDZW50ZXIpIDwgTWF0aC5hYnMobWluRGlzdGFuY2UpKSB7XG4gICAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZUNlbnRlckNlbnRlcjtcbiAgICAgICAgICBuZWFyZXN0ID0gZWxlbWVudC5ncmF2aXR5Q2VudGVyLnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlVG9wVG9wKSA8IE1hdGguYWJzKG1pbkRpc3RhbmNlKSkge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VUb3BUb3A7XG4gICAgICAgICAgbmVhcmVzdCA9IGVsZW1lbnQueTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoTWF0aC5hYnMoZGlzdGFuY2VCb3R0b21Cb3R0b20pIDwgTWF0aC5hYnMobWluRGlzdGFuY2UpKSB7XG4gICAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZUJvdHRvbUJvdHRvbTtcbiAgICAgICAgICBuZWFyZXN0ID0gZWxlbWVudC55ICsgZWxlbWVudC5oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE1hdGguYWJzKGRpc3RhbmNlVG9wQm90dG9tKSA8IE1hdGguYWJzKG1pbkRpc3RhbmNlKSkge1xuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdGFuY2VUb3BCb3R0b207XG4gICAgICAgICAgbmVhcmVzdCA9IGVsZW1lbnQueSArIGVsZW1lbnQuaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChNYXRoLmFicyhkaXN0YW5jZUJvdHRvbVRvcCkgPCBNYXRoLmFicyhtaW5EaXN0YW5jZSkpIHtcbiAgICAgICAgICBtaW5EaXN0YW5jZSA9IGRpc3RhbmNlQm90dG9tVG9wO1xuICAgICAgICAgIG5lYXJlc3QgPSBlbGVtZW50Lnk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyB2YWx1ZTogbmVhcmVzdCwgZGlzdGFuY2U6IG1pbkRpc3RhbmNlIH07XG4gIH1cbn1cblxuIl19
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { IRect } from '@foblex/2d';
|
|
2
|
-
import { INearestCoordinateResult } from './i-nearest-coordinate-result';
|
|
3
|
-
/**
|
|
4
|
-
* A class to find the nearest coordinate.
|
|
5
|
-
*/
|
|
6
|
-
export declare class NearestCoordinateFinder {
|
|
7
|
-
private alignThreshold;
|
|
8
|
-
private elements;
|
|
9
|
-
private target;
|
|
10
|
-
/**
|
|
11
|
-
* Constructor to initialize the NearestCoordinateFinder.
|
|
12
|
-
* @param elements - The array of IRect elements.
|
|
13
|
-
* @param target - The target IRect element.
|
|
14
|
-
* @param alignThreshold - The threshold to align the elements.
|
|
15
|
-
*/
|
|
16
|
-
constructor(elements: IRect[], target: IRect, alignThreshold?: number);
|
|
17
|
-
/**
|
|
18
|
-
* Finds the nearest coordinate on a specified axis.
|
|
19
|
-
* @returns The nearest coordinate and its distance.
|
|
20
|
-
*/
|
|
21
|
-
findNearestCoordinateByX(): INearestCoordinateResult;
|
|
22
|
-
/**
|
|
23
|
-
* Finds the nearest coordinate on a specified axis.
|
|
24
|
-
* @returns The nearest coordinate and its distance.
|
|
25
|
-
*/
|
|
26
|
-
findNearestCoordinateByY(): INearestCoordinateResult;
|
|
27
|
-
}
|