@retikz/core 0.1.0-alpha.2 → 0.1.0-alpha.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/dist/es/compile/compile.d.ts +6 -0
- package/dist/es/compile/compile.d.ts.map +1 -1
- package/dist/es/compile/compile.js +33 -4
- package/dist/es/compile/node.d.ts +23 -2
- package/dist/es/compile/node.d.ts.map +1 -1
- package/dist/es/compile/node.js +94 -4
- package/dist/es/compile/path.d.ts +3 -2
- package/dist/es/compile/path.d.ts.map +1 -1
- package/dist/es/compile/path.js +333 -14
- package/dist/es/compile/position.d.ts +8 -5
- package/dist/es/compile/position.d.ts.map +1 -1
- package/dist/es/compile/position.js +32 -5
- package/dist/es/geometry/arc.d.ts +34 -0
- package/dist/es/geometry/arc.d.ts.map +1 -0
- package/dist/es/geometry/arc.js +53 -0
- package/dist/es/geometry/bend.d.ts +18 -0
- package/dist/es/geometry/bend.d.ts.map +1 -0
- package/dist/es/geometry/bend.js +29 -0
- package/dist/es/geometry/index.d.ts +3 -0
- package/dist/es/geometry/index.d.ts.map +1 -1
- package/dist/es/geometry/segment.d.ts +38 -0
- package/dist/es/geometry/segment.d.ts.map +1 -0
- package/dist/es/geometry/segment.js +82 -0
- package/dist/es/index.d.ts +4 -4
- package/dist/es/index.d.ts.map +1 -1
- package/dist/es/index.js +7 -4
- package/dist/es/ir/coordinate.d.ts +57 -0
- package/dist/es/ir/coordinate.d.ts.map +1 -0
- package/dist/es/ir/coordinate.js +27 -0
- package/dist/es/ir/index.d.ts +1 -0
- package/dist/es/ir/index.d.ts.map +1 -1
- package/dist/es/ir/node.d.ts +276 -17
- package/dist/es/ir/node.d.ts.map +1 -1
- package/dist/es/ir/node.js +28 -3
- package/dist/es/ir/path/path.d.ts +625 -15
- package/dist/es/ir/path/path.d.ts.map +1 -1
- package/dist/es/ir/path/path.js +22 -0
- package/dist/es/ir/path/step.d.ts +872 -20
- package/dist/es/ir/path/step.d.ts.map +1 -1
- package/dist/es/ir/path/step.js +86 -4
- package/dist/es/ir/path/target.d.ts +32 -2
- package/dist/es/ir/path/target.d.ts.map +1 -1
- package/dist/es/ir/path/target.js +7 -3
- package/dist/es/ir/position/at-position.d.ts +50 -0
- package/dist/es/ir/position/at-position.d.ts.map +1 -0
- package/dist/es/ir/position/at-position.js +30 -0
- package/dist/es/ir/position/index.d.ts +1 -0
- package/dist/es/ir/position/index.d.ts.map +1 -1
- package/dist/es/ir/scene.d.ts +2072 -112
- package/dist/es/ir/scene.d.ts.map +1 -1
- package/dist/es/ir/scene.js +6 -1
- package/dist/es/parsers/index.d.ts +1 -0
- package/dist/es/parsers/index.d.ts.map +1 -1
- package/dist/es/parsers/parseTargetSugar.d.ts +3 -0
- package/dist/es/parsers/parseTargetSugar.d.ts.map +1 -0
- package/dist/es/parsers/parseTargetSugar.js +31 -0
- package/dist/es/parsers/parseWay.d.ts +131 -22
- package/dist/es/parsers/parseWay.d.ts.map +1 -1
- package/dist/es/parsers/parseWay.js +149 -17
- package/dist/lib/compile/compile.cjs +33 -4
- package/dist/lib/compile/compile.d.ts +6 -0
- package/dist/lib/compile/compile.d.ts.map +1 -1
- package/dist/lib/compile/node.cjs +94 -4
- package/dist/lib/compile/node.d.ts +23 -2
- package/dist/lib/compile/node.d.ts.map +1 -1
- package/dist/lib/compile/path.cjs +333 -14
- package/dist/lib/compile/path.d.ts +3 -2
- package/dist/lib/compile/path.d.ts.map +1 -1
- package/dist/lib/compile/position.cjs +32 -5
- package/dist/lib/compile/position.d.ts +8 -5
- package/dist/lib/compile/position.d.ts.map +1 -1
- package/dist/lib/geometry/arc.cjs +55 -0
- package/dist/lib/geometry/arc.d.ts +34 -0
- package/dist/lib/geometry/arc.d.ts.map +1 -0
- package/dist/lib/geometry/bend.cjs +29 -0
- package/dist/lib/geometry/bend.d.ts +18 -0
- package/dist/lib/geometry/bend.d.ts.map +1 -0
- package/dist/lib/geometry/index.d.ts +3 -0
- package/dist/lib/geometry/index.d.ts.map +1 -1
- package/dist/lib/geometry/segment.cjs +88 -0
- package/dist/lib/geometry/segment.d.ts +38 -0
- package/dist/lib/geometry/segment.d.ts.map +1 -0
- package/dist/lib/index.cjs +18 -0
- package/dist/lib/index.d.ts +4 -4
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/ir/coordinate.cjs +27 -0
- package/dist/lib/ir/coordinate.d.ts +57 -0
- package/dist/lib/ir/coordinate.d.ts.map +1 -0
- package/dist/lib/ir/index.d.ts +1 -0
- package/dist/lib/ir/index.d.ts.map +1 -1
- package/dist/lib/ir/node.cjs +28 -2
- package/dist/lib/ir/node.d.ts +276 -17
- package/dist/lib/ir/node.d.ts.map +1 -1
- package/dist/lib/ir/path/path.cjs +22 -0
- package/dist/lib/ir/path/path.d.ts +625 -15
- package/dist/lib/ir/path/path.d.ts.map +1 -1
- package/dist/lib/ir/path/step.cjs +93 -3
- package/dist/lib/ir/path/step.d.ts +872 -20
- package/dist/lib/ir/path/step.d.ts.map +1 -1
- package/dist/lib/ir/path/target.cjs +8 -2
- package/dist/lib/ir/path/target.d.ts +32 -2
- package/dist/lib/ir/path/target.d.ts.map +1 -1
- package/dist/lib/ir/position/at-position.cjs +31 -0
- package/dist/lib/ir/position/at-position.d.ts +50 -0
- package/dist/lib/ir/position/at-position.d.ts.map +1 -0
- package/dist/lib/ir/position/index.d.ts +1 -0
- package/dist/lib/ir/position/index.d.ts.map +1 -1
- package/dist/lib/ir/scene.cjs +6 -1
- package/dist/lib/ir/scene.d.ts +2072 -112
- package/dist/lib/ir/scene.d.ts.map +1 -1
- package/dist/lib/parsers/index.d.ts +1 -0
- package/dist/lib/parsers/index.d.ts.map +1 -1
- package/dist/lib/parsers/parseTargetSugar.cjs +31 -0
- package/dist/lib/parsers/parseTargetSugar.d.ts +3 -0
- package/dist/lib/parsers/parseTargetSugar.d.ts.map +1 -0
- package/dist/lib/parsers/parseWay.cjs +149 -17
- package/dist/lib/parsers/parseWay.d.ts +131 -22
- package/dist/lib/parsers/parseWay.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/es/ir/node.d.ts
CHANGED
|
@@ -157,6 +157,75 @@ export declare const NODE_TEXT_ALIGNS: {
|
|
|
157
157
|
};
|
|
158
158
|
/** 多行文本对齐字面量类型 */
|
|
159
159
|
export type NodeTextAlign = ValueOf<typeof NODE_TEXT_ALIGNS>;
|
|
160
|
+
/**
|
|
161
|
+
* 节点附属标签(label)——TikZ `[label=above:foo]` / `[label={[red]30:foo}]` 同义。
|
|
162
|
+
*
|
|
163
|
+
* 一个 Node 可挂多个 label(数组形态);label 自身不参与 viewBox(视觉外延少时可接受)。
|
|
164
|
+
*
|
|
165
|
+
* `position` 接受两种形态:
|
|
166
|
+
* - 8 方向枚举(`above` / `right` / `above-left` ...):标签贴在 node 该方向边界外
|
|
167
|
+
* - 数字角度:以 node 中心为原点,按该角度方向投射;约定与 polar 一致(0° = +x,90° = +y 屏幕下方)
|
|
168
|
+
*
|
|
169
|
+
* 默认 `position = 'above'`,`distance = 4`(user units,标签与 node 边界的距离)。
|
|
170
|
+
*/
|
|
171
|
+
export declare const NodeLabelSchema: z.ZodObject<{
|
|
172
|
+
text: z.ZodString;
|
|
173
|
+
position: z.ZodOptional<z.ZodUnion<[z.ZodNativeEnum<{
|
|
174
|
+
readonly above: "above";
|
|
175
|
+
readonly below: "below";
|
|
176
|
+
readonly left: "left";
|
|
177
|
+
readonly right: "right";
|
|
178
|
+
readonly 'above-left': "above-left";
|
|
179
|
+
readonly 'above-right': "above-right";
|
|
180
|
+
readonly 'below-left': "below-left";
|
|
181
|
+
readonly 'below-right': "below-right";
|
|
182
|
+
}>, z.ZodNumber]>>;
|
|
183
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
184
|
+
textColor: z.ZodOptional<z.ZodString>;
|
|
185
|
+
opacity: z.ZodOptional<z.ZodNumber>;
|
|
186
|
+
font: z.ZodOptional<z.ZodObject<{
|
|
187
|
+
family: z.ZodOptional<z.ZodString>;
|
|
188
|
+
size: z.ZodOptional<z.ZodNumber>;
|
|
189
|
+
weight: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["normal", "bold"]>, z.ZodNumber]>>;
|
|
190
|
+
style: z.ZodOptional<z.ZodEnum<["normal", "italic", "oblique"]>>;
|
|
191
|
+
}, "strip", z.ZodTypeAny, {
|
|
192
|
+
family?: string | undefined;
|
|
193
|
+
size?: number | undefined;
|
|
194
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
195
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
196
|
+
}, {
|
|
197
|
+
family?: string | undefined;
|
|
198
|
+
size?: number | undefined;
|
|
199
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
200
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
201
|
+
}>>;
|
|
202
|
+
}, "strip", z.ZodTypeAny, {
|
|
203
|
+
text: string;
|
|
204
|
+
distance?: number | undefined;
|
|
205
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
206
|
+
opacity?: number | undefined;
|
|
207
|
+
font?: {
|
|
208
|
+
family?: string | undefined;
|
|
209
|
+
size?: number | undefined;
|
|
210
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
211
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
212
|
+
} | undefined;
|
|
213
|
+
textColor?: string | undefined;
|
|
214
|
+
}, {
|
|
215
|
+
text: string;
|
|
216
|
+
distance?: number | undefined;
|
|
217
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
218
|
+
opacity?: number | undefined;
|
|
219
|
+
font?: {
|
|
220
|
+
family?: string | undefined;
|
|
221
|
+
size?: number | undefined;
|
|
222
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
223
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
224
|
+
} | undefined;
|
|
225
|
+
textColor?: string | undefined;
|
|
226
|
+
}>;
|
|
227
|
+
/** Node label IR 类型——单条 label 的字段集 */
|
|
228
|
+
export type IRNodeLabel = z.infer<typeof NodeLabelSchema>;
|
|
160
229
|
export declare const NodeSchema: z.ZodObject<{
|
|
161
230
|
type: z.ZodLiteral<"node">;
|
|
162
231
|
id: z.ZodOptional<z.ZodString>;
|
|
@@ -166,7 +235,28 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
166
235
|
readonly ellipse: "ellipse";
|
|
167
236
|
readonly diamond: "diamond";
|
|
168
237
|
}>>;
|
|
169
|
-
position: z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodType<import('./position').PolarPosition, z.ZodTypeDef, import('./position').PolarPosition
|
|
238
|
+
position: z.ZodUnion<[z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodType<import('./position').PolarPosition, z.ZodTypeDef, import('./position').PolarPosition>, z.ZodObject<{
|
|
239
|
+
direction: z.ZodNativeEnum<{
|
|
240
|
+
readonly above: "above";
|
|
241
|
+
readonly below: "below";
|
|
242
|
+
readonly left: "left";
|
|
243
|
+
readonly right: "right";
|
|
244
|
+
readonly 'above-left': "above-left";
|
|
245
|
+
readonly 'above-right': "above-right";
|
|
246
|
+
readonly 'below-left': "below-left";
|
|
247
|
+
readonly 'below-right': "below-right";
|
|
248
|
+
}>;
|
|
249
|
+
of: z.ZodString;
|
|
250
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
251
|
+
}, "strip", z.ZodTypeAny, {
|
|
252
|
+
direction: "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right";
|
|
253
|
+
of: string;
|
|
254
|
+
distance?: number | undefined;
|
|
255
|
+
}, {
|
|
256
|
+
direction: "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right";
|
|
257
|
+
of: string;
|
|
258
|
+
distance?: number | undefined;
|
|
259
|
+
}>]>;
|
|
170
260
|
rotate: z.ZodOptional<z.ZodNumber>;
|
|
171
261
|
text: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
172
262
|
text: z.ZodString;
|
|
@@ -253,13 +343,125 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
253
343
|
weight?: number | "normal" | "bold" | undefined;
|
|
254
344
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
255
345
|
}>>;
|
|
346
|
+
label: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
|
|
347
|
+
text: z.ZodString;
|
|
348
|
+
position: z.ZodOptional<z.ZodUnion<[z.ZodNativeEnum<{
|
|
349
|
+
readonly above: "above";
|
|
350
|
+
readonly below: "below";
|
|
351
|
+
readonly left: "left";
|
|
352
|
+
readonly right: "right";
|
|
353
|
+
readonly 'above-left': "above-left";
|
|
354
|
+
readonly 'above-right': "above-right";
|
|
355
|
+
readonly 'below-left': "below-left";
|
|
356
|
+
readonly 'below-right': "below-right";
|
|
357
|
+
}>, z.ZodNumber]>>;
|
|
358
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
359
|
+
textColor: z.ZodOptional<z.ZodString>;
|
|
360
|
+
opacity: z.ZodOptional<z.ZodNumber>;
|
|
361
|
+
font: z.ZodOptional<z.ZodObject<{
|
|
362
|
+
family: z.ZodOptional<z.ZodString>;
|
|
363
|
+
size: z.ZodOptional<z.ZodNumber>;
|
|
364
|
+
weight: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["normal", "bold"]>, z.ZodNumber]>>;
|
|
365
|
+
style: z.ZodOptional<z.ZodEnum<["normal", "italic", "oblique"]>>;
|
|
366
|
+
}, "strip", z.ZodTypeAny, {
|
|
367
|
+
family?: string | undefined;
|
|
368
|
+
size?: number | undefined;
|
|
369
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
370
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
371
|
+
}, {
|
|
372
|
+
family?: string | undefined;
|
|
373
|
+
size?: number | undefined;
|
|
374
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
375
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
376
|
+
}>>;
|
|
377
|
+
}, "strip", z.ZodTypeAny, {
|
|
378
|
+
text: string;
|
|
379
|
+
distance?: number | undefined;
|
|
380
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
381
|
+
opacity?: number | undefined;
|
|
382
|
+
font?: {
|
|
383
|
+
family?: string | undefined;
|
|
384
|
+
size?: number | undefined;
|
|
385
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
386
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
387
|
+
} | undefined;
|
|
388
|
+
textColor?: string | undefined;
|
|
389
|
+
}, {
|
|
390
|
+
text: string;
|
|
391
|
+
distance?: number | undefined;
|
|
392
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
393
|
+
opacity?: number | undefined;
|
|
394
|
+
font?: {
|
|
395
|
+
family?: string | undefined;
|
|
396
|
+
size?: number | undefined;
|
|
397
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
398
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
399
|
+
} | undefined;
|
|
400
|
+
textColor?: string | undefined;
|
|
401
|
+
}>, z.ZodArray<z.ZodObject<{
|
|
402
|
+
text: z.ZodString;
|
|
403
|
+
position: z.ZodOptional<z.ZodUnion<[z.ZodNativeEnum<{
|
|
404
|
+
readonly above: "above";
|
|
405
|
+
readonly below: "below";
|
|
406
|
+
readonly left: "left";
|
|
407
|
+
readonly right: "right";
|
|
408
|
+
readonly 'above-left': "above-left";
|
|
409
|
+
readonly 'above-right': "above-right";
|
|
410
|
+
readonly 'below-left': "below-left";
|
|
411
|
+
readonly 'below-right': "below-right";
|
|
412
|
+
}>, z.ZodNumber]>>;
|
|
413
|
+
distance: z.ZodOptional<z.ZodNumber>;
|
|
414
|
+
textColor: z.ZodOptional<z.ZodString>;
|
|
415
|
+
opacity: z.ZodOptional<z.ZodNumber>;
|
|
416
|
+
font: z.ZodOptional<z.ZodObject<{
|
|
417
|
+
family: z.ZodOptional<z.ZodString>;
|
|
418
|
+
size: z.ZodOptional<z.ZodNumber>;
|
|
419
|
+
weight: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["normal", "bold"]>, z.ZodNumber]>>;
|
|
420
|
+
style: z.ZodOptional<z.ZodEnum<["normal", "italic", "oblique"]>>;
|
|
421
|
+
}, "strip", z.ZodTypeAny, {
|
|
422
|
+
family?: string | undefined;
|
|
423
|
+
size?: number | undefined;
|
|
424
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
425
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
426
|
+
}, {
|
|
427
|
+
family?: string | undefined;
|
|
428
|
+
size?: number | undefined;
|
|
429
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
430
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
431
|
+
}>>;
|
|
432
|
+
}, "strip", z.ZodTypeAny, {
|
|
433
|
+
text: string;
|
|
434
|
+
distance?: number | undefined;
|
|
435
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
436
|
+
opacity?: number | undefined;
|
|
437
|
+
font?: {
|
|
438
|
+
family?: string | undefined;
|
|
439
|
+
size?: number | undefined;
|
|
440
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
441
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
442
|
+
} | undefined;
|
|
443
|
+
textColor?: string | undefined;
|
|
444
|
+
}, {
|
|
445
|
+
text: string;
|
|
446
|
+
distance?: number | undefined;
|
|
447
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
448
|
+
opacity?: number | undefined;
|
|
449
|
+
font?: {
|
|
450
|
+
family?: string | undefined;
|
|
451
|
+
size?: number | undefined;
|
|
452
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
453
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
454
|
+
} | undefined;
|
|
455
|
+
textColor?: string | undefined;
|
|
456
|
+
}>, "many">]>>;
|
|
256
457
|
}, "strip", z.ZodTypeAny, {
|
|
257
458
|
type: "node";
|
|
258
|
-
position: [number, number] | import('./position').PolarPosition
|
|
459
|
+
position: [number, number] | import('./position').PolarPosition | {
|
|
460
|
+
direction: "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right";
|
|
461
|
+
of: string;
|
|
462
|
+
distance?: number | undefined;
|
|
463
|
+
};
|
|
259
464
|
fill?: string | undefined;
|
|
260
|
-
shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
|
|
261
|
-
stroke?: string | undefined;
|
|
262
|
-
strokeWidth?: number | undefined;
|
|
263
465
|
text?: string | (string | {
|
|
264
466
|
text: string;
|
|
265
467
|
fill?: string | undefined;
|
|
@@ -271,19 +473,48 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
271
473
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
272
474
|
} | undefined;
|
|
273
475
|
})[] | undefined;
|
|
476
|
+
label?: {
|
|
477
|
+
text: string;
|
|
478
|
+
distance?: number | undefined;
|
|
479
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
480
|
+
opacity?: number | undefined;
|
|
481
|
+
font?: {
|
|
482
|
+
family?: string | undefined;
|
|
483
|
+
size?: number | undefined;
|
|
484
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
485
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
486
|
+
} | undefined;
|
|
487
|
+
textColor?: string | undefined;
|
|
488
|
+
} | {
|
|
489
|
+
text: string;
|
|
490
|
+
distance?: number | undefined;
|
|
491
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
492
|
+
opacity?: number | undefined;
|
|
493
|
+
font?: {
|
|
494
|
+
family?: string | undefined;
|
|
495
|
+
size?: number | undefined;
|
|
496
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
497
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
498
|
+
} | undefined;
|
|
499
|
+
textColor?: string | undefined;
|
|
500
|
+
}[] | undefined;
|
|
501
|
+
shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
|
|
502
|
+
stroke?: string | undefined;
|
|
503
|
+
strokeWidth?: number | undefined;
|
|
274
504
|
opacity?: number | undefined;
|
|
505
|
+
fillOpacity?: number | undefined;
|
|
506
|
+
drawOpacity?: number | undefined;
|
|
275
507
|
font?: {
|
|
276
508
|
family?: string | undefined;
|
|
277
509
|
size?: number | undefined;
|
|
278
510
|
weight?: number | "normal" | "bold" | undefined;
|
|
279
511
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
280
512
|
} | undefined;
|
|
513
|
+
textColor?: string | undefined;
|
|
281
514
|
id?: string | undefined;
|
|
282
515
|
rotate?: number | undefined;
|
|
283
|
-
align?: "left" | "
|
|
516
|
+
align?: "left" | "right" | "center" | undefined;
|
|
284
517
|
lineHeight?: number | undefined;
|
|
285
|
-
fillOpacity?: number | undefined;
|
|
286
|
-
drawOpacity?: number | undefined;
|
|
287
518
|
dashed?: boolean | undefined;
|
|
288
519
|
dotted?: boolean | undefined;
|
|
289
520
|
dashArray?: string | undefined;
|
|
@@ -294,7 +525,6 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
294
525
|
scale?: number | undefined;
|
|
295
526
|
xScale?: number | undefined;
|
|
296
527
|
yScale?: number | undefined;
|
|
297
|
-
textColor?: string | undefined;
|
|
298
528
|
innerXSep?: number | undefined;
|
|
299
529
|
innerYSep?: number | undefined;
|
|
300
530
|
outerSep?: number | undefined;
|
|
@@ -302,11 +532,12 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
302
532
|
margin?: number | undefined;
|
|
303
533
|
}, {
|
|
304
534
|
type: "node";
|
|
305
|
-
position: [number, number] | import('./position').PolarPosition
|
|
535
|
+
position: [number, number] | import('./position').PolarPosition | {
|
|
536
|
+
direction: "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right";
|
|
537
|
+
of: string;
|
|
538
|
+
distance?: number | undefined;
|
|
539
|
+
};
|
|
306
540
|
fill?: string | undefined;
|
|
307
|
-
shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
|
|
308
|
-
stroke?: string | undefined;
|
|
309
|
-
strokeWidth?: number | undefined;
|
|
310
541
|
text?: string | (string | {
|
|
311
542
|
text: string;
|
|
312
543
|
fill?: string | undefined;
|
|
@@ -318,19 +549,48 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
318
549
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
319
550
|
} | undefined;
|
|
320
551
|
})[] | undefined;
|
|
552
|
+
label?: {
|
|
553
|
+
text: string;
|
|
554
|
+
distance?: number | undefined;
|
|
555
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
556
|
+
opacity?: number | undefined;
|
|
557
|
+
font?: {
|
|
558
|
+
family?: string | undefined;
|
|
559
|
+
size?: number | undefined;
|
|
560
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
561
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
562
|
+
} | undefined;
|
|
563
|
+
textColor?: string | undefined;
|
|
564
|
+
} | {
|
|
565
|
+
text: string;
|
|
566
|
+
distance?: number | undefined;
|
|
567
|
+
position?: number | "above" | "below" | "left" | "right" | "above-left" | "above-right" | "below-left" | "below-right" | undefined;
|
|
568
|
+
opacity?: number | undefined;
|
|
569
|
+
font?: {
|
|
570
|
+
family?: string | undefined;
|
|
571
|
+
size?: number | undefined;
|
|
572
|
+
weight?: number | "normal" | "bold" | undefined;
|
|
573
|
+
style?: "normal" | "italic" | "oblique" | undefined;
|
|
574
|
+
} | undefined;
|
|
575
|
+
textColor?: string | undefined;
|
|
576
|
+
}[] | undefined;
|
|
577
|
+
shape?: "diamond" | "circle" | "rectangle" | "ellipse" | undefined;
|
|
578
|
+
stroke?: string | undefined;
|
|
579
|
+
strokeWidth?: number | undefined;
|
|
321
580
|
opacity?: number | undefined;
|
|
581
|
+
fillOpacity?: number | undefined;
|
|
582
|
+
drawOpacity?: number | undefined;
|
|
322
583
|
font?: {
|
|
323
584
|
family?: string | undefined;
|
|
324
585
|
size?: number | undefined;
|
|
325
586
|
weight?: number | "normal" | "bold" | undefined;
|
|
326
587
|
style?: "normal" | "italic" | "oblique" | undefined;
|
|
327
588
|
} | undefined;
|
|
589
|
+
textColor?: string | undefined;
|
|
328
590
|
id?: string | undefined;
|
|
329
591
|
rotate?: number | undefined;
|
|
330
|
-
align?: "left" | "
|
|
592
|
+
align?: "left" | "right" | "center" | undefined;
|
|
331
593
|
lineHeight?: number | undefined;
|
|
332
|
-
fillOpacity?: number | undefined;
|
|
333
|
-
drawOpacity?: number | undefined;
|
|
334
594
|
dashed?: boolean | undefined;
|
|
335
595
|
dotted?: boolean | undefined;
|
|
336
596
|
dashArray?: string | undefined;
|
|
@@ -341,7 +601,6 @@ export declare const NodeSchema: z.ZodObject<{
|
|
|
341
601
|
scale?: number | undefined;
|
|
342
602
|
xScale?: number | undefined;
|
|
343
603
|
yScale?: number | undefined;
|
|
344
|
-
textColor?: string | undefined;
|
|
345
604
|
innerXSep?: number | undefined;
|
|
346
605
|
innerYSep?: number | undefined;
|
|
347
606
|
outerSep?: number | undefined;
|
package/dist/es/ir/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/ir/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,mCAAmC;AACnC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAwBpB,CAAC;AAEJ,oCAAoC;AACpC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEhD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsBxB,CAAC;AAEJ,4BAA4B;AAC5B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAIxB,CAAC;AAEJ,yCAAyC;AACzC,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,kBAAkB;AAClB,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/ir/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,mCAAmC;AACnC,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC;AAEpD;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;EAwBpB,CAAC;AAEJ,oCAAoC;AACpC,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEhD;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsBxB,CAAC;AAEJ,4BAA4B;AAC5B,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAIxB,CAAC;AAEJ,yCAAyC;AACzC,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,kBAAkB;AAClB,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCzB,CAAC;AAEJ,sCAAsC;AACtC,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE1D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+KpB,CAAC;AAEJ,4CAA4C;AAC5C,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
|
package/dist/es/ir/node.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PositionSchema } from "./position/position.js";
|
|
2
2
|
import { PolarPositionSchema } from "./position/polar-position.js";
|
|
3
|
+
import { AT_DIRECTIONS, AtPositionSchema } from "./position/at-position.js";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
//#region src/ir/node.ts
|
|
5
6
|
/**
|
|
@@ -70,11 +71,34 @@ var NODE_TEXT_ALIGNS = {
|
|
|
70
71
|
center: "center",
|
|
71
72
|
right: "right"
|
|
72
73
|
};
|
|
74
|
+
/**
|
|
75
|
+
* 节点附属标签(label)——TikZ `[label=above:foo]` / `[label={[red]30:foo}]` 同义。
|
|
76
|
+
*
|
|
77
|
+
* 一个 Node 可挂多个 label(数组形态);label 自身不参与 viewBox(视觉外延少时可接受)。
|
|
78
|
+
*
|
|
79
|
+
* `position` 接受两种形态:
|
|
80
|
+
* - 8 方向枚举(`above` / `right` / `above-left` ...):标签贴在 node 该方向边界外
|
|
81
|
+
* - 数字角度:以 node 中心为原点,按该角度方向投射;约定与 polar 一致(0° = +x,90° = +y 屏幕下方)
|
|
82
|
+
*
|
|
83
|
+
* 默认 `position = 'above'`,`distance = 4`(user units,标签与 node 边界的距离)。
|
|
84
|
+
*/
|
|
85
|
+
var NodeLabelSchema = z.object({
|
|
86
|
+
text: z.string().describe("Label text content; rendered as a single line."),
|
|
87
|
+
position: z.union([z.nativeEnum(AT_DIRECTIONS), z.number()]).optional().describe("Placement around the node border: 8-direction enum (above / right / above-left / ...) or numeric angle in degrees (`label=30:foo` for radial placement). Default `above`. Numeric uses the polar convention (0° = +x, 90° = +y, screen-down)."),
|
|
88
|
+
distance: z.number().nonnegative().optional().describe("Gap between the node border and the label center, in user units. Default 4."),
|
|
89
|
+
textColor: z.string().optional().describe("Label text color; falls back to currentColor."),
|
|
90
|
+
opacity: z.number().min(0).max(1).optional().describe("Label-only opacity 0..1; multiplied with the node opacity if both are set."),
|
|
91
|
+
font: FontSchema.optional().describe("Label font overrides; missing fields inherit from the parent node font, then renderer defaults.")
|
|
92
|
+
}).describe("Extra text attached around a node border. Multiple labels supported via array form on `Node.label`.");
|
|
73
93
|
var NodeSchema = z.object({
|
|
74
94
|
type: z.literal("node").describe("Discriminator marking this child as a node"),
|
|
75
95
|
id: z.string().min(1).optional().describe("Optional unique id; required if any path needs to reference this node by string"),
|
|
76
96
|
shape: z.nativeEnum(NODE_SHAPES).optional().describe("Node visual shape; defaults to `rectangle`. The boundary fully contains text + padding (circumscribed for circle / ellipse / diamond)."),
|
|
77
|
-
position: z.union([
|
|
97
|
+
position: z.union([
|
|
98
|
+
PositionSchema,
|
|
99
|
+
PolarPositionSchema,
|
|
100
|
+
AtPositionSchema
|
|
101
|
+
]).describe("Center point of the node content box; Cartesian [x, y], polar, or relative-to-another-node (`at`-style with `direction` / `of` / `distance?`). All non-Cartesian forms resolve at compile time."),
|
|
78
102
|
rotate: z.number().optional().describe("Rotation in degrees around the node center; positive = clockwise (matches TikZ rotate=...)"),
|
|
79
103
|
text: NodeTextSchema.optional(),
|
|
80
104
|
align: z.nativeEnum(NODE_TEXT_ALIGNS).optional().describe("Multi-line text alignment within the text block; `left` / `center` / `right`. Defaults to `center` (matches TikZ)."),
|
|
@@ -101,7 +125,8 @@ var NodeSchema = z.object({
|
|
|
101
125
|
outerSep: z.number().nonnegative().optional().describe("Outer margin from border to path attachment point in user units; does NOT change the visible border. Falls back to `margin`."),
|
|
102
126
|
padding: z.number().nonnegative().optional().describe("Symmetric inner padding (alias for `innerXSep` + `innerYSep`); axis-specific fields take precedence."),
|
|
103
127
|
margin: z.number().nonnegative().optional().describe("Symmetric outer margin (alias for `outerSep`); axis-specific field takes precedence."),
|
|
104
|
-
font: FontSchema.optional().describe("Font spec for the inner text label (family / size / weight / style); all fields optional, all fall back to renderer defaults.")
|
|
128
|
+
font: FontSchema.optional().describe("Font spec for the inner text label (family / size / weight / style); all fields optional, all fall back to renderer defaults."),
|
|
129
|
+
label: z.union([NodeLabelSchema, z.array(NodeLabelSchema)]).optional().describe("Extra label(s) attached around the node border (TikZ `[label=above:foo]`); single object or array form. Compiled into one TextPrim per label, positioned by `position` direction / angle and `distance`.")
|
|
105
130
|
}).describe("Node primitive: a positioned, optionally textual shape (rectangle / circle / ellipse / diamond)");
|
|
106
131
|
//#endregion
|
|
107
|
-
export { FontSchema, LineSpecSchema, NODE_SHAPES, NODE_TEXT_ALIGNS, NodeSchema, NodeTextSchema };
|
|
132
|
+
export { FontSchema, LineSpecSchema, NODE_SHAPES, NODE_TEXT_ALIGNS, NodeLabelSchema, NodeSchema, NodeTextSchema };
|