biscuitboard 1.0.18 → 1.0.19
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/README.md +35 -0
- package/dist/npm.cjs +610 -50
- package/dist/npm.cjs.map +1 -1
- package/dist/npm.d.cts +87 -1
- package/dist/npm.d.ts +87 -1
- package/dist/npm.js +582 -50
- package/dist/npm.js.map +1 -1
- package/package.json +5 -2
package/dist/npm.js
CHANGED
|
@@ -15752,9 +15752,513 @@ var BreadboardClad = ({
|
|
|
15752
15752
|
}
|
|
15753
15753
|
);
|
|
15754
15754
|
|
|
15755
|
-
// lib/
|
|
15755
|
+
// lib/breadboard-clad-0.8mm-vias.tsx
|
|
15756
15756
|
import { Fragment as Fragment5 } from "react";
|
|
15757
15757
|
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
15758
|
+
var BREADBOARD_08MM_VIA_HOLE_DIAMETER = 0.8;
|
|
15759
|
+
var BREADBOARD_08MM_VIA_PAD_DIAMETER = 0.9;
|
|
15760
|
+
var BREADBOARD_08MM_MIN_VIA_EDGE_SPACING = 2;
|
|
15761
|
+
var BREADBOARD_08MM_BREAKOUT_TRACE_WIDTH = 0.15;
|
|
15762
|
+
var BREADBOARD_08MM_ROW_TRACE_WIDTH = 0.3;
|
|
15763
|
+
var BREADBOARD_08MM_BREAKOUT_PAD_DIAMETER = 0.3;
|
|
15764
|
+
var BREADBOARD_08MM_CORNER_VIA_SPACING = 3;
|
|
15765
|
+
var BREADBOARD_08MM_CORNER_VIA_ARM_WIDTH = 3;
|
|
15766
|
+
var BREADBOARD_08MM_CORNER_VIA_ARM_X_INNER_OFFSET = 25;
|
|
15767
|
+
var BREADBOARD_08MM_CORNER_VIA_LONG_SIDE_COLUMNS = 5;
|
|
15768
|
+
var BREADBOARD_08MM_TOP_RIGHT_LONG_SIDE_COLUMNS = 6;
|
|
15769
|
+
var BREADBOARD_08MM_CORNER_VIA_X_OUTER_OFFSET = 31;
|
|
15770
|
+
var BREADBOARD_08MM_CORNER_VIA_X_INNER_OFFSET = BREADBOARD_08MM_CORNER_VIA_X_OUTER_OFFSET - (BREADBOARD_08MM_CORNER_VIA_LONG_SIDE_COLUMNS - 1) * BREADBOARD_08MM_CORNER_VIA_SPACING;
|
|
15771
|
+
var BREADBOARD_08MM_CORNER_VIA_Y_INNER_OFFSET = 19;
|
|
15772
|
+
var BREADBOARD_08MM_CORNER_VIA_Y_OUTER_OFFSET = 25;
|
|
15773
|
+
var BREADBOARD_08MM_CORNER_VIA_X_OUTWARD_SHIFT = 3;
|
|
15774
|
+
var BREADBOARD_08MM_EDGE_HUG_COLUMN_COUNT = 2;
|
|
15775
|
+
var BREADBOARD_08MM_EDGE_HUG_Y_SHIFT = BREADBOARD_08MM_CORNER_VIA_SPACING;
|
|
15776
|
+
var BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET = 0.8;
|
|
15777
|
+
var BREADBOARD_08MM_BREAKOUT_LANE_SPACING = 0.4;
|
|
15778
|
+
var BREADBOARD_08MM_VIA_BREAKOUT_LENGTH = 1;
|
|
15779
|
+
var BREADBOARD_08MM_ROW_BREAKOUT_LENGTH = 1.2;
|
|
15780
|
+
var BREADBOARD_08MM_CLAD_EDGE_CLEARANCE = 0.2;
|
|
15781
|
+
var BREADBOARD_08MM_CLAD_EDGE_CLEARANCE_VALIDATION_TOLERANCE = 1e-3;
|
|
15782
|
+
var BREADBOARD_08MM_BOTTOM_BEHIND_VIA_LANE_START_OFFSET = 1.2;
|
|
15783
|
+
var BREADBOARD_08MM_BOTTOM_BEHIND_VIA_LANE_SPACING = 0.4;
|
|
15784
|
+
var BREADBOARD_08MM_TOP_BANK_ROWS = [
|
|
15785
|
+
"A",
|
|
15786
|
+
"B",
|
|
15787
|
+
"C",
|
|
15788
|
+
"D",
|
|
15789
|
+
"E"
|
|
15790
|
+
];
|
|
15791
|
+
var BREADBOARD_08MM_BOTTOM_BANK_ROWS = [
|
|
15792
|
+
"F",
|
|
15793
|
+
"G",
|
|
15794
|
+
"H",
|
|
15795
|
+
"I",
|
|
15796
|
+
"J"
|
|
15797
|
+
];
|
|
15798
|
+
var roundCoordinate4 = (value) => Math.round(value * 1e6) / 1e6;
|
|
15799
|
+
var createPitchedRange2 = (start, end) => Array.from(
|
|
15800
|
+
{
|
|
15801
|
+
length: Math.round((end - start) / BREADBOARD_08MM_CORNER_VIA_SPACING) + 1
|
|
15802
|
+
},
|
|
15803
|
+
(_, index) => roundCoordinate4(start + index * BREADBOARD_08MM_CORNER_VIA_SPACING)
|
|
15804
|
+
);
|
|
15805
|
+
var cornerViaAxisX2 = createPitchedRange2(
|
|
15806
|
+
BREADBOARD_08MM_CORNER_VIA_X_INNER_OFFSET,
|
|
15807
|
+
BREADBOARD_08MM_CORNER_VIA_X_OUTER_OFFSET
|
|
15808
|
+
);
|
|
15809
|
+
var cornerViaArmAxisX2 = createPitchedRange2(
|
|
15810
|
+
BREADBOARD_08MM_CORNER_VIA_ARM_X_INNER_OFFSET,
|
|
15811
|
+
BREADBOARD_08MM_CORNER_VIA_ARM_X_INNER_OFFSET + BREADBOARD_08MM_CORNER_VIA_ARM_WIDTH
|
|
15812
|
+
);
|
|
15813
|
+
var cornerViaArmAxisY2 = createPitchedRange2(
|
|
15814
|
+
BREADBOARD_08MM_CORNER_VIA_Y_INNER_OFFSET,
|
|
15815
|
+
BREADBOARD_08MM_CORNER_VIA_Y_INNER_OFFSET + BREADBOARD_08MM_CORNER_VIA_ARM_WIDTH
|
|
15816
|
+
);
|
|
15817
|
+
var createCornerViaPositions2 = (corner, xSign, ySign) => {
|
|
15818
|
+
const xOutwardShift = xSign === -1 || ySign === -1 ? BREADBOARD_08MM_CORNER_VIA_X_OUTWARD_SHIFT : 0;
|
|
15819
|
+
const toBoardPoint = (point) => ({
|
|
15820
|
+
x: roundCoordinate4(point.x * xSign),
|
|
15821
|
+
y: roundCoordinate4(point.y * ySign)
|
|
15822
|
+
});
|
|
15823
|
+
const cornerLongSideAxisX = corner === "top_right" ? [
|
|
15824
|
+
...cornerViaAxisX2,
|
|
15825
|
+
BREADBOARD_08MM_CORNER_VIA_X_OUTER_OFFSET + BREADBOARD_08MM_CORNER_VIA_SPACING
|
|
15826
|
+
] : cornerViaAxisX2;
|
|
15827
|
+
const shiftedCornerViaAxisX = cornerLongSideAxisX.map(
|
|
15828
|
+
(x) => roundCoordinate4(x + xOutwardShift)
|
|
15829
|
+
);
|
|
15830
|
+
const shiftedCornerViaArmAxisX = cornerViaArmAxisX2.map(
|
|
15831
|
+
(x) => roundCoordinate4(x + xOutwardShift)
|
|
15832
|
+
);
|
|
15833
|
+
const verticalExtensionY = BREADBOARD_08MM_CORNER_VIA_Y_OUTER_OFFSET;
|
|
15834
|
+
const localVias = [
|
|
15835
|
+
...shiftedCornerViaAxisX.flatMap(
|
|
15836
|
+
(x, xIndex) => cornerViaArmAxisY2.map((y, yIndex) => ({
|
|
15837
|
+
nameSuffix: `H${xIndex + 1}_${yIndex === 0 ? "INNER" : "OUTER"}`,
|
|
15838
|
+
arm: "horizontal",
|
|
15839
|
+
x,
|
|
15840
|
+
y: y + (xIndex < BREADBOARD_08MM_EDGE_HUG_COLUMN_COUNT ? BREADBOARD_08MM_EDGE_HUG_Y_SHIFT : 0)
|
|
15841
|
+
}))
|
|
15842
|
+
),
|
|
15843
|
+
...shiftedCornerViaArmAxisX.map((x, xIndex) => ({
|
|
15844
|
+
nameSuffix: `V3_${xIndex === 0 ? "INNER" : "OUTER"}`,
|
|
15845
|
+
arm: "vertical",
|
|
15846
|
+
x,
|
|
15847
|
+
y: verticalExtensionY
|
|
15848
|
+
}))
|
|
15849
|
+
];
|
|
15850
|
+
const createBreakout = (via, openAreaEdge, layer) => {
|
|
15851
|
+
const innerX = shiftedCornerViaAxisX[0];
|
|
15852
|
+
const openCenterX = innerX - BREADBOARD_08MM_VIA_BREAKOUT_LENGTH;
|
|
15853
|
+
const openRowsY = BREADBOARD_08MM_CORNER_VIA_Y_INNER_OFFSET - BREADBOARD_08MM_VIA_BREAKOUT_LENGTH;
|
|
15854
|
+
const columnIndex = Math.round(
|
|
15855
|
+
(via.x - innerX) / BREADBOARD_08MM_CORNER_VIA_SPACING
|
|
15856
|
+
);
|
|
15857
|
+
if (layer === "top") {
|
|
15858
|
+
if (openAreaEdge === "toward_breadboard_rows") {
|
|
15859
|
+
if (via.y === BREADBOARD_08MM_CORNER_VIA_Y_INNER_OFFSET) {
|
|
15860
|
+
return {
|
|
15861
|
+
openAreaEdge,
|
|
15862
|
+
style: "direct",
|
|
15863
|
+
route: [],
|
|
15864
|
+
end: { x: via.x, y: openRowsY }
|
|
15865
|
+
};
|
|
15866
|
+
}
|
|
15867
|
+
const rowWeaveDirection = columnIndex % 2 === 0 ? -1 : 1;
|
|
15868
|
+
const weaveDirection = via.y === BREADBOARD_08MM_CORNER_VIA_Y_OUTER_OFFSET ? -rowWeaveDirection : rowWeaveDirection;
|
|
15869
|
+
const weaveX = via.x + weaveDirection * BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET;
|
|
15870
|
+
return {
|
|
15871
|
+
openAreaEdge,
|
|
15872
|
+
style: "woven",
|
|
15873
|
+
route: [
|
|
15874
|
+
{
|
|
15875
|
+
x: weaveX,
|
|
15876
|
+
y: via.y - BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET
|
|
15877
|
+
}
|
|
15878
|
+
],
|
|
15879
|
+
end: { x: weaveX, y: openRowsY }
|
|
15880
|
+
};
|
|
15881
|
+
}
|
|
15882
|
+
if (columnIndex === 0) {
|
|
15883
|
+
return {
|
|
15884
|
+
openAreaEdge,
|
|
15885
|
+
style: "direct",
|
|
15886
|
+
route: [],
|
|
15887
|
+
end: { x: openCenterX, y: via.y }
|
|
15888
|
+
};
|
|
15889
|
+
}
|
|
15890
|
+
const weaveY = via.y - BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET;
|
|
15891
|
+
return {
|
|
15892
|
+
openAreaEdge,
|
|
15893
|
+
style: "woven",
|
|
15894
|
+
route: [
|
|
15895
|
+
{
|
|
15896
|
+
x: via.x - BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET,
|
|
15897
|
+
y: weaveY
|
|
15898
|
+
}
|
|
15899
|
+
],
|
|
15900
|
+
end: { x: openCenterX, y: weaveY }
|
|
15901
|
+
};
|
|
15902
|
+
}
|
|
15903
|
+
if (openAreaEdge === "toward_board_center") {
|
|
15904
|
+
if (via.arm === "vertical") {
|
|
15905
|
+
const verticalArmIndex = shiftedCornerViaArmAxisX.indexOf(via.x);
|
|
15906
|
+
const behindViaLaneY = via.y + BREADBOARD_08MM_BOTTOM_BEHIND_VIA_LANE_START_OFFSET + verticalArmIndex * BREADBOARD_08MM_BOTTOM_BEHIND_VIA_LANE_SPACING;
|
|
15907
|
+
return {
|
|
15908
|
+
openAreaEdge,
|
|
15909
|
+
style: "woven",
|
|
15910
|
+
route: [
|
|
15911
|
+
{
|
|
15912
|
+
x: via.x - BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET,
|
|
15913
|
+
y: behindViaLaneY
|
|
15914
|
+
}
|
|
15915
|
+
],
|
|
15916
|
+
end: { x: openCenterX, y: behindViaLaneY }
|
|
15917
|
+
};
|
|
15918
|
+
}
|
|
15919
|
+
if (columnIndex === 0) {
|
|
15920
|
+
return {
|
|
15921
|
+
openAreaEdge,
|
|
15922
|
+
style: "direct",
|
|
15923
|
+
route: [],
|
|
15924
|
+
end: { x: openCenterX, y: via.y }
|
|
15925
|
+
};
|
|
15926
|
+
}
|
|
15927
|
+
const laneOffset = 0.7 + (columnIndex - 1) * BREADBOARD_08MM_BREAKOUT_LANE_SPACING;
|
|
15928
|
+
const laneY = via.y - laneOffset;
|
|
15929
|
+
return {
|
|
15930
|
+
openAreaEdge,
|
|
15931
|
+
style: "woven",
|
|
15932
|
+
route: [
|
|
15933
|
+
{
|
|
15934
|
+
x: via.x - BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET,
|
|
15935
|
+
y: laneY
|
|
15936
|
+
}
|
|
15937
|
+
],
|
|
15938
|
+
end: { x: openCenterX, y: laneY }
|
|
15939
|
+
};
|
|
15940
|
+
}
|
|
15941
|
+
const wrapLaneX = openCenterX - (via.y === BREADBOARD_08MM_CORNER_VIA_Y_OUTER_OFFSET ? columnIndex === 0 ? 1.6 : 2 : 0.4);
|
|
15942
|
+
const outerRowWeaveY = via.y + BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET;
|
|
15943
|
+
const route = via.y === BREADBOARD_08MM_CORNER_VIA_Y_OUTER_OFFSET && columnIndex > 0 ? [
|
|
15944
|
+
{
|
|
15945
|
+
x: via.x - BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET,
|
|
15946
|
+
y: outerRowWeaveY
|
|
15947
|
+
},
|
|
15948
|
+
{
|
|
15949
|
+
x: wrapLaneX,
|
|
15950
|
+
y: outerRowWeaveY
|
|
15951
|
+
}
|
|
15952
|
+
] : [{ x: wrapLaneX, y: via.y }];
|
|
15953
|
+
return {
|
|
15954
|
+
openAreaEdge,
|
|
15955
|
+
style: "woven",
|
|
15956
|
+
route,
|
|
15957
|
+
end: { x: wrapLaneX, y: openRowsY }
|
|
15958
|
+
};
|
|
15959
|
+
};
|
|
15960
|
+
const toBoardBreakout = (breakout) => ({
|
|
15961
|
+
openAreaEdge: breakout.openAreaEdge,
|
|
15962
|
+
style: breakout.style,
|
|
15963
|
+
route: breakout.route.map(toBoardPoint),
|
|
15964
|
+
end: toBoardPoint(breakout.end)
|
|
15965
|
+
});
|
|
15966
|
+
return localVias.map((via) => {
|
|
15967
|
+
const boardCenterDistance = via.x - shiftedCornerViaAxisX[0];
|
|
15968
|
+
const breadboardRowsDistance = via.y - BREADBOARD_08MM_CORNER_VIA_Y_INNER_OFFSET;
|
|
15969
|
+
const topOpenAreaEdge = boardCenterDistance < breadboardRowsDistance ? "toward_board_center" : "toward_breadboard_rows";
|
|
15970
|
+
const bottomOpenAreaEdge = topOpenAreaEdge === "toward_board_center" ? "toward_breadboard_rows" : "toward_board_center";
|
|
15971
|
+
return {
|
|
15972
|
+
name: `V_${corner.toUpperCase()}_${via.nameSuffix}`,
|
|
15973
|
+
corner,
|
|
15974
|
+
arm: via.arm,
|
|
15975
|
+
...toBoardPoint(via),
|
|
15976
|
+
topBreakout: toBoardBreakout(createBreakout(via, topOpenAreaEdge, "top")),
|
|
15977
|
+
bottomBreakout: toBoardBreakout(
|
|
15978
|
+
createBreakout(via, bottomOpenAreaEdge, "bottom")
|
|
15979
|
+
)
|
|
15980
|
+
};
|
|
15981
|
+
});
|
|
15982
|
+
};
|
|
15983
|
+
var BREADBOARD_08MM_VIA_POSITIONS = [
|
|
15984
|
+
["top_left", -1, 1],
|
|
15985
|
+
["top_right", 1, 1],
|
|
15986
|
+
["bottom_left", -1, -1],
|
|
15987
|
+
["bottom_right", 1, -1]
|
|
15988
|
+
].flatMap(
|
|
15989
|
+
([corner, xSign, ySign]) => createCornerViaPositions2(corner, xSign, ySign)
|
|
15990
|
+
);
|
|
15991
|
+
var createBankRowConnections = (rows, column) => rows.slice(0, -1).map((row, index) => ({
|
|
15992
|
+
from: `${row}${column}`,
|
|
15993
|
+
to: `${rows[index + 1]}${column}`,
|
|
15994
|
+
column
|
|
15995
|
+
}));
|
|
15996
|
+
var BREADBOARD_08MM_ROW_CONNECTIONS = Array.from(
|
|
15997
|
+
{ length: BREADBOARD_COLUMN_COUNT },
|
|
15998
|
+
(_, index) => index + 1
|
|
15999
|
+
).flatMap((column) => [
|
|
16000
|
+
...createBankRowConnections(BREADBOARD_08MM_TOP_BANK_ROWS, column),
|
|
16001
|
+
...createBankRowConnections(BREADBOARD_08MM_BOTTOM_BANK_ROWS, column)
|
|
16002
|
+
]);
|
|
16003
|
+
var createRowBreakout = (terminalLabel, column, y, yDirection) => {
|
|
16004
|
+
const x = BREADBOARD_COLUMN_XS[column - 1];
|
|
16005
|
+
return {
|
|
16006
|
+
name: `ROW_${terminalLabel}_BREAKOUT`,
|
|
16007
|
+
terminalLabel,
|
|
16008
|
+
column,
|
|
16009
|
+
start: { x, y },
|
|
16010
|
+
end: {
|
|
16011
|
+
x,
|
|
16012
|
+
y: roundCoordinate4(y + yDirection * BREADBOARD_08MM_ROW_BREAKOUT_LENGTH)
|
|
16013
|
+
}
|
|
16014
|
+
};
|
|
16015
|
+
};
|
|
16016
|
+
var BREADBOARD_08MM_ROW_BREAKOUTS = Array.from(
|
|
16017
|
+
{ length: BREADBOARD_COLUMN_COUNT },
|
|
16018
|
+
(_, index) => index + 1
|
|
16019
|
+
).flatMap((column) => [
|
|
16020
|
+
createRowBreakout(`A${column}`, column, BREADBOARD_TERMINAL_ROW_YS.A, 1),
|
|
16021
|
+
createRowBreakout(`E${column}`, column, BREADBOARD_TERMINAL_ROW_YS.E, -1),
|
|
16022
|
+
createRowBreakout(`F${column}`, column, BREADBOARD_TERMINAL_ROW_YS.F, 1),
|
|
16023
|
+
createRowBreakout(`J${column}`, column, BREADBOARD_TERMINAL_ROW_YS.J, -1)
|
|
16024
|
+
]);
|
|
16025
|
+
var viaBreakoutPinLabels = Object.fromEntries(
|
|
16026
|
+
BREADBOARD_08MM_VIA_POSITIONS.flatMap((via, index) => [
|
|
16027
|
+
[`pin${index * 2 + 1}`, `${via.name}_TOP`],
|
|
16028
|
+
[`pin${index * 2 + 2}`, `${via.name}_BOTTOM`]
|
|
16029
|
+
])
|
|
16030
|
+
);
|
|
16031
|
+
var rowBreakoutPinLabels = Object.fromEntries(
|
|
16032
|
+
BREADBOARD_08MM_ROW_BREAKOUTS.map((breakout, index) => [
|
|
16033
|
+
`pin${index + 1}`,
|
|
16034
|
+
breakout.name
|
|
16035
|
+
])
|
|
16036
|
+
);
|
|
16037
|
+
var Breadboard08mmViaBreakoutFootprint = () => /* @__PURE__ */ jsx5("footprint", { children: BREADBOARD_08MM_VIA_POSITIONS.map((via, index) => /* @__PURE__ */ jsxs5(Fragment5, { children: [
|
|
16038
|
+
/* @__PURE__ */ jsx5(
|
|
16039
|
+
"smtpad",
|
|
16040
|
+
{
|
|
16041
|
+
portHints: [`pin${index * 2 + 1}`],
|
|
16042
|
+
shape: "circle",
|
|
16043
|
+
radius: `${BREADBOARD_08MM_BREAKOUT_PAD_DIAMETER / 2}mm`,
|
|
16044
|
+
layer: "top",
|
|
16045
|
+
pcbX: via.topBreakout.end.x,
|
|
16046
|
+
pcbY: via.topBreakout.end.y
|
|
16047
|
+
}
|
|
16048
|
+
),
|
|
16049
|
+
/* @__PURE__ */ jsx5(
|
|
16050
|
+
"smtpad",
|
|
16051
|
+
{
|
|
16052
|
+
portHints: [`pin${index * 2 + 2}`],
|
|
16053
|
+
shape: "circle",
|
|
16054
|
+
radius: `${BREADBOARD_08MM_BREAKOUT_PAD_DIAMETER / 2}mm`,
|
|
16055
|
+
layer: "bottom",
|
|
16056
|
+
pcbX: via.bottomBreakout.end.x,
|
|
16057
|
+
pcbY: via.bottomBreakout.end.y
|
|
16058
|
+
}
|
|
16059
|
+
)
|
|
16060
|
+
] }, `via-breakout-pad-${via.name}`)) });
|
|
16061
|
+
var Breadboard08mmRowBreakoutFootprint = () => /* @__PURE__ */ jsx5("footprint", { children: BREADBOARD_08MM_ROW_BREAKOUTS.map((breakout, index) => /* @__PURE__ */ jsx5(Fragment5, { children: /* @__PURE__ */ jsx5(
|
|
16062
|
+
"smtpad",
|
|
16063
|
+
{
|
|
16064
|
+
portHints: [`pin${index + 1}`],
|
|
16065
|
+
shape: "circle",
|
|
16066
|
+
radius: `${BREADBOARD_08MM_BREAKOUT_PAD_DIAMETER / 2}mm`,
|
|
16067
|
+
pcbX: breakout.end.x,
|
|
16068
|
+
pcbY: breakout.end.y
|
|
16069
|
+
}
|
|
16070
|
+
) }, `row-breakout-pad-${breakout.name}`)) });
|
|
16071
|
+
var BreadboardClad08mmVias = ({
|
|
16072
|
+
children,
|
|
16073
|
+
autorouter,
|
|
16074
|
+
autorouterOptions,
|
|
16075
|
+
minTraceWidth,
|
|
16076
|
+
nominalTraceWidth = BREADBOARD_08MM_BREAKOUT_TRACE_WIDTH
|
|
16077
|
+
}) => /* @__PURE__ */ jsxs5(
|
|
16078
|
+
"board",
|
|
16079
|
+
{
|
|
16080
|
+
name: "BreadboardClad08mmVias",
|
|
16081
|
+
title: "Pre-routed breadboard clad with separate 0.8 mm corner vias",
|
|
16082
|
+
width: `${BREADBOARD_CLAD_WIDTH}mm`,
|
|
16083
|
+
height: `${BREADBOARD_CLAD_HEIGHT}mm`,
|
|
16084
|
+
borderRadius: "2mm",
|
|
16085
|
+
layers: 2,
|
|
16086
|
+
minTraceWidth: `${minTraceWidth ?? 0.15}mm`,
|
|
16087
|
+
minBoardEdgeClearance: `${BREADBOARD_08MM_CLAD_EDGE_CLEARANCE - BREADBOARD_08MM_CLAD_EDGE_CLEARANCE_VALIDATION_TOLERANCE}mm`,
|
|
16088
|
+
minViaHoleDiameter: `${BREADBOARD_08MM_VIA_HOLE_DIAMETER}mm`,
|
|
16089
|
+
minViaPadDiameter: `${BREADBOARD_08MM_VIA_PAD_DIAMETER}mm`,
|
|
16090
|
+
minViaHoleEdgeToViaHoleEdgeClearance: `${BREADBOARD_08MM_MIN_VIA_EDGE_SPACING}mm`,
|
|
16091
|
+
pcbStyle: {
|
|
16092
|
+
viaHoleDiameter: `${BREADBOARD_08MM_VIA_HOLE_DIAMETER}mm`,
|
|
16093
|
+
viaPadDiameter: `${BREADBOARD_08MM_VIA_PAD_DIAMETER}mm`
|
|
16094
|
+
},
|
|
16095
|
+
autorouter: autorouter ?? createPrefabricatedViaAutorouter({
|
|
16096
|
+
width: BREADBOARD_CLAD_WIDTH,
|
|
16097
|
+
height: BREADBOARD_CLAD_HEIGHT,
|
|
16098
|
+
edgeClearance: BREADBOARD_08MM_CLAD_EDGE_CLEARANCE,
|
|
16099
|
+
options: autorouterOptions,
|
|
16100
|
+
minimumTraceWidth: minTraceWidth,
|
|
16101
|
+
nominalTraceWidth
|
|
16102
|
+
}),
|
|
16103
|
+
children: [
|
|
16104
|
+
BISCUIT_BOARD_MOUNTING_HOLE_POSITIONS.map((hole) => /* @__PURE__ */ jsx5(Fragment5, { children: /* @__PURE__ */ jsx5(
|
|
16105
|
+
"hole",
|
|
16106
|
+
{
|
|
16107
|
+
pcbX: hole.x,
|
|
16108
|
+
pcbY: hole.y,
|
|
16109
|
+
diameter: `${BREADBOARD_MOUNTING_HOLE_DIAMETER}mm`
|
|
16110
|
+
}
|
|
16111
|
+
) }, `breadboard-08mm-mounting-hole-${hole.x}-${hole.y}`)),
|
|
16112
|
+
/* @__PURE__ */ jsx5(BreadboardTerminalHeaders, { name: "J_TERMINALS" }),
|
|
16113
|
+
/* @__PURE__ */ jsx5(
|
|
16114
|
+
"pinheader",
|
|
16115
|
+
{
|
|
16116
|
+
name: "J_VIA_BREAKOUTS",
|
|
16117
|
+
pinCount: BREADBOARD_08MM_VIA_POSITIONS.length * 2,
|
|
16118
|
+
pinLabels: viaBreakoutPinLabels,
|
|
16119
|
+
manufacturerPartNumber: "GENERIC-BREADBOARD-08MM-VIA-BREAKOUTS",
|
|
16120
|
+
footprint: /* @__PURE__ */ jsx5(Breadboard08mmViaBreakoutFootprint, {}),
|
|
16121
|
+
gender: "unpopulated",
|
|
16122
|
+
showSilkscreenPinLabels: false,
|
|
16123
|
+
obstructsWithinBounds: false,
|
|
16124
|
+
pcbX: 0,
|
|
16125
|
+
pcbY: 0,
|
|
16126
|
+
shouldBeOnEdgeOfBoard: false,
|
|
16127
|
+
pcbStyle: { silkscreenTextVisibility: "hidden" }
|
|
16128
|
+
}
|
|
16129
|
+
),
|
|
16130
|
+
/* @__PURE__ */ jsx5(
|
|
16131
|
+
"pinheader",
|
|
16132
|
+
{
|
|
16133
|
+
name: "J_ROW_BREAKOUTS",
|
|
16134
|
+
pinCount: BREADBOARD_08MM_ROW_BREAKOUTS.length,
|
|
16135
|
+
pinLabels: rowBreakoutPinLabels,
|
|
16136
|
+
manufacturerPartNumber: "GENERIC-BREADBOARD-ROW-BREAKOUTS",
|
|
16137
|
+
footprint: /* @__PURE__ */ jsx5(Breadboard08mmRowBreakoutFootprint, {}),
|
|
16138
|
+
gender: "unpopulated",
|
|
16139
|
+
showSilkscreenPinLabels: false,
|
|
16140
|
+
obstructsWithinBounds: false,
|
|
16141
|
+
pcbX: 0,
|
|
16142
|
+
pcbY: 0,
|
|
16143
|
+
shouldBeOnEdgeOfBoard: false,
|
|
16144
|
+
pcbStyle: { silkscreenTextVisibility: "hidden" }
|
|
16145
|
+
}
|
|
16146
|
+
),
|
|
16147
|
+
[1, 5, 10, 15, 20, BREADBOARD_COLUMN_COUNT].map((column) => /* @__PURE__ */ jsx5(Fragment5, { children: /* @__PURE__ */ jsx5(
|
|
16148
|
+
"silkscreentext",
|
|
16149
|
+
{
|
|
16150
|
+
text: `${column}`,
|
|
16151
|
+
pcbX: BREADBOARD_COLUMN_XS[column - 1],
|
|
16152
|
+
pcbY: 17.2,
|
|
16153
|
+
fontSize: "0.55mm"
|
|
16154
|
+
}
|
|
16155
|
+
) }, `breadboard-08mm-column-label-${column}`)),
|
|
16156
|
+
BREADBOARD_08MM_VIA_POSITIONS.map((via) => /* @__PURE__ */ jsx5(Fragment5, { children: /* @__PURE__ */ jsx5(
|
|
16157
|
+
"trace",
|
|
16158
|
+
{
|
|
16159
|
+
name: `${via.name}_DUAL_LAYER_BREAKOUT`,
|
|
16160
|
+
from: `.J_VIA_BREAKOUTS > .${via.name}_TOP`,
|
|
16161
|
+
to: `.J_VIA_BREAKOUTS > .${via.name}_BOTTOM`,
|
|
16162
|
+
pcbPath: [
|
|
16163
|
+
`.J_VIA_BREAKOUTS > .${via.name}_TOP`,
|
|
16164
|
+
...via.topBreakout.route.toReversed(),
|
|
16165
|
+
{ x: via.x, y: via.y },
|
|
16166
|
+
{
|
|
16167
|
+
x: via.x,
|
|
16168
|
+
y: via.y,
|
|
16169
|
+
via: true,
|
|
16170
|
+
fromLayer: "top",
|
|
16171
|
+
toLayer: "bottom"
|
|
16172
|
+
},
|
|
16173
|
+
{ x: via.x, y: via.y },
|
|
16174
|
+
...via.bottomBreakout.route,
|
|
16175
|
+
`.J_VIA_BREAKOUTS > .${via.name}_BOTTOM`
|
|
16176
|
+
],
|
|
16177
|
+
width: `${BREADBOARD_08MM_BREAKOUT_TRACE_WIDTH}mm`
|
|
16178
|
+
}
|
|
16179
|
+
) }, via.name)),
|
|
16180
|
+
BREADBOARD_08MM_ROW_CONNECTIONS.map((connection) => /* @__PURE__ */ jsx5(Fragment5, { children: /* @__PURE__ */ jsx5(
|
|
16181
|
+
"trace",
|
|
16182
|
+
{
|
|
16183
|
+
name: `ROW_${connection.from}_${connection.to}`,
|
|
16184
|
+
from: `.J_TERMINALS > .${connection.from}`,
|
|
16185
|
+
to: `.J_TERMINALS > .${connection.to}`,
|
|
16186
|
+
width: `${BREADBOARD_08MM_ROW_TRACE_WIDTH}mm`
|
|
16187
|
+
}
|
|
16188
|
+
) }, `${connection.from}-${connection.to}`)),
|
|
16189
|
+
BREADBOARD_08MM_ROW_BREAKOUTS.map((breakout) => /* @__PURE__ */ jsx5(Fragment5, { children: /* @__PURE__ */ jsx5(
|
|
16190
|
+
"trace",
|
|
16191
|
+
{
|
|
16192
|
+
name: breakout.name,
|
|
16193
|
+
from: `.J_TERMINALS > .${breakout.terminalLabel}`,
|
|
16194
|
+
to: `.J_ROW_BREAKOUTS > .${breakout.name}`,
|
|
16195
|
+
width: `${BREADBOARD_08MM_ROW_TRACE_WIDTH}mm`
|
|
16196
|
+
}
|
|
16197
|
+
) }, breakout.name)),
|
|
16198
|
+
/* @__PURE__ */ jsx5(
|
|
16199
|
+
"silkscreentext",
|
|
16200
|
+
{
|
|
16201
|
+
text: "0.8MM VIA BREADBOARD",
|
|
16202
|
+
pcbX: 33.5,
|
|
16203
|
+
pcbY: 0,
|
|
16204
|
+
pcbRotation: 90,
|
|
16205
|
+
fontSize: "0.65mm"
|
|
16206
|
+
}
|
|
16207
|
+
),
|
|
16208
|
+
BREADBOARD_08MM_TOP_BANK_ROWS.map((row) => /* @__PURE__ */ jsx5(Fragment5, { children: /* @__PURE__ */ jsx5(
|
|
16209
|
+
"silkscreentext",
|
|
16210
|
+
{
|
|
16211
|
+
text: row,
|
|
16212
|
+
pcbX: -28.3,
|
|
16213
|
+
pcbY: BREADBOARD_TERMINAL_ROW_YS[row],
|
|
16214
|
+
fontSize: "0.55mm"
|
|
16215
|
+
}
|
|
16216
|
+
) }, `top-row-label-${row}`)),
|
|
16217
|
+
BREADBOARD_08MM_BOTTOM_BANK_ROWS.map((row) => /* @__PURE__ */ jsx5(Fragment5, { children: /* @__PURE__ */ jsx5(
|
|
16218
|
+
"silkscreentext",
|
|
16219
|
+
{
|
|
16220
|
+
text: row,
|
|
16221
|
+
pcbX: -28.3,
|
|
16222
|
+
pcbY: BREADBOARD_TERMINAL_ROW_YS[row],
|
|
16223
|
+
fontSize: "0.55mm"
|
|
16224
|
+
}
|
|
16225
|
+
) }, `bottom-row-label-${row}`)),
|
|
16226
|
+
/* @__PURE__ */ jsx5(
|
|
16227
|
+
"pcbnotedimension",
|
|
16228
|
+
{
|
|
16229
|
+
from: {
|
|
16230
|
+
x: -BREADBOARD_CLAD_WIDTH / 2,
|
|
16231
|
+
y: BREADBOARD_CLAD_HEIGHT / 2 + 2.5
|
|
16232
|
+
},
|
|
16233
|
+
to: {
|
|
16234
|
+
x: BREADBOARD_CLAD_WIDTH / 2,
|
|
16235
|
+
y: BREADBOARD_CLAD_HEIGHT / 2 + 2.5
|
|
16236
|
+
},
|
|
16237
|
+
text: `${BREADBOARD_CLAD_WIDTH}mm`
|
|
16238
|
+
}
|
|
16239
|
+
),
|
|
16240
|
+
/* @__PURE__ */ jsx5(
|
|
16241
|
+
"pcbnotedimension",
|
|
16242
|
+
{
|
|
16243
|
+
from: {
|
|
16244
|
+
x: BREADBOARD_CLAD_WIDTH / 2 + 2.5,
|
|
16245
|
+
y: -BREADBOARD_CLAD_HEIGHT / 2
|
|
16246
|
+
},
|
|
16247
|
+
to: {
|
|
16248
|
+
x: BREADBOARD_CLAD_WIDTH / 2 + 2.5,
|
|
16249
|
+
y: BREADBOARD_CLAD_HEIGHT / 2
|
|
16250
|
+
},
|
|
16251
|
+
text: `${BREADBOARD_CLAD_HEIGHT}mm`
|
|
16252
|
+
}
|
|
16253
|
+
),
|
|
16254
|
+
children
|
|
16255
|
+
]
|
|
16256
|
+
}
|
|
16257
|
+
);
|
|
16258
|
+
|
|
16259
|
+
// lib/Clad32x32.tsx
|
|
16260
|
+
import { Fragment as Fragment6 } from "react";
|
|
16261
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
15758
16262
|
var CLAD_32X32_WIDTH = 32;
|
|
15759
16263
|
var CLAD_32X32_HEIGHT = 32;
|
|
15760
16264
|
var CLAD_32X32_MOUNTING_HOLE_DIAMETER = 2;
|
|
@@ -15775,22 +16279,22 @@ var CLAD_32X32_MOUNTING_HOLE_POSITIONS = [
|
|
|
15775
16279
|
];
|
|
15776
16280
|
var CLAD_32X32_EDGE_CLEARANCE = 0.2;
|
|
15777
16281
|
var CLAD_32X32_EDGE_CLEARANCE_VALIDATION_TOLERANCE = 1e-3;
|
|
15778
|
-
var
|
|
15779
|
-
var
|
|
16282
|
+
var roundCoordinate5 = (value) => Math.round(value * 1e6) / 1e6;
|
|
16283
|
+
var createPitchedRange3 = (start, end) => Array.from(
|
|
15780
16284
|
{
|
|
15781
16285
|
length: Math.round((end - start) / CLAD_32X32_VIA_SPACING) + 1
|
|
15782
16286
|
},
|
|
15783
|
-
(_, index) =>
|
|
16287
|
+
(_, index) => roundCoordinate5(start + index * CLAD_32X32_VIA_SPACING)
|
|
15784
16288
|
);
|
|
15785
|
-
var cornerAxis =
|
|
16289
|
+
var cornerAxis = createPitchedRange3(
|
|
15786
16290
|
CLAD_32X32_VIA_ARM_INNER_OFFSET,
|
|
15787
16291
|
CLAD_32X32_VIA_ARM_OUTER_OFFSET
|
|
15788
16292
|
);
|
|
15789
|
-
var armAxis =
|
|
16293
|
+
var armAxis = createPitchedRange3(
|
|
15790
16294
|
CLAD_32X32_VIA_ARM_INNER_OFFSET,
|
|
15791
16295
|
CLAD_32X32_VIA_ARM_INNER_OFFSET + CLAD_32X32_VIA_ARM_WIDTH
|
|
15792
16296
|
);
|
|
15793
|
-
var
|
|
16297
|
+
var createCornerViaPositions3 = (xSign, ySign) => {
|
|
15794
16298
|
const horizontalArm = cornerAxis.flatMap(
|
|
15795
16299
|
(x) => armAxis.map((y) => ({ x: x * xSign, y: y * ySign }))
|
|
15796
16300
|
);
|
|
@@ -15811,7 +16315,7 @@ var CLAD_32X32_VIA_POSITIONS = [
|
|
|
15811
16315
|
[-1, 1],
|
|
15812
16316
|
[1, -1],
|
|
15813
16317
|
[1, 1]
|
|
15814
|
-
].flatMap(([xSign, ySign]) =>
|
|
16318
|
+
].flatMap(([xSign, ySign]) => createCornerViaPositions3(xSign, ySign));
|
|
15815
16319
|
var Clad32x32 = ({
|
|
15816
16320
|
children,
|
|
15817
16321
|
autorouter,
|
|
@@ -15819,7 +16323,7 @@ var Clad32x32 = ({
|
|
|
15819
16323
|
minTraceWidth,
|
|
15820
16324
|
nominalTraceWidth = 0.2,
|
|
15821
16325
|
routingDisabled = false
|
|
15822
|
-
}) => /* @__PURE__ */
|
|
16326
|
+
}) => /* @__PURE__ */ jsxs6(
|
|
15823
16327
|
"board",
|
|
15824
16328
|
{
|
|
15825
16329
|
name: "Clad32x32",
|
|
@@ -15842,7 +16346,7 @@ var Clad32x32 = ({
|
|
|
15842
16346
|
}),
|
|
15843
16347
|
routingDisabled,
|
|
15844
16348
|
children: [
|
|
15845
|
-
CLAD_32X32_MOUNTING_HOLE_POSITIONS.map((hole) => /* @__PURE__ */
|
|
16349
|
+
CLAD_32X32_MOUNTING_HOLE_POSITIONS.map((hole) => /* @__PURE__ */ jsx6(Fragment6, { children: /* @__PURE__ */ jsx6(
|
|
15846
16350
|
"hole",
|
|
15847
16351
|
{
|
|
15848
16352
|
pcbX: hole.x,
|
|
@@ -15850,7 +16354,7 @@ var Clad32x32 = ({
|
|
|
15850
16354
|
diameter: `${CLAD_32X32_MOUNTING_HOLE_DIAMETER}mm`
|
|
15851
16355
|
}
|
|
15852
16356
|
) }, `clad-32x32-mounting-hole-${hole.x}-${hole.y}`)),
|
|
15853
|
-
CLAD_32X32_VIA_POSITIONS.map((via) => /* @__PURE__ */
|
|
16357
|
+
CLAD_32X32_VIA_POSITIONS.map((via) => /* @__PURE__ */ jsx6(Fragment6, { children: /* @__PURE__ */ jsx6(
|
|
15854
16358
|
"via",
|
|
15855
16359
|
{
|
|
15856
16360
|
netIsAssignable: true,
|
|
@@ -15862,7 +16366,7 @@ var Clad32x32 = ({
|
|
|
15862
16366
|
outerDiameter: `${CLAD_32X32_VIA_PAD_DIAMETER}mm`
|
|
15863
16367
|
}
|
|
15864
16368
|
) }, `clad-32x32-prefab-via-${via.x}-${via.y}`)),
|
|
15865
|
-
/* @__PURE__ */
|
|
16369
|
+
/* @__PURE__ */ jsx6(
|
|
15866
16370
|
"pcbnotedimension",
|
|
15867
16371
|
{
|
|
15868
16372
|
from: { x: -CLAD_32X32_WIDTH / 2, y: CLAD_32X32_HEIGHT / 2 + 2.5 },
|
|
@@ -15870,7 +16374,7 @@ var Clad32x32 = ({
|
|
|
15870
16374
|
text: `${CLAD_32X32_WIDTH}mm`
|
|
15871
16375
|
}
|
|
15872
16376
|
),
|
|
15873
|
-
/* @__PURE__ */
|
|
16377
|
+
/* @__PURE__ */ jsx6(
|
|
15874
16378
|
"pcbnotedimension",
|
|
15875
16379
|
{
|
|
15876
16380
|
from: { x: CLAD_32X32_WIDTH / 2 + 2.5, y: -CLAD_32X32_HEIGHT / 2 },
|
|
@@ -15884,8 +16388,8 @@ var Clad32x32 = ({
|
|
|
15884
16388
|
);
|
|
15885
16389
|
|
|
15886
16390
|
// lib/feather-clad.tsx
|
|
15887
|
-
import { Fragment as
|
|
15888
|
-
import { jsx as
|
|
16391
|
+
import { Fragment as Fragment7 } from "react";
|
|
16392
|
+
import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
15889
16393
|
var FEATHER_CLAD_WIDTH = 22.86;
|
|
15890
16394
|
var FEATHER_CLAD_HEIGHT = 50.8;
|
|
15891
16395
|
var FEATHER_HEADER_PITCH = 2.54;
|
|
@@ -15961,7 +16465,7 @@ var FEATHER_PIN_NAMES = Array.from(
|
|
|
15961
16465
|
{ length: 28 },
|
|
15962
16466
|
(_, index) => `pin${index + 1}`
|
|
15963
16467
|
);
|
|
15964
|
-
var FeatherPinHeaderFootprint = () => /* @__PURE__ */
|
|
16468
|
+
var FeatherPinHeaderFootprint = () => /* @__PURE__ */ jsx7("footprint", { insertionDirection: "from_below", children: FEATHER_HEADER_POSITIONS.map((position, index) => /* @__PURE__ */ jsx7(Fragment7, { children: index === 0 ? /* @__PURE__ */ jsx7(
|
|
15965
16469
|
"platedhole",
|
|
15966
16470
|
{
|
|
15967
16471
|
portHints: [`pin${index + 1}`],
|
|
@@ -15972,7 +16476,7 @@ var FeatherPinHeaderFootprint = () => /* @__PURE__ */ jsx6("footprint", { insert
|
|
|
15972
16476
|
pcbX: position.x,
|
|
15973
16477
|
pcbY: position.y
|
|
15974
16478
|
}
|
|
15975
|
-
) : /* @__PURE__ */
|
|
16479
|
+
) : /* @__PURE__ */ jsx7(
|
|
15976
16480
|
"platedhole",
|
|
15977
16481
|
{
|
|
15978
16482
|
portHints: [`pin${index + 1}`],
|
|
@@ -15983,12 +16487,12 @@ var FeatherPinHeaderFootprint = () => /* @__PURE__ */ jsx6("footprint", { insert
|
|
|
15983
16487
|
pcbY: position.y
|
|
15984
16488
|
}
|
|
15985
16489
|
) }, `feather-header-${position.x}-${position.y}`)) });
|
|
15986
|
-
var FeatherPinHeaders = (props) => /* @__PURE__ */
|
|
16490
|
+
var FeatherPinHeaders = (props) => /* @__PURE__ */ jsx7(
|
|
15987
16491
|
"connector",
|
|
15988
16492
|
{
|
|
15989
16493
|
pinLabels: FEATHER_PIN_LABELS,
|
|
15990
16494
|
manufacturerPartNumber: "GENERIC-FEATHER-1X16-PLUS-1X12-MALE-2.54MM-DOWN",
|
|
15991
|
-
footprint: /* @__PURE__ */
|
|
16495
|
+
footprint: /* @__PURE__ */ jsx7(FeatherPinHeaderFootprint, {}),
|
|
15992
16496
|
noSchematicRepresentation: true,
|
|
15993
16497
|
...props
|
|
15994
16498
|
}
|
|
@@ -16002,7 +16506,7 @@ var FeatherCladWithPinHeaders = ({
|
|
|
16002
16506
|
routingDisabled = false,
|
|
16003
16507
|
markHeadersNoConnect = false,
|
|
16004
16508
|
showUsbLabel = true
|
|
16005
|
-
}) => /* @__PURE__ */
|
|
16509
|
+
}) => /* @__PURE__ */ jsxs7(
|
|
16006
16510
|
"board",
|
|
16007
16511
|
{
|
|
16008
16512
|
name: "FeatherCladWithPinHeaders",
|
|
@@ -16025,14 +16529,14 @@ var FeatherCladWithPinHeaders = ({
|
|
|
16025
16529
|
}),
|
|
16026
16530
|
routingDisabled,
|
|
16027
16531
|
children: [
|
|
16028
|
-
/* @__PURE__ */
|
|
16532
|
+
/* @__PURE__ */ jsx7(
|
|
16029
16533
|
FeatherPinHeaders,
|
|
16030
16534
|
{
|
|
16031
16535
|
name: "J_FEATHER",
|
|
16032
16536
|
noConnect: markHeadersNoConnect ? FEATHER_PIN_NAMES : void 0
|
|
16033
16537
|
}
|
|
16034
16538
|
),
|
|
16035
|
-
FEATHER_MOUNTING_HOLE_POSITIONS.map((hole) => /* @__PURE__ */
|
|
16539
|
+
FEATHER_MOUNTING_HOLE_POSITIONS.map((hole) => /* @__PURE__ */ jsx7(Fragment7, { children: /* @__PURE__ */ jsx7(
|
|
16036
16540
|
"hole",
|
|
16037
16541
|
{
|
|
16038
16542
|
pcbX: hole.x,
|
|
@@ -16040,7 +16544,7 @@ var FeatherCladWithPinHeaders = ({
|
|
|
16040
16544
|
diameter: `${FEATHER_MOUNTING_HOLE_DIAMETER}mm`
|
|
16041
16545
|
}
|
|
16042
16546
|
) }, `feather-mounting-hole-${hole.x}-${hole.y}`)),
|
|
16043
|
-
showUsbLabel && /* @__PURE__ */
|
|
16547
|
+
showUsbLabel && /* @__PURE__ */ jsx7(
|
|
16044
16548
|
"silkscreentext",
|
|
16045
16549
|
{
|
|
16046
16550
|
text: "UP",
|
|
@@ -16049,7 +16553,7 @@ var FeatherCladWithPinHeaders = ({
|
|
|
16049
16553
|
fontSize: "0.7mm"
|
|
16050
16554
|
}
|
|
16051
16555
|
),
|
|
16052
|
-
FEATHER_CLAD_VIA_POSITIONS.map((via) => /* @__PURE__ */
|
|
16556
|
+
FEATHER_CLAD_VIA_POSITIONS.map((via) => /* @__PURE__ */ jsx7(Fragment7, { children: /* @__PURE__ */ jsx7(
|
|
16053
16557
|
"via",
|
|
16054
16558
|
{
|
|
16055
16559
|
netIsAssignable: true,
|
|
@@ -16061,7 +16565,7 @@ var FeatherCladWithPinHeaders = ({
|
|
|
16061
16565
|
outerDiameter: `${FEATHER_CLAD_VIA_PAD_DIAMETER}mm`
|
|
16062
16566
|
}
|
|
16063
16567
|
) }, `feather-prefab-via-${via.x}-${via.y}`)),
|
|
16064
|
-
/* @__PURE__ */
|
|
16568
|
+
/* @__PURE__ */ jsx7(
|
|
16065
16569
|
"pcbnotedimension",
|
|
16066
16570
|
{
|
|
16067
16571
|
from: {
|
|
@@ -16075,7 +16579,7 @@ var FeatherCladWithPinHeaders = ({
|
|
|
16075
16579
|
text: `${FEATHER_CLAD_WIDTH}mm`
|
|
16076
16580
|
}
|
|
16077
16581
|
),
|
|
16078
|
-
/* @__PURE__ */
|
|
16582
|
+
/* @__PURE__ */ jsx7(
|
|
16079
16583
|
"pcbnotedimension",
|
|
16080
16584
|
{
|
|
16081
16585
|
from: {
|
|
@@ -16095,8 +16599,8 @@ var FeatherCladWithPinHeaders = ({
|
|
|
16095
16599
|
);
|
|
16096
16600
|
|
|
16097
16601
|
// lib/xiao-clad.tsx
|
|
16098
|
-
import { Fragment as
|
|
16099
|
-
import { jsx as
|
|
16602
|
+
import { Fragment as Fragment8 } from "react";
|
|
16603
|
+
import { jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
16100
16604
|
var XIAO_CLAD_WIDTH = 17.8;
|
|
16101
16605
|
var XIAO_CLAD_HEIGHT = 21;
|
|
16102
16606
|
var XIAO_HEADER_PITCH = 2.54;
|
|
@@ -16142,7 +16646,7 @@ var XIAO_PIN_NAMES = Array.from(
|
|
|
16142
16646
|
{ length: 14 },
|
|
16143
16647
|
(_, index) => `pin${index + 1}`
|
|
16144
16648
|
);
|
|
16145
|
-
var XiaoPinHeaderFootprint = () => /* @__PURE__ */
|
|
16649
|
+
var XiaoPinHeaderFootprint = () => /* @__PURE__ */ jsx8("footprint", { insertionDirection: "from_below", children: XIAO_HEADER_POSITIONS.map((position, index) => /* @__PURE__ */ jsx8(Fragment8, { children: index === 0 ? /* @__PURE__ */ jsx8(
|
|
16146
16650
|
"platedhole",
|
|
16147
16651
|
{
|
|
16148
16652
|
portHints: [`pin${index + 1}`],
|
|
@@ -16153,7 +16657,7 @@ var XiaoPinHeaderFootprint = () => /* @__PURE__ */ jsx7("footprint", { insertion
|
|
|
16153
16657
|
pcbX: position.x,
|
|
16154
16658
|
pcbY: position.y
|
|
16155
16659
|
}
|
|
16156
|
-
) : /* @__PURE__ */
|
|
16660
|
+
) : /* @__PURE__ */ jsx8(
|
|
16157
16661
|
"platedhole",
|
|
16158
16662
|
{
|
|
16159
16663
|
portHints: [`pin${index + 1}`],
|
|
@@ -16164,12 +16668,12 @@ var XiaoPinHeaderFootprint = () => /* @__PURE__ */ jsx7("footprint", { insertion
|
|
|
16164
16668
|
pcbY: position.y
|
|
16165
16669
|
}
|
|
16166
16670
|
) }, `xiao-header-${position.x}-${position.y}`)) });
|
|
16167
|
-
var XiaoPinHeaders = (props) => /* @__PURE__ */
|
|
16671
|
+
var XiaoPinHeaders = (props) => /* @__PURE__ */ jsx8(
|
|
16168
16672
|
"connector",
|
|
16169
16673
|
{
|
|
16170
16674
|
pinLabels: XIAO_PIN_LABELS,
|
|
16171
16675
|
manufacturerPartNumber: "GENERIC-XIAO-2X7-MALE-2.54MM-DOWN",
|
|
16172
|
-
footprint: /* @__PURE__ */
|
|
16676
|
+
footprint: /* @__PURE__ */ jsx8(XiaoPinHeaderFootprint, {}),
|
|
16173
16677
|
noSchematicRepresentation: true,
|
|
16174
16678
|
...props
|
|
16175
16679
|
}
|
|
@@ -16186,7 +16690,7 @@ var XiaoCladLayout = ({
|
|
|
16186
16690
|
nominalTraceWidth = 0.2,
|
|
16187
16691
|
routingDisabled = false,
|
|
16188
16692
|
showUsbLabel = true
|
|
16189
|
-
}) => /* @__PURE__ */
|
|
16693
|
+
}) => /* @__PURE__ */ jsxs8(
|
|
16190
16694
|
"board",
|
|
16191
16695
|
{
|
|
16192
16696
|
name: boardName,
|
|
@@ -16211,7 +16715,7 @@ var XiaoCladLayout = ({
|
|
|
16211
16715
|
children: [
|
|
16212
16716
|
pinHeaders,
|
|
16213
16717
|
edgeFeatures,
|
|
16214
|
-
showUsbLabel && /* @__PURE__ */
|
|
16718
|
+
showUsbLabel && /* @__PURE__ */ jsx8(
|
|
16215
16719
|
"silkscreentext",
|
|
16216
16720
|
{
|
|
16217
16721
|
text: "UP",
|
|
@@ -16220,7 +16724,7 @@ var XiaoCladLayout = ({
|
|
|
16220
16724
|
fontSize: "0.7mm"
|
|
16221
16725
|
}
|
|
16222
16726
|
),
|
|
16223
|
-
XIAO_CLAD_VIA_POSITIONS.map((via) => /* @__PURE__ */
|
|
16727
|
+
XIAO_CLAD_VIA_POSITIONS.map((via) => /* @__PURE__ */ jsx8(Fragment8, { children: /* @__PURE__ */ jsx8(
|
|
16224
16728
|
"via",
|
|
16225
16729
|
{
|
|
16226
16730
|
netIsAssignable: true,
|
|
@@ -16232,7 +16736,7 @@ var XiaoCladLayout = ({
|
|
|
16232
16736
|
outerDiameter: `${XIAO_CLAD_VIA_PAD_DIAMETER}mm`
|
|
16233
16737
|
}
|
|
16234
16738
|
) }, `xiao-prefab-via-${via.x}-${via.y}`)),
|
|
16235
|
-
/* @__PURE__ */
|
|
16739
|
+
/* @__PURE__ */ jsx8(
|
|
16236
16740
|
"pcbnotedimension",
|
|
16237
16741
|
{
|
|
16238
16742
|
from: { x: -XIAO_CLAD_WIDTH / 2, y: XIAO_CLAD_HEIGHT / 2 + 2 },
|
|
@@ -16240,7 +16744,7 @@ var XiaoCladLayout = ({
|
|
|
16240
16744
|
text: `${XIAO_CLAD_WIDTH}mm`
|
|
16241
16745
|
}
|
|
16242
16746
|
),
|
|
16243
|
-
/* @__PURE__ */
|
|
16747
|
+
/* @__PURE__ */ jsx8(
|
|
16244
16748
|
"pcbnotedimension",
|
|
16245
16749
|
{
|
|
16246
16750
|
from: { x: XIAO_CLAD_WIDTH / 2 + 2, y: -XIAO_CLAD_HEIGHT / 2 },
|
|
@@ -16255,13 +16759,13 @@ var XiaoCladLayout = ({
|
|
|
16255
16759
|
var XiaoCladWithPinHeaders = ({
|
|
16256
16760
|
markHeadersNoConnect = false,
|
|
16257
16761
|
...props
|
|
16258
|
-
}) => /* @__PURE__ */
|
|
16762
|
+
}) => /* @__PURE__ */ jsx8(
|
|
16259
16763
|
XiaoCladLayout,
|
|
16260
16764
|
{
|
|
16261
16765
|
...props,
|
|
16262
16766
|
boardName: "XiaoCladWithPinHeaders",
|
|
16263
16767
|
boardTitle: "XIAO form-factor copper clad with pin headers",
|
|
16264
|
-
pinHeaders: /* @__PURE__ */
|
|
16768
|
+
pinHeaders: /* @__PURE__ */ jsx8(
|
|
16265
16769
|
XiaoPinHeaders,
|
|
16266
16770
|
{
|
|
16267
16771
|
name: "J_XIAO",
|
|
@@ -16272,8 +16776,8 @@ var XiaoCladWithPinHeaders = ({
|
|
|
16272
16776
|
);
|
|
16273
16777
|
|
|
16274
16778
|
// lib/xiao-clad-with-perforated-pin-headers.tsx
|
|
16275
|
-
import { Fragment as
|
|
16276
|
-
import { jsx as
|
|
16779
|
+
import { Fragment as Fragment9 } from "react";
|
|
16780
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
16277
16781
|
var XIAO_PERFORATED_HEADER_PAD_WIDTH = 2.13;
|
|
16278
16782
|
var XIAO_PERFORATED_HEADER_PAD_HEIGHT = 2;
|
|
16279
16783
|
var XIAO_PERFORATION_HOLE_DIAMETER = 0.7;
|
|
@@ -16283,13 +16787,13 @@ var XIAO_PERFORATION_POSITIONS = XIAO_HEADER_POSITIONS.map(
|
|
|
16283
16787
|
y: position.y
|
|
16284
16788
|
})
|
|
16285
16789
|
);
|
|
16286
|
-
var XiaoPerforatedPinHeaderFootprint = () => /* @__PURE__ */
|
|
16790
|
+
var XiaoPerforatedPinHeaderFootprint = () => /* @__PURE__ */ jsx9("footprint", { insertionDirection: "from_below", children: XIAO_HEADER_POSITIONS.map((headerPosition, index) => {
|
|
16287
16791
|
const side = Math.sign(headerPosition.x);
|
|
16288
16792
|
const padCenterX = side * (XIAO_CLAD_WIDTH / 2 - XIAO_PERFORATED_HEADER_PAD_WIDTH / 2);
|
|
16289
|
-
return /* @__PURE__ */
|
|
16290
|
-
|
|
16793
|
+
return /* @__PURE__ */ jsx9(
|
|
16794
|
+
Fragment9,
|
|
16291
16795
|
{
|
|
16292
|
-
children: /* @__PURE__ */
|
|
16796
|
+
children: /* @__PURE__ */ jsx9(
|
|
16293
16797
|
"platedhole",
|
|
16294
16798
|
{
|
|
16295
16799
|
portHints: [`pin${index + 1}`],
|
|
@@ -16306,12 +16810,12 @@ var XiaoPerforatedPinHeaderFootprint = () => /* @__PURE__ */ jsx8("footprint", {
|
|
|
16306
16810
|
`xiao-perforated-header-${headerPosition.x}-${headerPosition.y}`
|
|
16307
16811
|
);
|
|
16308
16812
|
}) });
|
|
16309
|
-
var XiaoPerforatedPinHeaders = (props) => /* @__PURE__ */
|
|
16813
|
+
var XiaoPerforatedPinHeaders = (props) => /* @__PURE__ */ jsx9(
|
|
16310
16814
|
"connector",
|
|
16311
16815
|
{
|
|
16312
16816
|
pinLabels: XIAO_PIN_LABELS,
|
|
16313
16817
|
manufacturerPartNumber: "GENERIC-XIAO-2X7-MALE-2.54MM-DOWN-PERFORATED",
|
|
16314
|
-
footprint: /* @__PURE__ */
|
|
16818
|
+
footprint: /* @__PURE__ */ jsx9(XiaoPerforatedPinHeaderFootprint, {}),
|
|
16315
16819
|
noSchematicRepresentation: true,
|
|
16316
16820
|
...props
|
|
16317
16821
|
}
|
|
@@ -16319,20 +16823,20 @@ var XiaoPerforatedPinHeaders = (props) => /* @__PURE__ */ jsx8(
|
|
|
16319
16823
|
var XiaoCladWithPerforatedPinHeaders = ({
|
|
16320
16824
|
markHeadersNoConnect = false,
|
|
16321
16825
|
...props
|
|
16322
|
-
}) => /* @__PURE__ */
|
|
16826
|
+
}) => /* @__PURE__ */ jsx9(
|
|
16323
16827
|
XiaoCladLayout,
|
|
16324
16828
|
{
|
|
16325
16829
|
...props,
|
|
16326
16830
|
boardName: "XiaoCladWithPerforatedPinHeaders",
|
|
16327
16831
|
boardTitle: "XIAO form-factor copper clad with perforated pin-header sides",
|
|
16328
|
-
pinHeaders: /* @__PURE__ */
|
|
16832
|
+
pinHeaders: /* @__PURE__ */ jsx9(
|
|
16329
16833
|
XiaoPerforatedPinHeaders,
|
|
16330
16834
|
{
|
|
16331
16835
|
name: "J_XIAO",
|
|
16332
16836
|
noConnect: markHeadersNoConnect ? XIAO_PIN_NAMES : void 0
|
|
16333
16837
|
}
|
|
16334
16838
|
),
|
|
16335
|
-
edgeFeatures: XIAO_PERFORATION_POSITIONS.map((position) => /* @__PURE__ */
|
|
16839
|
+
edgeFeatures: XIAO_PERFORATION_POSITIONS.map((position) => /* @__PURE__ */ jsx9(Fragment9, { children: /* @__PURE__ */ jsx9(
|
|
16336
16840
|
"cutout",
|
|
16337
16841
|
{
|
|
16338
16842
|
shape: "circle",
|
|
@@ -16388,6 +16892,33 @@ export {
|
|
|
16388
16892
|
BOOSTERPACK_MIDDLE_VIA_CLUSTER_CENTER_X,
|
|
16389
16893
|
BOOSTERPACK_MIDDLE_VIA_CLUSTER_HEIGHT,
|
|
16390
16894
|
BOOSTERPACK_MIDDLE_VIA_CLUSTER_WIDTH,
|
|
16895
|
+
BREADBOARD_08MM_BOTTOM_BANK_ROWS,
|
|
16896
|
+
BREADBOARD_08MM_BREAKOUT_LANE_SPACING,
|
|
16897
|
+
BREADBOARD_08MM_BREAKOUT_PAD_DIAMETER,
|
|
16898
|
+
BREADBOARD_08MM_BREAKOUT_TRACE_WIDTH,
|
|
16899
|
+
BREADBOARD_08MM_BREAKOUT_WEAVE_OFFSET,
|
|
16900
|
+
BREADBOARD_08MM_CORNER_VIA_ARM_WIDTH,
|
|
16901
|
+
BREADBOARD_08MM_CORNER_VIA_ARM_X_INNER_OFFSET,
|
|
16902
|
+
BREADBOARD_08MM_CORNER_VIA_LONG_SIDE_COLUMNS,
|
|
16903
|
+
BREADBOARD_08MM_CORNER_VIA_SPACING,
|
|
16904
|
+
BREADBOARD_08MM_CORNER_VIA_X_INNER_OFFSET,
|
|
16905
|
+
BREADBOARD_08MM_CORNER_VIA_X_OUTER_OFFSET,
|
|
16906
|
+
BREADBOARD_08MM_CORNER_VIA_X_OUTWARD_SHIFT,
|
|
16907
|
+
BREADBOARD_08MM_CORNER_VIA_Y_INNER_OFFSET,
|
|
16908
|
+
BREADBOARD_08MM_CORNER_VIA_Y_OUTER_OFFSET,
|
|
16909
|
+
BREADBOARD_08MM_EDGE_HUG_COLUMN_COUNT,
|
|
16910
|
+
BREADBOARD_08MM_EDGE_HUG_Y_SHIFT,
|
|
16911
|
+
BREADBOARD_08MM_MIN_VIA_EDGE_SPACING,
|
|
16912
|
+
BREADBOARD_08MM_ROW_BREAKOUTS,
|
|
16913
|
+
BREADBOARD_08MM_ROW_BREAKOUT_LENGTH,
|
|
16914
|
+
BREADBOARD_08MM_ROW_CONNECTIONS,
|
|
16915
|
+
BREADBOARD_08MM_ROW_TRACE_WIDTH,
|
|
16916
|
+
BREADBOARD_08MM_TOP_BANK_ROWS,
|
|
16917
|
+
BREADBOARD_08MM_TOP_RIGHT_LONG_SIDE_COLUMNS,
|
|
16918
|
+
BREADBOARD_08MM_VIA_BREAKOUT_LENGTH,
|
|
16919
|
+
BREADBOARD_08MM_VIA_HOLE_DIAMETER,
|
|
16920
|
+
BREADBOARD_08MM_VIA_PAD_DIAMETER,
|
|
16921
|
+
BREADBOARD_08MM_VIA_POSITIONS,
|
|
16391
16922
|
BREADBOARD_CLAD_HEIGHT,
|
|
16392
16923
|
BREADBOARD_CLAD_VIA_HOLE_DIAMETER,
|
|
16393
16924
|
BREADBOARD_CLAD_VIA_PAD_DIAMETER,
|
|
@@ -16418,6 +16949,7 @@ export {
|
|
|
16418
16949
|
BoosterPackLeftHeader,
|
|
16419
16950
|
BoosterPackRightHeader,
|
|
16420
16951
|
BreadboardClad,
|
|
16952
|
+
BreadboardClad08mmVias,
|
|
16421
16953
|
BreadboardTerminalHeaders,
|
|
16422
16954
|
CLAD_32X32_EDGE_CONNECTOR_OPENING,
|
|
16423
16955
|
CLAD_32X32_HEIGHT,
|