biscuitboard 1.0.5 → 1.0.7

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/npm.js CHANGED
@@ -14387,41 +14387,46 @@ var ARDUINO_SHIELD_CLAD_VIA_SPACING = 1.3;
14387
14387
  var ARDUINO_SHIELD_EDGE_CLEARANCE = 0.2;
14388
14388
  var ARDUINO_SHIELD_EDGE_CLEARANCE_VALIDATION_TOLERANCE = 1e-3;
14389
14389
  var rangeInclusive = (start, end, increment) => Array.from(
14390
- { length: Math.max(0, Math.floor((end - start) / increment) + 1) },
14390
+ {
14391
+ length: Math.max(0, Math.floor((end - start) / increment + 1e-9) + 1)
14392
+ },
14391
14393
  (_, index) => Math.round((start + index * increment) * 1e6) / 1e6
14392
14394
  );
14393
14395
  var createViaZone2 = (zone) => rangeInclusive(zone.minX, zone.maxX, zone.spacing).flatMap(
14394
14396
  (x) => rangeInclusive(zone.minY, zone.maxY, zone.spacing).map((y) => ({ x, y }))
14395
14397
  );
14396
14398
  var ARDUINO_SHIELD_CLAD_VIA_CANDIDATE_ZONES = [
14399
+ // Upper-left horizontal and vertical arms.
14397
14400
  {
14398
- minX: -33.5,
14399
- maxX: -25.5,
14400
- minY: 17.5,
14401
- maxY: 21.5,
14401
+ minX: -36.1,
14402
+ maxX: -29.6,
14403
+ minY: 19.7,
14404
+ maxY: 22.3,
14402
14405
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14403
14406
  },
14404
14407
  {
14405
- minX: -33.5,
14406
- maxX: -25.5,
14407
- minY: -21.5,
14408
- maxY: -17.5,
14408
+ minX: -32.2,
14409
+ maxX: -29.6,
14410
+ minY: 19.7,
14411
+ maxY: 26.2,
14409
14412
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14410
14413
  },
14414
+ // Lower-left horizontal and vertical arms.
14411
14415
  {
14412
- minX: -21.5,
14413
- maxX: -13.5,
14414
- minY: 13.5,
14415
- maxY: 17.5,
14416
+ minX: -36.1,
14417
+ maxX: -29.6,
14418
+ minY: -22.3,
14419
+ maxY: -19.7,
14416
14420
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14417
14421
  },
14418
14422
  {
14419
- minX: -21.5,
14420
- maxX: -13.5,
14421
- minY: -17.5,
14422
- maxY: -13.5,
14423
+ minX: -32.2,
14424
+ maxX: -29.6,
14425
+ minY: -26.2,
14426
+ maxY: -19.7,
14423
14427
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14424
14428
  },
14429
+ // Preserve the large central routing field exactly.
14425
14430
  {
14426
14431
  minX: -19,
14427
14432
  maxX: -3,
@@ -14429,18 +14434,27 @@ var ARDUINO_SHIELD_CLAD_VIA_CANDIDATE_ZONES = [
14429
14434
  maxY: 6,
14430
14435
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14431
14436
  },
14437
+ // Upper-right horizontal arm, parallel to the two mounting holes.
14432
14438
  {
14433
- minX: 34.5,
14434
- maxX: 34.5,
14435
- minY: -19.5,
14436
- maxY: -7.5,
14439
+ minX: 30.9,
14440
+ maxX: 36.1,
14441
+ minY: 19.7,
14442
+ maxY: 22.3,
14437
14443
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14438
14444
  },
14445
+ // Lower-right horizontal and vertical arms.
14439
14446
  {
14440
- minX: 34.5,
14441
- maxX: 34.5,
14442
- minY: 7.5,
14443
- maxY: 19.5,
14447
+ minX: 29.6,
14448
+ maxX: 36.1,
14449
+ minY: -22.3,
14450
+ maxY: -19.7,
14451
+ spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14452
+ },
14453
+ {
14454
+ minX: 29.6,
14455
+ maxX: 32.2,
14456
+ minY: -26.2,
14457
+ maxY: -19.7,
14444
14458
  spacing: ARDUINO_SHIELD_CLAD_VIA_SPACING
14445
14459
  }
14446
14460
  ];
@@ -14757,17 +14771,23 @@ var ArduinoShieldClad = ({
14757
14771
  fontSize: "0.6mm"
14758
14772
  }
14759
14773
  ),
14760
- ARDUINO_SHIELD_CLAD_VIA_CANDIDATE_ZONES.map((zone) => /* @__PURE__ */ jsx2(Fragment2, { children: /* @__PURE__ */ jsx2(
14761
- "pcbnoterect",
14774
+ ARDUINO_SHIELD_CLAD_VIA_CANDIDATE_ZONES.map((zone) => /* @__PURE__ */ jsx2(
14775
+ Fragment2,
14762
14776
  {
14763
- color: "blue",
14764
- width: Math.max(0.2, zone.maxX - zone.minX),
14765
- height: Math.max(0.2, zone.maxY - zone.minY),
14766
- pcbPositionAnchor: "center",
14767
- pcbX: zone.minX + (zone.maxX - zone.minX) / 2,
14768
- pcbY: zone.minY + (zone.maxY - zone.minY) / 2
14769
- }
14770
- ) }, `arduino-via-zone-${zone.minX}-${zone.minY}`)),
14777
+ children: /* @__PURE__ */ jsx2(
14778
+ "pcbnoterect",
14779
+ {
14780
+ color: "blue",
14781
+ width: Math.max(0.2, zone.maxX - zone.minX),
14782
+ height: Math.max(0.2, zone.maxY - zone.minY),
14783
+ pcbPositionAnchor: "center",
14784
+ pcbX: zone.minX + (zone.maxX - zone.minX) / 2,
14785
+ pcbY: zone.minY + (zone.maxY - zone.minY) / 2
14786
+ }
14787
+ )
14788
+ },
14789
+ `arduino-via-zone-${zone.minX}-${zone.maxX}-${zone.minY}-${zone.maxY}`
14790
+ )),
14771
14791
  ARDUINO_SHIELD_CLAD_VIA_POSITIONS.map((via) => /* @__PURE__ */ jsx2(Fragment2, { children: /* @__PURE__ */ jsx2(
14772
14792
  "via",
14773
14793
  {
@@ -15450,8 +15470,13 @@ var BREADBOARD_CLAD_VIA_ROW_YS = [
15450
15470
  BREADBOARD_HEADER_PITCH / 2,
15451
15471
  16.51
15452
15472
  ];
15453
- var BREADBOARD_OUTER_VIA_ROW_YS = [-24.13, 24.13];
15454
- var BREADBOARD_OUTER_VIA_COLUMN_XS = [-27.94, 27.94];
15473
+ var BREADBOARD_CORNER_VIA_SPACING = 1.3;
15474
+ var BREADBOARD_CORNER_VIA_ARM_WIDTH = 1.3;
15475
+ var BREADBOARD_CORNER_VIA_X_INNER_OFFSET = 27;
15476
+ var BREADBOARD_CORNER_VIA_X_OUTER_OFFSET = 32.2;
15477
+ var BREADBOARD_CORNER_VIA_Y_INNER_OFFSET = 21;
15478
+ var BREADBOARD_CORNER_VIA_Y_OUTER_OFFSET = 26.2;
15479
+ var BREADBOARD_CORNER_VIA_X_OUTWARD_SHIFT = 3.9;
15455
15480
  var BREADBOARD_MOUNTING_HOLE_DIAMETER = 2.2;
15456
15481
  var BREADBOARD_CLAD_EDGE_CLEARANCE = 0.2;
15457
15482
  var BREADBOARD_CLAD_EDGE_CLEARANCE_VALIDATION_TOLERANCE = 1e-3;
@@ -15469,16 +15494,18 @@ var BREADBOARD_TERMINAL_ROW_LABELS = [
15469
15494
  "J"
15470
15495
  ];
15471
15496
  var roundCoordinate3 = (value) => Math.round(value * 1e6) / 1e6;
15497
+ var createPitchedRange = (start, end) => Array.from(
15498
+ {
15499
+ length: Math.round((end - start) / BREADBOARD_CORNER_VIA_SPACING) + 1
15500
+ },
15501
+ (_, index) => roundCoordinate3(start + index * BREADBOARD_CORNER_VIA_SPACING)
15502
+ );
15472
15503
  var BREADBOARD_COLUMN_XS = Array.from(
15473
15504
  { length: BREADBOARD_COLUMN_COUNT },
15474
15505
  (_, index) => roundCoordinate3(
15475
15506
  (index - (BREADBOARD_COLUMN_COUNT - 1) / 2) * BREADBOARD_HEADER_PITCH
15476
15507
  )
15477
15508
  );
15478
- var BREADBOARD_OUTER_VERTICAL_VIA_YS = Array.from(
15479
- { length: 18 },
15480
- (_, index) => roundCoordinate3(-21.59 + index * BREADBOARD_CLAD_VIA_PITCH)
15481
- );
15482
15509
  var BREADBOARD_TERMINAL_ROW_YS = Object.fromEntries(
15483
15510
  BREADBOARD_TERMINAL_ROW_LABELS.map((label, index) => {
15484
15511
  const bankIndex = index < 5 ? index : index - 5;
@@ -15495,32 +15522,61 @@ var BREADBOARD_TERMINAL_HEADER_POSITIONS = BREADBOARD_TERMINAL_ROW_LABELS.flatMa
15495
15522
  y: BREADBOARD_TERMINAL_ROW_YS[row]
15496
15523
  }))
15497
15524
  );
15498
- var BREADBOARD_POWER_RAILS = [
15499
- { id: "topPositive", label: "+", y: 21.59 },
15500
- { id: "topNegative", label: "-", y: 19.05 },
15501
- { id: "bottomPositive", label: "+", y: -19.05 },
15502
- { id: "bottomNegative", label: "-", y: -21.59 }
15503
- ];
15504
- var BREADBOARD_POWER_HEADER_POSITIONS = BREADBOARD_POWER_RAILS.flatMap(
15505
- (rail) => BREADBOARD_COLUMN_XS.map((x, columnIndex) => ({
15506
- rail: rail.id,
15507
- pin: columnIndex + 1,
15508
- label: `${rail.id}${columnIndex + 1}`,
15509
- column: columnIndex + 1,
15510
- x,
15511
- y: rail.y
15512
- }))
15525
+ var cornerViaAxisX = createPitchedRange(
15526
+ BREADBOARD_CORNER_VIA_X_INNER_OFFSET,
15527
+ BREADBOARD_CORNER_VIA_X_OUTER_OFFSET
15528
+ );
15529
+ var cornerViaAxisY = createPitchedRange(
15530
+ BREADBOARD_CORNER_VIA_Y_INNER_OFFSET,
15531
+ BREADBOARD_CORNER_VIA_Y_OUTER_OFFSET
15532
+ );
15533
+ var cornerViaArmAxisX = createPitchedRange(
15534
+ BREADBOARD_CORNER_VIA_X_INNER_OFFSET,
15535
+ BREADBOARD_CORNER_VIA_X_INNER_OFFSET + BREADBOARD_CORNER_VIA_ARM_WIDTH
15536
+ );
15537
+ var cornerViaArmAxisY = createPitchedRange(
15538
+ BREADBOARD_CORNER_VIA_Y_INNER_OFFSET,
15539
+ BREADBOARD_CORNER_VIA_Y_INNER_OFFSET + BREADBOARD_CORNER_VIA_ARM_WIDTH
15540
+ );
15541
+ var createCornerViaPositions = (xSign, ySign, xOutwardShift = 0) => {
15542
+ const shiftedCornerViaAxisX = cornerViaAxisX.map(
15543
+ (x) => roundCoordinate3(x + xOutwardShift)
15544
+ );
15545
+ const shiftedCornerViaArmAxisX = cornerViaArmAxisX.map(
15546
+ (x) => roundCoordinate3(x + xOutwardShift)
15547
+ );
15548
+ const horizontalArm = shiftedCornerViaAxisX.flatMap(
15549
+ (x) => cornerViaArmAxisY.map((y) => ({ x: x * xSign, y: y * ySign }))
15550
+ );
15551
+ const verticalArm = shiftedCornerViaArmAxisX.flatMap(
15552
+ (x) => cornerViaAxisY.map((y) => ({ x: x * xSign, y: y * ySign }))
15553
+ );
15554
+ return Array.from(
15555
+ new Map(
15556
+ [...horizontalArm, ...verticalArm].map((point) => [
15557
+ `${point.x},${point.y}`,
15558
+ point
15559
+ ])
15560
+ ).values()
15561
+ );
15562
+ };
15563
+ var BREADBOARD_CORNER_VIA_POSITIONS = [
15564
+ [-1, -1],
15565
+ [-1, 1],
15566
+ [1, -1],
15567
+ [1, 1]
15568
+ ].flatMap(
15569
+ ([xSign, ySign]) => createCornerViaPositions(
15570
+ xSign,
15571
+ ySign,
15572
+ xSign === -1 || ySign === -1 ? BREADBOARD_CORNER_VIA_X_OUTWARD_SHIFT : 0
15573
+ )
15513
15574
  );
15514
15575
  var BREADBOARD_CLAD_VIA_POSITIONS = [
15515
15576
  ...BREADBOARD_CLAD_VIA_ROW_YS.flatMap(
15516
15577
  (y) => BREADBOARD_COLUMN_XS.map((x) => ({ x, y }))
15517
15578
  ),
15518
- ...BREADBOARD_OUTER_VIA_ROW_YS.flatMap(
15519
- (y) => BREADBOARD_COLUMN_XS.map((x) => ({ x, y }))
15520
- ),
15521
- ...BREADBOARD_OUTER_VIA_COLUMN_XS.flatMap(
15522
- (x) => BREADBOARD_OUTER_VERTICAL_VIA_YS.map((y) => ({ x, y }))
15523
- )
15579
+ ...BREADBOARD_CORNER_VIA_POSITIONS
15524
15580
  ];
15525
15581
  var terminalPinLabels = Object.fromEntries(
15526
15582
  BREADBOARD_TERMINAL_HEADER_POSITIONS.map((position) => [
@@ -15528,16 +15584,9 @@ var terminalPinLabels = Object.fromEntries(
15528
15584
  [position.label]
15529
15585
  ])
15530
15586
  );
15531
- var powerPinLabels = Object.fromEntries(
15532
- BREADBOARD_COLUMN_XS.map((_, index) => [
15533
- `pin${index + 1}`,
15534
- [`COL${index + 1}`]
15535
- ])
15536
- );
15537
15587
  var terminalPinNames = BREADBOARD_TERMINAL_HEADER_POSITIONS.map(
15538
15588
  (position) => `pin${position.pin}`
15539
15589
  );
15540
- var powerPinNames = BREADBOARD_COLUMN_XS.map((_, index) => `pin${index + 1}`);
15541
15590
  var BreadboardTerminalHeaderFootprint = () => /* @__PURE__ */ jsx4("footprint", { insertionDirection: "from_above", children: BREADBOARD_TERMINAL_HEADER_POSITIONS.map((position) => /* @__PURE__ */ jsx4(Fragment4, { children: position.pin === 1 ? /* @__PURE__ */ jsx4(
15542
15591
  "platedhole",
15543
15592
  {
@@ -15560,26 +15609,6 @@ var BreadboardTerminalHeaderFootprint = () => /* @__PURE__ */ jsx4("footprint",
15560
15609
  pcbY: position.y
15561
15610
  }
15562
15611
  ) }, `terminal-${position.label}`)) });
15563
- var BreadboardPowerHeaderFootprint = () => /* @__PURE__ */ jsx4("footprint", { insertionDirection: "from_above", children: BREADBOARD_COLUMN_XS.map((x, index) => /* @__PURE__ */ jsx4(Fragment4, { children: index === 0 ? /* @__PURE__ */ jsx4(
15564
- "platedhole",
15565
- {
15566
- portHints: [`pin${index + 1}`],
15567
- shape: "circular_hole_with_rect_pad",
15568
- holeDiameter: `${BREADBOARD_HEADER_HOLE_DIAMETER}mm`,
15569
- rectPadWidth: `${BREADBOARD_HEADER_PAD_DIAMETER}mm`,
15570
- rectPadHeight: `${BREADBOARD_HEADER_PAD_DIAMETER}mm`,
15571
- pcbX: x
15572
- }
15573
- ) : /* @__PURE__ */ jsx4(
15574
- "platedhole",
15575
- {
15576
- portHints: [`pin${index + 1}`],
15577
- shape: "circle",
15578
- holeDiameter: `${BREADBOARD_HEADER_HOLE_DIAMETER}mm`,
15579
- outerDiameter: `${BREADBOARD_HEADER_PAD_DIAMETER}mm`,
15580
- pcbX: x
15581
- }
15582
- ) }, `power-pin-${index + 1}`)) });
15583
15612
  var BreadboardTerminalHeaders = (props) => /* @__PURE__ */ jsx4(
15584
15613
  "connector",
15585
15614
  {
@@ -15590,20 +15619,6 @@ var BreadboardTerminalHeaders = (props) => /* @__PURE__ */ jsx4(
15590
15619
  ...props
15591
15620
  }
15592
15621
  );
15593
- var BreadboardPowerHeader = ({
15594
- rail,
15595
- ...props
15596
- }) => /* @__PURE__ */ jsx4(
15597
- "connector",
15598
- {
15599
- pinLabels: powerPinLabels,
15600
- manufacturerPartNumber: "GENERIC-BREADBOARD-1X21-FEMALE-2.54MM",
15601
- footprint: /* @__PURE__ */ jsx4(BreadboardPowerHeaderFootprint, {}),
15602
- noSchematicRepresentation: true,
15603
- pcbY: BREADBOARD_POWER_RAILS.find((candidate) => candidate.id === rail).y,
15604
- ...props
15605
- }
15606
- );
15607
15622
  var BreadboardClad = ({
15608
15623
  children,
15609
15624
  autorouter,
@@ -15652,14 +15667,6 @@ var BreadboardClad = ({
15652
15667
  noConnect: headerNoConnects?.terminals ?? (markHeadersNoConnect ? terminalPinNames : void 0)
15653
15668
  }
15654
15669
  ),
15655
- BREADBOARD_POWER_RAILS.map((rail) => /* @__PURE__ */ jsx4(Fragment4, { children: /* @__PURE__ */ jsx4(
15656
- BreadboardPowerHeader,
15657
- {
15658
- rail: rail.id,
15659
- name: `J_${rail.id.replace(/([A-Z])/g, "_$1").toUpperCase()}`,
15660
- noConnect: headerNoConnects?.[rail.id] ?? (markHeadersNoConnect ? powerPinNames : void 0)
15661
- }
15662
- ) }, rail.id)),
15663
15670
  [1, 5, 10, 15, 20, BREADBOARD_COLUMN_COUNT].map((column) => /* @__PURE__ */ jsx4(Fragment4, { children: /* @__PURE__ */ jsx4(
15664
15671
  "silkscreentext",
15665
15672
  {
@@ -16360,15 +16367,18 @@ export {
16360
16367
  BREADBOARD_CLAD_WIDTH,
16361
16368
  BREADBOARD_COLUMN_COUNT,
16362
16369
  BREADBOARD_COLUMN_XS,
16370
+ BREADBOARD_CORNER_VIA_ARM_WIDTH,
16371
+ BREADBOARD_CORNER_VIA_POSITIONS,
16372
+ BREADBOARD_CORNER_VIA_SPACING,
16373
+ BREADBOARD_CORNER_VIA_X_INNER_OFFSET,
16374
+ BREADBOARD_CORNER_VIA_X_OUTER_OFFSET,
16375
+ BREADBOARD_CORNER_VIA_X_OUTWARD_SHIFT,
16376
+ BREADBOARD_CORNER_VIA_Y_INNER_OFFSET,
16377
+ BREADBOARD_CORNER_VIA_Y_OUTER_OFFSET,
16363
16378
  BREADBOARD_HEADER_HOLE_DIAMETER,
16364
16379
  BREADBOARD_HEADER_PAD_DIAMETER,
16365
16380
  BREADBOARD_HEADER_PITCH,
16366
16381
  BREADBOARD_MOUNTING_HOLE_DIAMETER,
16367
- BREADBOARD_OUTER_VERTICAL_VIA_YS,
16368
- BREADBOARD_OUTER_VIA_COLUMN_XS,
16369
- BREADBOARD_OUTER_VIA_ROW_YS,
16370
- BREADBOARD_POWER_HEADER_POSITIONS,
16371
- BREADBOARD_POWER_RAILS,
16372
16382
  BREADBOARD_TERMINAL_HEADER_POSITIONS,
16373
16383
  BREADBOARD_TERMINAL_ROW_LABELS,
16374
16384
  BREADBOARD_TERMINAL_ROW_YS,
@@ -16378,7 +16388,6 @@ export {
16378
16388
  BoosterPackLeftHeader,
16379
16389
  BoosterPackRightHeader,
16380
16390
  BreadboardClad,
16381
- BreadboardPowerHeader,
16382
16391
  BreadboardTerminalHeaders,
16383
16392
  CLAD_40X40_EDGE_MOUNTING_HOLE_INSET,
16384
16393
  CLAD_40X40_HEIGHT,