@nebula-spatial/cad-loader 0.2.2 → 0.2.4
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 +16 -0
- package/README.md +22 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +1396 -1321
- package/dist/core/parser/bin-parser.d.ts +17 -4
- package/dist/index.d.ts +3 -1
- package/dist/index.js +1843 -1673
- package/dist/loader/internal/external-variant-sidecar-fetch.d.ts +1 -1
- package/dist/loader/internal/geo-loader-pipeline.d.ts +11 -0
- package/dist/loader/internal/geo-loader-worker-adapter.d.ts +6 -0
- package/dist/loader/internal/geo-node-builder.d.ts +5 -0
- package/dist/loader/internal/geo-prepare-worker-types.d.ts +8 -1
- package/dist/session/cad-document-session.d.ts +21 -0
- package/dist/shared/text-builder.d.ts +25 -0
- package/dist/workers/geo-prepare.worker.js +1207 -1110
- package/package.json +1 -1
|
@@ -1,146 +1,146 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
1
|
+
var rn = Object.defineProperty;
|
|
2
|
+
var te = (t) => {
|
|
3
3
|
throw TypeError(t);
|
|
4
4
|
};
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
class
|
|
5
|
+
var on = (t, e, n) => e in t ? rn(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
|
|
6
|
+
var Q = (t, e, n) => on(t, typeof e != "symbol" ? e + "" : e, n), sn = (t, e, n) => e.has(t) || te("Cannot " + n);
|
|
7
|
+
var rt = (t, e, n) => (sn(t, e, "read from private field"), n ? n.call(t) : e.get(t)), ee = (t, e, n) => e.has(t) ? te("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, n);
|
|
8
|
+
class f extends Error {
|
|
9
9
|
constructor(n, r) {
|
|
10
10
|
super(r);
|
|
11
|
-
|
|
11
|
+
Q(this, "code");
|
|
12
12
|
this.name = "GeoLoaderError", this.code = n;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
const
|
|
16
|
-
function
|
|
15
|
+
const Bt = 4096;
|
|
16
|
+
function Ie(t) {
|
|
17
17
|
return t >= 6 ? "u16_lw" : t >= 5 ? "u8_lw" : t >= 4 ? "u16" : "u8";
|
|
18
18
|
}
|
|
19
|
-
function
|
|
19
|
+
function Re(t) {
|
|
20
20
|
return t === "u16_lw" ? 13 : t === "u8_lw" ? 12 : t === "u16" ? 9 : 8;
|
|
21
21
|
}
|
|
22
|
-
function
|
|
22
|
+
function Ve(t, e, n) {
|
|
23
23
|
return n === "u16" || n === "u16_lw" ? t.getUint16(e + 7, !0) : t.getUint8(e + 7);
|
|
24
24
|
}
|
|
25
|
-
function
|
|
25
|
+
function an(t) {
|
|
26
26
|
return t === "u16" || t === "u16_lw" ? 2 : 1;
|
|
27
27
|
}
|
|
28
|
-
function
|
|
28
|
+
function Ge(t, e, n) {
|
|
29
29
|
if (!(n !== "u8_lw" && n !== "u16_lw"))
|
|
30
|
-
return t.getFloat32(e + 7 +
|
|
30
|
+
return t.getFloat32(e + 7 + an(n), !0);
|
|
31
31
|
}
|
|
32
|
-
function
|
|
33
|
-
if (n >
|
|
34
|
-
throw new
|
|
32
|
+
function Ne(t, e, n, r, s = t.byteLength, o = "u8") {
|
|
33
|
+
if (n > s || s > t.byteLength)
|
|
34
|
+
throw new f("E_GROUP_RANGE", "Group byte range exceeds payload length");
|
|
35
35
|
let i = n;
|
|
36
|
-
const a = r * 2,
|
|
37
|
-
if (i +
|
|
38
|
-
throw new
|
|
39
|
-
let
|
|
36
|
+
const a = r * 2, u = a * 4;
|
|
37
|
+
if (i + u > s)
|
|
38
|
+
throw new f("E_GROUP_RANGE", "Group position bytes exceed payload length");
|
|
39
|
+
let c;
|
|
40
40
|
if (a > 0) {
|
|
41
|
-
const
|
|
42
|
-
for (let
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
const p = new Uint8Array(t, i, u), h = new Uint8Array(u), y = a;
|
|
42
|
+
for (let w = 0; w < a; w++)
|
|
43
|
+
h[w * 4] = p[w], h[w * 4 + 1] = p[y + w], h[w * 4 + 2] = p[y * 2 + w], h[w * 4 + 3] = p[y * 3 + w];
|
|
44
|
+
c = new Float32Array(h.buffer);
|
|
45
45
|
} else
|
|
46
|
-
|
|
47
|
-
if (i +=
|
|
48
|
-
throw new
|
|
46
|
+
c = new Float32Array(0);
|
|
47
|
+
if (i += u, i + 4 > s)
|
|
48
|
+
throw new f("E_GROUP_RANGE", "Missing seg_count field for group");
|
|
49
49
|
const m = e.getUint32(i, !0);
|
|
50
50
|
i += 4;
|
|
51
51
|
const g = [];
|
|
52
|
-
let
|
|
53
|
-
const
|
|
54
|
-
for (let
|
|
55
|
-
if (i +
|
|
56
|
-
throw new
|
|
57
|
-
const
|
|
58
|
-
if (
|
|
59
|
-
throw new
|
|
52
|
+
let l = 0;
|
|
53
|
+
const d = Re(o);
|
|
54
|
+
for (let p = 0; p < m; p++) {
|
|
55
|
+
if (i + d > s)
|
|
56
|
+
throw new f("E_GROUP_RANGE", "Segment record exceeds payload length");
|
|
57
|
+
const h = e.getUint32(i, !0), y = e.getUint8(i + 4), w = e.getUint8(i + 5), _ = e.getUint8(i + 6), E = Ve(e, i, o), A = Ge(e, i, o);
|
|
58
|
+
if (l + h > r)
|
|
59
|
+
throw new f("E_SEGMENT_SUM", "Segment vertex_count sum exceeds group count");
|
|
60
60
|
g.push({
|
|
61
|
-
startVertex:
|
|
62
|
-
vertexCount:
|
|
63
|
-
color: [
|
|
61
|
+
startVertex: l,
|
|
62
|
+
vertexCount: h,
|
|
63
|
+
color: [y, w, _],
|
|
64
64
|
layerIndex: E,
|
|
65
|
-
...
|
|
66
|
-
}), i +=
|
|
67
|
-
const
|
|
68
|
-
if (
|
|
69
|
-
let N =
|
|
70
|
-
for (let
|
|
71
|
-
const
|
|
72
|
-
N +=
|
|
65
|
+
...A === void 0 ? {} : { lineweightPx: A }
|
|
66
|
+
}), i += d;
|
|
67
|
+
const U = l * 2;
|
|
68
|
+
if (h > 1) {
|
|
69
|
+
let N = c[U], C = c[U + 1];
|
|
70
|
+
for (let V = 1; V < h; V++) {
|
|
71
|
+
const G = U + V * 2;
|
|
72
|
+
N += c[G], C += c[G + 1], c[G] = N, c[G + 1] = C;
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
|
|
75
|
+
l += h;
|
|
76
76
|
}
|
|
77
|
-
if (
|
|
78
|
-
throw new
|
|
77
|
+
if (l !== r)
|
|
78
|
+
throw new f("E_SEGMENT_SUM", `Segment vertex_count sum ${l} does not match group count ${r}`);
|
|
79
79
|
return {
|
|
80
|
-
chunk: { pos:
|
|
80
|
+
chunk: { pos: c, count: r, segments: g },
|
|
81
81
|
offset: i
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
function
|
|
85
|
-
const
|
|
84
|
+
function un(t, e, n, r, s = "u8") {
|
|
85
|
+
const o = r * 2, i = o * 4;
|
|
86
86
|
if (n + i > t.byteLength)
|
|
87
|
-
throw new
|
|
87
|
+
throw new f("E_GROUP_RANGE", "Group position bytes exceed payload length");
|
|
88
88
|
const a = new Uint8Array(t, n, i);
|
|
89
|
-
let
|
|
90
|
-
if (
|
|
91
|
-
throw new
|
|
92
|
-
const
|
|
93
|
-
|
|
89
|
+
let u = n + i;
|
|
90
|
+
if (u + 4 > t.byteLength)
|
|
91
|
+
throw new f("E_GROUP_RANGE", "Missing seg_count field for group");
|
|
92
|
+
const c = e.getUint32(u, !0);
|
|
93
|
+
u += 4;
|
|
94
94
|
const m = [];
|
|
95
95
|
let g = 0;
|
|
96
|
-
const
|
|
97
|
-
for (let
|
|
98
|
-
if (
|
|
99
|
-
throw new
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
102
|
-
throw new
|
|
96
|
+
const l = Re(s);
|
|
97
|
+
for (let d = 0; d < c; d++) {
|
|
98
|
+
if (u + l > t.byteLength)
|
|
99
|
+
throw new f("E_GROUP_RANGE", "Segment record exceeds payload length");
|
|
100
|
+
const p = e.getUint32(u, !0), h = e.getUint8(u + 4), y = e.getUint8(u + 5), w = e.getUint8(u + 6), _ = Ve(e, u, s), E = Ge(e, u, s);
|
|
101
|
+
if (u += l, g + p > r)
|
|
102
|
+
throw new f("E_SEGMENT_SUM", "Segment vertex_count sum exceeds group count");
|
|
103
103
|
m.push({
|
|
104
104
|
startVertex: g,
|
|
105
|
-
vertexCount:
|
|
106
|
-
color: [
|
|
107
|
-
layerIndex:
|
|
105
|
+
vertexCount: p,
|
|
106
|
+
color: [h, y, w],
|
|
107
|
+
layerIndex: _,
|
|
108
108
|
...E === void 0 ? {} : { lineweightPx: E }
|
|
109
|
-
}), g +=
|
|
109
|
+
}), g += p;
|
|
110
110
|
}
|
|
111
111
|
if (g !== r)
|
|
112
|
-
throw new
|
|
112
|
+
throw new f("E_SEGMENT_SUM", `Segment vertex_count sum ${g} does not match group count ${r}`);
|
|
113
113
|
return {
|
|
114
114
|
shuffled: a,
|
|
115
|
-
plane:
|
|
115
|
+
plane: o,
|
|
116
116
|
segments: m,
|
|
117
|
-
offset:
|
|
117
|
+
offset: u
|
|
118
118
|
};
|
|
119
119
|
}
|
|
120
|
-
function
|
|
120
|
+
function ln(t, e, n, r) {
|
|
121
121
|
if (r === 0)
|
|
122
122
|
return new Float32Array(0);
|
|
123
|
-
const
|
|
124
|
-
for (let
|
|
125
|
-
o
|
|
126
|
-
return new Float32Array(
|
|
123
|
+
const s = new Uint8Array(r * 4);
|
|
124
|
+
for (let o = 0; o < r; o++)
|
|
125
|
+
s[o * 4] = t[n + o], s[o * 4 + 1] = t[e + n + o], s[o * 4 + 2] = t[e * 2 + n + o], s[o * 4 + 3] = t[e * 3 + n + o];
|
|
126
|
+
return new Float32Array(s.buffer);
|
|
127
127
|
}
|
|
128
|
-
function
|
|
129
|
-
const
|
|
128
|
+
function cn(t, e, n, r, s) {
|
|
129
|
+
const o = ln(
|
|
130
130
|
t.shuffled,
|
|
131
131
|
t.plane,
|
|
132
132
|
(e.startVertex + n) * 2,
|
|
133
133
|
r * 2
|
|
134
134
|
);
|
|
135
|
-
let i = (
|
|
135
|
+
let i = (s == null ? void 0 : s[0]) ?? 0, a = (s == null ? void 0 : s[1]) ?? 0;
|
|
136
136
|
if (r > 0) {
|
|
137
|
-
n === 0 ? (i =
|
|
138
|
-
for (let
|
|
139
|
-
const m =
|
|
140
|
-
i +=
|
|
137
|
+
n === 0 ? (i = o[0], a = o[1]) : (i += o[0], a += o[1], o[0] = i, o[1] = a);
|
|
138
|
+
for (let c = 1; c < r; c++) {
|
|
139
|
+
const m = c * 2;
|
|
140
|
+
i += o[m], a += o[m + 1], o[m] = i, o[m + 1] = a;
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
|
-
const
|
|
143
|
+
const u = r > 0 ? [{
|
|
144
144
|
startVertex: 0,
|
|
145
145
|
vertexCount: r,
|
|
146
146
|
color: [e.color[0], e.color[1], e.color[2]],
|
|
@@ -148,30 +148,30 @@ function je(t, e, n, r, o) {
|
|
|
148
148
|
...e.lineweightPx === void 0 ? {} : { lineweightPx: e.lineweightPx }
|
|
149
149
|
}] : [];
|
|
150
150
|
return {
|
|
151
|
-
chunk: { pos:
|
|
152
|
-
lastPoint: r > 0 ? [i, a] :
|
|
151
|
+
chunk: { pos: o, count: r, segments: u },
|
|
152
|
+
lastPoint: r > 0 ? [i, a] : s
|
|
153
153
|
};
|
|
154
154
|
}
|
|
155
|
-
function*
|
|
156
|
-
const
|
|
155
|
+
function* fn(t, e, n, r, s = "u8") {
|
|
156
|
+
const o = un(t, e, n, r, s);
|
|
157
157
|
if (r === 0)
|
|
158
|
-
return yield { pos: new Float32Array(0), count: 0, segments: [] },
|
|
159
|
-
for (const i of
|
|
158
|
+
return yield { pos: new Float32Array(0), count: 0, segments: [] }, o.offset;
|
|
159
|
+
for (const i of o.segments) {
|
|
160
160
|
let a = null;
|
|
161
|
-
for (let
|
|
162
|
-
const
|
|
161
|
+
for (let u = 0; u < i.vertexCount; u += Bt) {
|
|
162
|
+
const c = Math.min(Bt, i.vertexCount - u), m = cn(o, i, u, c, a);
|
|
163
163
|
a = m.lastPoint, yield m.chunk;
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
|
-
return
|
|
166
|
+
return o.offset;
|
|
167
167
|
}
|
|
168
|
-
function
|
|
168
|
+
function Ue() {
|
|
169
169
|
const t = globalThis.TextDecoder;
|
|
170
170
|
if (!t)
|
|
171
|
-
throw new
|
|
171
|
+
throw new f("E_HEADER_JSON", "TextDecoder is required to parse CAD pack metadata");
|
|
172
172
|
return new t();
|
|
173
173
|
}
|
|
174
|
-
function
|
|
174
|
+
function it(t) {
|
|
175
175
|
return t ? {
|
|
176
176
|
minX: t.minX,
|
|
177
177
|
minY: t.minY,
|
|
@@ -179,50 +179,50 @@ function ot(t) {
|
|
|
179
179
|
maxY: t.maxY
|
|
180
180
|
} : null;
|
|
181
181
|
}
|
|
182
|
-
function
|
|
182
|
+
function $t(t) {
|
|
183
183
|
return !!t && Number.isFinite(t.minX) && Number.isFinite(t.minY) && Number.isFinite(t.maxX) && Number.isFinite(t.maxY);
|
|
184
184
|
}
|
|
185
|
-
function
|
|
186
|
-
return
|
|
185
|
+
function ht(t) {
|
|
186
|
+
return $t(t) ? it(t) : null;
|
|
187
187
|
}
|
|
188
|
-
function
|
|
189
|
-
const n =
|
|
188
|
+
function Ce(t, e) {
|
|
189
|
+
const n = $t(t) ? t : null, r = $t(e) ? e : null;
|
|
190
190
|
return n ? r ? {
|
|
191
191
|
minX: Math.min(n.minX, r.minX),
|
|
192
192
|
minY: Math.min(n.minY, r.minY),
|
|
193
193
|
maxX: Math.max(n.maxX, r.maxX),
|
|
194
194
|
maxY: Math.max(n.maxY, r.maxY)
|
|
195
|
-
} :
|
|
195
|
+
} : it(n) : it(r);
|
|
196
196
|
}
|
|
197
|
-
function
|
|
197
|
+
function dn(t, e, n, r = 0, s = 1) {
|
|
198
198
|
if (e <= 0 || n <= 0) return null;
|
|
199
|
-
let
|
|
199
|
+
let o = Number.POSITIVE_INFINITY, i = Number.POSITIVE_INFINITY, a = Number.NEGATIVE_INFINITY, u = Number.NEGATIVE_INFINITY, c = !1;
|
|
200
200
|
for (let m = 0; m < e; m += 1) {
|
|
201
|
-
const g = m * n,
|
|
202
|
-
!Number.isFinite(
|
|
201
|
+
const g = m * n, l = t[g + r], d = t[g + s];
|
|
202
|
+
!Number.isFinite(l) || !Number.isFinite(d) || (l < o && (o = l), d < i && (i = d), l > a && (a = l), d > u && (u = d), c = !0);
|
|
203
203
|
}
|
|
204
|
-
return
|
|
204
|
+
return c ? { minX: o, minY: i, maxX: a, maxY: u } : null;
|
|
205
205
|
}
|
|
206
|
-
function
|
|
207
|
-
const n = t.minX, r = t.minY,
|
|
208
|
-
let
|
|
209
|
-
return
|
|
206
|
+
function Se(t, e) {
|
|
207
|
+
const n = t.minX, r = t.minY, s = t.maxX, o = t.maxY, { matA: i, matB: a, matC: u, matD: c, tx: m, ty: g } = e;
|
|
208
|
+
let l = i * n + u * r + m, d = a * n + c * r + g, p = l, h = d, y = l, w = d;
|
|
209
|
+
return l = i * n + u * o + m, d = a * n + c * o + g, l < p && (p = l), d < h && (h = d), l > y && (y = l), d > w && (w = d), l = i * s + u * r + m, d = a * s + c * r + g, l < p && (p = l), d < h && (h = d), l > y && (y = l), d > w && (w = d), l = i * s + u * o + m, d = a * s + c * o + g, l < p && (p = l), d < h && (h = d), l > y && (y = l), d > w && (w = d), { minX: p, minY: h, maxX: y, maxY: w };
|
|
210
210
|
}
|
|
211
|
-
function
|
|
211
|
+
function mn(t) {
|
|
212
212
|
return Math.hypot(t.maxX - t.minX, t.maxY - t.minY);
|
|
213
213
|
}
|
|
214
|
-
function
|
|
215
|
-
const n = (t.minX + t.maxX) / 2, r = (t.minY + t.maxY) / 2,
|
|
216
|
-
return Math.hypot(n -
|
|
214
|
+
function gn(t, e) {
|
|
215
|
+
const n = (t.minX + t.maxX) / 2, r = (t.minY + t.maxY) / 2, s = (e.minX + e.maxX) / 2, o = (e.minY + e.maxY) / 2;
|
|
216
|
+
return Math.hypot(n - s, r - o);
|
|
217
217
|
}
|
|
218
|
-
const
|
|
219
|
-
function
|
|
218
|
+
const yn = {};
|
|
219
|
+
function ne(t) {
|
|
220
220
|
return typeof t == "object" && t !== null;
|
|
221
221
|
}
|
|
222
|
-
function
|
|
222
|
+
function dt(t, e) {
|
|
223
223
|
return Object.prototype.hasOwnProperty.call(t, e);
|
|
224
224
|
}
|
|
225
|
-
function
|
|
225
|
+
function K(t) {
|
|
226
226
|
if (t.length === 0) return "$";
|
|
227
227
|
let e = "";
|
|
228
228
|
for (const n of t) {
|
|
@@ -234,144 +234,144 @@ function H(t) {
|
|
|
234
234
|
}
|
|
235
235
|
return e;
|
|
236
236
|
}
|
|
237
|
-
function
|
|
238
|
-
return new
|
|
237
|
+
function re(t, e, n, r) {
|
|
238
|
+
return new f("E_TEXT_ROUNDTRIP", `Text roundtrip mismatch at stage=${t} index=${e} path=${n}: ${r}`);
|
|
239
239
|
}
|
|
240
|
-
function
|
|
240
|
+
function vt(t, e, n) {
|
|
241
241
|
if (Object.is(t, e)) return null;
|
|
242
242
|
if (Array.isArray(t)) {
|
|
243
243
|
if (!Array.isArray(e))
|
|
244
|
-
return { path:
|
|
244
|
+
return { path: K(n), reason: `expected array but found ${typeof e}` };
|
|
245
245
|
if (t.length !== e.length)
|
|
246
|
-
return { path:
|
|
246
|
+
return { path: K([...n, "length"]), reason: `array length ${t.length} !== ${e.length}` };
|
|
247
247
|
for (let r = 0; r < t.length; r += 1) {
|
|
248
|
-
const
|
|
249
|
-
if (
|
|
248
|
+
const s = vt(t[r], e[r], [...n, r]);
|
|
249
|
+
if (s) return s;
|
|
250
250
|
}
|
|
251
251
|
return null;
|
|
252
252
|
}
|
|
253
|
-
if (
|
|
254
|
-
if (!
|
|
255
|
-
return { path:
|
|
256
|
-
const r = Object.keys(t),
|
|
257
|
-
if (r.length !==
|
|
258
|
-
const
|
|
259
|
-
if (
|
|
253
|
+
if (ne(t)) {
|
|
254
|
+
if (!ne(e) || Array.isArray(e))
|
|
255
|
+
return { path: K(n), reason: `expected object but found ${Array.isArray(e) ? "array" : typeof e}` };
|
|
256
|
+
const r = Object.keys(t), s = Object.keys(e);
|
|
257
|
+
if (r.length !== s.length) {
|
|
258
|
+
const o = r.find((a) => !dt(e, a));
|
|
259
|
+
if (o !== void 0)
|
|
260
260
|
return {
|
|
261
|
-
path:
|
|
261
|
+
path: K([...n, o]),
|
|
262
262
|
reason: "missing key on actual"
|
|
263
263
|
};
|
|
264
|
-
const i =
|
|
264
|
+
const i = s.find((a) => !dt(t, a));
|
|
265
265
|
if (i !== void 0)
|
|
266
266
|
return {
|
|
267
|
-
path:
|
|
267
|
+
path: K([...n, i]),
|
|
268
268
|
reason: "extra key on actual"
|
|
269
269
|
};
|
|
270
270
|
}
|
|
271
|
-
for (const
|
|
272
|
-
if (!
|
|
273
|
-
return { path:
|
|
274
|
-
const i =
|
|
271
|
+
for (const o of r) {
|
|
272
|
+
if (!dt(e, o))
|
|
273
|
+
return { path: K([...n, o]), reason: "missing key on actual" };
|
|
274
|
+
const i = vt(t[o], e[o], [...n, o]);
|
|
275
275
|
if (i) return i;
|
|
276
276
|
}
|
|
277
|
-
for (const
|
|
278
|
-
if (!
|
|
279
|
-
return { path:
|
|
277
|
+
for (const o of s)
|
|
278
|
+
if (!dt(t, o))
|
|
279
|
+
return { path: K([...n, o]), reason: "extra key on actual" };
|
|
280
280
|
return null;
|
|
281
281
|
}
|
|
282
|
-
return { path:
|
|
282
|
+
return { path: K(n), reason: `expected ${String(t)} but found ${String(e)}` };
|
|
283
283
|
}
|
|
284
|
-
function
|
|
285
|
-
return
|
|
284
|
+
function hn(t, e) {
|
|
285
|
+
return vt(t, e, []);
|
|
286
286
|
}
|
|
287
|
-
function
|
|
287
|
+
function oe(t) {
|
|
288
288
|
if (t === !0 || t === "1" || t === "true") return !0;
|
|
289
289
|
if (t === !1 || t === "0" || t === "false") return !1;
|
|
290
290
|
}
|
|
291
|
-
function
|
|
292
|
-
var
|
|
293
|
-
const t = globalThis.process, e =
|
|
294
|
-
((
|
|
291
|
+
function _n() {
|
|
292
|
+
var s, o;
|
|
293
|
+
const t = globalThis.process, e = oe(
|
|
294
|
+
((s = t == null ? void 0 : t.env) == null ? void 0 : s.DXF_STRICT_TEXT_ROUNDTRIP) ?? ((o = t == null ? void 0 : t.env) == null ? void 0 : o.VITE_DXF_STRICT_TEXT_ROUNDTRIP)
|
|
295
295
|
);
|
|
296
296
|
if (e !== void 0) return e;
|
|
297
|
-
const n =
|
|
297
|
+
const n = yn, r = oe(n == null ? void 0 : n.VITE_DXF_STRICT_TEXT_ROUNDTRIP);
|
|
298
298
|
return r !== void 0 ? r : !1;
|
|
299
299
|
}
|
|
300
|
-
function
|
|
300
|
+
function xn(t, e, n) {
|
|
301
301
|
if (e.length !== n.length)
|
|
302
|
-
throw
|
|
302
|
+
throw re(t, Math.min(e.length, n.length), "$length", `text count ${e.length} !== ${n.length}`);
|
|
303
303
|
for (let r = 0; r < e.length; r += 1) {
|
|
304
|
-
const
|
|
305
|
-
if (
|
|
306
|
-
throw
|
|
304
|
+
const s = hn(e[r], n[r]);
|
|
305
|
+
if (s)
|
|
306
|
+
throw re(t, r, s.path, s.reason);
|
|
307
307
|
}
|
|
308
308
|
}
|
|
309
|
-
|
|
310
|
-
function
|
|
309
|
+
Ue();
|
|
310
|
+
function se(t, e) {
|
|
311
311
|
if (t > BigInt(Number.MAX_SAFE_INTEGER))
|
|
312
|
-
throw new
|
|
312
|
+
throw new f("E_GROUP_RANGE", `${e} exceeds safe integer range`);
|
|
313
313
|
return Number(t);
|
|
314
314
|
}
|
|
315
|
-
function
|
|
315
|
+
function ie(t, e, n, r) {
|
|
316
316
|
if (!Number.isInteger(t) || !Number.isInteger(e) || t < 0 || e < 0 || t + e > n)
|
|
317
|
-
throw new
|
|
317
|
+
throw new f("E_GROUP_RANGE", `${r} exceeds payload length`);
|
|
318
318
|
}
|
|
319
|
-
function
|
|
319
|
+
function En(t) {
|
|
320
320
|
if (t.byteLength < 4) return !1;
|
|
321
321
|
const e = new Uint8Array(t, 0, 4);
|
|
322
322
|
return e[0] === 68 && e[1] === 88 && e[2] === 66 && e[3] === 83;
|
|
323
323
|
}
|
|
324
|
-
function
|
|
324
|
+
function wn(t) {
|
|
325
325
|
if (t.byteLength < 20)
|
|
326
|
-
throw new
|
|
327
|
-
if (!
|
|
328
|
-
throw new
|
|
329
|
-
const e = new DataView(t), n = e.getUint16(4, !0), r = e.getUint16(6, !0),
|
|
326
|
+
throw new f("E_HEADER", "DXBS payload too small: missing container header");
|
|
327
|
+
if (!En(t))
|
|
328
|
+
throw new f("E_HEADER", "DXBS payload missing magic");
|
|
329
|
+
const e = new DataView(t), n = e.getUint16(4, !0), r = e.getUint16(6, !0), s = e.getUint16(8, !0), o = e.getUint16(10, !0), i = e.getUint16(12, !0), a = e.getUint16(14, !0), u = e.getUint32(16, !0);
|
|
330
330
|
if (n !== 3 || r < 3 || r > 6)
|
|
331
|
-
throw new
|
|
332
|
-
if (
|
|
333
|
-
throw new
|
|
331
|
+
throw new f("E_GROUP_RANGE", `Unsupported DXBS version: ${n}.${r}`);
|
|
332
|
+
if (s !== 0)
|
|
333
|
+
throw new f("E_GROUP_RANGE", `Unsupported DXBS sidecar kind: ${s}`);
|
|
334
334
|
if (a !== 0)
|
|
335
|
-
throw new
|
|
336
|
-
if (
|
|
337
|
-
throw new
|
|
338
|
-
if (
|
|
339
|
-
throw new
|
|
340
|
-
const
|
|
341
|
-
|
|
335
|
+
throw new f("E_GROUP_RANGE", `Invalid DXBS reserved field: ${a}`);
|
|
336
|
+
if (o < 24)
|
|
337
|
+
throw new f("E_GROUP_RANGE", `Invalid DXBS directory entry size: ${o}`);
|
|
338
|
+
if (u !== o * i)
|
|
339
|
+
throw new f("E_GROUP_RANGE", "DXBS directory byte size mismatch");
|
|
340
|
+
const c = 20;
|
|
341
|
+
ie(c, u, t.byteLength, "DXBS section directory");
|
|
342
342
|
const m = /* @__PURE__ */ new Map();
|
|
343
343
|
for (let g = 0; g < i; g += 1) {
|
|
344
|
-
const
|
|
345
|
-
if (
|
|
346
|
-
throw new
|
|
347
|
-
if (
|
|
348
|
-
throw new
|
|
349
|
-
|
|
344
|
+
const l = c + g * o, d = e.getUint16(l, !0), p = e.getUint16(l + 2, !0), h = e.getUint32(l + 4, !0), y = se(e.getBigUint64(l + 8, !0), "DXBS section offset"), w = se(e.getBigUint64(l + 16, !0), "DXBS section length");
|
|
345
|
+
if (p !== 0)
|
|
346
|
+
throw new f("E_GROUP_RANGE", `Unsupported DXBS section flags for type ${d}: ${p}`);
|
|
347
|
+
if (h !== 0)
|
|
348
|
+
throw new f("E_GROUP_RANGE", `Invalid DXBS section reserved field for type ${d}: ${h}`);
|
|
349
|
+
ie(y, w, t.byteLength, `DXBS section ${d}`), m.set(d, { type: d, flags: p, offset: y, length: w });
|
|
350
350
|
}
|
|
351
351
|
return { versionMajor: n, versionMinor: r, sections: m };
|
|
352
352
|
}
|
|
353
|
-
function
|
|
353
|
+
function pn(t, e, n) {
|
|
354
354
|
const r = t.sections.get(e);
|
|
355
355
|
if (!r)
|
|
356
|
-
throw new
|
|
356
|
+
throw new f("E_GROUP_RANGE", `Missing DXBS section ${n}`);
|
|
357
357
|
return r;
|
|
358
358
|
}
|
|
359
|
-
function
|
|
359
|
+
function bn() {
|
|
360
360
|
return {
|
|
361
361
|
pos: new Float32Array(0),
|
|
362
362
|
count: 0,
|
|
363
363
|
segments: []
|
|
364
364
|
};
|
|
365
365
|
}
|
|
366
|
-
function
|
|
366
|
+
function Ot(t) {
|
|
367
367
|
if (t.segments && t.segments.length > 0)
|
|
368
|
-
return
|
|
368
|
+
return In(t.segments, t.count), t.segments;
|
|
369
369
|
if (t.count <= 0) return [];
|
|
370
370
|
if (!t.col || !t.lay)
|
|
371
|
-
throw new
|
|
372
|
-
return
|
|
371
|
+
throw new f("E_GROUP_RANGE", "Geometry chunk is missing segment or expanded color/layer metadata");
|
|
372
|
+
return An(t.col, t.lay, t.count);
|
|
373
373
|
}
|
|
374
|
-
function
|
|
374
|
+
function ae(t) {
|
|
375
375
|
const e = [];
|
|
376
376
|
for (const n of t) {
|
|
377
377
|
const r = e[e.length - 1];
|
|
@@ -385,66 +385,67 @@ function ee(t) {
|
|
|
385
385
|
e.push({
|
|
386
386
|
startVertex: n.startVertex,
|
|
387
387
|
vertexCount: n.vertexCount,
|
|
388
|
-
color:
|
|
388
|
+
color: Rn(n),
|
|
389
389
|
layerIndex: n.layerIndex,
|
|
390
390
|
...n.lineweightPx === void 0 ? {} : { lineweightPx: n.lineweightPx }
|
|
391
391
|
});
|
|
392
392
|
}
|
|
393
393
|
return e;
|
|
394
394
|
}
|
|
395
|
-
function
|
|
395
|
+
function An(t, e, n) {
|
|
396
396
|
if (t.length < n * 3 || e.length < n)
|
|
397
|
-
throw new
|
|
397
|
+
throw new f("E_GROUP_RANGE", "Expanded color/layer metadata is shorter than geometry count");
|
|
398
398
|
const r = [];
|
|
399
|
-
let
|
|
400
|
-
for (;
|
|
401
|
-
const
|
|
402
|
-
let m =
|
|
399
|
+
let s = 0;
|
|
400
|
+
for (; s < n; ) {
|
|
401
|
+
const o = s * 3, i = t[o] ?? 0, a = t[o + 1] ?? 0, u = t[o + 2] ?? 0, c = e[s] ?? 0;
|
|
402
|
+
let m = s + 1;
|
|
403
403
|
for (; m < n; ) {
|
|
404
404
|
const g = m * 3;
|
|
405
|
-
if (e[m] !==
|
|
405
|
+
if (e[m] !== c || t[g] !== i || t[g + 1] !== a || t[g + 2] !== u)
|
|
406
406
|
break;
|
|
407
407
|
m += 1;
|
|
408
408
|
}
|
|
409
409
|
r.push({
|
|
410
|
-
startVertex:
|
|
411
|
-
vertexCount: m -
|
|
412
|
-
color: [i, a,
|
|
413
|
-
layerIndex:
|
|
414
|
-
}),
|
|
410
|
+
startVertex: s,
|
|
411
|
+
vertexCount: m - s,
|
|
412
|
+
color: [i, a, u],
|
|
413
|
+
layerIndex: c
|
|
414
|
+
}), s = m;
|
|
415
415
|
}
|
|
416
416
|
return r;
|
|
417
417
|
}
|
|
418
|
-
function
|
|
418
|
+
function In(t, e) {
|
|
419
419
|
let n = 0;
|
|
420
420
|
for (const r of t) {
|
|
421
421
|
if (r.vertexCount < 0 || r.startVertex !== n)
|
|
422
|
-
throw new
|
|
422
|
+
throw new f("E_SEGMENT_SUM", "Geometry segments must be contiguous and non-negative");
|
|
423
423
|
n += r.vertexCount;
|
|
424
424
|
}
|
|
425
425
|
if (n !== e)
|
|
426
|
-
throw new
|
|
426
|
+
throw new f("E_SEGMENT_SUM", `Geometry segment vertex sum ${n} does not match count ${e}`);
|
|
427
427
|
}
|
|
428
|
-
function
|
|
428
|
+
function Rn(t) {
|
|
429
429
|
return [t.color[0], t.color[1], t.color[2]];
|
|
430
430
|
}
|
|
431
|
-
const
|
|
432
|
-
function
|
|
431
|
+
const Vn = 8e6, Lt = Ue(), Gn = ["left", "center", "right"], Nn = ["top", "middle", "bottom", "alphabetic"];
|
|
432
|
+
function ue(t, e, n) {
|
|
433
433
|
for (const r of t)
|
|
434
434
|
n(r);
|
|
435
435
|
for (const r of e)
|
|
436
436
|
n(r);
|
|
437
437
|
}
|
|
438
|
-
|
|
438
|
+
const Te = /* @__PURE__ */ new WeakSet();
|
|
439
|
+
function st(t) {
|
|
439
440
|
return typeof t == "object" && t !== null;
|
|
440
441
|
}
|
|
441
|
-
function
|
|
442
|
+
function Un(t) {
|
|
442
443
|
return Array.isArray(t) ? "array" : t === null ? "null" : typeof t;
|
|
443
444
|
}
|
|
444
|
-
function
|
|
445
|
-
return !(!
|
|
445
|
+
function Cn(t) {
|
|
446
|
+
return !(!st(t) || Array.isArray(t) || typeof t.t != "string" || typeof t.x != "number" || typeof t.y != "number" || typeof t.h != "number" || typeof t.r != "number" || !Array.isArray(t.c) || t.c.length !== 3 || !t.c.every((e) => typeof e == "number") || typeof t.li != "number" || t.ha !== "left" && t.ha !== "center" && t.ha !== "right" || t.va !== "top" && t.va !== "middle" && t.va !== "bottom" && t.va !== "alphabetic" || typeof t.lh != "number" || t.w !== void 0 && typeof t.w != "number" || t.wf !== void 0 && typeof t.wf != "number" || t.iv !== void 0 && typeof t.iv != "number" || t.io !== void 0 && typeof t.io != "number" || t.mx !== void 0 && t.mx !== !0 || t.my !== void 0 && t.my !== !0);
|
|
446
447
|
}
|
|
447
|
-
function
|
|
448
|
+
function Sn(t) {
|
|
448
449
|
return t.map((e, n) => ({
|
|
449
450
|
index: n,
|
|
450
451
|
name: e.name,
|
|
@@ -453,26 +454,26 @@ function yn(t) {
|
|
|
453
454
|
visible: e.visible ?? !0
|
|
454
455
|
}));
|
|
455
456
|
}
|
|
456
|
-
function
|
|
457
|
-
const e = t.texts, n = Array.isArray(e) ? e : [], r = n.filter(
|
|
458
|
-
if (
|
|
459
|
-
throw new
|
|
457
|
+
function Pe(t) {
|
|
458
|
+
const e = t.texts, n = Array.isArray(e) ? e : [], r = n.filter(Cn), s = _n();
|
|
459
|
+
if (s && e !== void 0 && !Array.isArray(e))
|
|
460
|
+
throw new f(
|
|
460
461
|
"E_TEXT_ROUNDTRIP",
|
|
461
|
-
`Text roundtrip mismatch at stage=Boundary-2:header->stream index=0 path=$: expected array but found ${
|
|
462
|
+
`Text roundtrip mismatch at stage=Boundary-2:header->stream index=0 path=$: expected array but found ${Un(e)}`
|
|
462
463
|
);
|
|
463
|
-
return
|
|
464
|
+
return s && xn("Boundary-2:header->stream", n, r), {
|
|
464
465
|
bounds: [...t.bounds],
|
|
465
466
|
entityCount: Number(t.entity_count || 0),
|
|
466
467
|
lineCount: Number(t.line_count || 0),
|
|
467
468
|
fillCount: Number(t.fill_count || 0),
|
|
468
469
|
dotCount: Number(t.dot_count || 0),
|
|
469
470
|
textCount: r.length,
|
|
470
|
-
layers:
|
|
471
|
+
layers: Sn(t.layers ?? []),
|
|
471
472
|
texts: r
|
|
472
473
|
};
|
|
473
474
|
}
|
|
474
|
-
function
|
|
475
|
-
const e = t == null ? void 0 : t.maxExpandedInstanceVertices, n = typeof e == "number" && Number.isFinite(e) && e >= 0 ? Math.floor(e) :
|
|
475
|
+
function Tn(t) {
|
|
476
|
+
const e = t == null ? void 0 : t.maxExpandedInstanceVertices, n = typeof e == "number" && Number.isFinite(e) && e >= 0 ? Math.floor(e) : Vn;
|
|
476
477
|
return {
|
|
477
478
|
hiddenInstanceIds: t != null && t.hiddenInstanceIds ? new Set(t.hiddenInstanceIds) : /* @__PURE__ */ new Set(),
|
|
478
479
|
keepTextsForHiddenInstances: (t == null ? void 0 : t.keepTextsForHiddenInstances) === !0,
|
|
@@ -483,334 +484,335 @@ function xn(t) {
|
|
|
483
484
|
externalVariantBuffers: t == null ? void 0 : t.externalVariantBuffers,
|
|
484
485
|
requiredExternalVariantIds: t == null ? void 0 : t.requiredExternalVariantIds,
|
|
485
486
|
externalVariantDeltaOnly: (t == null ? void 0 : t.externalVariantDeltaOnly) === !0,
|
|
486
|
-
deferExternalVariantGeometry: (t == null ? void 0 : t.deferExternalVariantGeometry) === !0
|
|
487
|
+
deferExternalVariantGeometry: (t == null ? void 0 : t.deferExternalVariantGeometry) === !0,
|
|
488
|
+
cacheDocument: (t == null ? void 0 : t.cacheDocument) === !0
|
|
487
489
|
};
|
|
488
490
|
}
|
|
489
|
-
function
|
|
491
|
+
function Pn(t) {
|
|
490
492
|
return t.loadBlocks && !t.suppressExpandedInsertGeometry;
|
|
491
493
|
}
|
|
492
|
-
function
|
|
493
|
-
return
|
|
494
|
+
function Be(t, e) {
|
|
495
|
+
return Pn(e) && !e.hiddenInstanceIds.has(t);
|
|
494
496
|
}
|
|
495
|
-
function
|
|
497
|
+
function Bn(t, e, n) {
|
|
496
498
|
if (n <= 0)
|
|
497
499
|
return;
|
|
498
500
|
const r = t.expandedInstanceVertices + n;
|
|
499
501
|
if (r > t.maxExpandedInstanceVertices)
|
|
500
|
-
throw new
|
|
502
|
+
throw new f(
|
|
501
503
|
"E_EXPANSION_BUDGET",
|
|
502
504
|
`CPU-expanded ${e} instance vertices exceed budget: ${r}/${t.maxExpandedInstanceVertices}. Disable block loading or raise maxExpandedInstanceVertices.`
|
|
503
505
|
);
|
|
504
506
|
t.expandedInstanceVertices = r;
|
|
505
507
|
}
|
|
506
|
-
function
|
|
508
|
+
function $n(t, e, n) {
|
|
507
509
|
return n.loadBlocks ? n.hiddenInstanceIds.size === 0 || n.keepTextsForHiddenInstances ? t : t.filter((r) => {
|
|
508
510
|
if (!Number.isInteger(r.iv) || !Number.isInteger(r.io))
|
|
509
511
|
return !0;
|
|
510
|
-
const
|
|
511
|
-
return
|
|
512
|
+
const s = e.get(`${r.iv}:${r.io}`);
|
|
513
|
+
return s === void 0 || !n.hiddenInstanceIds.has(s);
|
|
512
514
|
}) : t.filter((r) => !Number.isInteger(r.iv) || !Number.isInteger(r.io));
|
|
513
515
|
}
|
|
514
|
-
function
|
|
516
|
+
function vn(t, e) {
|
|
515
517
|
const n = /* @__PURE__ */ new Map();
|
|
516
|
-
return t.forEach((r,
|
|
518
|
+
return t.forEach((r, s) => {
|
|
517
519
|
if (!Number.isInteger(r.iv) || !Number.isInteger(r.io))
|
|
518
520
|
return;
|
|
519
|
-
const
|
|
520
|
-
if (
|
|
521
|
+
const o = e.get(`${r.iv}:${r.io}`);
|
|
522
|
+
if (o === void 0)
|
|
521
523
|
return;
|
|
522
|
-
const i = n.get(
|
|
523
|
-
i ? i.push(
|
|
524
|
+
const i = n.get(o);
|
|
525
|
+
i ? i.push(s) : n.set(o, [s]);
|
|
524
526
|
}), n;
|
|
525
527
|
}
|
|
526
|
-
function
|
|
527
|
-
const a = e.map((
|
|
528
|
-
id:
|
|
529
|
-
blockName:
|
|
530
|
-
line: n[
|
|
531
|
-
fill: n[
|
|
532
|
-
dot: n[
|
|
533
|
-
texts: r.get(
|
|
528
|
+
function On(t, e, n, r, s, o, i) {
|
|
529
|
+
const a = e.map((u, c) => ({
|
|
530
|
+
id: u.id,
|
|
531
|
+
blockName: $e(u, c),
|
|
532
|
+
line: n[c].line,
|
|
533
|
+
fill: n[c].fill,
|
|
534
|
+
dot: n[c].dot,
|
|
535
|
+
texts: r.get(u.id) ?? []
|
|
534
536
|
}));
|
|
535
537
|
return {
|
|
536
538
|
layer0Index: t,
|
|
537
539
|
variants: a,
|
|
538
|
-
instances:
|
|
539
|
-
textIndexesByInstanceId:
|
|
540
|
+
instances: s,
|
|
541
|
+
textIndexesByInstanceId: vn(o, i),
|
|
540
542
|
ownerInstanceIdByVariantOrdinal: i
|
|
541
543
|
};
|
|
542
544
|
}
|
|
543
|
-
function
|
|
545
|
+
function Mn(t) {
|
|
544
546
|
if (t.byteLength < 4)
|
|
545
|
-
throw new
|
|
546
|
-
const e = new DataView(t), n = e.getUint32(0, !0), r = 4,
|
|
547
|
-
if (
|
|
548
|
-
throw new
|
|
549
|
-
let
|
|
547
|
+
throw new f("E_HEADER", "Payload too small: missing header length");
|
|
548
|
+
const e = new DataView(t), n = e.getUint32(0, !0), r = 4, s = r + n;
|
|
549
|
+
if (s > t.byteLength)
|
|
550
|
+
throw new f("E_HEADER", "Header length exceeds payload length");
|
|
551
|
+
let o;
|
|
550
552
|
try {
|
|
551
|
-
|
|
553
|
+
o = JSON.parse(Lt.decode(new Uint8Array(t, r, n)));
|
|
552
554
|
} catch (i) {
|
|
553
|
-
throw new
|
|
555
|
+
throw new f("E_HEADER_JSON", `Invalid JSON header: ${i.message}`);
|
|
554
556
|
}
|
|
555
557
|
return {
|
|
556
|
-
meta:
|
|
557
|
-
header:
|
|
558
|
-
dataOffset:
|
|
558
|
+
meta: o,
|
|
559
|
+
header: Pe(o),
|
|
560
|
+
dataOffset: s,
|
|
559
561
|
view: e
|
|
560
562
|
};
|
|
561
563
|
}
|
|
562
|
-
function
|
|
563
|
-
var
|
|
564
|
-
const n = (
|
|
564
|
+
function $e(t, e) {
|
|
565
|
+
var o, i, a;
|
|
566
|
+
const n = (o = t.name) == null ? void 0 : o.trim();
|
|
565
567
|
if (n)
|
|
566
568
|
return n;
|
|
567
569
|
const r = (i = t.block_name) == null ? void 0 : i.trim();
|
|
568
570
|
if (r)
|
|
569
571
|
return r;
|
|
570
|
-
const
|
|
571
|
-
return
|
|
572
|
+
const s = (a = t.blockName) == null ? void 0 : a.trim();
|
|
573
|
+
return s || `block_${e}`;
|
|
572
574
|
}
|
|
573
|
-
function
|
|
575
|
+
function kn(t) {
|
|
574
576
|
const e = Number(t.version ?? 1), n = String(t.encoding ?? "").toLowerCase();
|
|
575
577
|
if (e === 2) {
|
|
576
578
|
const r = n ? ` ${n}` : "";
|
|
577
|
-
throw new
|
|
579
|
+
throw new f(
|
|
578
580
|
"E_UNSUPPORTED_PACK_VERSION",
|
|
579
581
|
`当前文件是 V2${r} pack,前端不再兼容解析;请升级到最新版本后再打开。`
|
|
580
582
|
);
|
|
581
583
|
}
|
|
582
584
|
}
|
|
583
|
-
function
|
|
584
|
-
const e =
|
|
585
|
-
return
|
|
585
|
+
function Dn(t) {
|
|
586
|
+
const e = Mn(t);
|
|
587
|
+
return kn(e.meta), e;
|
|
586
588
|
}
|
|
587
|
-
function
|
|
589
|
+
function ve(t) {
|
|
588
590
|
if (t.byteLength < 4)
|
|
589
591
|
return !1;
|
|
590
592
|
const e = new Uint8Array(t, 0, 4);
|
|
591
593
|
return e[0] === 68 && e[1] === 88 && e[2] === 66 && e[3] === 51;
|
|
592
594
|
}
|
|
593
|
-
function
|
|
595
|
+
function le(t, e) {
|
|
594
596
|
if (t > BigInt(Number.MAX_SAFE_INTEGER))
|
|
595
|
-
throw new
|
|
597
|
+
throw new f("E_GROUP_RANGE", `${e} exceeds safe integer range`);
|
|
596
598
|
return Number(t);
|
|
597
599
|
}
|
|
598
|
-
function
|
|
600
|
+
function at(t, e, n, r) {
|
|
599
601
|
if (!Number.isInteger(t) || !Number.isInteger(e) || t < 0 || e < 0 || t + e > n)
|
|
600
|
-
throw new
|
|
602
|
+
throw new f("E_GROUP_RANGE", `${r} exceeds payload length`);
|
|
601
603
|
}
|
|
602
|
-
function
|
|
604
|
+
function Ln(t) {
|
|
603
605
|
if (t.byteLength < 20)
|
|
604
|
-
throw new
|
|
605
|
-
const e = new DataView(t), n = e.getUint16(4, !0), r = e.getUint16(6, !0),
|
|
606
|
+
throw new f("E_HEADER", "V3 payload too small: missing container header");
|
|
607
|
+
const e = new DataView(t), n = e.getUint16(4, !0), r = e.getUint16(6, !0), s = e.getUint32(8, !0), o = e.getUint16(12, !0), i = e.getUint16(14, !0), a = e.getUint32(16, !0);
|
|
606
608
|
if (n !== 3 || r > 6)
|
|
607
|
-
throw new
|
|
608
|
-
if (
|
|
609
|
-
throw new
|
|
610
|
-
if (
|
|
611
|
-
throw new
|
|
612
|
-
if (a !==
|
|
613
|
-
throw new
|
|
614
|
-
const
|
|
615
|
-
|
|
616
|
-
const
|
|
609
|
+
throw new f("E_GROUP_RANGE", `Unsupported V3 version: ${n}.${r}`);
|
|
610
|
+
if (s !== 0)
|
|
611
|
+
throw new f("E_GROUP_RANGE", `Unsupported V3 file flags: ${s}`);
|
|
612
|
+
if (o < 24)
|
|
613
|
+
throw new f("E_GROUP_RANGE", `Invalid V3 directory entry size: ${o}`);
|
|
614
|
+
if (a !== o * i)
|
|
615
|
+
throw new f("E_GROUP_RANGE", "V3 directory byte size mismatch");
|
|
616
|
+
const u = 20;
|
|
617
|
+
at(u, a, t.byteLength, "V3 section directory");
|
|
618
|
+
const c = /* @__PURE__ */ new Map();
|
|
617
619
|
for (let m = 0; m < i; m += 1) {
|
|
618
|
-
const g =
|
|
619
|
-
if (
|
|
620
|
-
throw new
|
|
621
|
-
if (
|
|
622
|
-
throw new
|
|
623
|
-
|
|
620
|
+
const g = u + m * o, l = e.getUint16(g, !0), d = e.getUint16(g + 2, !0), p = e.getUint32(g + 4, !0), h = le(e.getBigUint64(g + 8, !0), "V3 section offset"), y = le(e.getBigUint64(g + 16, !0), "V3 section length");
|
|
621
|
+
if (d !== 0)
|
|
622
|
+
throw new f("E_GROUP_RANGE", `Unsupported V3 section flags for type ${l}: ${d}`);
|
|
623
|
+
if (p !== 0)
|
|
624
|
+
throw new f("E_GROUP_RANGE", `Invalid V3 section reserved field for type ${l}: ${p}`);
|
|
625
|
+
at(h, y, t.byteLength, `V3 section ${l}`), c.set(l, { type: l, flags: d, offset: h, length: y });
|
|
624
626
|
}
|
|
625
|
-
return { versionMinor: r, sections:
|
|
627
|
+
return { versionMinor: r, sections: c };
|
|
626
628
|
}
|
|
627
|
-
function
|
|
629
|
+
function tt(t, e, n) {
|
|
628
630
|
const r = t.get(e);
|
|
629
631
|
if (!r)
|
|
630
|
-
throw new
|
|
632
|
+
throw new f("E_GROUP_RANGE", `Missing V3 section ${n}`);
|
|
631
633
|
return r;
|
|
632
634
|
}
|
|
633
|
-
function
|
|
635
|
+
function pt(t, e) {
|
|
634
636
|
return t.get(e) ?? { type: e, flags: 0, offset: 0, length: 0 };
|
|
635
637
|
}
|
|
636
|
-
function
|
|
638
|
+
function Fn(t, e, n) {
|
|
637
639
|
try {
|
|
638
|
-
return JSON.parse(
|
|
640
|
+
return JSON.parse(Lt.decode(new Uint8Array(t, e.offset, e.length)));
|
|
639
641
|
} catch (r) {
|
|
640
|
-
throw new
|
|
642
|
+
throw new f("E_HEADER_JSON", `Invalid V3 ${n} JSON: ${r.message}`);
|
|
641
643
|
}
|
|
642
644
|
}
|
|
643
|
-
function
|
|
645
|
+
function Xn(t) {
|
|
644
646
|
const e = String(t.encoding ?? "").toLowerCase();
|
|
645
647
|
return e === "nested_instanced_external" || e === "nested_instanced_external_annotations";
|
|
646
648
|
}
|
|
647
|
-
function
|
|
649
|
+
function Yn(t) {
|
|
648
650
|
return String(t.encoding ?? "").toLowerCase() === "nested_instanced_external_annotations";
|
|
649
651
|
}
|
|
650
|
-
function
|
|
651
|
-
const r = t.features,
|
|
652
|
-
return e && (
|
|
652
|
+
function zn(t, e, n) {
|
|
653
|
+
const r = t.features, s = r && typeof r == "object" && !Array.isArray(r) ? { ...r } : {};
|
|
654
|
+
return e && (s.has_external_variant_geometry = !0), n && (s.has_external_annotations = !0), Object.keys(s).length ? s : void 0;
|
|
653
655
|
}
|
|
654
|
-
function
|
|
656
|
+
function Y(t, e) {
|
|
655
657
|
if (!Number.isInteger(t) || Number(t) < 0)
|
|
656
|
-
throw new
|
|
658
|
+
throw new f("E_HEADER", `${e} must be a non-negative integer`);
|
|
657
659
|
return Number(t);
|
|
658
660
|
}
|
|
659
|
-
function
|
|
661
|
+
function Oe(t, e) {
|
|
660
662
|
if (typeof t != "string" || !t.trim())
|
|
661
|
-
throw new
|
|
663
|
+
throw new f("E_HEADER", `${e} must be a non-empty string`);
|
|
662
664
|
return t;
|
|
663
665
|
}
|
|
664
|
-
function
|
|
666
|
+
function ce(t, e) {
|
|
665
667
|
if (t == null)
|
|
666
668
|
return null;
|
|
667
669
|
if (!Array.isArray(t) || t.length !== 4 || t.some((n) => typeof n != "number" || !Number.isFinite(n)))
|
|
668
|
-
throw new
|
|
670
|
+
throw new f("E_HEADER", `${e} must be null or [minX, minY, maxX, maxY]`);
|
|
669
671
|
return [t[0], t[1], t[2], t[3]];
|
|
670
672
|
}
|
|
671
|
-
function
|
|
672
|
-
if (!
|
|
673
|
-
throw new
|
|
673
|
+
function Mt(t, e) {
|
|
674
|
+
if (!st(t) || Array.isArray(t))
|
|
675
|
+
throw new f("E_HEADER", `${e} must be an object`);
|
|
674
676
|
return {
|
|
675
|
-
line_count:
|
|
676
|
-
fill_count:
|
|
677
|
-
dot_count:
|
|
678
|
-
bbox:
|
|
679
|
-
own_bbox:
|
|
677
|
+
line_count: Y(t.line_count, `${e}.line_count`),
|
|
678
|
+
fill_count: Y(t.fill_count, `${e}.fill_count`),
|
|
679
|
+
dot_count: Y(t.dot_count, `${e}.dot_count`),
|
|
680
|
+
bbox: ce(t.bbox, `${e}.bbox`),
|
|
681
|
+
own_bbox: ce(t.own_bbox, `${e}.own_bbox`)
|
|
680
682
|
};
|
|
681
683
|
}
|
|
682
|
-
function
|
|
684
|
+
function Hn(t) {
|
|
683
685
|
return t ? { minX: t[0], minY: t[1], maxX: t[2], maxY: t[3] } : null;
|
|
684
686
|
}
|
|
685
|
-
function
|
|
687
|
+
function Kn(t, e) {
|
|
686
688
|
const n = t.external_variants;
|
|
687
689
|
if (!Array.isArray(n))
|
|
688
|
-
throw new
|
|
690
|
+
throw new f("E_HEADER", "V3 external SCENE_META.external_variants must be an array");
|
|
689
691
|
if (n.length !== e)
|
|
690
|
-
throw new
|
|
692
|
+
throw new f(
|
|
691
693
|
"E_GROUP_RANGE",
|
|
692
694
|
`V3 external variant manifest count mismatch: manifest=${n.length}, table=${e}`
|
|
693
695
|
);
|
|
694
|
-
return n.map((r,
|
|
695
|
-
if (!
|
|
696
|
-
throw new
|
|
697
|
-
const
|
|
698
|
-
if (
|
|
699
|
-
throw new
|
|
700
|
-
const i =
|
|
696
|
+
return n.map((r, s) => {
|
|
697
|
+
if (!st(r) || Array.isArray(r))
|
|
698
|
+
throw new f("E_HEADER", `V3 external_variants[${s}] must be an object`);
|
|
699
|
+
const o = Y(r.id, `V3 external_variants[${s}].id`);
|
|
700
|
+
if (o !== s)
|
|
701
|
+
throw new f("E_GROUP_RANGE", `V3 external_variants[${s}].id must equal ${s}, found ${o}`);
|
|
702
|
+
const i = Oe(r.href, `V3 external_variants[${s}].href`), a = Y(r.raw_size, `V3 external_variants[${s}].raw_size`);
|
|
701
703
|
if ("normal" in r || "annotation" in r) {
|
|
702
|
-
const
|
|
704
|
+
const u = Mt(r.annotation, `V3 external_variants[${s}].annotation`);
|
|
703
705
|
return {
|
|
704
|
-
id:
|
|
706
|
+
id: o,
|
|
705
707
|
href: i,
|
|
706
708
|
raw_size: a,
|
|
707
|
-
normal:
|
|
709
|
+
normal: Mt(r.normal, `V3 external_variants[${s}].normal`),
|
|
708
710
|
annotation: {
|
|
709
|
-
...
|
|
710
|
-
text_count:
|
|
711
|
-
|
|
712
|
-
`V3 external_variants[${
|
|
711
|
+
...u,
|
|
712
|
+
text_count: Y(
|
|
713
|
+
st(r.annotation) && !Array.isArray(r.annotation) ? r.annotation.text_count : void 0,
|
|
714
|
+
`V3 external_variants[${s}].annotation.text_count`
|
|
713
715
|
)
|
|
714
716
|
}
|
|
715
717
|
};
|
|
716
718
|
}
|
|
717
719
|
return {
|
|
718
|
-
id:
|
|
720
|
+
id: o,
|
|
719
721
|
href: i,
|
|
720
722
|
raw_size: a,
|
|
721
|
-
line_count:
|
|
722
|
-
fill_count:
|
|
723
|
-
dot_count:
|
|
723
|
+
line_count: Y(r.line_count, `V3 external_variants[${s}].line_count`),
|
|
724
|
+
fill_count: Y(r.fill_count, `V3 external_variants[${s}].fill_count`),
|
|
725
|
+
dot_count: Y(r.dot_count, `V3 external_variants[${s}].dot_count`)
|
|
724
726
|
};
|
|
725
727
|
});
|
|
726
728
|
}
|
|
727
|
-
function
|
|
729
|
+
function jn(t) {
|
|
728
730
|
const e = t.external_annotations;
|
|
729
731
|
if (e == null) return null;
|
|
730
|
-
if (!
|
|
731
|
-
throw new
|
|
732
|
+
if (!st(e) || Array.isArray(e))
|
|
733
|
+
throw new f("E_HEADER", "V3 external_annotations must be an object");
|
|
732
734
|
const n = e.scene;
|
|
733
735
|
if (n == null) return {};
|
|
734
|
-
if (!
|
|
735
|
-
throw new
|
|
736
|
-
const r =
|
|
736
|
+
if (!st(n) || Array.isArray(n))
|
|
737
|
+
throw new f("E_HEADER", "V3 external_annotations.scene must be an object");
|
|
738
|
+
const r = Mt(n, "V3 external_annotations.scene");
|
|
737
739
|
return {
|
|
738
740
|
scene: {
|
|
739
|
-
href:
|
|
740
|
-
raw_size:
|
|
741
|
+
href: Oe(n.href, "V3 external_annotations.scene.href"),
|
|
742
|
+
raw_size: Y(n.raw_size, "V3 external_annotations.scene.raw_size"),
|
|
741
743
|
...r,
|
|
742
|
-
text_count:
|
|
744
|
+
text_count: Y(n.text_count, "V3 external_annotations.scene.text_count")
|
|
743
745
|
}
|
|
744
746
|
};
|
|
745
747
|
}
|
|
746
|
-
function
|
|
747
|
-
return
|
|
748
|
+
function _t(t, e, n, r) {
|
|
749
|
+
return at(e, n, t.byteLength, r), Lt.decode(t.subarray(e, e + n));
|
|
748
750
|
}
|
|
749
|
-
function
|
|
751
|
+
function Wn(t, e, n) {
|
|
750
752
|
if (e.length % 20 !== 0)
|
|
751
|
-
throw new
|
|
752
|
-
const r = new DataView(t),
|
|
753
|
-
for (let
|
|
754
|
-
const i = r.getUint32(
|
|
755
|
-
|
|
756
|
-
name:
|
|
757
|
-
color: [r.getUint8(
|
|
758
|
-
visible: r.getUint8(
|
|
759
|
-
lw_px: r.getFloat32(
|
|
753
|
+
throw new f("E_GROUP_RANGE", "V3 LAYER_TABLE length must be a multiple of 20");
|
|
754
|
+
const r = new DataView(t), s = [];
|
|
755
|
+
for (let o = e.offset; o < e.offset + e.length; o += 20) {
|
|
756
|
+
const i = r.getUint32(o, !0), a = r.getUint32(o + 4, !0);
|
|
757
|
+
s.push({
|
|
758
|
+
name: _t(n, i, a, "V3 layer name"),
|
|
759
|
+
color: [r.getUint8(o + 8), r.getUint8(o + 9), r.getUint8(o + 10)],
|
|
760
|
+
visible: r.getUint8(o + 11) !== 0,
|
|
761
|
+
lw_px: r.getFloat32(o + 12, !0)
|
|
760
762
|
});
|
|
761
763
|
}
|
|
762
|
-
return
|
|
764
|
+
return s;
|
|
763
765
|
}
|
|
764
|
-
function
|
|
766
|
+
function gt(t, e, n, r, s, o) {
|
|
765
767
|
if (n + 4 > r)
|
|
766
|
-
throw new
|
|
767
|
-
const i = e.getUint32(n, !0), a = n + 4,
|
|
768
|
-
if (
|
|
769
|
-
throw new
|
|
768
|
+
throw new f("E_GROUP_RANGE", `Missing ${s} vertex_count`);
|
|
769
|
+
const i = e.getUint32(n, !0), a = n + 4, u = Ne(t, e, a, i, r, o);
|
|
770
|
+
if (u.offset > r)
|
|
771
|
+
throw new f("E_GROUP_RANGE", `${s} exceeds section bounds`);
|
|
770
772
|
return {
|
|
771
|
-
chunk:
|
|
772
|
-
offset:
|
|
773
|
+
chunk: u.chunk,
|
|
774
|
+
offset: u.offset
|
|
773
775
|
};
|
|
774
776
|
}
|
|
775
|
-
function
|
|
776
|
-
const i =
|
|
777
|
+
function Me(t, e, n, r, s, o) {
|
|
778
|
+
const i = gt(t, e, n, r, s, o), a = n + 4;
|
|
777
779
|
return {
|
|
778
780
|
chunk: i.chunk,
|
|
779
781
|
snapshot: {
|
|
780
782
|
count: i.chunk.count,
|
|
781
783
|
raw: new Uint8Array(t, a, i.offset - a).slice(),
|
|
782
|
-
groupLayerEncoding:
|
|
784
|
+
groupLayerEncoding: o
|
|
783
785
|
},
|
|
784
786
|
offset: i.offset
|
|
785
787
|
};
|
|
786
788
|
}
|
|
787
|
-
function
|
|
789
|
+
function yt(t = "u8") {
|
|
788
790
|
return {
|
|
789
791
|
chunk: { pos: new Float32Array(0), col: new Uint8Array(0), lay: new Uint8Array(0), count: 0 },
|
|
790
792
|
snapshot: { count: 0, raw: new Uint8Array(0), groupLayerEncoding: t }
|
|
791
793
|
};
|
|
792
794
|
}
|
|
793
|
-
function
|
|
795
|
+
function ke(t = "u8") {
|
|
794
796
|
return {
|
|
795
|
-
line:
|
|
796
|
-
fill:
|
|
797
|
-
dot:
|
|
797
|
+
line: yt(t),
|
|
798
|
+
fill: yt(t),
|
|
799
|
+
dot: yt(t)
|
|
798
800
|
};
|
|
799
801
|
}
|
|
800
|
-
function
|
|
802
|
+
function De(t, e, n) {
|
|
801
803
|
var r;
|
|
802
804
|
return !!(e && n && t.deferExternalVariantGeometry && !((r = t.externalVariantBuffers) != null && r.has(e.id)));
|
|
803
805
|
}
|
|
804
|
-
function
|
|
805
|
-
if (
|
|
806
|
-
return
|
|
807
|
-
|
|
808
|
-
const a = n.offset + r,
|
|
809
|
-
if (
|
|
810
|
-
throw new
|
|
811
|
-
return { chunk:
|
|
806
|
+
function bt(t, e, n, r, s, o, i) {
|
|
807
|
+
if (s === 0)
|
|
808
|
+
return yt(i);
|
|
809
|
+
at(r, s, n.length, o);
|
|
810
|
+
const a = n.offset + r, u = a + s, c = Me(t, e, a, u, o, i);
|
|
811
|
+
if (c.offset !== u)
|
|
812
|
+
throw new f("E_GROUP_RANGE", `${o} has trailing bytes`);
|
|
813
|
+
return { chunk: c.chunk, snapshot: c.snapshot };
|
|
812
814
|
}
|
|
813
|
-
function
|
|
815
|
+
function Ft(t, e, n) {
|
|
814
816
|
if ([
|
|
815
817
|
t.getUint32(e + 8, !0),
|
|
816
818
|
t.getUint32(e + 12, !0),
|
|
@@ -818,252 +820,279 @@ function Ue(t, e, n) {
|
|
|
818
820
|
t.getUint32(e + 20, !0),
|
|
819
821
|
t.getUint32(e + 24, !0),
|
|
820
822
|
t.getUint32(e + 28, !0)
|
|
821
|
-
].some((
|
|
822
|
-
throw new
|
|
823
|
+
].some((s) => s !== 0))
|
|
824
|
+
throw new f("E_GROUP_RANGE", `V3 external variant ${n} must use zero inline geometry offsets`);
|
|
823
825
|
}
|
|
824
|
-
function
|
|
825
|
-
const i =
|
|
826
|
+
function ot(t, e, n, r, s, o) {
|
|
827
|
+
const i = Me(t, e, n, t.byteLength, s, o);
|
|
826
828
|
if (i.chunk.count !== r)
|
|
827
|
-
throw new
|
|
829
|
+
throw new f(
|
|
828
830
|
"E_GROUP_RANGE",
|
|
829
|
-
`${
|
|
831
|
+
`${s} vertex_count mismatch: manifest=${r}, sidecar=${i.chunk.count}`
|
|
830
832
|
);
|
|
831
833
|
return i;
|
|
832
834
|
}
|
|
833
|
-
function
|
|
835
|
+
function xt(t) {
|
|
834
836
|
return "normal" in t ? t.normal : t;
|
|
835
837
|
}
|
|
836
|
-
function
|
|
837
|
-
const r =
|
|
838
|
-
let
|
|
839
|
-
const i =
|
|
840
|
-
|
|
841
|
-
const a =
|
|
842
|
-
|
|
843
|
-
const
|
|
844
|
-
if (
|
|
845
|
-
throw new
|
|
838
|
+
function qn(t, e, n) {
|
|
839
|
+
const r = xt(t), s = new DataView(e);
|
|
840
|
+
let o = 0;
|
|
841
|
+
const i = ot(e, s, o, r.line_count, `V3 external variant ${t.id} line blob`, n);
|
|
842
|
+
o = i.offset;
|
|
843
|
+
const a = ot(e, s, o, r.fill_count, `V3 external variant ${t.id} fill blob`, n);
|
|
844
|
+
o = a.offset;
|
|
845
|
+
const u = ot(e, s, o, r.dot_count, `V3 external variant ${t.id} dot blob`, n);
|
|
846
|
+
if (o = u.offset, o !== e.byteLength)
|
|
847
|
+
throw new f("E_GROUP_RANGE", `V3 external variant ${t.id} sidecar has trailing bytes`);
|
|
846
848
|
return {
|
|
847
849
|
line: { chunk: i.chunk, snapshot: i.snapshot },
|
|
848
850
|
fill: { chunk: a.chunk, snapshot: a.snapshot },
|
|
849
|
-
dot: { chunk:
|
|
851
|
+
dot: { chunk: u.chunk, snapshot: u.snapshot }
|
|
850
852
|
};
|
|
851
853
|
}
|
|
852
|
-
function
|
|
853
|
-
const n =
|
|
854
|
-
let
|
|
855
|
-
const i = r.offset + r.length, a =
|
|
856
|
-
|
|
857
|
-
const
|
|
858
|
-
|
|
859
|
-
const m =
|
|
860
|
-
if (
|
|
861
|
-
throw new
|
|
854
|
+
function Jn(t, e) {
|
|
855
|
+
const n = wn(e), r = pn(n, 257, "BLOCK_NORMAL_GEOMETRY"), s = new DataView(e);
|
|
856
|
+
let o = r.offset;
|
|
857
|
+
const i = r.offset + r.length, a = Ie(n.versionMinor), u = ot(e, s, o, t.normal.line_count, `V3.3 external variant ${t.id} normal line blob`, a);
|
|
858
|
+
o = u.offset;
|
|
859
|
+
const c = ot(e, s, o, t.normal.fill_count, `V3.3 external variant ${t.id} normal fill blob`, a);
|
|
860
|
+
o = c.offset;
|
|
861
|
+
const m = ot(e, s, o, t.normal.dot_count, `V3.3 external variant ${t.id} normal dot blob`, a);
|
|
862
|
+
if (o = m.offset, o !== i)
|
|
863
|
+
throw new f("E_GROUP_RANGE", `V3.3 external variant ${t.id} normal geometry section has trailing bytes`);
|
|
862
864
|
return {
|
|
863
|
-
line: { chunk:
|
|
864
|
-
fill: { chunk:
|
|
865
|
+
line: { chunk: u.chunk, snapshot: u.snapshot },
|
|
866
|
+
fill: { chunk: c.chunk, snapshot: c.snapshot },
|
|
865
867
|
dot: { chunk: m.chunk, snapshot: m.snapshot }
|
|
866
868
|
};
|
|
867
869
|
}
|
|
868
|
-
function
|
|
870
|
+
function Zn(t, e, n = "u8") {
|
|
869
871
|
if (e.byteLength !== t.raw_size)
|
|
870
|
-
throw new
|
|
872
|
+
throw new f(
|
|
871
873
|
"E_GROUP_RANGE",
|
|
872
874
|
`V3 external variant ${t.id} raw_size mismatch: manifest=${t.raw_size}, sidecar=${e.byteLength}`
|
|
873
875
|
);
|
|
874
|
-
return "normal" in t ?
|
|
876
|
+
return "normal" in t ? Jn(t, e) : qn(t, e, n);
|
|
875
877
|
}
|
|
876
|
-
function
|
|
878
|
+
function Le(t, e, n) {
|
|
877
879
|
const r = e == null ? void 0 : e.get(t.id);
|
|
878
880
|
if (!r)
|
|
879
|
-
throw new
|
|
880
|
-
return
|
|
881
|
+
throw new f("E_GROUP_RANGE", `Missing V3 external sidecar buffer for variant ${t.id}`);
|
|
882
|
+
return Zn(t, r, n);
|
|
881
883
|
}
|
|
882
|
-
function
|
|
884
|
+
function At(t, e, n, r, s) {
|
|
883
885
|
if (r === 0)
|
|
884
886
|
return 0;
|
|
885
|
-
if (
|
|
886
|
-
throw new
|
|
887
|
+
if (at(n, r, e.length, s), r < 4)
|
|
888
|
+
throw new f("E_GROUP_RANGE", `Missing ${s} vertex_count`);
|
|
887
889
|
return t.getUint32(e.offset + n, !0);
|
|
888
890
|
}
|
|
889
|
-
function
|
|
890
|
-
const
|
|
891
|
-
let
|
|
892
|
-
const i =
|
|
893
|
-
|
|
894
|
-
const a =
|
|
895
|
-
|
|
896
|
-
const
|
|
897
|
-
if (
|
|
898
|
-
throw new
|
|
891
|
+
function Qn(t, e, n, r) {
|
|
892
|
+
const s = n.offset + n.length;
|
|
893
|
+
let o = n.offset;
|
|
894
|
+
const i = gt(t, e, o, s, "V3 BASE_GEOMETRY line", r);
|
|
895
|
+
o = i.offset;
|
|
896
|
+
const a = gt(t, e, o, s, "V3 BASE_GEOMETRY fill", r);
|
|
897
|
+
o = a.offset;
|
|
898
|
+
const u = gt(t, e, o, s, "V3 BASE_GEOMETRY dot", r);
|
|
899
|
+
if (o = u.offset, o !== s)
|
|
900
|
+
throw new f("E_GROUP_RANGE", "V3 BASE_GEOMETRY has trailing bytes");
|
|
899
901
|
return {
|
|
900
902
|
line: i.chunk,
|
|
901
903
|
fill: a.chunk,
|
|
902
|
-
dot:
|
|
904
|
+
dot: u.chunk
|
|
903
905
|
};
|
|
904
906
|
}
|
|
905
|
-
function
|
|
906
|
-
return
|
|
907
|
+
function It(t) {
|
|
908
|
+
return dn(t.pos, t.count, 2);
|
|
907
909
|
}
|
|
908
|
-
function
|
|
909
|
-
return
|
|
910
|
+
function Fe(t, e, n) {
|
|
911
|
+
return kt(kt(It(t), It(e)), It(n));
|
|
910
912
|
}
|
|
911
|
-
function
|
|
912
|
-
return "normal" in t ?
|
|
913
|
+
function Xt(t) {
|
|
914
|
+
return "normal" in t ? Hn(t.normal.bbox ?? t.normal.own_bbox ?? null) : null;
|
|
913
915
|
}
|
|
914
|
-
function
|
|
916
|
+
function tr(t, e, n, r, s, o, i, a) {
|
|
915
917
|
if (n.length % 60 !== 0)
|
|
916
|
-
throw new
|
|
917
|
-
const
|
|
918
|
-
for (let
|
|
919
|
-
const
|
|
920
|
-
line:
|
|
918
|
+
throw new f("E_GROUP_RANGE", "V3 VARIANT_TABLE length must be a multiple of 60");
|
|
919
|
+
const u = [], c = /* @__PURE__ */ new Map(), m = [], g = n.length / 60;
|
|
920
|
+
for (let l = 0; l < g; l += 1) {
|
|
921
|
+
const d = n.offset + l * 60, p = e.getUint32(d, !0), h = e.getUint32(d + 4, !0), y = (o == null ? void 0 : o[l]) ?? null, w = !y || !a.requiredExternalVariantIds || a.requiredExternalVariantIds.has(l), _ = De(a, y, w), E = y ? (Ft(e, d, l), !w || _ ? ke(i) : Le(y, a.externalVariantBuffers, i)) : {
|
|
922
|
+
line: bt(
|
|
921
923
|
t,
|
|
922
924
|
e,
|
|
923
925
|
r,
|
|
924
|
-
e.getUint32(
|
|
925
|
-
e.getUint32(
|
|
926
|
-
`V3 variant ${
|
|
926
|
+
e.getUint32(d + 8, !0),
|
|
927
|
+
e.getUint32(d + 12, !0),
|
|
928
|
+
`V3 variant ${l} line blob`,
|
|
927
929
|
i
|
|
928
930
|
),
|
|
929
|
-
fill:
|
|
931
|
+
fill: bt(
|
|
930
932
|
t,
|
|
931
933
|
e,
|
|
932
934
|
r,
|
|
933
|
-
e.getUint32(
|
|
934
|
-
e.getUint32(
|
|
935
|
-
`V3 variant ${
|
|
935
|
+
e.getUint32(d + 16, !0),
|
|
936
|
+
e.getUint32(d + 20, !0),
|
|
937
|
+
`V3 variant ${l} fill blob`,
|
|
936
938
|
i
|
|
937
939
|
),
|
|
938
|
-
dot:
|
|
940
|
+
dot: bt(
|
|
939
941
|
t,
|
|
940
942
|
e,
|
|
941
943
|
r,
|
|
942
|
-
e.getUint32(
|
|
943
|
-
e.getUint32(
|
|
944
|
-
`V3 variant ${
|
|
944
|
+
e.getUint32(d + 24, !0),
|
|
945
|
+
e.getUint32(d + 28, !0),
|
|
946
|
+
`V3 variant ${l} dot blob`,
|
|
945
947
|
i
|
|
946
948
|
)
|
|
947
|
-
},
|
|
948
|
-
id:
|
|
949
|
-
name:
|
|
950
|
-
line_count:
|
|
951
|
-
fill_count:
|
|
952
|
-
dot_count:
|
|
953
|
-
sourceLineCount:
|
|
949
|
+
}, A = y ? xt(y) : null, U = (A == null ? void 0 : A.line_count) ?? E.line.chunk.count, N = (A == null ? void 0 : A.fill_count) ?? E.fill.chunk.count, C = (A == null ? void 0 : A.dot_count) ?? E.dot.chunk.count, V = y && (!w || _) ? Xt(y) : Fe(E.line.chunk, E.fill.chunk, E.dot.chunk), G = {
|
|
950
|
+
id: l,
|
|
951
|
+
name: _t(s, p, h, `V3 variant ${l} name`),
|
|
952
|
+
line_count: _ ? U : E.line.chunk.count,
|
|
953
|
+
fill_count: _ ? N : E.fill.chunk.count,
|
|
954
|
+
dot_count: _ ? C : E.dot.chunk.count,
|
|
955
|
+
sourceLineCount: U,
|
|
954
956
|
sourceFillCount: N,
|
|
955
957
|
sourceDotCount: C,
|
|
956
|
-
nestedStart: e.getUint32(
|
|
957
|
-
nestedCount: e.getUint32(
|
|
958
|
-
textStart: e.getUint32(
|
|
959
|
-
textCount: e.getUint32(
|
|
960
|
-
precisionOriginX: e.getFloat32(
|
|
961
|
-
precisionOriginY: e.getFloat32(
|
|
958
|
+
nestedStart: e.getUint32(d + 32, !0),
|
|
959
|
+
nestedCount: e.getUint32(d + 36, !0),
|
|
960
|
+
textStart: e.getUint32(d + 40, !0),
|
|
961
|
+
textCount: e.getUint32(d + 44, !0),
|
|
962
|
+
precisionOriginX: e.getFloat32(d + 48, !0),
|
|
963
|
+
precisionOriginY: e.getFloat32(d + 52, !0),
|
|
962
964
|
lineSnapshot: E.line.snapshot,
|
|
963
965
|
fillSnapshot: E.fill.snapshot,
|
|
964
966
|
dotSnapshot: E.dot.snapshot,
|
|
965
|
-
bbox:
|
|
967
|
+
bbox: V
|
|
966
968
|
};
|
|
967
|
-
|
|
969
|
+
u.push(G), c.set(l, { line: E.line.chunk, fill: E.fill.chunk, dot: E.dot.chunk }), m.push({ line: E.line.snapshot, fill: E.fill.snapshot, dot: E.dot.snapshot });
|
|
968
970
|
}
|
|
969
|
-
return { variantsById:
|
|
971
|
+
return { variantsById: u, variants: c, snapshots: m };
|
|
970
972
|
}
|
|
971
|
-
function
|
|
973
|
+
function fe(t, e, n, r, s) {
|
|
972
974
|
if (e.length % 60 !== 0)
|
|
973
|
-
throw new
|
|
974
|
-
const
|
|
975
|
+
throw new f("E_GROUP_RANGE", "V3 VARIANT_TABLE length must be a multiple of 60");
|
|
976
|
+
const o = [], i = e.length / 60;
|
|
975
977
|
for (let a = 0; a < i; a += 1) {
|
|
976
|
-
const
|
|
977
|
-
g &&
|
|
978
|
-
const
|
|
979
|
-
|
|
978
|
+
const u = e.offset + a * 60, c = t.getUint32(u, !0), m = t.getUint32(u + 4, !0), g = (s == null ? void 0 : s[a]) ?? null;
|
|
979
|
+
g && Ft(t, u, a);
|
|
980
|
+
const l = g ? xt(g) : null, d = t.getFloat32(u + 48, !0), p = t.getFloat32(u + 52, !0);
|
|
981
|
+
o.push({
|
|
980
982
|
id: a,
|
|
981
|
-
name:
|
|
982
|
-
line_count: g ?
|
|
983
|
+
name: _t(r, c, m, `V3 variant ${a} name`),
|
|
984
|
+
line_count: g ? l.line_count : At(
|
|
983
985
|
t,
|
|
984
986
|
n,
|
|
985
|
-
t.getUint32(
|
|
986
|
-
t.getUint32(
|
|
987
|
+
t.getUint32(u + 8, !0),
|
|
988
|
+
t.getUint32(u + 12, !0),
|
|
987
989
|
`V3 variant ${a} line blob`
|
|
988
990
|
),
|
|
989
|
-
fill_count: g ?
|
|
991
|
+
fill_count: g ? l.fill_count : At(
|
|
990
992
|
t,
|
|
991
993
|
n,
|
|
992
|
-
t.getUint32(
|
|
993
|
-
t.getUint32(
|
|
994
|
+
t.getUint32(u + 16, !0),
|
|
995
|
+
t.getUint32(u + 20, !0),
|
|
994
996
|
`V3 variant ${a} fill blob`
|
|
995
997
|
),
|
|
996
|
-
dot_count: g ?
|
|
998
|
+
dot_count: g ? l.dot_count : At(
|
|
997
999
|
t,
|
|
998
1000
|
n,
|
|
999
|
-
t.getUint32(
|
|
1000
|
-
t.getUint32(
|
|
1001
|
+
t.getUint32(u + 24, !0),
|
|
1002
|
+
t.getUint32(u + 28, !0),
|
|
1001
1003
|
`V3 variant ${a} dot blob`
|
|
1002
1004
|
),
|
|
1003
|
-
nestedStart: t.getUint32(
|
|
1004
|
-
nestedCount: t.getUint32(
|
|
1005
|
-
textStart: t.getUint32(
|
|
1006
|
-
textCount: t.getUint32(
|
|
1007
|
-
precisionOriginX:
|
|
1008
|
-
precisionOriginY:
|
|
1009
|
-
bbox: g ?
|
|
1005
|
+
nestedStart: t.getUint32(u + 32, !0),
|
|
1006
|
+
nestedCount: t.getUint32(u + 36, !0),
|
|
1007
|
+
textStart: t.getUint32(u + 40, !0),
|
|
1008
|
+
textCount: t.getUint32(u + 44, !0),
|
|
1009
|
+
precisionOriginX: d,
|
|
1010
|
+
precisionOriginY: p,
|
|
1011
|
+
bbox: g ? Xt(g) : null
|
|
1010
1012
|
});
|
|
1011
1013
|
}
|
|
1012
|
-
return
|
|
1014
|
+
return o;
|
|
1015
|
+
}
|
|
1016
|
+
function er(t, e, n) {
|
|
1017
|
+
var a;
|
|
1018
|
+
const r = new DataView(t), s = [], o = /* @__PURE__ */ new Map(), i = [];
|
|
1019
|
+
for (const u of e.variantHeaders) {
|
|
1020
|
+
const c = ((a = e.externalVariants) == null ? void 0 : a[u.id]) ?? null, m = !c || !n.requiredExternalVariantIds || n.requiredExternalVariantIds.has(u.id), g = De(n, c, m), l = c ? (() => {
|
|
1021
|
+
const E = e.sections.get(5).offset + u.id * 60;
|
|
1022
|
+
return Ft(r, E, u.id), !m || g ? ke(e.groupLayerEncoding) : Le(c, n.externalVariantBuffers, e.groupLayerEncoding);
|
|
1023
|
+
})() : e.internalVariants.get(u.id);
|
|
1024
|
+
if (!l)
|
|
1025
|
+
throw new f("E_GROUP_RANGE", `Missing cached V3 variant geometry for variant ${u.id}`);
|
|
1026
|
+
const d = c ? xt(c) : null, p = (d == null ? void 0 : d.line_count) ?? l.line.chunk.count, h = (d == null ? void 0 : d.fill_count) ?? l.fill.chunk.count, y = (d == null ? void 0 : d.dot_count) ?? l.dot.chunk.count, w = c && (!m || g) ? Xt(c) : Fe(l.line.chunk, l.fill.chunk, l.dot.chunk), _ = {
|
|
1027
|
+
...u,
|
|
1028
|
+
line_count: g ? p : l.line.chunk.count,
|
|
1029
|
+
fill_count: g ? h : l.fill.chunk.count,
|
|
1030
|
+
dot_count: g ? y : l.dot.chunk.count,
|
|
1031
|
+
sourceLineCount: p,
|
|
1032
|
+
sourceFillCount: h,
|
|
1033
|
+
sourceDotCount: y,
|
|
1034
|
+
lineSnapshot: l.line.snapshot,
|
|
1035
|
+
fillSnapshot: l.fill.snapshot,
|
|
1036
|
+
dotSnapshot: l.dot.snapshot,
|
|
1037
|
+
bbox: w
|
|
1038
|
+
};
|
|
1039
|
+
s.push(_), o.set(u.id, { line: l.line.chunk, fill: l.fill.chunk, dot: l.dot.chunk }), i.push({ line: l.line.snapshot, fill: l.fill.snapshot, dot: l.dot.snapshot });
|
|
1040
|
+
}
|
|
1041
|
+
return { variantsById: s, variants: o, snapshots: i };
|
|
1013
1042
|
}
|
|
1014
|
-
function
|
|
1043
|
+
function mt(t, e, n) {
|
|
1015
1044
|
if (e.length % 32 !== 0)
|
|
1016
|
-
throw new
|
|
1017
|
-
const r = new DataView(t),
|
|
1018
|
-
for (let
|
|
1019
|
-
const i = r.getUint16(
|
|
1020
|
-
|
|
1021
|
-
variantId: r.getUint32(
|
|
1022
|
-
matA: r.getFloat32(
|
|
1023
|
-
matB: r.getFloat32(
|
|
1024
|
-
matC: r.getFloat32(
|
|
1025
|
-
matD: r.getFloat32(
|
|
1026
|
-
tx: r.getFloat32(
|
|
1027
|
-
ty: r.getFloat32(
|
|
1028
|
-
insLayerIdx: r.getUint16(
|
|
1045
|
+
throw new f("E_GROUP_RANGE", `${n} length must be a multiple of 32`);
|
|
1046
|
+
const r = new DataView(t), s = [];
|
|
1047
|
+
for (let o = e.offset; o < e.offset + e.length; o += 32) {
|
|
1048
|
+
const i = r.getUint16(o + 30, !0);
|
|
1049
|
+
dr(i), s.push({
|
|
1050
|
+
variantId: r.getUint32(o, !0),
|
|
1051
|
+
matA: r.getFloat32(o + 4, !0),
|
|
1052
|
+
matB: r.getFloat32(o + 8, !0),
|
|
1053
|
+
matC: r.getFloat32(o + 12, !0),
|
|
1054
|
+
matD: r.getFloat32(o + 16, !0),
|
|
1055
|
+
tx: r.getFloat32(o + 20, !0),
|
|
1056
|
+
ty: r.getFloat32(o + 24, !0),
|
|
1057
|
+
insLayerIdx: r.getUint16(o + 28, !0),
|
|
1029
1058
|
flags: i
|
|
1030
1059
|
});
|
|
1031
1060
|
}
|
|
1032
|
-
return
|
|
1061
|
+
return s;
|
|
1033
1062
|
}
|
|
1034
|
-
function
|
|
1035
|
-
const r = t.getUint32(e, !0),
|
|
1063
|
+
function nr(t, e, n) {
|
|
1064
|
+
const r = t.getUint32(e, !0), s = t.getUint32(e + 4, !0), o = t.getUint8(e + 42), i = t.getUint8(e + 43), a = t.getFloat32(e + 24, !0), u = t.getFloat32(e + 28, !0);
|
|
1036
1065
|
return {
|
|
1037
|
-
t:
|
|
1066
|
+
t: _t(n, r, s, "V3 text value"),
|
|
1038
1067
|
x: t.getFloat32(e + 8, !0),
|
|
1039
1068
|
y: t.getFloat32(e + 12, !0),
|
|
1040
1069
|
h: t.getFloat32(e + 16, !0),
|
|
1041
1070
|
r: t.getFloat32(e + 20, !0),
|
|
1042
1071
|
c: [t.getUint8(e + 36), t.getUint8(e + 37), t.getUint8(e + 38)],
|
|
1043
1072
|
li: t.getUint16(e + 40, !0),
|
|
1044
|
-
ha:
|
|
1045
|
-
va:
|
|
1073
|
+
ha: Gn[o & 3] ?? "left",
|
|
1074
|
+
va: Nn[o >> 2 & 3] ?? "alphabetic",
|
|
1046
1075
|
lh: t.getFloat32(e + 32, !0),
|
|
1047
1076
|
...a ? { w: a } : {},
|
|
1048
|
-
...
|
|
1077
|
+
...u !== 1 ? { wf: u } : {},
|
|
1049
1078
|
...i & 1 ? { mx: !0 } : {},
|
|
1050
1079
|
...i & 2 ? { my: !0 } : {}
|
|
1051
1080
|
};
|
|
1052
1081
|
}
|
|
1053
|
-
function
|
|
1082
|
+
function Rt(t, e, n, r) {
|
|
1054
1083
|
if (e.length % 44 !== 0)
|
|
1055
|
-
throw new
|
|
1056
|
-
const
|
|
1084
|
+
throw new f("E_GROUP_RANGE", `${r} length must be a multiple of 44`);
|
|
1085
|
+
const s = [], o = new DataView(t);
|
|
1057
1086
|
for (let i = e.offset; i < e.offset + e.length; i += 44)
|
|
1058
|
-
|
|
1059
|
-
return
|
|
1087
|
+
s.push(nr(o, i, n));
|
|
1088
|
+
return s;
|
|
1060
1089
|
}
|
|
1061
|
-
function
|
|
1090
|
+
function rr(t, e) {
|
|
1062
1091
|
if (t.length % 44 !== 0)
|
|
1063
|
-
throw new
|
|
1092
|
+
throw new f("E_GROUP_RANGE", `${e} length must be a multiple of 44`);
|
|
1064
1093
|
return t.length / 44;
|
|
1065
1094
|
}
|
|
1066
|
-
function
|
|
1095
|
+
function or(t, e, n, r) {
|
|
1067
1096
|
return {
|
|
1068
1097
|
instanceId: n,
|
|
1069
1098
|
variantId: e.variantId,
|
|
@@ -1076,195 +1105,197 @@ function jn(t, e, n, r) {
|
|
|
1076
1105
|
insLayerIdx: r
|
|
1077
1106
|
};
|
|
1078
1107
|
}
|
|
1079
|
-
function
|
|
1080
|
-
var
|
|
1081
|
-
const
|
|
1108
|
+
function sr(t, e, n, r) {
|
|
1109
|
+
var h;
|
|
1110
|
+
const s = ((h = r[e.insLayerIdx]) == null ? void 0 : h.visible) === !1, o = e.matA * t.x + e.matC * t.y + e.tx, i = e.matB * t.x + e.matD * t.y + e.ty, a = Math.hypot(e.matA, e.matB), u = Math.hypot(e.matC, e.matD), c = u > 1e-12 ? u : a > 1e-12 ? a : 1, m = a > 1e-12 && c > 1e-12 ? a / c : 1, g = ir(t, e), { mx: l, my: d, ...p } = t;
|
|
1082
1111
|
return {
|
|
1083
|
-
...
|
|
1084
|
-
x:
|
|
1112
|
+
...p,
|
|
1113
|
+
x: o,
|
|
1085
1114
|
y: i,
|
|
1086
|
-
h: t.h *
|
|
1087
|
-
w: t.w === void 0 ? void 0 : t.w *
|
|
1115
|
+
h: t.h * c,
|
|
1116
|
+
w: t.w === void 0 ? void 0 : t.w * c,
|
|
1088
1117
|
wf: (t.wf ?? 1) * m,
|
|
1089
1118
|
r: g.r,
|
|
1090
1119
|
...g.mx ? { mx: !0 } : {},
|
|
1091
1120
|
...g.my ? { my: !0 } : {},
|
|
1092
|
-
li:
|
|
1121
|
+
li: s || t.li === n ? e.insLayerIdx : t.li
|
|
1093
1122
|
};
|
|
1094
1123
|
}
|
|
1095
|
-
function
|
|
1096
|
-
const n = t.r * Math.PI / 180, r = Math.cos(n),
|
|
1097
|
-
return g < 0 ? { r: Math.atan2(-
|
|
1124
|
+
function ir(t, e) {
|
|
1125
|
+
const n = t.r * Math.PI / 180, r = Math.cos(n), s = Math.sin(n), o = t.mx ? -1 : 1, i = t.my ? -1 : 1, a = o * (e.matA * r + e.matC * s), u = o * (e.matB * r + e.matD * s), c = i * (e.matC * r - e.matA * s), m = i * (e.matD * r - e.matB * s), g = a * m - u * c, l = Math.atan2(u, a) * 180 / Math.PI;
|
|
1126
|
+
return g < 0 ? { r: Math.atan2(-u, -a) * 180 / Math.PI, mx: !0 } : { r: l };
|
|
1098
1127
|
}
|
|
1099
|
-
function
|
|
1128
|
+
function ar(t, e) {
|
|
1100
1129
|
return t === e ? e : t;
|
|
1101
1130
|
}
|
|
1102
|
-
function
|
|
1131
|
+
function ur(t, e, n) {
|
|
1103
1132
|
return t === n ? e : t;
|
|
1104
1133
|
}
|
|
1105
|
-
function
|
|
1106
|
-
const
|
|
1107
|
-
bounds:
|
|
1108
|
-
entity_count: Number(
|
|
1109
|
-
line_count: Number(
|
|
1110
|
-
fill_count: Number(
|
|
1111
|
-
dot_count: Number(
|
|
1112
|
-
layers:
|
|
1134
|
+
function lr(t, e, n) {
|
|
1135
|
+
const r = new DataView(t), s = n ? void 0 : Ln(t), o = (n == null ? void 0 : n.versionMinor) ?? s.versionMinor, i = (n == null ? void 0 : n.sections) ?? s.sections, a = (n == null ? void 0 : n.groupLayerEncoding) ?? Ie(o), u = n ? n.sections.get(1) : tt(i, 1, "SCENE_META"), c = n ? n.sections.get(2) : tt(i, 2, "LAYER_TABLE"), m = n ? n.sections.get(3) : tt(i, 3, "STRING_TABLE"), g = n ? n.sections.get(4) : tt(i, 4, "BASE_GEOMETRY"), l = n ? n.sections.get(5) : tt(i, 5, "VARIANT_TABLE"), d = n ? n.sections.get(6) : tt(i, 6, "VARIANT_GEOMETRY"), p = n ? n.sections.get(7) : tt(i, 7, "SCENE_INSTANCE_TABLE"), h = (n == null ? void 0 : n.sections.get(8)) ?? pt(i, 8), y = (n == null ? void 0 : n.sections.get(9)) ?? pt(i, 9), w = (n == null ? void 0 : n.sections.get(10)) ?? pt(i, 10), _ = (n == null ? void 0 : n.sceneMeta) ?? Fn(t, u, "SCENE_META"), E = (n == null ? void 0 : n.externalVariants) ?? (Xn(_) ? Kn(_, l.length / 60) : null), A = Yn(_), U = (n == null ? void 0 : n.externalAnnotations) ?? (A ? jn(_) : null), N = (n == null ? void 0 : n.geoMetaFeatures) ?? zn(_, E, A), C = (n == null ? void 0 : n.geoMetaEncoding) ?? (A ? "nested_instanced_external_annotations" : E ? "nested_instanced_external" : "nested_instanced"), V = (n == null ? void 0 : n.stringTable) ?? new Uint8Array(t, m.offset, m.length), G = n != null && n.layers ? [...n.layers] : Wn(t, c, V), $ = (n == null ? void 0 : n.layer0Index) ?? Number(_.layer0_index ?? 0), M = (n == null ? void 0 : n.headerForValidation) ?? Pe({
|
|
1136
|
+
bounds: _.bounds ?? [0, 0, 0, 0],
|
|
1137
|
+
entity_count: Number(_.entity_count ?? 0),
|
|
1138
|
+
line_count: Number(_.base_line_count ?? 0),
|
|
1139
|
+
fill_count: Number(_.base_fill_count ?? 0),
|
|
1140
|
+
dot_count: Number(_.base_dot_count ?? 0),
|
|
1141
|
+
layers: G,
|
|
1113
1142
|
texts: []
|
|
1114
1143
|
});
|
|
1115
|
-
|
|
1116
|
-
const
|
|
1144
|
+
fr($, M.layers);
|
|
1145
|
+
const I = (n == null ? void 0 : n.baseGeometry) ?? Qn(t, r, g, a);
|
|
1117
1146
|
if (!e.loadBlocks) {
|
|
1118
|
-
const x =
|
|
1119
|
-
if (Number(
|
|
1120
|
-
throw new
|
|
1121
|
-
if (Number(
|
|
1122
|
-
throw new
|
|
1123
|
-
if (Number(
|
|
1124
|
-
throw new
|
|
1125
|
-
if (Number(
|
|
1126
|
-
throw new
|
|
1127
|
-
if (Number(
|
|
1128
|
-
throw new
|
|
1129
|
-
for (const
|
|
1130
|
-
if (
|
|
1131
|
-
throw new
|
|
1132
|
-
if (
|
|
1133
|
-
throw new
|
|
1147
|
+
const x = (n == null ? void 0 : n.variantHeaders) ?? fe(r, l, d, V, E), b = (n == null ? void 0 : n.sceneInstances) ?? mt(t, p, "V3 SCENE_INSTANCE_TABLE"), B = (n == null ? void 0 : n.nestedInstances) ?? mt(t, h, "V3 NESTED_INSTANCE_TABLE"), S = (n == null ? void 0 : n.sceneTexts) ?? Rt(t, y, V, "V3 SCENE_TEXT_TABLE"), O = (n == null ? void 0 : n.variantTextCount) ?? rr(w, "V3 VARIANT_TEXT_TABLE");
|
|
1148
|
+
if (Number(_.variant_count ?? x.length) !== x.length)
|
|
1149
|
+
throw new f("E_GROUP_RANGE", "V3 variant count mismatch");
|
|
1150
|
+
if (Number(_.scene_instance_count ?? b.length) !== b.length)
|
|
1151
|
+
throw new f("E_GROUP_RANGE", "V3 scene instance count mismatch");
|
|
1152
|
+
if (Number(_.nested_instance_count ?? B.length) !== B.length)
|
|
1153
|
+
throw new f("E_GROUP_RANGE", "V3 nested instance count mismatch");
|
|
1154
|
+
if (Number(_.scene_text_count ?? S.length) !== S.length)
|
|
1155
|
+
throw new f("E_GROUP_RANGE", "V3 scene text count mismatch");
|
|
1156
|
+
if (Number(_.variant_text_count ?? O) !== O)
|
|
1157
|
+
throw new f("E_GROUP_RANGE", "V3 variant text count mismatch");
|
|
1158
|
+
for (const R of x) {
|
|
1159
|
+
if (R.nestedStart + R.nestedCount > B.length)
|
|
1160
|
+
throw new f("E_GROUP_RANGE", `V3 variant ${R.id} nested range exceeds table`);
|
|
1161
|
+
if (R.textStart + R.textCount > O)
|
|
1162
|
+
throw new f("E_GROUP_RANGE", `V3 variant ${R.id} text range exceeds table`);
|
|
1134
1163
|
}
|
|
1135
|
-
return
|
|
1136
|
-
if (!x[
|
|
1137
|
-
throw new
|
|
1138
|
-
|
|
1164
|
+
return ue(b, B, (R) => {
|
|
1165
|
+
if (!x[R.variantId])
|
|
1166
|
+
throw new f("E_GROUP_RANGE", `Unknown V3 variantId ${R.variantId}`);
|
|
1167
|
+
ye(R.insLayerIdx, G.length);
|
|
1139
1168
|
}), {
|
|
1140
1169
|
meta: {
|
|
1141
|
-
bounds:
|
|
1142
|
-
entity_count: Number(
|
|
1143
|
-
line_count:
|
|
1144
|
-
fill_count:
|
|
1145
|
-
dot_count:
|
|
1170
|
+
bounds: _.bounds ?? [0, 0, 0, 0],
|
|
1171
|
+
entity_count: Number(_.entity_count ?? 0),
|
|
1172
|
+
line_count: I.line.count,
|
|
1173
|
+
fill_count: I.fill.count,
|
|
1174
|
+
dot_count: I.dot.count,
|
|
1146
1175
|
version: 3,
|
|
1147
|
-
version_minor:
|
|
1148
|
-
encoding:
|
|
1149
|
-
...
|
|
1150
|
-
...
|
|
1151
|
-
...
|
|
1152
|
-
layer0_index:
|
|
1153
|
-
block_variants: x.map((
|
|
1154
|
-
id:
|
|
1155
|
-
name:
|
|
1156
|
-
line_count:
|
|
1157
|
-
fill_count:
|
|
1158
|
-
dot_count:
|
|
1176
|
+
version_minor: o,
|
|
1177
|
+
encoding: C,
|
|
1178
|
+
...N ? { features: N } : {},
|
|
1179
|
+
...E ? { external_variants: [...E] } : {},
|
|
1180
|
+
...U ? { external_annotations: U } : {},
|
|
1181
|
+
layer0_index: $,
|
|
1182
|
+
block_variants: x.map((R) => ({
|
|
1183
|
+
id: R.id,
|
|
1184
|
+
name: R.name,
|
|
1185
|
+
line_count: R.line_count,
|
|
1186
|
+
fill_count: R.fill_count,
|
|
1187
|
+
dot_count: R.dot_count
|
|
1159
1188
|
})),
|
|
1160
|
-
instance_count:
|
|
1161
|
-
layers:
|
|
1162
|
-
texts:
|
|
1189
|
+
instance_count: b.length,
|
|
1190
|
+
layers: G,
|
|
1191
|
+
texts: S
|
|
1163
1192
|
},
|
|
1164
1193
|
header: {
|
|
1165
|
-
...
|
|
1166
|
-
lineCount:
|
|
1167
|
-
fillCount:
|
|
1168
|
-
dotCount:
|
|
1169
|
-
textCount:
|
|
1170
|
-
texts:
|
|
1194
|
+
...M,
|
|
1195
|
+
lineCount: I.line.count,
|
|
1196
|
+
fillCount: I.fill.count,
|
|
1197
|
+
dotCount: I.dot.count,
|
|
1198
|
+
textCount: S.length,
|
|
1199
|
+
texts: S
|
|
1171
1200
|
},
|
|
1172
1201
|
decoded: {
|
|
1173
|
-
baseLine:
|
|
1174
|
-
baseFill:
|
|
1175
|
-
baseDot:
|
|
1202
|
+
baseLine: I.line,
|
|
1203
|
+
baseFill: I.fill,
|
|
1204
|
+
baseDot: I.dot,
|
|
1176
1205
|
variants: /* @__PURE__ */ new Map(),
|
|
1177
1206
|
instances: [],
|
|
1178
1207
|
instanceIdByVariantOrdinal: /* @__PURE__ */ new Map()
|
|
1179
1208
|
}
|
|
1180
1209
|
};
|
|
1181
1210
|
}
|
|
1182
|
-
const
|
|
1211
|
+
const T = n ? er(t, n, e) : tr(
|
|
1183
1212
|
t,
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1213
|
+
r,
|
|
1214
|
+
l,
|
|
1215
|
+
d,
|
|
1216
|
+
V,
|
|
1217
|
+
E,
|
|
1218
|
+
a,
|
|
1190
1219
|
e
|
|
1191
|
-
),
|
|
1192
|
-
if (Number(
|
|
1193
|
-
throw new
|
|
1194
|
-
if (Number(
|
|
1195
|
-
throw new
|
|
1196
|
-
if (Number(
|
|
1197
|
-
throw new
|
|
1198
|
-
if (Number(
|
|
1199
|
-
throw new
|
|
1200
|
-
if (Number(
|
|
1201
|
-
throw new
|
|
1202
|
-
for (const x of
|
|
1203
|
-
if (x.nestedStart + x.nestedCount >
|
|
1204
|
-
throw new
|
|
1205
|
-
if (x.textStart + x.textCount >
|
|
1206
|
-
throw new
|
|
1220
|
+
), { variantsById: P, variants: k, snapshots: D } = T, v = (n == null ? void 0 : n.sceneInstances) ?? mt(t, p, "V3 SCENE_INSTANCE_TABLE"), et = (n == null ? void 0 : n.nestedInstances) ?? mt(t, h, "V3 NESTED_INSTANCE_TABLE"), ut = (n == null ? void 0 : n.sceneTexts) ?? Rt(t, y, V, "V3 SCENE_TEXT_TABLE"), W = (n == null ? void 0 : n.variantTexts) ?? Rt(t, w, V, "V3 VARIANT_TEXT_TABLE");
|
|
1221
|
+
if (Number(_.variant_count ?? P.length) !== P.length)
|
|
1222
|
+
throw new f("E_GROUP_RANGE", "V3 variant count mismatch");
|
|
1223
|
+
if (Number(_.scene_instance_count ?? v.length) !== v.length)
|
|
1224
|
+
throw new f("E_GROUP_RANGE", "V3 scene instance count mismatch");
|
|
1225
|
+
if (Number(_.nested_instance_count ?? et.length) !== et.length)
|
|
1226
|
+
throw new f("E_GROUP_RANGE", "V3 nested instance count mismatch");
|
|
1227
|
+
if (Number(_.scene_text_count ?? ut.length) !== ut.length)
|
|
1228
|
+
throw new f("E_GROUP_RANGE", "V3 scene text count mismatch");
|
|
1229
|
+
if (Number(_.variant_text_count ?? W.length) !== W.length)
|
|
1230
|
+
throw new f("E_GROUP_RANGE", "V3 variant text count mismatch");
|
|
1231
|
+
for (const x of P) {
|
|
1232
|
+
if (x.nestedStart + x.nestedCount > et.length)
|
|
1233
|
+
throw new f("E_GROUP_RANGE", `V3 variant ${x.id} nested range exceeds table`);
|
|
1234
|
+
if (x.textStart + x.textCount > W.length)
|
|
1235
|
+
throw new f("E_GROUP_RANGE", `V3 variant ${x.id} text range exceeds table`);
|
|
1207
1236
|
}
|
|
1208
|
-
|
|
1209
|
-
if (!
|
|
1210
|
-
throw new
|
|
1211
|
-
|
|
1237
|
+
ue(v, et, (x) => {
|
|
1238
|
+
if (!P[x.variantId])
|
|
1239
|
+
throw new f("E_GROUP_RANGE", `Unknown V3 variantId ${x.variantId}`);
|
|
1240
|
+
ye(x.insLayerIdx, G.length);
|
|
1212
1241
|
});
|
|
1213
|
-
const
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
x.
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
},
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
if (
|
|
1226
|
-
throw new
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
const
|
|
1234
|
-
|
|
1235
|
-
|
|
1242
|
+
const Yt = (n == null ? void 0 : n.variantTextsByVariantId) ?? (() => {
|
|
1243
|
+
const x = /* @__PURE__ */ new Map();
|
|
1244
|
+
for (const b of P)
|
|
1245
|
+
x.set(
|
|
1246
|
+
b.id,
|
|
1247
|
+
W.slice(b.textStart, b.textStart + b.textCount)
|
|
1248
|
+
);
|
|
1249
|
+
return x;
|
|
1250
|
+
})(), lt = [], L = e.externalVariantDeltaOnly, zt = L ? [] : [...ut], Et = /* @__PURE__ */ new Map(), ct = /* @__PURE__ */ new Map(), Ht = /* @__PURE__ */ new Map(), We = (x, b) => {
|
|
1251
|
+
Et.set(x, kt(Et.get(x) ?? null, b));
|
|
1252
|
+
}, Kt = (x, b, B, S, O, q) => {
|
|
1253
|
+
var Qt;
|
|
1254
|
+
if (O > 64)
|
|
1255
|
+
throw new f("E_GROUP_RANGE", "V3 nested instance depth exceeds limit");
|
|
1256
|
+
if (q.has(x))
|
|
1257
|
+
throw new f("E_GROUP_RANGE", `V3 nested variant cycle detected at ${x}`);
|
|
1258
|
+
const R = P[x];
|
|
1259
|
+
if (!R)
|
|
1260
|
+
throw new f("E_GROUP_RANGE", `Unknown V3 variantId ${x}`);
|
|
1261
|
+
q.add(x);
|
|
1262
|
+
const J = !e.requiredExternalVariantIds || e.requiredExternalVariantIds.has(x), z = L ? ((Qt = e.requiredExternalVariantIds) == null ? void 0 : Qt.has(x)) === !0 : J;
|
|
1263
|
+
let F = !1;
|
|
1264
|
+
const Zt = !!(R.line_count || R.fill_count || R.dot_count), Qe = R.textCount > 0;
|
|
1265
|
+
if (z && (Zt || Qe) && (lt.push({
|
|
1266
|
+
instanceId: b.instanceId,
|
|
1236
1267
|
variantId: x,
|
|
1237
|
-
matA:
|
|
1238
|
-
matB:
|
|
1239
|
-
matC:
|
|
1240
|
-
matD:
|
|
1241
|
-
tx:
|
|
1242
|
-
ty:
|
|
1243
|
-
insLayerIdx:
|
|
1244
|
-
}),
|
|
1245
|
-
|
|
1246
|
-
for (let
|
|
1247
|
-
const
|
|
1248
|
-
|
|
1249
|
-
...
|
|
1250
|
-
iv:
|
|
1251
|
-
io:
|
|
1268
|
+
matA: b.matA,
|
|
1269
|
+
matB: b.matB,
|
|
1270
|
+
matC: b.matC,
|
|
1271
|
+
matD: b.matD,
|
|
1272
|
+
tx: b.tx,
|
|
1273
|
+
ty: b.ty,
|
|
1274
|
+
insLayerIdx: b.insLayerIdx
|
|
1275
|
+
}), Zt && We(b.instanceId, R.bbox ? Xe(R.bbox, b) : null), F = !0), z) {
|
|
1276
|
+
R.textCount > 0 && (F = !0);
|
|
1277
|
+
for (let Z = 0; Z < R.textCount; Z += 1) {
|
|
1278
|
+
const nt = sr(W[R.textStart + Z], b, $, M.layers);
|
|
1279
|
+
zt.push({
|
|
1280
|
+
...nt,
|
|
1281
|
+
iv: B,
|
|
1282
|
+
io: S
|
|
1252
1283
|
});
|
|
1253
1284
|
}
|
|
1254
1285
|
}
|
|
1255
|
-
for (let
|
|
1256
|
-
const
|
|
1257
|
-
|
|
1286
|
+
for (let Z = 0; Z < R.nestedCount; Z += 1) {
|
|
1287
|
+
const nt = et[R.nestedStart + Z], tn = ur(nt.insLayerIdx, b.insLayerIdx, $), en = cr(nt, R, P[nt.variantId]), nn = or(b, en, b.instanceId, tn);
|
|
1288
|
+
F = Kt(nt.variantId, nn, B, S, O + 1, q) || F;
|
|
1258
1289
|
}
|
|
1259
|
-
return
|
|
1260
|
-
},
|
|
1261
|
-
|
|
1262
|
-
if (!
|
|
1263
|
-
throw new
|
|
1264
|
-
const
|
|
1265
|
-
|
|
1266
|
-
const
|
|
1267
|
-
instanceId:
|
|
1290
|
+
return q.delete(x), F;
|
|
1291
|
+
}, wt = /* @__PURE__ */ new Map();
|
|
1292
|
+
v.forEach((x, b) => {
|
|
1293
|
+
if (!P[x.variantId])
|
|
1294
|
+
throw new f("E_GROUP_RANGE", `Unknown V3 scene variantId ${x.variantId}`);
|
|
1295
|
+
const S = Ht.get(x.variantId) ?? 0;
|
|
1296
|
+
Ht.set(x.variantId, S + 1), ct.set(`${x.variantId}:${S}`, b);
|
|
1297
|
+
const O = ar(x.insLayerIdx, $), q = {
|
|
1298
|
+
instanceId: b,
|
|
1268
1299
|
variantId: x.variantId,
|
|
1269
1300
|
matA: x.matA,
|
|
1270
1301
|
matB: x.matB,
|
|
@@ -1272,114 +1303,154 @@ function Qn(t, e) {
|
|
|
1272
1303
|
matD: x.matD,
|
|
1273
1304
|
tx: x.tx,
|
|
1274
1305
|
ty: x.ty,
|
|
1275
|
-
insLayerIdx:
|
|
1276
|
-
},
|
|
1277
|
-
if (
|
|
1306
|
+
insLayerIdx: O
|
|
1307
|
+
}, R = Kt(x.variantId, q, x.variantId, S, 0, /* @__PURE__ */ new Set());
|
|
1308
|
+
if (L && !R)
|
|
1278
1309
|
return;
|
|
1279
|
-
let
|
|
1280
|
-
|
|
1281
|
-
let
|
|
1282
|
-
|
|
1283
|
-
const
|
|
1284
|
-
|
|
1285
|
-
instanceId:
|
|
1310
|
+
let J = wt.get(O);
|
|
1311
|
+
J || (J = /* @__PURE__ */ new Map(), wt.set(O, J));
|
|
1312
|
+
let z = J.get(x.variantId);
|
|
1313
|
+
z || (z = { count: 0, bboxes: [], inserts: [] }, J.set(x.variantId, z)), z.count += 1;
|
|
1314
|
+
const F = Et.get(b) ?? null;
|
|
1315
|
+
F && z.bboxes.push(F), z.inserts.push({
|
|
1316
|
+
instanceId: b,
|
|
1286
1317
|
variantId: x.variantId,
|
|
1287
|
-
label: `#${
|
|
1318
|
+
label: `#${b + 1} (${x.tx.toFixed(1)}, ${x.ty.toFixed(1)})`,
|
|
1288
1319
|
tx: x.tx,
|
|
1289
1320
|
ty: x.ty,
|
|
1290
|
-
canHighlight:
|
|
1291
|
-
...
|
|
1321
|
+
canHighlight: F !== null,
|
|
1322
|
+
...F ? { bbox: F } : {}
|
|
1292
1323
|
});
|
|
1293
1324
|
});
|
|
1294
|
-
const
|
|
1295
|
-
for (const [x,
|
|
1296
|
-
const
|
|
1297
|
-
for (const [
|
|
1298
|
-
|
|
1299
|
-
variantId:
|
|
1300
|
-
blockName:
|
|
1301
|
-
instanceCount:
|
|
1302
|
-
bboxes:
|
|
1303
|
-
inserts:
|
|
1325
|
+
const jt = /* @__PURE__ */ new Map();
|
|
1326
|
+
for (const [x, b] of wt) {
|
|
1327
|
+
const B = [];
|
|
1328
|
+
for (const [S, O] of b)
|
|
1329
|
+
B.push({
|
|
1330
|
+
variantId: S,
|
|
1331
|
+
blockName: $e(P[S], S),
|
|
1332
|
+
instanceCount: O.count,
|
|
1333
|
+
bboxes: O.bboxes,
|
|
1334
|
+
inserts: O.inserts
|
|
1304
1335
|
});
|
|
1305
|
-
|
|
1336
|
+
B.sort((S, O) => O.instanceCount - S.instanceCount), jt.set(x, B);
|
|
1306
1337
|
}
|
|
1307
|
-
let
|
|
1308
|
-
for (const x of
|
|
1309
|
-
const
|
|
1310
|
-
|
|
1338
|
+
let Wt = L ? 0 : I.line.count, qt = L ? 0 : I.fill.count, Jt = L ? 0 : I.dot.count;
|
|
1339
|
+
for (const x of lt) {
|
|
1340
|
+
const b = P[x.variantId];
|
|
1341
|
+
e.deferExternalVariantGeometry && b.lineSnapshot.count === 0 && b.fillSnapshot.count === 0 && b.dotSnapshot.count === 0 || !Be(x.instanceId, e) || (Wt += b.line_count, qt += b.fill_count, Jt += b.dot_count);
|
|
1311
1342
|
}
|
|
1312
|
-
const
|
|
1313
|
-
bounds:
|
|
1314
|
-
entity_count:
|
|
1315
|
-
line_count:
|
|
1316
|
-
fill_count:
|
|
1317
|
-
dot_count:
|
|
1343
|
+
const ft = $n(zt, ct, e), qe = {
|
|
1344
|
+
bounds: _.bounds ?? [0, 0, 0, 0],
|
|
1345
|
+
entity_count: L ? 0 : Number(_.entity_count ?? 0),
|
|
1346
|
+
line_count: I.line.count,
|
|
1347
|
+
fill_count: I.fill.count,
|
|
1348
|
+
dot_count: I.dot.count,
|
|
1318
1349
|
version: 3,
|
|
1319
|
-
version_minor:
|
|
1320
|
-
encoding:
|
|
1321
|
-
...
|
|
1322
|
-
...
|
|
1323
|
-
...
|
|
1324
|
-
layer0_index:
|
|
1325
|
-
block_variants:
|
|
1350
|
+
version_minor: o,
|
|
1351
|
+
encoding: C,
|
|
1352
|
+
...N ? { features: N } : {},
|
|
1353
|
+
...E ? { external_variants: [...E] } : {},
|
|
1354
|
+
...U ? { external_annotations: U } : {},
|
|
1355
|
+
layer0_index: $,
|
|
1356
|
+
block_variants: P.map((x) => ({
|
|
1326
1357
|
id: x.id,
|
|
1327
1358
|
name: x.name,
|
|
1328
1359
|
line_count: x.sourceLineCount,
|
|
1329
1360
|
fill_count: x.sourceFillCount,
|
|
1330
1361
|
dot_count: x.sourceDotCount
|
|
1331
1362
|
})),
|
|
1332
|
-
instance_count:
|
|
1333
|
-
layers:
|
|
1334
|
-
texts:
|
|
1335
|
-
},
|
|
1336
|
-
...
|
|
1337
|
-
entityCount:
|
|
1338
|
-
lineCount:
|
|
1339
|
-
fillCount:
|
|
1340
|
-
dotCount:
|
|
1341
|
-
textCount:
|
|
1342
|
-
texts:
|
|
1363
|
+
instance_count: v.length,
|
|
1364
|
+
layers: G,
|
|
1365
|
+
texts: ft
|
|
1366
|
+
}, Je = {
|
|
1367
|
+
...M,
|
|
1368
|
+
entityCount: L ? 0 : M.entityCount,
|
|
1369
|
+
lineCount: Wt,
|
|
1370
|
+
fillCount: qt,
|
|
1371
|
+
dotCount: Jt,
|
|
1372
|
+
textCount: ft.length,
|
|
1373
|
+
texts: ft,
|
|
1343
1374
|
...e.loadBlocks ? {
|
|
1344
|
-
layerBlockUsages:
|
|
1345
|
-
insertRuntime:
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1375
|
+
layerBlockUsages: jt,
|
|
1376
|
+
insertRuntime: On(
|
|
1377
|
+
$,
|
|
1378
|
+
P,
|
|
1379
|
+
D,
|
|
1380
|
+
Yt,
|
|
1381
|
+
lt,
|
|
1382
|
+
ft,
|
|
1383
|
+
ct
|
|
1353
1384
|
)
|
|
1354
1385
|
} : {}
|
|
1355
|
-
}
|
|
1386
|
+
}, Ze = n ?? (e.cacheDocument ? (() => {
|
|
1387
|
+
const x = /* @__PURE__ */ new Map();
|
|
1388
|
+
for (const [b, B] of k)
|
|
1389
|
+
E != null && E[b] || x.set(b, {
|
|
1390
|
+
line: { chunk: B.line, snapshot: D[b].line },
|
|
1391
|
+
fill: { chunk: B.fill, snapshot: D[b].fill },
|
|
1392
|
+
dot: { chunk: B.dot, snapshot: D[b].dot }
|
|
1393
|
+
});
|
|
1394
|
+
return {
|
|
1395
|
+
kind: "dxb3-v3",
|
|
1396
|
+
buffer: t,
|
|
1397
|
+
versionMinor: o,
|
|
1398
|
+
sections: i,
|
|
1399
|
+
groupLayerEncoding: a,
|
|
1400
|
+
sceneMeta: _,
|
|
1401
|
+
externalVariants: E,
|
|
1402
|
+
externalAnnotations: U,
|
|
1403
|
+
geoMetaFeatures: N,
|
|
1404
|
+
geoMetaEncoding: C,
|
|
1405
|
+
stringTable: V,
|
|
1406
|
+
layers: G,
|
|
1407
|
+
layer0Index: $,
|
|
1408
|
+
headerForValidation: M,
|
|
1409
|
+
baseGeometry: I,
|
|
1410
|
+
variantHeaders: fe(
|
|
1411
|
+
r,
|
|
1412
|
+
l,
|
|
1413
|
+
d,
|
|
1414
|
+
V,
|
|
1415
|
+
E
|
|
1416
|
+
),
|
|
1417
|
+
internalVariants: x,
|
|
1418
|
+
sceneInstances: v,
|
|
1419
|
+
nestedInstances: et,
|
|
1420
|
+
sceneTexts: ut,
|
|
1421
|
+
variantTexts: W,
|
|
1422
|
+
variantTextCount: W.length,
|
|
1423
|
+
variantTextsByVariantId: Yt
|
|
1424
|
+
};
|
|
1425
|
+
})() : void 0);
|
|
1356
1426
|
return {
|
|
1357
|
-
meta:
|
|
1358
|
-
header:
|
|
1427
|
+
meta: qe,
|
|
1428
|
+
header: Je,
|
|
1429
|
+
documentCache: Ze,
|
|
1359
1430
|
decoded: {
|
|
1360
|
-
baseLine:
|
|
1361
|
-
baseFill:
|
|
1362
|
-
baseDot:
|
|
1363
|
-
variants:
|
|
1364
|
-
instances:
|
|
1365
|
-
instanceIdByVariantOrdinal:
|
|
1431
|
+
baseLine: L ? Gt() : I.line,
|
|
1432
|
+
baseFill: L ? Gt() : I.fill,
|
|
1433
|
+
baseDot: L ? Gt() : I.dot,
|
|
1434
|
+
variants: k,
|
|
1435
|
+
instances: lt,
|
|
1436
|
+
instanceIdByVariantOrdinal: ct
|
|
1366
1437
|
}
|
|
1367
1438
|
};
|
|
1368
1439
|
}
|
|
1369
|
-
function
|
|
1370
|
-
return
|
|
1440
|
+
function kt(t, e) {
|
|
1441
|
+
return Ce(t, e);
|
|
1371
1442
|
}
|
|
1372
|
-
function
|
|
1373
|
-
return
|
|
1443
|
+
function Xe(t, e) {
|
|
1444
|
+
return Se(t, e);
|
|
1374
1445
|
}
|
|
1375
|
-
function
|
|
1376
|
-
return
|
|
1446
|
+
function de(t) {
|
|
1447
|
+
return mn(t);
|
|
1377
1448
|
}
|
|
1378
|
-
function
|
|
1379
|
-
return
|
|
1449
|
+
function me(t, e) {
|
|
1450
|
+
return gn(t, e);
|
|
1380
1451
|
}
|
|
1381
|
-
function
|
|
1382
|
-
return
|
|
1452
|
+
function ge(t, e) {
|
|
1453
|
+
return Xe(t, {
|
|
1383
1454
|
variantId: e.variantId,
|
|
1384
1455
|
matA: e.matA,
|
|
1385
1456
|
matB: e.matB,
|
|
@@ -1390,129 +1461,129 @@ function ae(t, e) {
|
|
|
1390
1461
|
insLayerIdx: e.insLayerIdx
|
|
1391
1462
|
});
|
|
1392
1463
|
}
|
|
1393
|
-
function
|
|
1464
|
+
function cr(t, e, n) {
|
|
1394
1465
|
if (!(n != null && n.bbox) || !e.bbox)
|
|
1395
1466
|
return t;
|
|
1396
|
-
const r = e.precisionOriginX,
|
|
1397
|
-
if (!Number.isFinite(r) || !Number.isFinite(
|
|
1467
|
+
const r = e.precisionOriginX, s = e.precisionOriginY;
|
|
1468
|
+
if (!Number.isFinite(r) || !Number.isFinite(s) || r === 0 && s === 0)
|
|
1398
1469
|
return t;
|
|
1399
|
-
const
|
|
1470
|
+
const o = {
|
|
1400
1471
|
...t,
|
|
1401
1472
|
tx: t.tx - r,
|
|
1402
|
-
ty: t.ty -
|
|
1403
|
-
}, i =
|
|
1404
|
-
if (
|
|
1473
|
+
ty: t.ty - s
|
|
1474
|
+
}, i = ge(n.bbox, t), a = ge(n.bbox, o), u = Math.max(de(e.bbox), de(n.bbox), 1), c = Math.hypot(r, s), m = Math.hypot(t.tx, t.ty), g = Math.hypot(o.tx, o.ty);
|
|
1475
|
+
if (c <= u * 16 || m <= u * 16)
|
|
1405
1476
|
return t;
|
|
1406
|
-
const
|
|
1407
|
-
return
|
|
1477
|
+
const l = me(e.bbox, i), d = me(e.bbox, a);
|
|
1478
|
+
return l > u * 16 && d * 4 < l && g * 4 < m ? o : t;
|
|
1408
1479
|
}
|
|
1409
|
-
function
|
|
1480
|
+
function ye(t, e) {
|
|
1410
1481
|
if (t >= e)
|
|
1411
|
-
throw new
|
|
1482
|
+
throw new f("E_GROUP_RANGE", `Instance layer index ${t} exceeds layer count ${e}`);
|
|
1412
1483
|
}
|
|
1413
|
-
function
|
|
1484
|
+
function fr(t, e) {
|
|
1414
1485
|
if (!Number.isInteger(t) || t < 0 || t >= e.length)
|
|
1415
|
-
throw new
|
|
1486
|
+
throw new f("E_GROUP_RANGE", `layer0_index out of range: ${t}`);
|
|
1416
1487
|
if (e[t].name !== "0")
|
|
1417
|
-
throw new
|
|
1488
|
+
throw new f("E_GROUP_RANGE", `layer0_index must reference layer "0": ${t}`);
|
|
1418
1489
|
}
|
|
1419
|
-
function
|
|
1490
|
+
function dr(t) {
|
|
1420
1491
|
if (t !== 0)
|
|
1421
|
-
throw new
|
|
1492
|
+
throw new f("E_GROUP_RANGE", `Instance flags must be zero for Stage 1, found ${t}`);
|
|
1422
1493
|
}
|
|
1423
|
-
function*
|
|
1424
|
-
let
|
|
1494
|
+
function* mr(t, e, n, r, s) {
|
|
1495
|
+
let o = n;
|
|
1425
1496
|
const i = [
|
|
1426
1497
|
{ kind: "line", count: r.lineCount },
|
|
1427
1498
|
{ kind: "fill", count: r.fillCount },
|
|
1428
1499
|
{ kind: "dot", count: r.dotCount }
|
|
1429
1500
|
];
|
|
1430
1501
|
for (const a of i) {
|
|
1431
|
-
const
|
|
1502
|
+
const u = fn(t, e, o, a.count);
|
|
1432
1503
|
for (; ; ) {
|
|
1433
|
-
const
|
|
1434
|
-
if (
|
|
1435
|
-
|
|
1504
|
+
const c = u.next();
|
|
1505
|
+
if (c.done) {
|
|
1506
|
+
o = c.value;
|
|
1436
1507
|
break;
|
|
1437
1508
|
}
|
|
1438
|
-
yield { kind: a.kind, payload:
|
|
1509
|
+
yield { kind: a.kind, payload: c.value };
|
|
1439
1510
|
}
|
|
1440
1511
|
}
|
|
1441
|
-
if (
|
|
1442
|
-
throw new
|
|
1512
|
+
if (o !== t.byteLength)
|
|
1513
|
+
throw new f("E_GROUP_RANGE", `Trailing bytes detected: offset=${o}, size=${t.byteLength}`);
|
|
1443
1514
|
for (const a of r.texts)
|
|
1444
1515
|
yield { kind: "text", payload: a };
|
|
1445
1516
|
}
|
|
1446
|
-
function*
|
|
1447
|
-
yield*
|
|
1517
|
+
function* gr(t, e, n, r) {
|
|
1518
|
+
yield* mr(t, e, n, r);
|
|
1448
1519
|
}
|
|
1449
|
-
function*
|
|
1450
|
-
if (
|
|
1451
|
-
yield { kind: t, payload:
|
|
1520
|
+
function* Vt(t, e, n, r, s, o, i, a) {
|
|
1521
|
+
if (Bn(a, t, Math.max(0, e - n.count)), e === 0) {
|
|
1522
|
+
yield { kind: t, payload: bn() };
|
|
1452
1523
|
return;
|
|
1453
1524
|
}
|
|
1454
|
-
const
|
|
1455
|
-
let
|
|
1456
|
-
const
|
|
1525
|
+
const u = Bt;
|
|
1526
|
+
let c = new Float32Array(u * 2), m = [], g = 0, l = 0;
|
|
1527
|
+
const d = function* () {
|
|
1457
1528
|
if (g <= 0)
|
|
1458
1529
|
return;
|
|
1459
|
-
const
|
|
1460
|
-
yield { kind: t, payload:
|
|
1461
|
-
},
|
|
1462
|
-
if (
|
|
1530
|
+
const y = g === u ? { pos: c, count: g, segments: ae(m) } : { pos: c.slice(0, g * 2), count: g, segments: ae(m) };
|
|
1531
|
+
yield { kind: t, payload: y }, l += g, g = 0, c = new Float32Array(u * 2), m = [];
|
|
1532
|
+
}, p = (y, w, _, E) => {
|
|
1533
|
+
if (y <= 0)
|
|
1463
1534
|
return;
|
|
1464
|
-
const
|
|
1465
|
-
if (
|
|
1535
|
+
const A = m[m.length - 1];
|
|
1536
|
+
if (A && A.startVertex + A.vertexCount === g && A.layerIndex === _ && A.color[0] === w[0] && A.color[1] === w[1] && A.color[2] === w[2] && A.lineweightPx === E) {
|
|
1466
1537
|
m[m.length - 1] = {
|
|
1467
|
-
...
|
|
1468
|
-
vertexCount:
|
|
1538
|
+
...A,
|
|
1539
|
+
vertexCount: A.vertexCount + y
|
|
1469
1540
|
};
|
|
1470
1541
|
return;
|
|
1471
1542
|
}
|
|
1472
1543
|
m.push({
|
|
1473
1544
|
startVertex: g,
|
|
1474
|
-
vertexCount:
|
|
1475
|
-
color: [
|
|
1476
|
-
layerIndex:
|
|
1545
|
+
vertexCount: y,
|
|
1546
|
+
color: [w[0], w[1], w[2]],
|
|
1547
|
+
layerIndex: _,
|
|
1477
1548
|
...E === void 0 ? {} : { lineweightPx: E }
|
|
1478
1549
|
});
|
|
1479
1550
|
};
|
|
1480
1551
|
yield* function* () {
|
|
1481
|
-
for (const
|
|
1482
|
-
let
|
|
1483
|
-
const
|
|
1484
|
-
for (;
|
|
1485
|
-
const E = Math.min(
|
|
1486
|
-
|
|
1552
|
+
for (const y of Ot(n)) {
|
|
1553
|
+
let w = y.startVertex;
|
|
1554
|
+
const _ = y.startVertex + y.vertexCount;
|
|
1555
|
+
for (; w < _; ) {
|
|
1556
|
+
const E = Math.min(u - g, _ - w), A = w * 2, U = g * 2;
|
|
1557
|
+
c.set(n.pos.subarray(A, A + E * 2), U), p(E, y.color, y.layerIndex, y.lineweightPx), w += E, g += E, g === u && (yield* d());
|
|
1487
1558
|
}
|
|
1488
1559
|
}
|
|
1489
1560
|
}();
|
|
1490
|
-
for (const
|
|
1491
|
-
if (!
|
|
1561
|
+
for (const y of s) {
|
|
1562
|
+
if (!Be(y.instanceId, a))
|
|
1492
1563
|
continue;
|
|
1493
|
-
const
|
|
1494
|
-
if (!
|
|
1495
|
-
throw new
|
|
1496
|
-
const
|
|
1497
|
-
for (const
|
|
1498
|
-
const
|
|
1499
|
-
let N =
|
|
1500
|
-
const C =
|
|
1564
|
+
const w = r.get(y.variantId);
|
|
1565
|
+
if (!w)
|
|
1566
|
+
throw new f("E_GROUP_RANGE", `Unknown variantId ${y.variantId}`);
|
|
1567
|
+
const _ = w[t], E = i[y.insLayerIdx].visible === !1;
|
|
1568
|
+
for (const A of Ot(_)) {
|
|
1569
|
+
const U = E || A.layerIndex === o ? y.insLayerIdx : A.layerIndex;
|
|
1570
|
+
let N = A.startVertex;
|
|
1571
|
+
const C = A.startVertex + A.vertexCount;
|
|
1501
1572
|
for (; N < C; ) {
|
|
1502
|
-
const
|
|
1503
|
-
for (let
|
|
1504
|
-
const
|
|
1505
|
-
|
|
1573
|
+
const V = Math.min(u - g, C - N);
|
|
1574
|
+
for (let G = 0; G < V; G += 1) {
|
|
1575
|
+
const $ = (N + G) * 2, M = (g + G) * 2, I = _.pos[$], T = _.pos[$ + 1];
|
|
1576
|
+
c[M] = y.matA * I + y.matC * T + y.tx, c[M + 1] = y.matB * I + y.matD * T + y.ty;
|
|
1506
1577
|
}
|
|
1507
|
-
|
|
1578
|
+
p(V, A.color, U, A.lineweightPx), N += V, g += V, g === u && (yield* d());
|
|
1508
1579
|
}
|
|
1509
1580
|
}
|
|
1510
1581
|
}
|
|
1511
|
-
if (yield*
|
|
1512
|
-
throw new
|
|
1582
|
+
if (yield* d(), l !== e)
|
|
1583
|
+
throw new f("E_GROUP_RANGE", `Expanded ${t} count mismatch: header=${e}, emitted=${l}`);
|
|
1513
1584
|
}
|
|
1514
|
-
function*
|
|
1515
|
-
yield*
|
|
1585
|
+
function* yr(t, e, n, r) {
|
|
1586
|
+
yield* Vt(
|
|
1516
1587
|
"line",
|
|
1517
1588
|
e.lineCount,
|
|
1518
1589
|
t.baseLine,
|
|
@@ -1521,7 +1592,7 @@ function* sr(t, e, n, r) {
|
|
|
1521
1592
|
n.layer0_index,
|
|
1522
1593
|
e.layers,
|
|
1523
1594
|
r
|
|
1524
|
-
), yield*
|
|
1595
|
+
), yield* Vt(
|
|
1525
1596
|
"fill",
|
|
1526
1597
|
e.fillCount,
|
|
1527
1598
|
t.baseFill,
|
|
@@ -1530,7 +1601,7 @@ function* sr(t, e, n, r) {
|
|
|
1530
1601
|
n.layer0_index,
|
|
1531
1602
|
e.layers,
|
|
1532
1603
|
r
|
|
1533
|
-
), yield*
|
|
1604
|
+
), yield* Vt(
|
|
1534
1605
|
"dot",
|
|
1535
1606
|
e.dotCount,
|
|
1536
1607
|
t.baseDot,
|
|
@@ -1540,31 +1611,35 @@ function* sr(t, e, n, r) {
|
|
|
1540
1611
|
e.layers,
|
|
1541
1612
|
r
|
|
1542
1613
|
);
|
|
1543
|
-
for (const
|
|
1544
|
-
yield { kind: "text", payload:
|
|
1545
|
-
}
|
|
1546
|
-
function
|
|
1547
|
-
const
|
|
1548
|
-
return {
|
|
1549
|
-
header:
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1614
|
+
for (const s of e.texts)
|
|
1615
|
+
yield { kind: "text", payload: s };
|
|
1616
|
+
}
|
|
1617
|
+
function Ye(t, e, n) {
|
|
1618
|
+
const r = Tn(e), s = lr(t, r, n);
|
|
1619
|
+
return s.documentCache && Te.add(s.documentCache), {
|
|
1620
|
+
header: s.header,
|
|
1621
|
+
...s.documentCache ? { documentCache: s.documentCache } : {},
|
|
1622
|
+
chunks: yr(
|
|
1623
|
+
s.decoded,
|
|
1624
|
+
s.header,
|
|
1625
|
+
{ layer0_index: s.meta.layer0_index ?? 0 },
|
|
1626
|
+
r
|
|
1555
1627
|
)
|
|
1556
1628
|
};
|
|
1557
1629
|
}
|
|
1558
|
-
function
|
|
1559
|
-
if (
|
|
1560
|
-
return
|
|
1561
|
-
const n =
|
|
1630
|
+
function ze(t, e) {
|
|
1631
|
+
if (ve(t))
|
|
1632
|
+
return Ye(t, e);
|
|
1633
|
+
const n = Dn(t);
|
|
1562
1634
|
return {
|
|
1563
1635
|
header: n.header,
|
|
1564
|
-
chunks:
|
|
1636
|
+
chunks: gr(t, n.view, n.dataOffset, n.header)
|
|
1565
1637
|
};
|
|
1566
1638
|
}
|
|
1567
|
-
function
|
|
1639
|
+
function hr(t, e, n) {
|
|
1640
|
+
return e.kind !== "dxb3-v3" || e.buffer !== t || !Te.has(e) || !ve(t) ? ze(t, n) : Ye(t, n, e);
|
|
1641
|
+
}
|
|
1642
|
+
function Gt() {
|
|
1568
1643
|
return {
|
|
1569
1644
|
pos: new Float32Array(0),
|
|
1570
1645
|
col: new Uint8Array(0),
|
|
@@ -1572,109 +1647,103 @@ function At() {
|
|
|
1572
1647
|
count: 0
|
|
1573
1648
|
};
|
|
1574
1649
|
}
|
|
1575
|
-
function
|
|
1576
|
-
return t ?
|
|
1577
|
-
}
|
|
1578
|
-
async function
|
|
1579
|
-
const e =
|
|
1580
|
-
t.entries.map((
|
|
1581
|
-
),
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
throw new Error(`External block ${u} fetch failed${f ? `: ${f}` : ""}`);
|
|
1592
|
-
}
|
|
1593
|
-
const h = await d.arrayBuffer();
|
|
1594
|
-
if (h.byteLength !== m.raw_size)
|
|
1595
|
-
throw new Error(
|
|
1596
|
-
`External block ${u} raw_size mismatch: manifest=${m.raw_size}, response=${h.byteLength}`
|
|
1597
|
-
);
|
|
1598
|
-
s.set(u, h);
|
|
1650
|
+
function _r(t, e) {
|
|
1651
|
+
return t ? ht(Se(t, e)) : null;
|
|
1652
|
+
}
|
|
1653
|
+
async function xr(t) {
|
|
1654
|
+
const e = he(), n = t.fetchImpl ?? fetch, r = new Map(
|
|
1655
|
+
t.entries.map((a) => [a.id, a])
|
|
1656
|
+
), s = Array.from(new Set(t.requiredVariantIds)).sort((a, u) => a - u), o = /* @__PURE__ */ new Map();
|
|
1657
|
+
async function i(a) {
|
|
1658
|
+
var l;
|
|
1659
|
+
const u = r.get(a);
|
|
1660
|
+
if (!u)
|
|
1661
|
+
throw new Error(`External block ${a} is missing from manifest`);
|
|
1662
|
+
const c = new URL(u.href, t.baseUrl).href, m = await n(c, { signal: t.signal });
|
|
1663
|
+
if (!m.ok) {
|
|
1664
|
+
const d = "status" in m ? m.status : void 0, p = "statusText" in m ? m.statusText : void 0, h = [d, p].filter((y) => y !== void 0 && y !== "").join(" ");
|
|
1665
|
+
throw new Error(`External block ${a} fetch failed${h ? `: ${h}` : ""}`);
|
|
1599
1666
|
}
|
|
1667
|
+
const g = await m.arrayBuffer();
|
|
1668
|
+
if (g.byteLength !== u.raw_size)
|
|
1669
|
+
throw new Error(
|
|
1670
|
+
`External block ${a} raw_size mismatch: manifest=${u.raw_size}, response=${g.byteLength}`
|
|
1671
|
+
);
|
|
1672
|
+
o.set(a, g), await ((l = t.onBuffer) == null ? void 0 : l.call(t, a, g));
|
|
1600
1673
|
}
|
|
1601
|
-
return await Promise.all(
|
|
1602
|
-
}
|
|
1603
|
-
function lr(t) {
|
|
1604
|
-
const e = Math.floor(t ?? 3);
|
|
1605
|
-
return Number.isFinite(e) ? Math.max(1, Math.min(e, 8)) : 3;
|
|
1674
|
+
return await Promise.all(s.map(i)), { buffers: o, fetchMs: he() - e };
|
|
1606
1675
|
}
|
|
1607
|
-
function
|
|
1676
|
+
function he() {
|
|
1608
1677
|
var t, e;
|
|
1609
1678
|
return ((e = (t = globalThis.performance) == null ? void 0 : t.now) == null ? void 0 : e.call(t)) ?? Date.now();
|
|
1610
1679
|
}
|
|
1611
|
-
var
|
|
1612
|
-
class
|
|
1680
|
+
var j;
|
|
1681
|
+
class Er {
|
|
1613
1682
|
constructor() {
|
|
1614
|
-
|
|
1683
|
+
ee(this, j, /* @__PURE__ */ new Map());
|
|
1615
1684
|
}
|
|
1616
1685
|
get size() {
|
|
1617
|
-
return
|
|
1686
|
+
return rt(this, j).size;
|
|
1618
1687
|
}
|
|
1619
1688
|
append(e) {
|
|
1620
1689
|
let n = 0;
|
|
1621
1690
|
for (const r of e) {
|
|
1622
1691
|
if (r.count <= 0) continue;
|
|
1623
|
-
const
|
|
1624
|
-
let
|
|
1625
|
-
const
|
|
1626
|
-
|
|
1692
|
+
const s = Dt(r.layerIndex, r.lineweightPx);
|
|
1693
|
+
let o = rt(this, j).get(s), i = r.pos, a = r.positionItemSize;
|
|
1694
|
+
const u = r.linePositionKind ?? null;
|
|
1695
|
+
o ? o.positionItemSize !== a && (_e(o), a !== 3 && (i = Ke(i, r.count, a)), o.positionItemSize = 3, a = 3, o.linePositionKind = null) : (o = {
|
|
1627
1696
|
layerIndex: r.layerIndex,
|
|
1628
1697
|
...r.lineweightPx === void 0 ? {} : { lineweightPx: r.lineweightPx },
|
|
1629
1698
|
posParts: [],
|
|
1630
1699
|
positionItemSize: a,
|
|
1631
1700
|
colParts: [],
|
|
1632
1701
|
colorRunParts: [],
|
|
1633
|
-
linePositionKind:
|
|
1702
|
+
linePositionKind: u,
|
|
1634
1703
|
count: 0,
|
|
1635
1704
|
bbox: null
|
|
1636
|
-
},
|
|
1637
|
-
const
|
|
1638
|
-
|
|
1639
|
-
const m =
|
|
1640
|
-
r.colorRuns ??
|
|
1641
|
-
|
|
1705
|
+
}, rt(this, j).set(s, o));
|
|
1706
|
+
const c = o.count > 0;
|
|
1707
|
+
o.posParts.push(i), o.colParts.push(r.col);
|
|
1708
|
+
const m = Gr(
|
|
1709
|
+
r.colorRuns ?? Nr(r.col),
|
|
1710
|
+
o.count
|
|
1642
1711
|
);
|
|
1643
|
-
|
|
1712
|
+
o.colorRunParts.push(m), o.linePositionKind !== u && (o.linePositionKind = null), o.positionItemSize === 2 && o.linePositionKind === null && _e(o), o.count += r.count, o.bbox = c && o.bbox === null ? null : pr(o.bbox, r.bbox), n += r.count;
|
|
1644
1713
|
}
|
|
1645
1714
|
return n;
|
|
1646
1715
|
}
|
|
1647
1716
|
drain() {
|
|
1648
1717
|
const e = [];
|
|
1649
|
-
for (const n of
|
|
1718
|
+
for (const n of rt(this, j).values()) {
|
|
1650
1719
|
if (n.count <= 0) continue;
|
|
1651
|
-
const r = n.posParts.length === 1 ? n.posParts[0] :
|
|
1720
|
+
const r = n.posParts.length === 1 ? n.posParts[0] : Rr(n.posParts, n.count * n.positionItemSize), s = n.colParts.length === 1 ? n.colParts[0] : Vr(n.colParts, n.count * 3), o = je(n.colorRunParts.flat()), i = {
|
|
1652
1721
|
layerIndex: n.layerIndex,
|
|
1653
1722
|
pos: r,
|
|
1654
1723
|
positionItemSize: n.positionItemSize,
|
|
1655
|
-
col:
|
|
1724
|
+
col: s,
|
|
1656
1725
|
count: n.count,
|
|
1657
|
-
bbox:
|
|
1658
|
-
colorRuns:
|
|
1726
|
+
bbox: ht(n.bbox),
|
|
1727
|
+
colorRuns: o
|
|
1659
1728
|
};
|
|
1660
1729
|
n.lineweightPx !== void 0 && (i.lineweightPx = n.lineweightPx), n.linePositionKind && (i.linePositionKind = n.linePositionKind), e.push(i);
|
|
1661
1730
|
}
|
|
1662
|
-
return
|
|
1731
|
+
return rt(this, j).clear(), e;
|
|
1663
1732
|
}
|
|
1664
1733
|
}
|
|
1665
|
-
|
|
1666
|
-
function
|
|
1667
|
-
return new
|
|
1734
|
+
j = new WeakMap();
|
|
1735
|
+
function Nt() {
|
|
1736
|
+
return new Er();
|
|
1668
1737
|
}
|
|
1669
|
-
function
|
|
1738
|
+
function wr() {
|
|
1670
1739
|
return {
|
|
1671
|
-
line:
|
|
1672
|
-
fill:
|
|
1673
|
-
dot:
|
|
1740
|
+
line: Nt(),
|
|
1741
|
+
fill: Nt(),
|
|
1742
|
+
dot: Nt()
|
|
1674
1743
|
};
|
|
1675
1744
|
}
|
|
1676
|
-
function
|
|
1677
|
-
const n =
|
|
1745
|
+
function pr(t, e) {
|
|
1746
|
+
const n = ht(e);
|
|
1678
1747
|
return t ? n ? {
|
|
1679
1748
|
minX: Math.min(t.minX, n.minX),
|
|
1680
1749
|
minY: Math.min(t.minY, n.minY),
|
|
@@ -1682,101 +1751,101 @@ function mr(t, e) {
|
|
|
1682
1751
|
maxY: Math.max(t.maxY, n.maxY)
|
|
1683
1752
|
} : null : n;
|
|
1684
1753
|
}
|
|
1685
|
-
function
|
|
1754
|
+
function He(t, e = {}) {
|
|
1686
1755
|
if (t.count <= 0) return [];
|
|
1687
|
-
const n =
|
|
1688
|
-
for (const
|
|
1689
|
-
if (
|
|
1690
|
-
const
|
|
1691
|
-
E === void 0 ? (
|
|
1756
|
+
const n = Ot(t), r = [], s = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), a = e.markLinePositionXy === !0 || e.splitLineweight === !0;
|
|
1757
|
+
for (const h of n) {
|
|
1758
|
+
if (h.vertexCount <= 0) continue;
|
|
1759
|
+
const y = h.layerIndex, w = a ? h.lineweightPx : void 0, _ = Dt(y, w), E = s.get(_);
|
|
1760
|
+
E === void 0 ? (s.set(_, h.vertexCount), o.set(_, y), i.set(_, w), r.push(_)) : s.set(_, E + h.vertexCount);
|
|
1692
1761
|
}
|
|
1693
|
-
const
|
|
1694
|
-
for (const
|
|
1695
|
-
const
|
|
1696
|
-
layerIndex:
|
|
1697
|
-
...
|
|
1698
|
-
pos: new Float32Array(
|
|
1699
|
-
positionItemSize:
|
|
1700
|
-
col: new Uint8Array(
|
|
1701
|
-
count:
|
|
1762
|
+
const u = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Set(), l = e.markLinePositionXy === !0 ? "xy-zero-z" : void 0, d = l ? 2 : 3;
|
|
1763
|
+
for (const h of r) {
|
|
1764
|
+
const y = o.get(h), w = i.get(h), _ = s.get(h) ?? 0, E = {
|
|
1765
|
+
layerIndex: y,
|
|
1766
|
+
...w === void 0 ? {} : { lineweightPx: w },
|
|
1767
|
+
pos: new Float32Array(_ * d),
|
|
1768
|
+
positionItemSize: d,
|
|
1769
|
+
col: new Uint8Array(_ * 3),
|
|
1770
|
+
count: _,
|
|
1702
1771
|
bbox: null,
|
|
1703
1772
|
colorRuns: []
|
|
1704
1773
|
};
|
|
1705
|
-
|
|
1774
|
+
l && (E.linePositionKind = l), u.set(h, E), c.set(h, 0), m.set(h, null);
|
|
1706
1775
|
}
|
|
1707
|
-
for (const
|
|
1708
|
-
if (
|
|
1709
|
-
const
|
|
1710
|
-
for (let
|
|
1711
|
-
const
|
|
1712
|
-
E.pos[
|
|
1713
|
-
const
|
|
1714
|
-
!Number.isFinite(
|
|
1776
|
+
for (const h of n) {
|
|
1777
|
+
if (h.vertexCount <= 0) continue;
|
|
1778
|
+
const y = h.layerIndex, w = a ? h.lineweightPx : void 0, _ = Dt(y, w), E = u.get(_), A = c.get(_), U = A, N = h.color[0], C = h.color[1], V = h.color[2];
|
|
1779
|
+
for (let G = 0; G < h.vertexCount; G += 1) {
|
|
1780
|
+
const $ = h.startVertex + G, M = A + G, I = M * d, T = M * 3, P = $ * 2, k = t.pos[P], D = t.pos[P + 1];
|
|
1781
|
+
E.pos[I] = k, E.pos[I + 1] = D, d === 3 && (E.pos[I + 2] = 0), E.col[T] = N, E.col[T + 1] = C, E.col[T + 2] = V;
|
|
1782
|
+
const v = m.get(_);
|
|
1783
|
+
!Number.isFinite(k) || !Number.isFinite(D) ? g.add(_) : v ? (k < v.minX && (v.minX = k), D < v.minY && (v.minY = D), k > v.maxX && (v.maxX = k), D > v.maxY && (v.maxY = D)) : m.set(_, { minX: k, minY: D, maxX: k, maxY: D });
|
|
1715
1784
|
}
|
|
1716
1785
|
E.colorRuns.push({
|
|
1717
|
-
startVertex:
|
|
1718
|
-
vertexCount:
|
|
1719
|
-
color: [N, C,
|
|
1720
|
-
}),
|
|
1786
|
+
startVertex: U,
|
|
1787
|
+
vertexCount: h.vertexCount,
|
|
1788
|
+
color: [N, C, V]
|
|
1789
|
+
}), c.set(_, A + h.vertexCount);
|
|
1721
1790
|
}
|
|
1722
|
-
const
|
|
1723
|
-
for (const
|
|
1724
|
-
const
|
|
1725
|
-
|
|
1791
|
+
const p = [];
|
|
1792
|
+
for (const h of r) {
|
|
1793
|
+
const y = u.get(h);
|
|
1794
|
+
y && (y.bbox = g.has(h) ? null : ht(m.get(h) ?? null), y.colorRuns = je(y.colorRuns ?? []), p.push(y));
|
|
1726
1795
|
}
|
|
1727
|
-
return
|
|
1796
|
+
return p;
|
|
1728
1797
|
}
|
|
1729
|
-
function
|
|
1798
|
+
function Dt(t, e) {
|
|
1730
1799
|
return e === void 0 ? `${t}:` : `${t}:${e}`;
|
|
1731
1800
|
}
|
|
1732
|
-
function
|
|
1801
|
+
function br(t, e) {
|
|
1733
1802
|
return t.append(e);
|
|
1734
1803
|
}
|
|
1735
|
-
function
|
|
1804
|
+
function Ar(t) {
|
|
1736
1805
|
return t.drain();
|
|
1737
1806
|
}
|
|
1738
|
-
function
|
|
1807
|
+
function Ir(t) {
|
|
1739
1808
|
const e = [], n = /* @__PURE__ */ new Set();
|
|
1740
1809
|
for (const r of t)
|
|
1741
|
-
|
|
1810
|
+
xe(e, n, r.pos.buffer), xe(e, n, r.col.buffer);
|
|
1742
1811
|
return e;
|
|
1743
1812
|
}
|
|
1744
|
-
function
|
|
1813
|
+
function Rr(t, e) {
|
|
1745
1814
|
const n = new Float32Array(e);
|
|
1746
1815
|
let r = 0;
|
|
1747
|
-
for (const
|
|
1748
|
-
n.set(
|
|
1816
|
+
for (const s of t)
|
|
1817
|
+
n.set(s, r), r += s.length;
|
|
1749
1818
|
return n;
|
|
1750
1819
|
}
|
|
1751
|
-
function
|
|
1820
|
+
function Ke(t, e, n) {
|
|
1752
1821
|
if (n === 3) return t;
|
|
1753
1822
|
const r = new Float32Array(e * 3);
|
|
1754
|
-
for (let
|
|
1755
|
-
const
|
|
1756
|
-
r[i] = t[
|
|
1823
|
+
for (let s = 0; s < e; s += 1) {
|
|
1824
|
+
const o = s * 2, i = s * 3;
|
|
1825
|
+
r[i] = t[o] ?? 0, r[i + 1] = t[o + 1] ?? 0, r[i + 2] = 0;
|
|
1757
1826
|
}
|
|
1758
1827
|
return r;
|
|
1759
1828
|
}
|
|
1760
|
-
function
|
|
1829
|
+
function _e(t) {
|
|
1761
1830
|
if (t.positionItemSize === 3) return;
|
|
1762
1831
|
const e = t.positionItemSize;
|
|
1763
|
-
t.posParts = t.posParts.map((n) =>
|
|
1832
|
+
t.posParts = t.posParts.map((n) => Ke(n, n.length / e, e)), t.positionItemSize = 3, t.linePositionKind = null;
|
|
1764
1833
|
}
|
|
1765
|
-
function
|
|
1834
|
+
function Vr(t, e) {
|
|
1766
1835
|
const n = new Uint8Array(e);
|
|
1767
1836
|
let r = 0;
|
|
1768
|
-
for (const
|
|
1769
|
-
n.set(
|
|
1837
|
+
for (const s of t)
|
|
1838
|
+
n.set(s, r), r += s.length;
|
|
1770
1839
|
return n;
|
|
1771
1840
|
}
|
|
1772
|
-
function
|
|
1841
|
+
function Gr(t, e) {
|
|
1773
1842
|
return t.map((n) => ({
|
|
1774
1843
|
startVertex: n.startVertex + e,
|
|
1775
1844
|
vertexCount: n.vertexCount,
|
|
1776
1845
|
color: [n.color[0], n.color[1], n.color[2]]
|
|
1777
1846
|
}));
|
|
1778
1847
|
}
|
|
1779
|
-
function
|
|
1848
|
+
function je(t) {
|
|
1780
1849
|
const e = [];
|
|
1781
1850
|
for (const n of t) {
|
|
1782
1851
|
const r = e[e.length - 1];
|
|
@@ -1795,50 +1864,50 @@ function Be(t) {
|
|
|
1795
1864
|
}
|
|
1796
1865
|
return e;
|
|
1797
1866
|
}
|
|
1798
|
-
function
|
|
1867
|
+
function Nr(t) {
|
|
1799
1868
|
const e = Math.floor(t.length / 3), n = [];
|
|
1800
1869
|
let r = 0;
|
|
1801
1870
|
for (; r < e; ) {
|
|
1802
|
-
const
|
|
1803
|
-
let
|
|
1804
|
-
for (;
|
|
1805
|
-
const
|
|
1806
|
-
if (t[
|
|
1807
|
-
|
|
1871
|
+
const s = r * 3, o = t[s] ?? 0, i = t[s + 1] ?? 0, a = t[s + 2] ?? 0;
|
|
1872
|
+
let u = r + 1;
|
|
1873
|
+
for (; u < e; ) {
|
|
1874
|
+
const c = u * 3;
|
|
1875
|
+
if (t[c] !== o || t[c + 1] !== i || t[c + 2] !== a) break;
|
|
1876
|
+
u += 1;
|
|
1808
1877
|
}
|
|
1809
|
-
n.push({ startVertex: r, vertexCount:
|
|
1878
|
+
n.push({ startVertex: r, vertexCount: u - r, color: [o, i, a] }), r = u;
|
|
1810
1879
|
}
|
|
1811
1880
|
return n;
|
|
1812
1881
|
}
|
|
1813
|
-
function
|
|
1882
|
+
function xe(t, e, n) {
|
|
1814
1883
|
n instanceof ArrayBuffer && (e.has(n) || (e.add(n), t.push(n)));
|
|
1815
1884
|
}
|
|
1816
|
-
function
|
|
1885
|
+
function Ur(t, e, n = "u8") {
|
|
1817
1886
|
if (e <= 0 && t.byteLength === 0)
|
|
1818
1887
|
return { pos: new Float32Array(0), count: 0, segments: [] };
|
|
1819
|
-
const { buffer: r, startOffset:
|
|
1820
|
-
if (a.offset !==
|
|
1821
|
-
throw new
|
|
1888
|
+
const { buffer: r, startOffset: s, endOffset: o } = Pr(t), i = new DataView(r), a = Ne(r, i, s, e, o, n);
|
|
1889
|
+
if (a.offset !== o)
|
|
1890
|
+
throw new f(
|
|
1822
1891
|
"E_GROUP_RANGE",
|
|
1823
|
-
`Insert runtime geometry chunk has trailing bytes: offset=${a.offset -
|
|
1892
|
+
`Insert runtime geometry chunk has trailing bytes: offset=${a.offset - s}, length=${t.byteLength}`
|
|
1824
1893
|
);
|
|
1825
1894
|
return a.chunk;
|
|
1826
1895
|
}
|
|
1827
|
-
function
|
|
1896
|
+
function Cr(t) {
|
|
1828
1897
|
const e = (n) => {
|
|
1829
|
-
const r = t[n],
|
|
1898
|
+
const r = t[n], s = Ur(
|
|
1830
1899
|
r.raw,
|
|
1831
1900
|
r.count,
|
|
1832
1901
|
r.groupLayerEncoding
|
|
1833
|
-
),
|
|
1834
|
-
for (const a of
|
|
1835
|
-
i.set(
|
|
1902
|
+
), o = He(s, { splitLineweight: n === "line" }), i = /* @__PURE__ */ new Map();
|
|
1903
|
+
for (const a of o)
|
|
1904
|
+
i.set(Sr(a.layerIndex, a.lineweightPx), {
|
|
1836
1905
|
layerIndex: a.layerIndex,
|
|
1837
1906
|
...a.lineweightPx === void 0 ? {} : { lineweightPx: a.lineweightPx },
|
|
1838
1907
|
pos: a.pos,
|
|
1839
1908
|
col: a.col,
|
|
1840
1909
|
count: a.count,
|
|
1841
|
-
bbox:
|
|
1910
|
+
bbox: it(a.bbox)
|
|
1842
1911
|
});
|
|
1843
1912
|
return i;
|
|
1844
1913
|
};
|
|
@@ -1848,17 +1917,17 @@ function br(t) {
|
|
|
1848
1917
|
dot: e("dot")
|
|
1849
1918
|
};
|
|
1850
1919
|
}
|
|
1851
|
-
function
|
|
1920
|
+
function Sr(t, e) {
|
|
1852
1921
|
return e === void 0 ? `${t}:` : `${t}:${e}`;
|
|
1853
1922
|
}
|
|
1854
|
-
function
|
|
1855
|
-
let n = e ?
|
|
1923
|
+
function Tr(t, e) {
|
|
1924
|
+
let n = e ? it(e) : null;
|
|
1856
1925
|
for (const r of ["line", "fill", "dot"])
|
|
1857
|
-
for (const
|
|
1858
|
-
n =
|
|
1926
|
+
for (const s of t[r].values())
|
|
1927
|
+
n = Ce(n, s.bbox);
|
|
1859
1928
|
return n;
|
|
1860
1929
|
}
|
|
1861
|
-
function
|
|
1930
|
+
function Pr(t) {
|
|
1862
1931
|
if (t.buffer instanceof ArrayBuffer)
|
|
1863
1932
|
return {
|
|
1864
1933
|
buffer: t.buffer,
|
|
@@ -1872,22 +1941,22 @@ function Rr(t) {
|
|
|
1872
1941
|
endOffset: e.byteOffset + e.byteLength
|
|
1873
1942
|
};
|
|
1874
1943
|
}
|
|
1875
|
-
function
|
|
1944
|
+
function Br(t) {
|
|
1876
1945
|
const e = t.insertRuntime;
|
|
1877
1946
|
if (!e || e.instances.length === 0) return null;
|
|
1878
|
-
const n = [], r = /* @__PURE__ */ new Map(),
|
|
1879
|
-
for (const
|
|
1880
|
-
const
|
|
1881
|
-
r.set(
|
|
1882
|
-
variantId:
|
|
1947
|
+
const n = [], r = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Set();
|
|
1948
|
+
for (const u of e.variants) {
|
|
1949
|
+
const c = Cr(u), m = Ut(c.line), g = Ut(c.fill), l = Ut(c.dot), d = m.length > 0 || g.length > 0 || l.length > 0;
|
|
1950
|
+
r.set(u.id, d ? Tr(c, null) : null), d && (s.add(u.id), n.push({
|
|
1951
|
+
variantId: u.id,
|
|
1883
1952
|
line: m,
|
|
1884
1953
|
fill: g,
|
|
1885
|
-
dot:
|
|
1954
|
+
dot: l
|
|
1886
1955
|
}));
|
|
1887
1956
|
}
|
|
1888
|
-
const
|
|
1889
|
-
if (
|
|
1890
|
-
const i =
|
|
1957
|
+
const o = e.instances.filter((u) => s.has(u.variantId));
|
|
1958
|
+
if (o.length === 0) return null;
|
|
1959
|
+
const i = Or(o, r), a = kr(n, i);
|
|
1891
1960
|
return {
|
|
1892
1961
|
variants: n,
|
|
1893
1962
|
instances: i,
|
|
@@ -1895,22 +1964,22 @@ function Vr(t) {
|
|
|
1895
1964
|
cost: i.count
|
|
1896
1965
|
};
|
|
1897
1966
|
}
|
|
1898
|
-
function
|
|
1899
|
-
const e = [], n = /* @__PURE__ */ new Set(), r = (
|
|
1900
|
-
n.has(
|
|
1967
|
+
function $r(t) {
|
|
1968
|
+
const e = [], n = /* @__PURE__ */ new Set(), r = (s) => {
|
|
1969
|
+
n.has(s) || (n.add(s), e.push(s));
|
|
1901
1970
|
};
|
|
1902
1971
|
r(t.instances.meta.buffer), r(t.instances.mats.buffer), r(t.instances.bboxes.buffer);
|
|
1903
|
-
for (const
|
|
1904
|
-
|
|
1972
|
+
for (const s of t.variants)
|
|
1973
|
+
St(s.line, r), St(s.fill, r), St(s.dot, r);
|
|
1905
1974
|
return e;
|
|
1906
1975
|
}
|
|
1907
|
-
function
|
|
1976
|
+
function Ut(t) {
|
|
1908
1977
|
const e = [];
|
|
1909
1978
|
for (const n of t.values())
|
|
1910
|
-
n.count <= 0 || e.push(
|
|
1979
|
+
n.count <= 0 || e.push(vr(n));
|
|
1911
1980
|
return e;
|
|
1912
1981
|
}
|
|
1913
|
-
function
|
|
1982
|
+
function vr(t) {
|
|
1914
1983
|
return {
|
|
1915
1984
|
pos: t.pos,
|
|
1916
1985
|
col: t.col,
|
|
@@ -1920,48 +1989,48 @@ function Gr(t) {
|
|
|
1920
1989
|
bbox: t.bbox
|
|
1921
1990
|
};
|
|
1922
1991
|
}
|
|
1923
|
-
function
|
|
1924
|
-
const n = t.length, r = new Uint32Array(n * 3),
|
|
1992
|
+
function Or(t, e) {
|
|
1993
|
+
const n = t.length, r = new Uint32Array(n * 3), s = new Float32Array(n * 6), o = new Float32Array(n * 4);
|
|
1925
1994
|
for (let i = 0; i < n; i += 1) {
|
|
1926
|
-
const a = t[i],
|
|
1927
|
-
r[
|
|
1928
|
-
const
|
|
1929
|
-
|
|
1930
|
-
const m =
|
|
1931
|
-
|
|
1995
|
+
const a = t[i], u = i * 3;
|
|
1996
|
+
r[u] = a.instanceId, r[u + 1] = a.variantId, r[u + 2] = a.insLayerIdx;
|
|
1997
|
+
const c = i * 6;
|
|
1998
|
+
s[c] = a.matA, s[c + 1] = a.matB, s[c + 2] = a.matC, s[c + 3] = a.matD, s[c + 4] = a.tx, s[c + 5] = a.ty;
|
|
1999
|
+
const m = _r(e.get(a.variantId) ?? null, a);
|
|
2000
|
+
Mr(o, i * 4, m);
|
|
1932
2001
|
}
|
|
1933
|
-
return { meta: r, mats:
|
|
2002
|
+
return { meta: r, mats: s, bboxes: o, count: n };
|
|
1934
2003
|
}
|
|
1935
|
-
function
|
|
2004
|
+
function Mr(t, e, n) {
|
|
1936
2005
|
if (!n) {
|
|
1937
2006
|
t[e] = Number.POSITIVE_INFINITY, t[e + 1] = Number.POSITIVE_INFINITY, t[e + 2] = Number.NEGATIVE_INFINITY, t[e + 3] = Number.NEGATIVE_INFINITY;
|
|
1938
2007
|
return;
|
|
1939
2008
|
}
|
|
1940
2009
|
t[e] = n.minX, t[e + 1] = n.minY, t[e + 2] = n.maxX, t[e + 3] = n.maxY;
|
|
1941
2010
|
}
|
|
1942
|
-
function
|
|
2011
|
+
function kr(t, e) {
|
|
1943
2012
|
let n = e.meta.byteLength + e.mats.byteLength + e.bboxes.byteLength;
|
|
1944
2013
|
for (const r of t)
|
|
1945
|
-
n +=
|
|
2014
|
+
n += Ct(r.line), n += Ct(r.fill), n += Ct(r.dot);
|
|
1946
2015
|
return n;
|
|
1947
2016
|
}
|
|
1948
|
-
function
|
|
2017
|
+
function Ct(t) {
|
|
1949
2018
|
return t.reduce((e, n) => e + n.pos.byteLength + n.col.byteLength, 0);
|
|
1950
2019
|
}
|
|
1951
|
-
function
|
|
2020
|
+
function St(t, e) {
|
|
1952
2021
|
for (const n of t)
|
|
1953
2022
|
e(n.pos.buffer), e(n.col.buffer);
|
|
1954
2023
|
}
|
|
1955
|
-
function
|
|
2024
|
+
function Ee() {
|
|
1956
2025
|
return typeof performance < "u" && typeof performance.now == "function" ? performance.now() : Date.now();
|
|
1957
2026
|
}
|
|
1958
|
-
class
|
|
2027
|
+
class Dr {
|
|
1959
2028
|
constructor() {
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
2029
|
+
Q(this, "geometryCredits", 0);
|
|
2030
|
+
Q(this, "textCredits", 0);
|
|
2031
|
+
Q(this, "cancelled", !1);
|
|
2032
|
+
Q(this, "geometryWaiters", []);
|
|
2033
|
+
Q(this, "textWaiters", []);
|
|
1965
2034
|
}
|
|
1966
2035
|
grant(e) {
|
|
1967
2036
|
this.cancelled || (this.geometryCredits += Math.max(0, e.geometryCredits), this.textCredits += Math.max(0, e.textCredits), this.flushWaiters());
|
|
@@ -2005,142 +2074,168 @@ class Sr {
|
|
|
2005
2074
|
return e === "geometry" ? this.geometryWaiters : this.textWaiters;
|
|
2006
2075
|
}
|
|
2007
2076
|
}
|
|
2008
|
-
const
|
|
2009
|
-
let
|
|
2010
|
-
async function
|
|
2011
|
-
const r =
|
|
2077
|
+
const we = 262144, Lr = Number.MAX_SAFE_INTEGER, pe = 524288, Fr = Number.MAX_SAFE_INTEGER, Xr = 5e6, Yr = 64, H = self;
|
|
2078
|
+
let X = null, be = null, Tt = null;
|
|
2079
|
+
async function Pt(t, e, n) {
|
|
2080
|
+
const r = Ar(e);
|
|
2012
2081
|
if (!r.length || !await n.take("geometry")) return 0;
|
|
2013
|
-
const
|
|
2082
|
+
const o = r.reduce((a, u) => a + u.count, 0), i = {
|
|
2014
2083
|
type: "geometry",
|
|
2015
2084
|
kind: t,
|
|
2016
2085
|
layers: r,
|
|
2017
|
-
cost:
|
|
2086
|
+
cost: o
|
|
2018
2087
|
};
|
|
2019
|
-
return
|
|
2088
|
+
return H.postMessage(i, Ir(r)), o;
|
|
2020
2089
|
}
|
|
2021
|
-
async function
|
|
2022
|
-
return await
|
|
2090
|
+
async function zr(t, e) {
|
|
2091
|
+
return await Pt("line", t.line, e) + await Pt("fill", t.fill, e) + await Pt("dot", t.dot, e);
|
|
2023
2092
|
}
|
|
2024
|
-
async function
|
|
2093
|
+
async function Ae(t, e) {
|
|
2025
2094
|
if (!t.length || !await e.take("text")) return 0;
|
|
2026
2095
|
const r = t.slice();
|
|
2027
2096
|
t.length = 0;
|
|
2028
|
-
const
|
|
2097
|
+
const s = {
|
|
2029
2098
|
type: "text",
|
|
2030
2099
|
texts: r,
|
|
2031
2100
|
cost: r.length
|
|
2032
2101
|
};
|
|
2033
|
-
return
|
|
2102
|
+
return H.postMessage(s), r.length;
|
|
2034
2103
|
}
|
|
2035
|
-
function
|
|
2104
|
+
function Hr(t) {
|
|
2036
2105
|
return t.lineCount + t.fillCount + t.dotCount;
|
|
2037
2106
|
}
|
|
2038
|
-
function
|
|
2039
|
-
return
|
|
2040
|
-
initial:
|
|
2041
|
-
steady: e ?
|
|
2107
|
+
function Kr(t, e) {
|
|
2108
|
+
return Hr(t) >= Xr ? {
|
|
2109
|
+
initial: pe,
|
|
2110
|
+
steady: e ? pe : Fr
|
|
2042
2111
|
} : {
|
|
2043
|
-
initial:
|
|
2044
|
-
steady: e ?
|
|
2112
|
+
initial: we,
|
|
2113
|
+
steady: e ? we : Lr
|
|
2045
2114
|
};
|
|
2046
2115
|
}
|
|
2047
|
-
function
|
|
2116
|
+
function jr(t) {
|
|
2048
2117
|
return t instanceof Error ? t : new Error(String(t));
|
|
2049
2118
|
}
|
|
2050
|
-
function
|
|
2119
|
+
function Wr(t) {
|
|
2051
2120
|
if (!(!t || t.length === 0))
|
|
2052
2121
|
return new Map(t.map((e) => [e.variantId, e.buffer]));
|
|
2053
2122
|
}
|
|
2054
|
-
function
|
|
2123
|
+
function qr(t) {
|
|
2055
2124
|
if (t !== void 0)
|
|
2056
2125
|
return new Set(t);
|
|
2057
2126
|
}
|
|
2058
|
-
async function
|
|
2059
|
-
const r =
|
|
2127
|
+
async function Jr(t, e, n) {
|
|
2128
|
+
const r = Wr(e);
|
|
2060
2129
|
if (!t || !n || n.length === 0)
|
|
2061
2130
|
return r;
|
|
2062
|
-
const
|
|
2063
|
-
if (
|
|
2131
|
+
const s = Array.from(new Set(n)).filter((a) => !(r != null && r.has(a))).sort((a, u) => a - u);
|
|
2132
|
+
if (s.length === 0)
|
|
2064
2133
|
return r;
|
|
2065
|
-
const
|
|
2134
|
+
const o = await xr({
|
|
2066
2135
|
baseUrl: t.baseUrl,
|
|
2067
2136
|
entries: t.entries,
|
|
2068
|
-
requiredVariantIds:
|
|
2137
|
+
requiredVariantIds: s
|
|
2069
2138
|
}), i = new Map(r ?? []);
|
|
2070
|
-
for (const [a,
|
|
2071
|
-
i.set(a,
|
|
2139
|
+
for (const [a, u] of o.buffers)
|
|
2140
|
+
i.set(a, u);
|
|
2072
2141
|
return i;
|
|
2073
2142
|
}
|
|
2074
|
-
async function
|
|
2075
|
-
const h =
|
|
2076
|
-
let
|
|
2077
|
-
const
|
|
2143
|
+
async function Zr(t, e, n, r, s = !0, o, i, a, u, c, m, g, l, d, p = !1) {
|
|
2144
|
+
const h = wr(), y = [];
|
|
2145
|
+
let w = 0, _ = !1;
|
|
2146
|
+
const E = u === !0, A = typeof i == "number" && Number.isFinite(i) && i >= 0, U = await Jr(
|
|
2078
2147
|
a,
|
|
2079
|
-
|
|
2148
|
+
c,
|
|
2080
2149
|
g
|
|
2081
|
-
),
|
|
2150
|
+
), N = qr(m), C = n && n.length > 0 || r === !0 || s === !1 || o === !0 || A || E || U || N !== void 0 || l === !0 || d === !0 ? {
|
|
2082
2151
|
...n && n.length > 0 ? { hiddenInstanceIds: new Set(n) } : {},
|
|
2083
2152
|
...r === !0 ? { keepTextsForHiddenInstances: !0 } : {},
|
|
2084
|
-
...
|
|
2085
|
-
...
|
|
2086
|
-
...
|
|
2087
|
-
...
|
|
2088
|
-
...
|
|
2089
|
-
...
|
|
2090
|
-
...
|
|
2091
|
-
|
|
2092
|
-
|
|
2153
|
+
...s === !1 ? { loadBlocks: !1 } : {},
|
|
2154
|
+
...o === !0 ? { suppressExpandedInsertGeometry: !0 } : {},
|
|
2155
|
+
...A ? { maxExpandedInstanceVertices: i } : {},
|
|
2156
|
+
...E ? { deferExternalVariantGeometry: !0 } : {},
|
|
2157
|
+
...U ? { externalVariantBuffers: U } : {},
|
|
2158
|
+
...N !== void 0 ? { requiredExternalVariantIds: N } : {},
|
|
2159
|
+
...l === !0 ? { externalVariantDeltaOnly: !0 } : {},
|
|
2160
|
+
...d === !0 ? { cacheDocument: !0 } : {}
|
|
2161
|
+
} : void 0, V = p && Tt ? hr(t, Tt, C) : ze(t, C);
|
|
2162
|
+
p || (Tt = V.documentCache ?? null);
|
|
2163
|
+
const G = Kr(V.header, l === !0);
|
|
2164
|
+
H.postMessage({
|
|
2093
2165
|
type: "header",
|
|
2094
|
-
header:
|
|
2166
|
+
header: V.header
|
|
2095
2167
|
});
|
|
2096
|
-
const
|
|
2097
|
-
const
|
|
2098
|
-
return
|
|
2168
|
+
const $ = async () => {
|
|
2169
|
+
const T = await zr(h, e);
|
|
2170
|
+
return w = 0, T > 0 && (_ = !0), T;
|
|
2099
2171
|
};
|
|
2100
|
-
for (const
|
|
2101
|
-
if (
|
|
2102
|
-
|
|
2172
|
+
for (const T of V.chunks) {
|
|
2173
|
+
if (T.kind === "text") {
|
|
2174
|
+
y.push(T.payload), y.length >= Yr && await Ae(y, e);
|
|
2103
2175
|
continue;
|
|
2104
2176
|
}
|
|
2105
|
-
const
|
|
2106
|
-
markLinePositionXy:
|
|
2177
|
+
const P = He(T.payload, {
|
|
2178
|
+
markLinePositionXy: T.kind === "line"
|
|
2107
2179
|
});
|
|
2108
|
-
|
|
2109
|
-
const
|
|
2110
|
-
|
|
2180
|
+
w += br(h[T.kind], P);
|
|
2181
|
+
const k = _ ? G.steady : G.initial;
|
|
2182
|
+
w >= k && await $();
|
|
2111
2183
|
}
|
|
2112
|
-
await
|
|
2113
|
-
const
|
|
2114
|
-
|
|
2184
|
+
await $(), await Ae(y, e), H.postMessage({ type: "done" });
|
|
2185
|
+
const M = Ee(), I = Br(V.header);
|
|
2186
|
+
I && H.postMessage(
|
|
2115
2187
|
{
|
|
2116
2188
|
type: "insertModel",
|
|
2117
|
-
variants:
|
|
2118
|
-
instances:
|
|
2119
|
-
cost:
|
|
2120
|
-
bytes:
|
|
2121
|
-
planMs:
|
|
2189
|
+
variants: I.variants,
|
|
2190
|
+
instances: I.instances,
|
|
2191
|
+
cost: I.cost,
|
|
2192
|
+
bytes: I.bytes,
|
|
2193
|
+
planMs: Ee() - M
|
|
2122
2194
|
},
|
|
2123
|
-
|
|
2124
|
-
),
|
|
2195
|
+
$r(I)
|
|
2196
|
+
), H.postMessage({ type: "complete" });
|
|
2125
2197
|
}
|
|
2126
2198
|
self.addEventListener("message", (t) => {
|
|
2127
2199
|
const e = t.data;
|
|
2128
2200
|
if (!e) return;
|
|
2129
2201
|
if (e.type === "grant") {
|
|
2130
|
-
|
|
2202
|
+
X == null || X.grant({
|
|
2131
2203
|
geometryCredits: e.geometryCredits,
|
|
2132
2204
|
textCredits: e.textCredits
|
|
2133
2205
|
});
|
|
2134
2206
|
return;
|
|
2135
2207
|
}
|
|
2136
2208
|
if (e.type === "cancel") {
|
|
2137
|
-
|
|
2209
|
+
X == null || X.cancel();
|
|
2138
2210
|
return;
|
|
2139
2211
|
}
|
|
2140
2212
|
if (e.type !== "parse") return;
|
|
2141
|
-
const n = new
|
|
2142
|
-
|
|
2143
|
-
|
|
2213
|
+
const n = new Dr();
|
|
2214
|
+
X = n;
|
|
2215
|
+
const r = e.useRetainedMainBuffer === !0;
|
|
2216
|
+
if (r && e.buffer !== void 0) {
|
|
2217
|
+
const o = new Error("Geo prepare worker parse request cannot include both a retained and transferred main buffer");
|
|
2218
|
+
o.code = "E_MAIN_BUFFER_PROTOCOL", H.postMessage({
|
|
2219
|
+
type: "error",
|
|
2220
|
+
message: o.message,
|
|
2221
|
+
code: "E_MAIN_BUFFER_PROTOCOL"
|
|
2222
|
+
}), X = null;
|
|
2223
|
+
return;
|
|
2224
|
+
}
|
|
2225
|
+
const s = r ? be : e.buffer;
|
|
2226
|
+
if (!s) {
|
|
2227
|
+
const o = new Error(
|
|
2228
|
+
r ? "Geo prepare worker has no retained main buffer for this delta parse" : "Geo prepare worker parse request is missing its main buffer"
|
|
2229
|
+
);
|
|
2230
|
+
o.code = "E_MAIN_BUFFER_MISSING", H.postMessage({
|
|
2231
|
+
type: "error",
|
|
2232
|
+
message: o.message,
|
|
2233
|
+
code: "E_MAIN_BUFFER_MISSING"
|
|
2234
|
+
}), X = null;
|
|
2235
|
+
return;
|
|
2236
|
+
}
|
|
2237
|
+
r || (be = s), Zr(
|
|
2238
|
+
s,
|
|
2144
2239
|
n,
|
|
2145
2240
|
e.hiddenInstanceIds,
|
|
2146
2241
|
e.keepTextsForHiddenInstances,
|
|
@@ -2152,15 +2247,17 @@ self.addEventListener("message", (t) => {
|
|
|
2152
2247
|
e.externalVariantBuffers,
|
|
2153
2248
|
e.requiredExternalVariantIds,
|
|
2154
2249
|
e.externalVariantGeometryFetchIds,
|
|
2155
|
-
e.externalVariantDeltaOnly
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2250
|
+
e.externalVariantDeltaOnly,
|
|
2251
|
+
e.cacheDocument,
|
|
2252
|
+
r
|
|
2253
|
+
).catch((o) => {
|
|
2254
|
+
const i = jr(o), a = i.code;
|
|
2255
|
+
H.postMessage({
|
|
2159
2256
|
type: "error",
|
|
2160
|
-
message:
|
|
2161
|
-
code: typeof
|
|
2257
|
+
message: i.message,
|
|
2258
|
+
code: typeof a == "string" ? a : void 0
|
|
2162
2259
|
});
|
|
2163
2260
|
}).finally(() => {
|
|
2164
|
-
|
|
2261
|
+
X === n && (X = null);
|
|
2165
2262
|
});
|
|
2166
2263
|
});
|