@tscircuit/schematic-viewer 1.2.8 → 1.2.9
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/index.d.ts +1 -1
- package/dist/index.js +67 -18
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/Schematic.tsx +1 -1
- package/src/lib/utils/collect-element-refs.ts +5 -2
- package/src/schematic-components/SchematicElement.tsx +8 -3
- package/src/schematic-components/SchematicNetLabel.tsx +47 -0
- package/src/stories/basics/schematic-net-label.stories.tsx +171 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tscircuit/schematic-viewer",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.9",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "tscircuit/schematic-viewer",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"zustand": "^4.0.0"
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@tscircuit/soup": "^0.0.
|
|
61
|
+
"@tscircuit/soup": "^0.0.16",
|
|
62
62
|
"convert-units": "^2.3.4",
|
|
63
63
|
"react-error-boundary": "^4.0.4",
|
|
64
64
|
"react-supergrid": "^1.0.10",
|
package/src/Schematic.tsx
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnySoupElement, SourcePort } from "@tscircuit/soup"
|
|
2
2
|
|
|
3
|
-
export const collectElementRefs = (
|
|
3
|
+
export const collectElementRefs = (
|
|
4
|
+
elm: AnySoupElement,
|
|
5
|
+
allElms: AnySoupElement[]
|
|
6
|
+
) => {
|
|
4
7
|
const source_port = allElms.find(
|
|
5
8
|
(e) =>
|
|
6
9
|
e.type === "source_port" &&
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnySoupElement } from "@tscircuit/soup"
|
|
2
2
|
import { collectElementRefs } from "lib/utils/collect-element-refs"
|
|
3
3
|
import SchematicComponent from "./SchematicComponent"
|
|
4
4
|
import SchematicPort from "./SchematicPort"
|
|
@@ -8,6 +8,7 @@ import SchematicTrace from "./SchematicTrace"
|
|
|
8
8
|
import SchematicLine from "./SchematicLine"
|
|
9
9
|
import RenderError from "./RenderError"
|
|
10
10
|
import SchematicPath from "./SchematicPath"
|
|
11
|
+
import { SchematicNetLabel } from "./SchematicNetLabel"
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Render any @tsbuilder/builder AnyElement that can be put on a schematic.
|
|
@@ -16,8 +17,8 @@ export const SchematicElement = ({
|
|
|
16
17
|
element,
|
|
17
18
|
allElements,
|
|
18
19
|
}: {
|
|
19
|
-
element:
|
|
20
|
-
allElements:
|
|
20
|
+
element: AnySoupElement
|
|
21
|
+
allElements: AnySoupElement[]
|
|
21
22
|
}) => {
|
|
22
23
|
// A lot of the split logic for element types into a project is here:
|
|
23
24
|
// https://github.com/tscircuit/builder/blob/7e7bef9c0aadd11999795003b8986f0d244c111f/src/lib/project/create-project-from-elements.ts#L13
|
|
@@ -63,6 +64,10 @@ export const SchematicElement = ({
|
|
|
63
64
|
return <SchematicText schematic_text={element} />
|
|
64
65
|
}
|
|
65
66
|
|
|
67
|
+
if (element.type === "schematic_net_label") {
|
|
68
|
+
return <SchematicNetLabel net_label={element} />
|
|
69
|
+
}
|
|
70
|
+
|
|
66
71
|
if (element.type === "source_error") {
|
|
67
72
|
// TODO use the ids on the source error to put this in the right place
|
|
68
73
|
return <RenderError text={element.message} />
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { SchematicNetLabel as SchematicNetLabelObject } from "@tscircuit/soup"
|
|
2
|
+
import SVGPathComponent from "./SVGPathComponent"
|
|
3
|
+
import SchematicText from "./SchematicText"
|
|
4
|
+
|
|
5
|
+
export const SchematicNetLabel = ({
|
|
6
|
+
net_label,
|
|
7
|
+
}: {
|
|
8
|
+
net_label: SchematicNetLabelObject
|
|
9
|
+
}) => {
|
|
10
|
+
console.log({ net_label })
|
|
11
|
+
const text_width = net_label.text.length * 0.15
|
|
12
|
+
// TODO add text
|
|
13
|
+
const path_width = 31 + net_label.text.length * 5
|
|
14
|
+
return (
|
|
15
|
+
<>
|
|
16
|
+
<SVGPathComponent
|
|
17
|
+
rotation={0}
|
|
18
|
+
center={net_label.center}
|
|
19
|
+
// fixed size?
|
|
20
|
+
size={{
|
|
21
|
+
width: 0.05 + text_width,
|
|
22
|
+
height: 0.175,
|
|
23
|
+
}}
|
|
24
|
+
paths={[
|
|
25
|
+
{
|
|
26
|
+
stroke: "gray",
|
|
27
|
+
strokeWidth: 0.75,
|
|
28
|
+
d: `M 0 15 L 5 15 L 11 9 L ${path_width} 9 L ${path_width} 21 L 11 21 L 5 15`,
|
|
29
|
+
},
|
|
30
|
+
]}
|
|
31
|
+
/>
|
|
32
|
+
<SchematicText
|
|
33
|
+
schematic_text={{
|
|
34
|
+
anchor: "left",
|
|
35
|
+
position: {
|
|
36
|
+
x: net_label.center.x - text_width / 4 + 0.025,
|
|
37
|
+
y: net_label.center.y,
|
|
38
|
+
},
|
|
39
|
+
schematic_component_id: "SYNTHETIC",
|
|
40
|
+
schematic_text_id: "SYNTHETIC",
|
|
41
|
+
text: net_label.text,
|
|
42
|
+
type: "schematic_text",
|
|
43
|
+
}}
|
|
44
|
+
/>
|
|
45
|
+
</>
|
|
46
|
+
)
|
|
47
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { Schematic } from "../../Schematic"
|
|
2
|
+
|
|
3
|
+
export const SchematicNetLabel = () => {
|
|
4
|
+
return (
|
|
5
|
+
<Schematic
|
|
6
|
+
style={{ height: 500 }}
|
|
7
|
+
soup={
|
|
8
|
+
{
|
|
9
|
+
elements: [
|
|
10
|
+
{
|
|
11
|
+
type: "source_component",
|
|
12
|
+
source_component_id: "simple_resistor_0",
|
|
13
|
+
name: "R1",
|
|
14
|
+
supplier_part_numbers: {},
|
|
15
|
+
ftype: "simple_resistor",
|
|
16
|
+
resistance: 100,
|
|
17
|
+
source: {
|
|
18
|
+
type: "source_component",
|
|
19
|
+
source_component_id: "simple_resistor_0",
|
|
20
|
+
name: "R1",
|
|
21
|
+
supplier_part_numbers: {},
|
|
22
|
+
ftype: "simple_resistor",
|
|
23
|
+
resistance: 100,
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
type: "schematic_component",
|
|
28
|
+
source_component_id: "simple_resistor_0",
|
|
29
|
+
schematic_component_id: "schematic_component_simple_resistor_0",
|
|
30
|
+
rotation: 0,
|
|
31
|
+
size: {
|
|
32
|
+
width: 1,
|
|
33
|
+
height: 0.3,
|
|
34
|
+
},
|
|
35
|
+
center: {
|
|
36
|
+
x: 0,
|
|
37
|
+
y: 0,
|
|
38
|
+
},
|
|
39
|
+
source: {
|
|
40
|
+
type: "source_component",
|
|
41
|
+
source_component_id: "simple_resistor_0",
|
|
42
|
+
name: "R1",
|
|
43
|
+
supplier_part_numbers: {},
|
|
44
|
+
ftype: "simple_resistor",
|
|
45
|
+
resistance: 100,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
type: "source_port",
|
|
50
|
+
name: "left",
|
|
51
|
+
source_port_id: "source_port_0",
|
|
52
|
+
source_component_id: "simple_resistor_0",
|
|
53
|
+
source: {
|
|
54
|
+
type: "source_component",
|
|
55
|
+
source_component_id: "simple_resistor_0",
|
|
56
|
+
name: "R1",
|
|
57
|
+
supplier_part_numbers: {},
|
|
58
|
+
ftype: "simple_resistor",
|
|
59
|
+
resistance: 100,
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
type: "schematic_port",
|
|
64
|
+
schematic_port_id: "schematic_port_0",
|
|
65
|
+
source_port_id: "source_port_0",
|
|
66
|
+
center: {
|
|
67
|
+
x: -0.5,
|
|
68
|
+
y: 0,
|
|
69
|
+
},
|
|
70
|
+
facing_direction: "left",
|
|
71
|
+
schematic_component_id: "schematic_component_simple_resistor_0",
|
|
72
|
+
source: {
|
|
73
|
+
type: "source_port",
|
|
74
|
+
name: "left",
|
|
75
|
+
source_port_id: "source_port_0",
|
|
76
|
+
source_component_id: "simple_resistor_0",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
type: "source_port",
|
|
81
|
+
name: "right",
|
|
82
|
+
source_port_id: "source_port_1",
|
|
83
|
+
source_component_id: "simple_resistor_0",
|
|
84
|
+
source: {
|
|
85
|
+
type: "source_component",
|
|
86
|
+
source_component_id: "simple_resistor_0",
|
|
87
|
+
name: "R1",
|
|
88
|
+
supplier_part_numbers: {},
|
|
89
|
+
ftype: "simple_resistor",
|
|
90
|
+
resistance: 100,
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
type: "schematic_port",
|
|
95
|
+
schematic_port_id: "schematic_port_1",
|
|
96
|
+
source_port_id: "source_port_1",
|
|
97
|
+
center: {
|
|
98
|
+
x: 0.5,
|
|
99
|
+
y: 0,
|
|
100
|
+
},
|
|
101
|
+
facing_direction: "right",
|
|
102
|
+
schematic_component_id: "schematic_component_simple_resistor_0",
|
|
103
|
+
source: {
|
|
104
|
+
type: "source_port",
|
|
105
|
+
name: "right",
|
|
106
|
+
source_port_id: "source_port_1",
|
|
107
|
+
source_component_id: "simple_resistor_0",
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
type: "schematic_text",
|
|
112
|
+
text: "R1",
|
|
113
|
+
schematic_text_id: "schematic_text_0",
|
|
114
|
+
schematic_component_id: "schematic_component_simple_resistor_0",
|
|
115
|
+
anchor: "left",
|
|
116
|
+
position: {
|
|
117
|
+
x: -0.2,
|
|
118
|
+
y: -0.5,
|
|
119
|
+
},
|
|
120
|
+
rotation: 0,
|
|
121
|
+
source: null,
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
type: "schematic_text",
|
|
125
|
+
text: 100,
|
|
126
|
+
schematic_text_id: "schematic_text_1",
|
|
127
|
+
schematic_component_id: "schematic_component_simple_resistor_0",
|
|
128
|
+
anchor: "left",
|
|
129
|
+
position: {
|
|
130
|
+
x: -0.2,
|
|
131
|
+
y: -0.3,
|
|
132
|
+
},
|
|
133
|
+
rotation: 0,
|
|
134
|
+
source: null,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: "source_net",
|
|
138
|
+
member_source_group_ids: [],
|
|
139
|
+
source_net_id: "net_0",
|
|
140
|
+
name: "GND",
|
|
141
|
+
source: null,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: "source_trace",
|
|
145
|
+
connected_source_port_ids: ["source_port_1"],
|
|
146
|
+
connected_source_net_ids: ["net_0"],
|
|
147
|
+
source_trace_id: "source_trace_0",
|
|
148
|
+
source: null,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
type: "schematic_net_label",
|
|
152
|
+
source_net_id: "net_0",
|
|
153
|
+
text: "GND",
|
|
154
|
+
anchor_side: "left",
|
|
155
|
+
center: {
|
|
156
|
+
x: 1.5,
|
|
157
|
+
y: 0,
|
|
158
|
+
},
|
|
159
|
+
source: null,
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
}.elements
|
|
163
|
+
}
|
|
164
|
+
/>
|
|
165
|
+
)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export default {
|
|
169
|
+
title: "Basics/SchematicNetLabel",
|
|
170
|
+
component: SchematicNetLabel,
|
|
171
|
+
}
|