@oh-just-another/scene 0.59.0 → 0.60.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 +39 -0
- package/README.md +2 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/brush-outline.d.ts +21 -0
- package/dist/brush-outline.d.ts.map +1 -0
- package/dist/brush-outline.js +142 -0
- package/dist/brush-outline.js.map +1 -0
- package/dist/constants.d.ts +33 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +33 -0
- package/dist/constants.js.map +1 -1
- package/dist/edge-geometry.d.ts +15 -0
- package/dist/edge-geometry.d.ts.map +1 -1
- package/dist/edge-geometry.js +21 -10
- package/dist/edge-geometry.js.map +1 -1
- package/dist/edge.d.ts +12 -0
- package/dist/edge.d.ts.map +1 -1
- package/dist/edge.js +17 -1
- package/dist/edge.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/shape-transform.d.ts +6 -0
- package/dist/shape-transform.d.ts.map +1 -1
- package/dist/shape-transform.js +18 -0
- package/dist/shape-transform.js.map +1 -1
- package/dist/shape.d.ts +45 -0
- package/dist/shape.d.ts.map +1 -1
- package/dist/shape.js +8 -0
- package/dist/shape.js.map +1 -1
- package/dist/text-runs.d.ts +44 -0
- package/dist/text-runs.d.ts.map +1 -0
- package/dist/text-runs.js +139 -0
- package/dist/text-runs.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { TextStyle } from "./style.js";
|
|
2
|
+
import type { TextElement } from "./shape.js";
|
|
3
|
+
/**
|
|
4
|
+
* A styled segment of a text block. `text` is the raw substring; `style`
|
|
5
|
+
* is a PARTIAL overlay merged over the owning {@link TextElement}'s base
|
|
6
|
+
* `style` (element style wins for fields the run omits). Omitting `style`
|
|
7
|
+
* means "inherit the element style verbatim".
|
|
8
|
+
*
|
|
9
|
+
* Runs are an ADDITIVE overlay: the element's flat `text` stays the source
|
|
10
|
+
* of truth and MUST equal `runs.map(r => r.text).join("")`. A `TextElement`
|
|
11
|
+
* with no `runs` (or an empty array) renders exactly as before this feature
|
|
12
|
+
* existed — one uniform style — so plain-text scenes are untouched.
|
|
13
|
+
*/
|
|
14
|
+
export interface TextRun {
|
|
15
|
+
readonly text: string;
|
|
16
|
+
readonly style?: Partial<TextStyle>;
|
|
17
|
+
}
|
|
18
|
+
/** Concatenated raw text of a run list (the flat-text source of truth). */
|
|
19
|
+
export declare const runsToText: (runs: readonly TextRun[]) => string;
|
|
20
|
+
/**
|
|
21
|
+
* Drop empty-text runs and coalesce adjacent runs with identical styling.
|
|
22
|
+
* Returns a compact, canonical run list. An all-empty input yields `[]`.
|
|
23
|
+
*/
|
|
24
|
+
export declare const normalizeRuns: (runs: readonly TextRun[]) => TextRun[];
|
|
25
|
+
/**
|
|
26
|
+
* The runs that fall inside the character range `[from, to)` of a text block,
|
|
27
|
+
* clipped at the range edges. Used by the renderer to split each visual line
|
|
28
|
+
* into per-style segments. Styles are preserved verbatim (still partial
|
|
29
|
+
* overlays over the element style).
|
|
30
|
+
*/
|
|
31
|
+
export declare const sliceRuns: (el: Pick<TextElement, "text" | "runs">, from: number, to: number) => TextRun[];
|
|
32
|
+
/**
|
|
33
|
+
* Pure operation: apply a partial {@link TextStyle} overlay to the character
|
|
34
|
+
* range `[from, to)` of a text element, returning a NEW element. The flat
|
|
35
|
+
* `text` is never touched (invariant preserved). Existing runs are split at
|
|
36
|
+
* the range boundaries and the patch is merged into the overlapping portion;
|
|
37
|
+
* adjacent runs with equal styling are coalesced.
|
|
38
|
+
*
|
|
39
|
+
* When the result collapses to a single unstyled run spanning the whole text,
|
|
40
|
+
* `runs` is dropped entirely so the element reverts to a plain text block
|
|
41
|
+
* (keeps scenes minimal and round-trips cleanly). An empty range is a no-op.
|
|
42
|
+
*/
|
|
43
|
+
export declare const applyStyleToRange: (el: TextElement, from: number, to: number, patch: Partial<TextStyle>) => TextElement;
|
|
44
|
+
//# sourceMappingURL=text-runs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-runs.d.ts","sourceRoot":"","sources":["../src/text-runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CACrC;AAED,2EAA2E;AAC3E,eAAO,MAAM,UAAU,GAAI,MAAM,SAAS,OAAO,EAAE,KAAG,MAA0C,CAAC;AAgBjG;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,SAAS,OAAO,EAAE,KAAG,OAAO,EAe/D,CAAC;AASF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GACpB,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,EACtC,MAAM,MAAM,EACZ,IAAI,MAAM,KACT,OAAO,EAkBT,CAAC;AAcF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,GAC5B,IAAI,WAAW,EACf,MAAM,MAAM,EACZ,IAAI,MAAM,EACV,OAAO,OAAO,CAAC,SAAS,CAAC,KACxB,WAiDF,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/** Concatenated raw text of a run list (the flat-text source of truth). */
|
|
2
|
+
export const runsToText = (runs) => runs.map((r) => r.text).join("");
|
|
3
|
+
/**
|
|
4
|
+
* Stable-ish key for a run style, used only to coalesce adjacent runs that
|
|
5
|
+
* carry identical styling. Sorts top-level keys so key order doesn't defeat
|
|
6
|
+
* the compare. A false "different" verdict only costs an extra (correct) run,
|
|
7
|
+
* never wrong rendering, so a shallow canonicalisation is sufficient.
|
|
8
|
+
*/
|
|
9
|
+
const styleKey = (style) => {
|
|
10
|
+
if (!style)
|
|
11
|
+
return "";
|
|
12
|
+
const entries = Object.entries(style)
|
|
13
|
+
.filter(([, v]) => v !== undefined)
|
|
14
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
15
|
+
return JSON.stringify(entries);
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Drop empty-text runs and coalesce adjacent runs with identical styling.
|
|
19
|
+
* Returns a compact, canonical run list. An all-empty input yields `[]`.
|
|
20
|
+
*/
|
|
21
|
+
export const normalizeRuns = (runs) => {
|
|
22
|
+
const out = [];
|
|
23
|
+
for (const run of runs) {
|
|
24
|
+
if (run.text === "")
|
|
25
|
+
continue;
|
|
26
|
+
const last = out[out.length - 1];
|
|
27
|
+
if (last !== undefined && styleKey(last.style) === styleKey(run.style)) {
|
|
28
|
+
out[out.length - 1] = {
|
|
29
|
+
text: last.text + run.text,
|
|
30
|
+
...(last.style !== undefined ? { style: last.style } : {}),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
out.push(run);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return out;
|
|
38
|
+
};
|
|
39
|
+
/** The run list to start from: explicit `runs`, else one run spanning `text`. */
|
|
40
|
+
const baseRuns = (el) => {
|
|
41
|
+
const runs = el.runs;
|
|
42
|
+
if (runs !== undefined && runs.length > 0)
|
|
43
|
+
return normalizeRuns(runs);
|
|
44
|
+
return el.text === "" ? [] : [{ text: el.text }];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The runs that fall inside the character range `[from, to)` of a text block,
|
|
48
|
+
* clipped at the range edges. Used by the renderer to split each visual line
|
|
49
|
+
* into per-style segments. Styles are preserved verbatim (still partial
|
|
50
|
+
* overlays over the element style).
|
|
51
|
+
*/
|
|
52
|
+
export const sliceRuns = (el, from, to) => {
|
|
53
|
+
const lo = Math.min(from, to);
|
|
54
|
+
const hi = Math.max(from, to);
|
|
55
|
+
const out = [];
|
|
56
|
+
let pos = 0;
|
|
57
|
+
for (const run of baseRuns(el)) {
|
|
58
|
+
const rStart = pos;
|
|
59
|
+
const rEnd = pos + run.text.length;
|
|
60
|
+
pos = rEnd;
|
|
61
|
+
const s = Math.max(rStart, lo);
|
|
62
|
+
const e = Math.min(rEnd, hi);
|
|
63
|
+
if (s >= e)
|
|
64
|
+
continue;
|
|
65
|
+
out.push({
|
|
66
|
+
text: run.text.slice(s - rStart, e - rStart),
|
|
67
|
+
...(run.style !== undefined ? { style: run.style } : {}),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
};
|
|
72
|
+
/** Shallow-merge `patch` over `base`, pruning keys explicitly set to undefined. */
|
|
73
|
+
const mergeStyle = (base, patch) => {
|
|
74
|
+
const merged = { ...(base ?? {}), ...patch };
|
|
75
|
+
const entries = Object.entries(merged).filter(([, v]) => v !== undefined);
|
|
76
|
+
if (entries.length === 0)
|
|
77
|
+
return undefined;
|
|
78
|
+
const cleaned = Object.fromEntries(entries);
|
|
79
|
+
return cleaned;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Pure operation: apply a partial {@link TextStyle} overlay to the character
|
|
83
|
+
* range `[from, to)` of a text element, returning a NEW element. The flat
|
|
84
|
+
* `text` is never touched (invariant preserved). Existing runs are split at
|
|
85
|
+
* the range boundaries and the patch is merged into the overlapping portion;
|
|
86
|
+
* adjacent runs with equal styling are coalesced.
|
|
87
|
+
*
|
|
88
|
+
* When the result collapses to a single unstyled run spanning the whole text,
|
|
89
|
+
* `runs` is dropped entirely so the element reverts to a plain text block
|
|
90
|
+
* (keeps scenes minimal and round-trips cleanly). An empty range is a no-op.
|
|
91
|
+
*/
|
|
92
|
+
export const applyStyleToRange = (el, from, to, patch) => {
|
|
93
|
+
const lo = Math.max(0, Math.min(from, to));
|
|
94
|
+
const hi = Math.min(el.text.length, Math.max(from, to));
|
|
95
|
+
if (lo >= hi)
|
|
96
|
+
return el;
|
|
97
|
+
const out = [];
|
|
98
|
+
let pos = 0;
|
|
99
|
+
for (const run of baseRuns(el)) {
|
|
100
|
+
const rStart = pos;
|
|
101
|
+
const rEnd = pos + run.text.length;
|
|
102
|
+
pos = rEnd;
|
|
103
|
+
const midStart = Math.max(rStart, lo);
|
|
104
|
+
const midEnd = Math.min(rEnd, hi);
|
|
105
|
+
if (midStart >= midEnd) {
|
|
106
|
+
out.push(run);
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (rStart < midStart) {
|
|
110
|
+
out.push({
|
|
111
|
+
text: run.text.slice(0, midStart - rStart),
|
|
112
|
+
...(run.style !== undefined ? { style: run.style } : {}),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
const merged = mergeStyle(run.style, patch);
|
|
116
|
+
out.push({
|
|
117
|
+
text: run.text.slice(midStart - rStart, midEnd - rStart),
|
|
118
|
+
...(merged !== undefined ? { style: merged } : {}),
|
|
119
|
+
});
|
|
120
|
+
if (midEnd < rEnd) {
|
|
121
|
+
out.push({
|
|
122
|
+
text: run.text.slice(midEnd - rStart),
|
|
123
|
+
...(run.style !== undefined ? { style: run.style } : {}),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const normalized = normalizeRuns(out);
|
|
128
|
+
const only = normalized[0];
|
|
129
|
+
if (normalized.length === 1 &&
|
|
130
|
+
only !== undefined &&
|
|
131
|
+
(only.style === undefined || Object.keys(only.style).length === 0)) {
|
|
132
|
+
// Reverted to a single uniform style → shed the overlay entirely.
|
|
133
|
+
const { runs: _drop, ...rest } = el;
|
|
134
|
+
void _drop;
|
|
135
|
+
return rest;
|
|
136
|
+
}
|
|
137
|
+
return { ...el, runs: normalized };
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=text-runs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-runs.js","sourceRoot":"","sources":["../src/text-runs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-just-another/scene",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.60.0",
|
|
4
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>",
|