@oh-just-another/scene 0.58.0 → 0.59.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/CHANGELOG.md +18 -0
- package/README.md +34 -21
- package/dist/.tsbuildinfo +1 -1
- package/dist/anchors.d.ts.map +1 -1
- package/dist/anchors.js +2 -1
- package/dist/anchors.js.map +1 -1
- package/dist/constants.d.ts +45 -8
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +45 -8
- package/dist/constants.js.map +1 -1
- package/dist/edge-curve.d.ts +1 -3
- package/dist/edge-curve.d.ts.map +1 -1
- package/dist/edge-curve.js +3 -18
- package/dist/edge-curve.js.map +1 -1
- package/dist/edge-geometry.d.ts +3 -3
- package/dist/edge-geometry.d.ts.map +1 -1
- package/dist/edge-geometry.js +9 -38
- package/dist/edge-geometry.js.map +1 -1
- package/dist/edge.d.ts +7 -8
- package/dist/edge.d.ts.map +1 -1
- package/dist/elbow-link.d.ts +2 -2
- package/dist/elbow-link.d.ts.map +1 -1
- package/dist/elbow-link.js +4 -8
- package/dist/elbow-link.js.map +1 -1
- package/dist/elbow-router.d.ts +1 -1
- package/dist/elbow-router.d.ts.map +1 -1
- package/dist/elbow-router.js +1 -5
- package/dist/elbow-router.js.map +1 -1
- package/dist/ellipse.d.ts +8 -0
- package/dist/ellipse.d.ts.map +1 -0
- package/dist/ellipse.js +10 -0
- package/dist/ellipse.js.map +1 -0
- package/dist/heading.d.ts +4 -4
- package/dist/heading.js +2 -2
- package/dist/hydrate.d.ts +46 -0
- package/dist/hydrate.d.ts.map +1 -0
- package/dist/hydrate.js +59 -0
- package/dist/hydrate.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +1 -6
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +15 -21
- package/dist/layout.js.map +1 -1
- package/dist/order.d.ts +10 -0
- package/dist/order.d.ts.map +1 -0
- package/dist/order.js +5 -0
- package/dist/order.js.map +1 -0
- package/dist/outline.d.ts +1 -1
- package/dist/outline.d.ts.map +1 -1
- package/dist/outline.js +11 -24
- package/dist/outline.js.map +1 -1
- package/dist/queries.d.ts.map +1 -1
- package/dist/queries.js +11 -24
- package/dist/queries.js.map +1 -1
- package/dist/scene.d.ts +7 -1
- package/dist/scene.d.ts.map +1 -1
- package/dist/scene.js +15 -2
- package/dist/scene.js.map +1 -1
- package/dist/shape-transform.d.ts +8 -0
- package/dist/shape-transform.d.ts.map +1 -0
- package/dist/shape-transform.js +15 -0
- package/dist/shape-transform.js.map +1 -0
- package/dist/shape.d.ts +7 -8
- package/dist/shape.d.ts.map +1 -1
- package/dist/shape.js.map +1 -1
- package/dist/snap.d.ts +2 -2
- package/dist/snap.js +5 -5
- package/dist/snap.js.map +1 -1
- package/dist/style.d.ts +2 -2
- package/dist/viewport.d.ts +16 -30
- package/dist/viewport.d.ts.map +1 -1
- package/dist/viewport.js +6 -13
- package/dist/viewport.js.map +1 -1
- package/package.json +5 -4
package/dist/viewport.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import type { Transform, Vec2 } from "@oh-just-another/types";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* `"lines"` —
|
|
5
|
-
* `"dots"` — a dot at every grid intersection.
|
|
6
|
-
* free-form diagramming (standard style).
|
|
3
|
+
* How the background grid is painted.
|
|
4
|
+
* `"lines"` — ruled grid lines (default).
|
|
5
|
+
* `"dots"` — a dot at every grid intersection.
|
|
7
6
|
*
|
|
8
|
-
* Snap behaviour is identical between styles
|
|
9
|
-
* differs.
|
|
7
|
+
* Snap behaviour is identical between styles; only the paint differs.
|
|
10
8
|
*/
|
|
11
9
|
export type GridStyle = "lines" | "dots";
|
|
12
10
|
/**
|
|
@@ -26,37 +24,25 @@ export interface Viewport {
|
|
|
26
24
|
readonly height: number;
|
|
27
25
|
};
|
|
28
26
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* value. Snap-to-grid uses it when present and falls back to
|
|
32
|
-
* {@link DEFAULT_GRID_SPACING} when the grid is hidden but snapping
|
|
33
|
-
* is still on (see {@link resolveSnapSpacing}).
|
|
34
|
-
*/
|
|
35
|
-
readonly gridSize?: number;
|
|
36
|
-
/**
|
|
37
|
-
* How the grid is painted. Default `"lines"` for backwards-compat;
|
|
38
|
-
* snap math doesn't read this field. Renderers fall back to lines
|
|
39
|
-
* when the field is missing.
|
|
27
|
+
* Whether the background grid is drawn for this scene. Spacing is fixed
|
|
28
|
+
* at {@link DEFAULT_GRID_SPACING}; this flag controls only visibility.
|
|
40
29
|
*/
|
|
30
|
+
readonly gridEnabled: boolean;
|
|
31
|
+
/** How the grid is painted. Renderers fall back to lines when unset. */
|
|
41
32
|
readonly gridStyle?: GridStyle;
|
|
42
33
|
/**
|
|
43
|
-
*
|
|
44
|
-
* (see {@link isSnapToGridEnabled}). Snapping
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* confusing — so this flag only matters when a grid is on.
|
|
34
|
+
* Programmatic snap opt-out. `undefined` is treated as ON
|
|
35
|
+
* (see {@link isSnapToGridEnabled}). Snapping also requires the grid to be
|
|
36
|
+
* enabled — snapping to a hidden grid is confusing — so this flag only
|
|
37
|
+
* matters while `gridEnabled` is true.
|
|
48
38
|
*/
|
|
49
39
|
readonly snapToGrid?: boolean;
|
|
50
40
|
}
|
|
41
|
+
/** World-unit spacing snap-to-grid rounds to (the fixed grid spacing). */
|
|
42
|
+
export declare const resolveSnapSpacing: () => number;
|
|
51
43
|
/**
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* fallback — so snapping keeps working when the grid is hidden.
|
|
55
|
-
*/
|
|
56
|
-
export declare const resolveSnapSpacing: (viewport: Viewport) => number;
|
|
57
|
-
/**
|
|
58
|
-
* Whether snap-to-grid is enabled for this viewport. `undefined`
|
|
59
|
-
* (legacy / fresh documents) counts as ON — the product default.
|
|
44
|
+
* Whether snap-to-grid is enabled for this viewport. `undefined` counts as
|
|
45
|
+
* ON — the product default.
|
|
60
46
|
*/
|
|
61
47
|
export declare const isSnapToGridEnabled: (viewport: Viewport) => boolean;
|
|
62
48
|
export declare const DEFAULT_VIEWPORT: Viewport;
|
package/dist/viewport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAI9D
|
|
1
|
+
{"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAI9D;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEzC;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,QAAO,MAA8B,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,QAAQ,KAAG,OAAsC,CAAC;AAEhG,eAAO,MAAM,gBAAgB,EAAE,QAO7B,CAAC;AAEH,gCAAgC;AAChC,eAAO,MAAM,gBAAgB,GAAI,UAAU,QAAQ,KAAG,SAMrD,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,GAAI,UAAU,QAAQ,KAAG,SACV,CAAC;AAE7C;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,UAAU,QAAQ,EAAE,aAAa,IAAI,KAAG,QAM5D,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,MAAM,GAAI,UAAU,QAAQ,EAAE,QAAQ,MAAM,EAAE,aAAa,IAAI,KAAG,QAW9E,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,UAAU,QAAQ,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,QAGzE,CAAC"}
|
package/dist/viewport.js
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { matrix } from "@oh-just-another/math";
|
|
2
2
|
import { DEFAULT_GRID_SPACING } from "./constants.js";
|
|
3
|
+
/** World-unit spacing snap-to-grid rounds to (the fixed grid spacing). */
|
|
4
|
+
export const resolveSnapSpacing = () => DEFAULT_GRID_SPACING;
|
|
3
5
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* fallback — so snapping keeps working when the grid is hidden.
|
|
7
|
-
*/
|
|
8
|
-
export const resolveSnapSpacing = (viewport) => viewport.gridSize && viewport.gridSize > 0 ? viewport.gridSize : DEFAULT_GRID_SPACING;
|
|
9
|
-
/**
|
|
10
|
-
* Whether snap-to-grid is enabled for this viewport. `undefined`
|
|
11
|
-
* (legacy / fresh documents) counts as ON — the product default.
|
|
6
|
+
* Whether snap-to-grid is enabled for this viewport. `undefined` counts as
|
|
7
|
+
* ON — the product default.
|
|
12
8
|
*/
|
|
13
9
|
export const isSnapToGridEnabled = (viewport) => viewport.snapToGrid ?? true;
|
|
14
10
|
export const DEFAULT_VIEWPORT = Object.freeze({
|
|
@@ -16,11 +12,8 @@ export const DEFAULT_VIEWPORT = Object.freeze({
|
|
|
16
12
|
zoom: 1,
|
|
17
13
|
rotation: 0,
|
|
18
14
|
size: { width: 0, height: 0 },
|
|
19
|
-
// Grid
|
|
20
|
-
|
|
21
|
-
// Tune the default spacing in `constants.ts` (`DEFAULT_GRID_SPACING`); pass a
|
|
22
|
-
// scene with `gridSize: 0` (or omit it) for a gridless, snap-free canvas.
|
|
23
|
-
gridSize: DEFAULT_GRID_SPACING,
|
|
15
|
+
// Grid off by default; hosts enable it per scene via `gridEnabled`.
|
|
16
|
+
gridEnabled: false,
|
|
24
17
|
});
|
|
25
18
|
/** World → screen transform. */
|
|
26
19
|
export const getWorldToScreen = (viewport) => {
|
package/dist/viewport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"viewport.js","sourceRoot":"","sources":["../src/viewport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAwCtD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC,oBAAoB,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAkB,EAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC;AAEhG,MAAM,CAAC,MAAM,gBAAgB,GAAa,MAAM,CAAC,MAAM,CAAC;IACtD,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;IACnB,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAC7B,oEAAoE;IACpE,WAAW,EAAE,KAAK;CACnB,CAAC,CAAC;AAEH,gCAAgC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAkB,EAAa,EAAE;IAChE,2DAA2D;IAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAkB,EAAa,EAAE,CAChE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,QAAkB,EAAE,WAAiB,EAAY,EAAE,CAAC,CAAC;IACzE,GAAG,QAAQ;IACX,GAAG,EAAE;QACH,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI;QACjD,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI;KAClD;CACF,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAkB,EAAE,MAAc,EAAE,WAAiB,EAAY,EAAE;IACxF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;IACvC,gEAAgE;IAChE,OAAO;QACL,GAAG,QAAQ;QACX,IAAI,EAAE,OAAO;QACb,GAAG,EAAE;YACH,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM;YAC5D,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM;SAC7D;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,QAAkB,EAAE,KAAa,EAAE,MAAc,EAAY,EAAE,CAAC,CAAC;IACtF,GAAG,QAAQ;IACX,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;CACxB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-just-another/scene",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "scene
|
|
3
|
+
"version": "0.59.0",
|
|
4
|
+
"description": "Immutable diagram scene model: elements, links, layers, patch-based operations, and a fast spatial index.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Rustam Garifulin <rustam@n69.in>",
|
|
7
7
|
"repository": {
|
|
@@ -39,15 +39,16 @@
|
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"fractional-keys": "
|
|
42
|
+
"fractional-keys": "0.1.1",
|
|
43
43
|
"@oh-just-another/types": "0.57.0",
|
|
44
|
-
"@oh-just-another/math": "0.
|
|
44
|
+
"@oh-just-another/math": "0.58.0"
|
|
45
45
|
},
|
|
46
46
|
"scripts": {
|
|
47
47
|
"build": "tsc -b tsconfig.build.json",
|
|
48
48
|
"typecheck": "tsc --noEmit",
|
|
49
49
|
"test": "vitest run",
|
|
50
50
|
"test:watch": "vitest",
|
|
51
|
+
"bench": "vitest bench --run",
|
|
51
52
|
"lint": "eslint src tests",
|
|
52
53
|
"clean": "rm -rf dist *.tsbuildinfo"
|
|
53
54
|
}
|