flocc 0.5.21 → 0.5.22
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/dist/environments/Environment.d.ts +38 -0
- package/dist/flocc.es.js +375 -87
- package/dist/flocc.js +375 -87
- package/dist/renderers/CanvasRenderer.d.ts +58 -0
- package/package.json +1 -1
- package/dist/environments/NewEnvironment.d.ts +0 -76
- package/dist/helpers/BS.d.ts +0 -6
- package/dist/types/instanceOfPoint.d.ts +0 -2
- package/dist/types/isAgent.d.ts +0 -2
- package/dist/utils/copyArray.d.ts +0 -10
- package/dist/utils/lcg.d.ts +0 -1
- package/dist/utils/randomizeOrder.d.ts +0 -12
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
/// <reference path="../src/renderers/CanvasRendererOptions.d.ts" />
|
|
2
2
|
import { AbstractRenderer } from "./AbstractRenderer";
|
|
3
3
|
import type { Environment } from "../environments/Environment";
|
|
4
|
+
import type { Agent } from "../agents/Agent";
|
|
5
|
+
/** @hidden */
|
|
6
|
+
declare type InteractiveEventName = "click" | "hover" | "unhover";
|
|
7
|
+
/** @hidden */
|
|
8
|
+
declare type InteractiveCallback = (agent: Agent, event: MouseEvent) => void;
|
|
4
9
|
/**
|
|
5
10
|
* A `CanvasRenderer` renders an {@linkcode Environment} spatially in two dimensions.
|
|
6
11
|
* Importantly, it expects that all {@linkcode Agent}s in the `Environment`
|
|
@@ -19,6 +24,12 @@ import type { Environment } from "../environments/Environment";
|
|
|
19
24
|
* - `"triangle"` — Draws a triangle centered at the `Agent`'s `"x"` / `"y"` values.
|
|
20
25
|
* - Also uses the `"size"` value.
|
|
21
26
|
*
|
|
27
|
+
* When `interactive` is set to `true` in the options, the renderer supports:
|
|
28
|
+
* - **Click/hover detection** — Use {@linkcode on} to listen for `"click"`, `"hover"`, and `"unhover"` events on agents.
|
|
29
|
+
* - **Agent selection** — Clicking an agent selects it (highlighted with a stroke). Access selected agents via {@linkcode selected}.
|
|
30
|
+
* - **Pan** — Click and drag on empty space to pan.
|
|
31
|
+
* - **Zoom** — Scroll to zoom in/out (bounded by `zoomMin` / `zoomMax`).
|
|
32
|
+
*
|
|
22
33
|
* @since 0.0.11
|
|
23
34
|
*/
|
|
24
35
|
declare class CanvasRenderer extends AbstractRenderer {
|
|
@@ -28,6 +39,20 @@ declare class CanvasRenderer extends AbstractRenderer {
|
|
|
28
39
|
buffer: HTMLCanvasElement;
|
|
29
40
|
/** @hidden */
|
|
30
41
|
terrainBuffer: HTMLCanvasElement;
|
|
42
|
+
/** The currently selected agents (only used when `interactive` is `true`). */
|
|
43
|
+
selected: Agent[];
|
|
44
|
+
/** @hidden */
|
|
45
|
+
private _listeners;
|
|
46
|
+
/** @hidden */
|
|
47
|
+
private _hoveredAgent;
|
|
48
|
+
/** @hidden */
|
|
49
|
+
private _isPanning;
|
|
50
|
+
/** @hidden */
|
|
51
|
+
private _panStart;
|
|
52
|
+
/** @hidden */
|
|
53
|
+
private _panOriginStart;
|
|
54
|
+
/** @hidden */
|
|
55
|
+
private _boundHandlers;
|
|
31
56
|
/**
|
|
32
57
|
* The first parameter must be the {@linkcode Environment} that this
|
|
33
58
|
* `CanvasRenderer` will render.
|
|
@@ -39,12 +64,40 @@ declare class CanvasRenderer extends AbstractRenderer {
|
|
|
39
64
|
* - `connectionOpacity` (*number* = `1`) — For `Environment`s using a `Network`, the opacity of lines
|
|
40
65
|
* - `connectionWidth` (*number* = `1`) — For `Environment`s using a `Network`, the width of lines
|
|
41
66
|
* - `height` (*number* = `500`) — The height, in pixels, of the canvas on which to render
|
|
67
|
+
* - `interactive` (*boolean* = `false`) — Enables interactive features (click/hover detection, selection, pan, zoom)
|
|
68
|
+
* - `onSelect` (*function*) — Optional callback when an agent is selected or deselected
|
|
42
69
|
* - `origin` (*{ x: number; y: number }* = `{ x: 0, y: 0 }`) — The coordinate of the upper-left point of the space to be rendered
|
|
43
70
|
* - `scale` (*number* = `1`) — The scale at which to render (the larger the scale, the smaller the size of the space that is actually rendered)
|
|
44
71
|
* - `trace` (*boolean* = `false`) — If `true`, the renderer will not clear old drawings, causing the `Agent`s to appear to *trace* their paths across space
|
|
45
72
|
* - `width` (*number* = `500`) — The width, in pixels, of the canvas on which to render
|
|
73
|
+
* - `zoomMin` (*number* = `0.1`) — Minimum scale when zooming
|
|
74
|
+
* - `zoomMax` (*number* = `10`) — Maximum scale when zooming
|
|
46
75
|
*/
|
|
47
76
|
constructor(environment: Environment, opts: CanvasRendererOptions);
|
|
77
|
+
/**
|
|
78
|
+
* Register a callback for an interactive event.
|
|
79
|
+
* Supported event names: `"click"`, `"hover"`, `"unhover"`.
|
|
80
|
+
*
|
|
81
|
+
* ```js
|
|
82
|
+
* renderer.on("click", (agent, event) => {
|
|
83
|
+
* console.log("Clicked agent:", agent.id);
|
|
84
|
+
* });
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @param eventName - The event to listen for.
|
|
88
|
+
* @param callback - The callback, invoked with the `Agent` and the `MouseEvent`.
|
|
89
|
+
*/
|
|
90
|
+
on(eventName: InteractiveEventName, callback: InteractiveCallback): void;
|
|
91
|
+
/** @hidden */
|
|
92
|
+
private _emit;
|
|
93
|
+
/**
|
|
94
|
+
* Given a mouse event, return the agent at that position (if any).
|
|
95
|
+
* Hit-testing accounts for the agent's shape and size.
|
|
96
|
+
* @hidden
|
|
97
|
+
*/
|
|
98
|
+
_agentAtPoint(clientX: number, clientY: number): Agent | null;
|
|
99
|
+
/** @hidden */
|
|
100
|
+
private _setupInteractiveListeners;
|
|
48
101
|
/** @hidden */
|
|
49
102
|
x(v: number): number;
|
|
50
103
|
/** @hidden */
|
|
@@ -67,6 +120,11 @@ declare class CanvasRenderer extends AbstractRenderer {
|
|
|
67
120
|
drawRect(x: number, y: number, width: number, height: number): void;
|
|
68
121
|
/** @hidden */
|
|
69
122
|
drawRectWrap(x: number, y: number, w: number, h: number): void;
|
|
123
|
+
/**
|
|
124
|
+
* Draw a selection highlight around the given agent.
|
|
125
|
+
* @hidden
|
|
126
|
+
*/
|
|
127
|
+
private _drawSelectionHighlight;
|
|
70
128
|
render(): void;
|
|
71
129
|
}
|
|
72
130
|
export { CanvasRenderer };
|
package/package.json
CHANGED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/// <reference path="../src/agents/Agent.d.ts" />
|
|
2
|
-
/// <reference path="../src/types/Data.d.ts" />
|
|
3
|
-
/// <reference path="../src/renderers/Renderer.d.ts" />
|
|
4
|
-
/// <reference path="../src/environments/EnvironmentHelper.d.ts" />
|
|
5
|
-
/// <reference path="../src/environments/EnvironmentOptions.d.ts" />
|
|
6
|
-
declare type NewRule = (agent: Agent) => Data;
|
|
7
|
-
interface Helpers {
|
|
8
|
-
kdtree: EnvironmentHelper;
|
|
9
|
-
network: EnvironmentHelper;
|
|
10
|
-
}
|
|
11
|
-
export interface TickOptions {
|
|
12
|
-
count?: number;
|
|
13
|
-
randomizeOrder?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export declare const defaultTickOptions: TickOptions;
|
|
16
|
-
/**
|
|
17
|
-
* From the parameter passed to .tick, get a structured TickOptions object.
|
|
18
|
-
* @param {number | TickOptions} opts
|
|
19
|
-
*/
|
|
20
|
-
export declare const getTickOptions: (opts?: number | TickOptions) => TickOptions;
|
|
21
|
-
interface MemoValue {
|
|
22
|
-
value: any;
|
|
23
|
-
time: number;
|
|
24
|
-
}
|
|
25
|
-
declare class NewEnvironment {
|
|
26
|
-
agents: number;
|
|
27
|
-
cache: Map<string, MemoValue>;
|
|
28
|
-
current: number;
|
|
29
|
-
data: Map<string, any[]>;
|
|
30
|
-
ids: string[];
|
|
31
|
-
idsToIndices: {
|
|
32
|
-
[key: string]: number;
|
|
33
|
-
};
|
|
34
|
-
helpers: Helpers;
|
|
35
|
-
opts: EnvironmentOptions;
|
|
36
|
-
nextData: Map<string, any[]>;
|
|
37
|
-
rule: NewRule;
|
|
38
|
-
renderers: Renderer[];
|
|
39
|
-
width: number;
|
|
40
|
-
height: number;
|
|
41
|
-
time: number;
|
|
42
|
-
constructor(opts?: EnvironmentOptions);
|
|
43
|
-
static isAgent(a: any): a is Agent;
|
|
44
|
-
addAgent(data: Data): Agent;
|
|
45
|
-
/**
|
|
46
|
-
* Remove an agent from the environment.
|
|
47
|
-
* @param {Agent} agent
|
|
48
|
-
*/
|
|
49
|
-
removeAgent(agent: Agent): void;
|
|
50
|
-
/**
|
|
51
|
-
* Remove an agent from the environment by its ID.
|
|
52
|
-
* @param {string} id
|
|
53
|
-
*/
|
|
54
|
-
removeAgentById(id: string): void;
|
|
55
|
-
_get(i: number, key: string): any;
|
|
56
|
-
_getData(i: number): Data;
|
|
57
|
-
_set(i: number, key: string | Data, value?: any): void;
|
|
58
|
-
increment(i: number, key: string, n: number): void;
|
|
59
|
-
decrement(i: number, key: string, n: number): void;
|
|
60
|
-
enqueue(i: number, data: Data): void;
|
|
61
|
-
getAgent(i: number): Agent;
|
|
62
|
-
getAgents(): Agent[];
|
|
63
|
-
getAgentById(id: string): Agent;
|
|
64
|
-
/**
|
|
65
|
-
* Removes all agents from the environment.
|
|
66
|
-
*/
|
|
67
|
-
clear(): void;
|
|
68
|
-
addRule(rule: NewRule): void;
|
|
69
|
-
tick(opts?: number | TickOptions): void;
|
|
70
|
-
/**
|
|
71
|
-
* Use a helper with this environment.
|
|
72
|
-
* @param {EnvironmentHelper} e
|
|
73
|
-
*/
|
|
74
|
-
use(e: EnvironmentHelper): void;
|
|
75
|
-
}
|
|
76
|
-
export { NewEnvironment };
|
package/dist/helpers/BS.d.ts
DELETED
package/dist/types/isAgent.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copies the values of `source` to `arr`
|
|
3
|
-
* or to a new Array.
|
|
4
|
-
*
|
|
5
|
-
* @private
|
|
6
|
-
* @param {Array} source The Array to copy values from.
|
|
7
|
-
* @param {Array} [arr=[]] The Array to copy values to.
|
|
8
|
-
* @returns {Array}
|
|
9
|
-
*/
|
|
10
|
-
export default function copyArray<T>(source: T[], arr?: T[]): T[];
|
package/dist/utils/lcg.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function lcg(modulus: number, a: number, c: number, seed: number): Generator<number>;
|