@vinjocarsales/xiao-series 0.1.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.
@@ -0,0 +1,77 @@
1
+ <html>
2
+ <head>
3
+ <link rel="icon" type="image/png" href="https://github.com/tscircuit.png">
4
+ <meta charset="UTF-8" />
5
+ <title>@vinjocarsales/xiao-series</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ </head>
8
+ <body>
9
+ <script>
10
+ window.TSCIRCUIT_USE_RUNFRAME_FOR_CLI = false;
11
+ window.TSCIRCUIT_RUNFRAME_STATIC_FILE_LIST = [{"filePath":"src/index.ts","fileStaticAssetUrl":"./src/index.ts/circuit.json"}];
12
+ window.TSCIRCUIT_PACKAGE_NAME = "@vinjocarsales/xiao-series";
13
+ </script>
14
+ <script src="https://cdn.tailwindcss.com"></script>
15
+ <div id="root">
16
+ <div id="loader" class="loading-overlay">
17
+ <div class="loading-container">
18
+ <div class="loading">
19
+ <div class="loading-bar"></div>
20
+ </div>
21
+ </div>
22
+ </div>
23
+
24
+ <style>
25
+ .loading-overlay {
26
+ position: fixed;
27
+ top: 0;
28
+ left: 0;
29
+ width: 100%;
30
+ height: 100%;
31
+ background: #fff;
32
+ display: flex;
33
+ justify-content: center;
34
+ align-items: center;
35
+ }
36
+
37
+ .loading-container {
38
+ display: flex;
39
+ flex-direction: column;
40
+ align-items: center;
41
+ gap: 1em;
42
+ }
43
+
44
+ .loading {
45
+ background-color: lightgrey;
46
+ height: 2px;
47
+ overflow: hidden;
48
+ position: relative;
49
+ width: 12em;
50
+ border-radius: 2px;
51
+ }
52
+
53
+ .loading-bar {
54
+ animation: side2side 2s ease-in-out infinite;
55
+ background-color: dodgerblue;
56
+ height: 100%;
57
+ position: absolute;
58
+ width: 45%;
59
+ }
60
+
61
+ @keyframes side2side {
62
+ 0%,
63
+ 100% {
64
+ transform: translateX(-50%);
65
+ }
66
+ 50% {
67
+ transform: translateX(150%);
68
+ }
69
+ }
70
+ </style>
71
+ </div>
72
+ <script>
73
+ globalThis.process = { env: { NODE_ENV: "production" } }
74
+ </script>
75
+ <script type="module" src="https://cdn.jsdelivr.net/npm/tscircuit@0.0.1884/dist/browser.min.js"></script>
76
+ </body>
77
+ </html>
package/dist/index.js ADDED
@@ -0,0 +1,404 @@
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import { createUseComponent } from '@tscircuit/core';
3
+
4
+ const xiaoEsp32C3StepUrl = "https://unpkg.com/@vinjocarsales/xiao-series/assets/xiao-esp32-c3.step";
5
+ const xiaoEsp32C3CadModel = {
6
+ stepUrl: xiaoEsp32C3StepUrl,
7
+ modelUnitToMmScale: 1,
8
+ modelBoardNormalDirection: "z+",
9
+ zOffsetFromSurface: "0mm",
10
+ rotationOffset: { x: 90, y: 90, z: 0 },
11
+ positionOffset: { x: 6, y: -2, z: 0 },
12
+ };
13
+
14
+ const xiaoDipPads = [
15
+ { pin: "pin1", label: "D0", x: -7.62, y: 7.6835 },
16
+ { pin: "pin2", label: "D1", x: -7.62, y: 5.1435 },
17
+ { pin: "pin3", label: "D2", x: -7.62, y: 2.6035 },
18
+ { pin: "pin4", label: "D3", x: -7.62, y: 0.0635 },
19
+ { pin: "pin5", label: "D4", x: -7.62, y: -2.4765 },
20
+ { pin: "pin6", label: "D5", x: -7.62, y: -5.0165 },
21
+ { pin: "pin7", label: "D6", x: -7.62, y: -7.5565 },
22
+ { pin: "pin8", label: "D7", x: 7.62, y: -7.5565 },
23
+ { pin: "pin9", label: "D8", x: 7.62, y: -5.0165 },
24
+ { pin: "pin10", label: "D9", x: 7.62, y: -2.4765 },
25
+ { pin: "pin11", label: "D10", x: 7.62, y: 0.0635 },
26
+ { pin: "pin12", label: "3V3", x: 7.62, y: 2.6035 },
27
+ { pin: "pin13", label: "GND", x: 7.62, y: 5.1435 },
28
+ { pin: "pin14", label: "VBUS", x: 7.62, y: 7.6835 },
29
+ ];
30
+ const xiaoEsp32C3DipPads = xiaoDipPads.map((pad) => pad.pin === "pin14" ? { ...pad, label: "5V" } : pad);
31
+ const xiaoEsp32C3SmdPads = [
32
+ {
33
+ pin: "pin1",
34
+ label: "D0",
35
+ x: -8.0825,
36
+ y: 7.62,
37
+ width: 2.75,
38
+ height: 2,
39
+ shape: "rect",
40
+ cornerRadius: 0.5,
41
+ },
42
+ {
43
+ pin: "pin2",
44
+ label: "D1",
45
+ x: -8.0825,
46
+ y: 5.08,
47
+ width: 2.75,
48
+ height: 2,
49
+ shape: "rect",
50
+ cornerRadius: 0.5,
51
+ },
52
+ {
53
+ pin: "pin3",
54
+ label: "D2",
55
+ x: -8.0825,
56
+ y: 2.54,
57
+ width: 2.75,
58
+ height: 2,
59
+ shape: "rect",
60
+ cornerRadius: 0.5,
61
+ },
62
+ {
63
+ pin: "pin4",
64
+ label: "D3",
65
+ x: -8.0825,
66
+ y: 0,
67
+ width: 2.75,
68
+ height: 2,
69
+ shape: "rect",
70
+ cornerRadius: 0.5,
71
+ },
72
+ {
73
+ pin: "pin5",
74
+ label: "D4",
75
+ x: -8.0825,
76
+ y: -2.54,
77
+ width: 2.75,
78
+ height: 2,
79
+ shape: "rect",
80
+ cornerRadius: 0.5,
81
+ },
82
+ {
83
+ pin: "pin6",
84
+ label: "D5",
85
+ x: -8.0825,
86
+ y: -5.08,
87
+ width: 2.75,
88
+ height: 2,
89
+ shape: "rect",
90
+ cornerRadius: 0.5,
91
+ },
92
+ {
93
+ pin: "pin7",
94
+ label: "D6",
95
+ x: -8.0825,
96
+ y: -7.62,
97
+ width: 2.75,
98
+ height: 2,
99
+ shape: "rect",
100
+ cornerRadius: 0.5,
101
+ },
102
+ {
103
+ pin: "pin8",
104
+ label: "D7",
105
+ x: 8.0825,
106
+ y: -7.62,
107
+ width: 2.75,
108
+ height: 2,
109
+ shape: "rect",
110
+ cornerRadius: 0.5,
111
+ },
112
+ {
113
+ pin: "pin9",
114
+ label: "D8",
115
+ x: 8.0825,
116
+ y: -5.08,
117
+ width: 2.75,
118
+ height: 2,
119
+ shape: "rect",
120
+ cornerRadius: 0.5,
121
+ },
122
+ {
123
+ pin: "pin10",
124
+ label: "D9",
125
+ x: 8.0825,
126
+ y: -2.54,
127
+ width: 2.75,
128
+ height: 2,
129
+ shape: "rect",
130
+ cornerRadius: 0.5,
131
+ },
132
+ {
133
+ pin: "pin11",
134
+ label: "D10",
135
+ x: 8.0825,
136
+ y: 0,
137
+ width: 2.75,
138
+ height: 2,
139
+ shape: "rect",
140
+ cornerRadius: 0.5,
141
+ },
142
+ {
143
+ pin: "pin12",
144
+ label: "3V3",
145
+ x: 8.0825,
146
+ y: 2.54,
147
+ width: 2.75,
148
+ height: 2,
149
+ shape: "rect",
150
+ cornerRadius: 0.5,
151
+ },
152
+ {
153
+ pin: "pin13",
154
+ label: "GND",
155
+ x: 8.0825,
156
+ y: 5.08,
157
+ width: 2.75,
158
+ height: 2,
159
+ shape: "rect",
160
+ cornerRadius: 0.5,
161
+ },
162
+ {
163
+ pin: "pin14",
164
+ label: "5V",
165
+ x: 8.0825,
166
+ y: 7.62,
167
+ width: 2.75,
168
+ height: 2,
169
+ shape: "rect",
170
+ cornerRadius: 0.5,
171
+ },
172
+ {
173
+ pin: "pin15",
174
+ label: "TP15",
175
+ x: -1.2975,
176
+ y: 8.632,
177
+ width: 1.7,
178
+ height: 1.7,
179
+ shape: "circle",
180
+ },
181
+ {
182
+ pin: "pin16",
183
+ label: "TP16",
184
+ x: 1.2425,
185
+ y: 8.632,
186
+ width: 1.7,
187
+ height: 1.7,
188
+ shape: "circle",
189
+ },
190
+ {
191
+ pin: "pin17",
192
+ label: "TP17",
193
+ x: -1.2975,
194
+ y: 6.092,
195
+ width: 1.7,
196
+ height: 1.7,
197
+ shape: "circle",
198
+ },
199
+ {
200
+ pin: "pin18",
201
+ label: "TP18",
202
+ x: 1.2425,
203
+ y: 6.092,
204
+ width: 1.7,
205
+ height: 1.7,
206
+ shape: "circle",
207
+ },
208
+ {
209
+ pin: "pin19",
210
+ label: "TP19",
211
+ x: -1.2975,
212
+ y: 3.552,
213
+ width: 1.7,
214
+ height: 1.7,
215
+ shape: "circle",
216
+ },
217
+ {
218
+ pin: "pin20",
219
+ label: "TP20",
220
+ x: 1.2425,
221
+ y: 3.552,
222
+ width: 1.7,
223
+ height: 1.7,
224
+ shape: "circle",
225
+ },
226
+ {
227
+ pin: "pin21",
228
+ label: "TP21",
229
+ x: -4.4725,
230
+ y: 0.382,
231
+ width: 2.5,
232
+ height: 1.1,
233
+ shape: "rect",
234
+ cornerRadius: 0.275,
235
+ },
236
+ {
237
+ pin: "pin22",
238
+ label: "TP22",
239
+ x: -4.4725,
240
+ y: 2.287,
241
+ width: 2.5,
242
+ height: 1.1,
243
+ shape: "rect",
244
+ cornerRadius: 0.275,
245
+ },
246
+ ];
247
+ const outlineRoute = [
248
+ { x: -10.55, y: 8.9 },
249
+ { x: 10.55, y: 8.9 },
250
+ { x: 10.55, y: -8.9 },
251
+ { x: -10.55, y: -8.9 },
252
+ { x: -10.55, y: 8.9 },
253
+ ];
254
+ const usbEdgeRoute = [
255
+ { x: -3.8, y: 8.9 },
256
+ { x: -3.8, y: 7.4 },
257
+ { x: 3.8, y: 7.4 },
258
+ { x: 3.8, y: 8.9 },
259
+ ];
260
+ const pin1MarkerRoute = [
261
+ { x: -7.2, y: 8.7 },
262
+ { x: -6.4, y: 8.7 },
263
+ { x: -6.4, y: 7.9 },
264
+ { x: -7.2, y: 7.9 },
265
+ { x: -7.2, y: 8.7 },
266
+ ];
267
+ const renderSilkscreen = () => (jsxs(Fragment, { children: [jsx("silkscreenpath", { route: outlineRoute }), jsx("silkscreenpath", { route: usbEdgeRoute }), jsx("silkscreenpath", { route: pin1MarkerRoute })] }));
268
+ const renderDipPads = (pads) => pads.map(({ pin, label, x, y }) => (jsx("platedhole", { pcbX: `${x}mm`, pcbY: `${y}mm`, shape: "circle", holeDiameter: "1mm", outerDiameter: "1.8mm", portHints: [pin, label] })));
269
+ const renderSmdPads = (pads) => pads.map(({ pin, label, x, y, width = 2.75, height = 2, shape = "rect", cornerRadius, radius, }) => shape === "circle" ? (jsx("smtpad", { pcbX: `${x}mm`, pcbY: `${y}mm`, layer: "top", shape: "circle", radius: `${radius ?? width / 2}mm`, portHints: [pin, label] })) : (jsx("smtpad", { pcbX: `${x}mm`, pcbY: `${y}mm`, layer: "top", shape: "rect", width: `${width}mm`, height: `${height}mm`, cornerRadius: cornerRadius ? `${cornerRadius}mm` : undefined, portHints: [pin, label] })));
270
+ const xiaoEsp32S3DipFootprint = (jsxs("footprint", { children: [renderDipPads(xiaoDipPads), renderSilkscreen()] }));
271
+ const xiaoEsp32C3DipFootprint = (jsxs("footprint", { children: [renderDipPads(xiaoEsp32C3DipPads), renderSilkscreen()] }));
272
+ const xiaoEsp32S3SmdFootprint = (jsxs("footprint", { children: [renderSmdPads(xiaoDipPads), renderSilkscreen()] }));
273
+ const xiaoEsp32C3SmdFootprint = (jsxs("footprint", { children: [renderSmdPads(xiaoEsp32C3SmdPads), renderSilkscreen()] }));
274
+
275
+ const xiaoEsp32S3PinLabels = {
276
+ pin1: "D0",
277
+ pin2: "D1",
278
+ pin3: "D2",
279
+ pin4: "D3",
280
+ pin5: "D4",
281
+ pin6: "D5",
282
+ pin7: "D6",
283
+ pin8: "D7",
284
+ pin9: "D8",
285
+ pin10: "D9",
286
+ pin11: "D10",
287
+ pin12: "3V3",
288
+ pin13: "GND",
289
+ pin14: "VBUS",
290
+ };
291
+ const xiaoEsp32C3PinLabels = {
292
+ pin1: "D0",
293
+ pin2: "D1",
294
+ pin3: "D2",
295
+ pin4: "D3",
296
+ pin5: "D4",
297
+ pin6: "D5",
298
+ pin7: "D6",
299
+ pin8: "D7",
300
+ pin9: "D8",
301
+ pin10: "D9",
302
+ pin11: "D10",
303
+ pin12: "3V3",
304
+ pin13: "GND",
305
+ pin14: "5V",
306
+ };
307
+ const xiaoEsp32S3HookPins = {
308
+ pin1: ["D0"],
309
+ pin2: ["D1"],
310
+ pin3: ["D2"],
311
+ pin4: ["D3"],
312
+ pin5: ["D4"],
313
+ pin6: ["D5"],
314
+ pin7: ["D6"],
315
+ pin8: ["D7"],
316
+ pin9: ["D8"],
317
+ pin10: ["D9"],
318
+ pin11: ["D10"],
319
+ pin12: ["3V3"],
320
+ pin13: ["GND"],
321
+ pin14: ["VBUS"],
322
+ };
323
+ const xiaoEsp32C3HookPins = {
324
+ pin1: ["D0"],
325
+ pin2: ["D1"],
326
+ pin3: ["D2"],
327
+ pin4: ["D3"],
328
+ pin5: ["D4"],
329
+ pin6: ["D5"],
330
+ pin7: ["D6"],
331
+ pin8: ["D7"],
332
+ pin9: ["D8"],
333
+ pin10: ["D9"],
334
+ pin11: ["D10"],
335
+ pin12: ["3V3"],
336
+ pin13: ["GND"],
337
+ pin14: ["5V"],
338
+ };
339
+ const xiaoEsp32S3PinAttributes = {
340
+ "3V3": {
341
+ providesPower: true,
342
+ providesVoltage: "3.3V",
343
+ includeInBoardPinout: true,
344
+ },
345
+ GND: {
346
+ providesGround: true,
347
+ includeInBoardPinout: true,
348
+ },
349
+ VBUS: {
350
+ providesPower: true,
351
+ providesVoltage: "5V",
352
+ includeInBoardPinout: true,
353
+ },
354
+ };
355
+ const xiaoEsp32C3PinAttributes = {
356
+ "3V3": {
357
+ providesPower: true,
358
+ providesVoltage: "3.3V",
359
+ includeInBoardPinout: true,
360
+ },
361
+ GND: {
362
+ providesGround: true,
363
+ includeInBoardPinout: true,
364
+ },
365
+ "5V": {
366
+ providesPower: true,
367
+ providesVoltage: "5V",
368
+ includeInBoardPinout: true,
369
+ },
370
+ };
371
+ const xiaoSchPinArrangement = {
372
+ leftSide: {
373
+ direction: "top-to-bottom",
374
+ pins: ["D0", "D1", "D2", "D3", "D4", "D5", "D6"],
375
+ },
376
+ rightSide: {
377
+ direction: "bottom-to-top",
378
+ pins: ["D7", "D8", "D9", "D10", "3V3", "GND", "VBUS"],
379
+ },
380
+ };
381
+ const xiaoEsp32C3SchPinArrangement = {
382
+ leftSide: {
383
+ direction: "top-to-bottom",
384
+ pins: ["D0", "D1", "D2", "D3", "D4", "D5", "D6"],
385
+ },
386
+ rightSide: {
387
+ direction: "bottom-to-top",
388
+ pins: ["D7", "D8", "D9", "D10", "3V3", "GND", "5V"],
389
+ },
390
+ };
391
+
392
+ const XiaoEsp32C3Dip = (props) => (jsx("chip", { footprint: xiaoEsp32C3DipFootprint, pinLabels: xiaoEsp32C3PinLabels, pinAttributes: xiaoEsp32C3PinAttributes, schPinArrangement: xiaoEsp32C3SchPinArrangement, schWidth: "11mm", schHeight: "22mm", cadModel: xiaoEsp32C3CadModel, ...props }));
393
+ const useXiaoEsp32C3Dip = createUseComponent(XiaoEsp32C3Dip, xiaoEsp32C3HookPins);
394
+
395
+ const XiaoEsp32C3Smd = (props) => (jsx("chip", { footprint: xiaoEsp32C3SmdFootprint, pinLabels: xiaoEsp32C3PinLabels, pinAttributes: xiaoEsp32C3PinAttributes, schPinArrangement: xiaoEsp32C3SchPinArrangement, schWidth: "11mm", schHeight: "22mm", cadModel: xiaoEsp32C3CadModel, ...props }));
396
+ const useXiaoEsp32C3Smd = createUseComponent(XiaoEsp32C3Smd, xiaoEsp32C3HookPins);
397
+
398
+ const XiaoEsp32S3Dip = (props) => (jsx("chip", { footprint: xiaoEsp32S3DipFootprint, pinLabels: xiaoEsp32S3PinLabels, pinAttributes: xiaoEsp32S3PinAttributes, schPinArrangement: xiaoSchPinArrangement, schWidth: "11mm", schHeight: "22mm", ...props }));
399
+ const useXiaoEsp32S3Dip = createUseComponent(XiaoEsp32S3Dip, xiaoEsp32S3HookPins);
400
+
401
+ const XiaoEsp32S3Smd = (props) => (jsx("chip", { footprint: xiaoEsp32S3SmdFootprint, pinLabels: xiaoEsp32S3PinLabels, pinAttributes: xiaoEsp32S3PinAttributes, schPinArrangement: xiaoSchPinArrangement, schWidth: "11mm", schHeight: "22mm", ...props }));
402
+ const useXiaoEsp32S3Smd = createUseComponent(XiaoEsp32S3Smd, xiaoEsp32S3HookPins);
403
+
404
+ export { XiaoEsp32C3Dip, XiaoEsp32C3Smd, XiaoEsp32S3Dip, XiaoEsp32S3Smd, useXiaoEsp32C3Dip, useXiaoEsp32C3Smd, useXiaoEsp32S3Dip, useXiaoEsp32S3Smd, xiaoEsp32C3CadModel, xiaoEsp32C3DipFootprint, xiaoEsp32C3HookPins, xiaoEsp32C3PinAttributes, xiaoEsp32C3PinLabels, xiaoEsp32C3SmdFootprint, xiaoEsp32S3DipFootprint, xiaoEsp32S3HookPins, xiaoEsp32S3PinAttributes, xiaoEsp32S3PinLabels, xiaoEsp32S3SmdFootprint };
package/dist/pins.d.ts ADDED
@@ -0,0 +1,116 @@
1
+ export declare const xiaoEsp32S3PinLabels: {
2
+ readonly pin1: "D0";
3
+ readonly pin2: "D1";
4
+ readonly pin3: "D2";
5
+ readonly pin4: "D3";
6
+ readonly pin5: "D4";
7
+ readonly pin6: "D5";
8
+ readonly pin7: "D6";
9
+ readonly pin8: "D7";
10
+ readonly pin9: "D8";
11
+ readonly pin10: "D9";
12
+ readonly pin11: "D10";
13
+ readonly pin12: "3V3";
14
+ readonly pin13: "GND";
15
+ readonly pin14: "VBUS";
16
+ };
17
+ export declare const xiaoEsp32C3PinLabels: {
18
+ readonly pin1: "D0";
19
+ readonly pin2: "D1";
20
+ readonly pin3: "D2";
21
+ readonly pin4: "D3";
22
+ readonly pin5: "D4";
23
+ readonly pin6: "D5";
24
+ readonly pin7: "D6";
25
+ readonly pin8: "D7";
26
+ readonly pin9: "D8";
27
+ readonly pin10: "D9";
28
+ readonly pin11: "D10";
29
+ readonly pin12: "3V3";
30
+ readonly pin13: "GND";
31
+ readonly pin14: "5V";
32
+ };
33
+ export declare const xiaoEsp32S3HookPins: {
34
+ readonly pin1: readonly ["D0"];
35
+ readonly pin2: readonly ["D1"];
36
+ readonly pin3: readonly ["D2"];
37
+ readonly pin4: readonly ["D3"];
38
+ readonly pin5: readonly ["D4"];
39
+ readonly pin6: readonly ["D5"];
40
+ readonly pin7: readonly ["D6"];
41
+ readonly pin8: readonly ["D7"];
42
+ readonly pin9: readonly ["D8"];
43
+ readonly pin10: readonly ["D9"];
44
+ readonly pin11: readonly ["D10"];
45
+ readonly pin12: readonly ["3V3"];
46
+ readonly pin13: readonly ["GND"];
47
+ readonly pin14: readonly ["VBUS"];
48
+ };
49
+ export declare const xiaoEsp32C3HookPins: {
50
+ readonly pin1: readonly ["D0"];
51
+ readonly pin2: readonly ["D1"];
52
+ readonly pin3: readonly ["D2"];
53
+ readonly pin4: readonly ["D3"];
54
+ readonly pin5: readonly ["D4"];
55
+ readonly pin6: readonly ["D5"];
56
+ readonly pin7: readonly ["D6"];
57
+ readonly pin8: readonly ["D7"];
58
+ readonly pin9: readonly ["D8"];
59
+ readonly pin10: readonly ["D9"];
60
+ readonly pin11: readonly ["D10"];
61
+ readonly pin12: readonly ["3V3"];
62
+ readonly pin13: readonly ["GND"];
63
+ readonly pin14: readonly ["5V"];
64
+ };
65
+ export declare const xiaoEsp32S3PinAttributes: {
66
+ "3V3": {
67
+ providesPower: true;
68
+ providesVoltage: string;
69
+ includeInBoardPinout: true;
70
+ };
71
+ GND: {
72
+ providesGround: true;
73
+ includeInBoardPinout: true;
74
+ };
75
+ VBUS: {
76
+ providesPower: true;
77
+ providesVoltage: string;
78
+ includeInBoardPinout: true;
79
+ };
80
+ };
81
+ export declare const xiaoEsp32C3PinAttributes: {
82
+ "3V3": {
83
+ providesPower: true;
84
+ providesVoltage: string;
85
+ includeInBoardPinout: true;
86
+ };
87
+ GND: {
88
+ providesGround: true;
89
+ includeInBoardPinout: true;
90
+ };
91
+ "5V": {
92
+ providesPower: true;
93
+ providesVoltage: string;
94
+ includeInBoardPinout: true;
95
+ };
96
+ };
97
+ export declare const xiaoSchPinArrangement: {
98
+ leftSide: {
99
+ direction: "top-to-bottom";
100
+ pins: string[];
101
+ };
102
+ rightSide: {
103
+ direction: "bottom-to-top";
104
+ pins: string[];
105
+ };
106
+ };
107
+ export declare const xiaoEsp32C3SchPinArrangement: {
108
+ leftSide: {
109
+ direction: "top-to-bottom";
110
+ pins: string[];
111
+ };
112
+ rightSide: {
113
+ direction: "bottom-to-top";
114
+ pins: string[];
115
+ };
116
+ };
Binary file