Devesh36/facet-four
FACET Four: a USB-C macro controller with four angled keys, a volume encoder, blue LEDs, an OLED and a fitted enclosure. Includes assembled, exploded and routed PCB views. Hardware prototype; firmware required.
- Version
- 0.1.3
- License
- unset
- Stars
- 0
dist/index.js
import { jsx, jsxs } from 'react/jsx-runtime';
import { jscad, assembly } from 'tscircuit';
import { renderToJscadPlan } from 'jscad-fiber/headless';
import { Fragment } from 'react';
const pinLabels$3 = {
pin1: ["GP0"],
pin2: ["GP1"],
pin3: ["GP2"],
pin4: ["GP3"],
pin5: ["GP4"],
pin6: ["GP5"],
pin7: ["GP6"],
pin8: ["GP7"],
pin9: ["GP8"],
pin10: ["GP9"],
pin11: ["GP10"],
pin12: ["GP11"],
pin13: ["GP12"],
pin14: ["GP13"],
pin15: ["GP14"],
pin16: ["GP15"],
pin17: ["GP26"],
pin18: ["GP27"],
pin19: ["GP28"],
pin20: ["GP29"],
pin21: ["3V3"],
pin22: ["GND"],
pin23: ["5V"],
pin24: ["pin24"],
pin25: ["pin25"],
pin26: ["pin26"],
pin27: ["pin27"],
pin28: ["pin28"],
pin29: ["pin29"],
pin30: ["pin30"],
pin31: ["pin31"],
pin32: ["pin32"],
pin33: ["pin33"]
};
const pinAttributes = {
pin22: { requiresGround: true }
};
const RP2040_Zero = (props) => {
return (jsx("chip", { pinLabels: pinLabels$3, pinAttributes: pinAttributes, supplierPartNumbers: {
"jlcpcb": [
"C5350143"
]
}, manufacturerPartNumber: "RP2040-Zero", footprint: jsxs("footprint", { children: [jsx("cutout", { shape: "polygon", points: [{ "x": -5.399989199999936, "y": 11.92866550000008 }, { "x": -5.399989199999936, "y": -9.771341899999811 }, { "x": 6.999909800000069, "y": -9.771341899999811 }, { "x": 6.999909800000069, "y": 11.92866550000008 }, { "x": -5.399989199999936, "y": 11.92866550000008 }] }), jsx("smtpad", { portHints: ["pin1"], pcbX: "8.499983mm", pcbY: "10.4812465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2"], pcbX: "8.499983mm", pcbY: "7.9412465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin3"], pcbX: "8.499983mm", pcbY: "5.4012465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin4"], pcbX: "8.499983mm", pcbY: "2.8612465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin5"], pcbX: "8.499983mm", pcbY: "0.3212465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin6"], pcbX: "8.499983mm", pcbY: "-2.2187535mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin7"], pcbX: "8.499983mm", pcbY: "-4.7587535mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin8"], pcbX: "8.499983mm", pcbY: "-7.2987535mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin9"], pcbX: "8.499983mm", pcbY: "-9.8387535mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin10"], pcbX: "5.079873mm", pcbY: "-10.9286675mm", width: "1.1999976mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin11"], pcbX: "2.539873mm", pcbY: "-10.9286675mm", width: "1.1999976mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin12"], pcbX: "-0.000127mm", pcbY: "-10.9286675mm", width: "1.1999976mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin13"], pcbX: "-2.540127mm", pcbY: "-10.9286675mm", width: "1.1999976mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin14"], pcbX: "-5.080127mm", pcbY: "-10.9286675mm", width: "1.1999976mm", height: "1.999996mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin15"], pcbX: "-8.499983mm", pcbY: "-9.8387535mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin16"], pcbX: "-8.499983mm", pcbY: "-7.2987535mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin17"], pcbX: "-8.499983mm", pcbY: "-4.7587535mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin18"], pcbX: "-8.499983mm", pcbY: "-2.2187535mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin19"], pcbX: "-8.499983mm", pcbY: "0.3212465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin20"], pcbX: "-8.499983mm", pcbY: "2.8612465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin21"], pcbX: "-8.499983mm", pcbY: "5.4012465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin22"], pcbX: "-8.499983mm", pcbY: "7.9412465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin23"], pcbX: "-8.499983mm", pcbY: "10.4812465mm", width: "1.999996mm", height: "1.1999976mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin24"], pcbX: "-5.9899804mm", pcbY: "-6.3387097mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin25"], pcbX: "-5.9899804mm", pcbY: "-5.0687097mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin26"], pcbX: "-5.9899804mm", pcbY: "-3.7987097mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin27"], pcbX: "-5.9899804mm", pcbY: "-2.5287097mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin28"], pcbX: "-5.9899804mm", pcbY: "-1.2587097mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin29"], pcbX: "-5.9899804mm", pcbY: "0.0112649mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin30"], pcbX: "-5.9899804mm", pcbY: "1.2812649mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin31"], pcbX: "-5.9899804mm", pcbY: "2.5512649mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin32"], pcbX: "-5.9899804mm", pcbY: "3.8212649mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin33"], pcbX: "-5.9899804mm", pcbY: "5.0912649mm", width: "1.0100056mm", height: "0.6100064mm", shape: "rect" }), jsx("silkscreenpath", { route: [{ "x": 4.481322000000091, "y": 12.07621410000013 }, { "x": 4.481322000000091, "y": 13.576211100000137 }, { "x": -4.47974720000002, "y": 13.576211100000137 }] }), jsx("silkscreenpath", { route: [{ "x": -4.47974720000002, "y": 12.07621410000013 }, { "x": -4.47974720000002, "y": 13.576211100000137 }] }), jsx("silkscreenpath", { route: [{ "x": -5.911240399999997, "y": -11.423738899999876 }, { "x": -9.000058200000012, "y": -11.423738899999876 }] }), jsx("silkscreenpath", { route: [{ "x": -3.3712404000000333, "y": -11.423738899999876 }, { "x": -4.248962799999958, "y": -11.423738899999876 }] }), jsx("silkscreenpath", { route: [{ "x": -0.831240399999956, "y": -11.423738899999876 }, { "x": -1.708962799999881, "y": -11.423738899999876 }] }), jsx("silkscreenpath", { route: [{ "x": 1.7087342000000945, "y": -11.423738899999876 }, { "x": 0.8310372000000825, "y": -11.423738899999876 }] }), jsx("silkscreenpath", { route: [{ "x": 4.248734200000172, "y": -11.423738899999876 }, { "x": 3.371011800000133, "y": -11.423738899999876 }] }), jsx("silkscreenpath", { route: [{ "x": 8.999905800000079, "y": -10.669866899999874 }, { "x": 8.999905800000079, "y": -11.423738899999876 }, { "x": 5.911011799999983, "y": -11.423738899999876 }] }), jsx("silkscreenpath", { route: [{ "x": 8.999905800000079, "y": -8.129892299999824 }, { "x": 8.999905800000079, "y": -9.007589299999722 }] }), jsx("silkscreenpath", { route: [{ "x": 8.999905800000079, "y": -5.589892299999747 }, { "x": 8.999905800000079, "y": -6.467614699999899 }] }), jsx("silkscreenpath", { route: [{ "x": 8.999905800000079, "y": -3.0498922999998967 }, { "x": 8.999905800000079, "y": -3.9276146999999355 }] }), jsx("silkscreenpath", { route: [{ "x": 8.999905800000079, "y": -0.5098922999998194 }, { "x": 8.999905800000079, "y": -1.3876146999998582 }] }), jsx("silkscreenpath", { route: [{ "x": 8.999905800000079, "y": 2.030107700000258 }, { "x": 8.999905800000079, "y": 1.152385300000219 }] }), jsx("silkscreenpath", { route: [{ "x": 8.999905800000079, "y": 4.570082300000195 }, { "x": 8.999905800000079, "y": 3.692385300000069 }] }), jsx("silkscreenpath", { route: [{ "x": 8.999905800000079, "y": 7.110082300000045 }, { "x": 8.999905800000079, "y": 6.2323599000001195 }] }), jsx("silkscreenpath", { route: [{ "x": 8.999905800000079, "y": 9.650082300000122 }, { "x": 8.999905800000079, "y": 8.772359900000197 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": 11.312385300000074 }, { "x": -9.000058200000012, "y": 12.07621410000013 }, { "x": 8.999905800000079, "y": 12.07621410000013 }, { "x": 8.999905800000079, "y": 11.312359900000274 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": 8.77238530000011 }, { "x": -9.000058200000012, "y": 9.650107700000262 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": 6.232385300000146 }, { "x": -9.000058200000012, "y": 7.110107700000185 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": 3.6924107000002095 }, { "x": -9.000058200000012, "y": 4.570107700000108 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": 1.1524107000001322 }, { "x": -9.000058200000012, "y": 2.0301331000000573 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": -1.3875892999998314 }, { "x": -9.000058200000012, "y": -0.5098668999997926 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": -3.927589299999795 }, { "x": -9.000058200000012, "y": -3.04986689999987 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": -6.467589299999872 }, { "x": -9.000058200000012, "y": -5.589866899999947 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": -9.007563899999923 }, { "x": -9.000058200000012, "y": -8.12986689999991 }] }), jsx("silkscreenpath", { route: [{ "x": -9.000058200000012, "y": -11.423738899999876 }, { "x": -9.000058200000012, "y": -10.669841499999734 }] }), jsx("silkscreentext", { text: "{NAME}", pcbX: "-0.000127mm", pcbY: "14.6054465mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("fabricationnotepath", { route: [{ "x": -4.400067400000012, "y": 12.07621410000013 }, { "x": -4.400067400000012, "y": 13.576211100000137 }, { "x": 4.3999149999999645, "y": 13.576211100000137 }, { "x": 4.3999149999999645, "y": 12.07621410000013 }, { "x": -4.400067400000012, "y": 12.07621410000013 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("courtyardoutline", { outline: [{ "x": -9.749727000000007, "y": 13.855446500000312 }, { "x": 9.74947300000008, "y": 13.855446500000312 }, { "x": 9.74947300000008, "y": -12.171553499999732 }, { "x": -9.749727000000007, "y": -12.171553499999732 }, { "x": -9.749727000000007, "y": 13.855446500000312 }] })] }), ...props }));
};
const pinLabels$2 = {
pin1: ["pin1"],
pin2: ["pin2"],
pin3: ["pin3"],
pin4: ["pin4"]
};
const KH_6X6X5H_STM = (props) => {
const { name = "SW1", ...restProps } = props;
return (jsx("pushbutton", { name: name, pinLabels: pinLabels$2, supplierPartNumbers: {
"jlcpcb": [
"C2837531"
]
}, manufacturerPartNumber: "KH-6X6X5H-STM", footprint: "smdpushbutton4_px9.1mm_py4.5mm_pw2.3mm_ph1.5mm", cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2837531.obj?uuid=0a2a6eed7e284a95867695201df5c190",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C2837531.step?uuid=0a2a6eed7e284a95867695201df5c190",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0, y: 0.0004999999999999449, z: -0.5 },
}, ...restProps }));
};
const pinLabels$1 = {
pin1: ["A"],
pin2: ["C"],
pin3: ["B"],
pin4: ["pin4"],
pin5: ["pin5"],
pin7: ["pin7"],
pin8: ["pin8"]
};
const PEC11R_4020F_S0024 = (props) => {
return (jsx("pinout", { pinLabels: pinLabels$1,
// Electromechanical terminals, not an IC with VCC/GND supply pins.
pinAttributes: Object.fromEntries(Object.keys(pinLabels$1).map(pin => [pin, { isPassive: true }])), supplierPartNumbers: {
"jlcpcb": [
"C143788"
]
}, manufacturerPartNumber: "PEC11R-4020F-S0024", footprint: jsxs("footprint", { children: [jsx("platedhole", { portHints: ["pin4"], pcbX: "-2.499995mm", pcbY: "7.249922mm", outerDiameter: "1.7999964mm", holeDiameter: "1.1999976mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin5"], pcbX: "2.499995mm", pcbY: "7.249922mm", outerDiameter: "1.7999964mm", holeDiameter: "1.1999976mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin1"], pcbX: "-2.499995mm", pcbY: "-7.249922mm", outerDiameter: "1.7999964mm", holeDiameter: "1.1999976mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin2"], pcbX: "-0.000127mm", pcbY: "-7.249922mm", outerDiameter: "1.7999964mm", holeDiameter: "1.1999976mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin3"], pcbX: "2.499995mm", pcbY: "-7.249922mm", outerDiameter: "1.7999964mm", holeDiameter: "1.1999976mm", shape: "circle" }), jsx("platedhole", { portHints: ["pin7"], pcbX: "-5.700141mm", pcbY: "0.249936mm", holeWidth: "1.3999972mm", holeHeight: "2.7999944mm", outerWidth: "2.3999952mm", outerHeight: "3.7999924mm", shape: "pill" }), jsx("platedhole", { portHints: ["pin8"], pcbX: "5.699887mm", pcbY: "0.249936mm", holeWidth: "1.3999972mm", holeHeight: "2.7999944mm", outerWidth: "2.3999952mm", outerHeight: "3.7999924mm", shape: "pill" }), jsx("silkscreenpath", { route: [{ "x": 1.269873000000075, "y": -1.0200386000000208 }, { "x": -1.2701269999997749, "y": -1.0200386000000208 }] }), jsx("silkscreenpath", { route: [{ "x": 1.269873000000075, "y": -1.0200386000000208 }, { "x": 1.4331547052285032, "y": -0.8324007817582242 }, { "x": 1.56894719643617, "y": -0.6240038877592724 }, { "x": 1.674646080614366, "y": -0.39884480626278673 }, { "x": 1.748224136429826, "y": -0.1612419110799692 }, { "x": 1.7882701947341957, "y": 0.08424776143419876 }, { "x": 1.7940162036759375, "y": 0.3329159127483763 }, { "x": 1.7653519593302462, "y": 0.5799932836121116 }, { "x": 1.702827219322785, "y": 0.8207411246903575 }, { "x": 1.6076411589122017, "y": 1.0505420820433073 }, { "x": 1.4816193717535953, "y": 1.2649887543377645 }, { "x": 1.327178856449109, "y": 1.4599682233319982 }, { "x": 1.1472816604197078, "y": 1.6317409364082778 }, { "x": 0.9453780701689993, "y": 1.7770124282458255 }, { "x": 0.72534043750602, "y": 1.8929965060708582 }, { "x": 0.491388910887963, "y": 1.9774686866386446 }, { "x": 0.24801049629684258, "y": 2.028808860069603 }, { "x": -12699999979304266e-20, "y": 2.046032362281494 }, { "x": -0.24826449629642866, "y": 2.028808860069603 }, { "x": -0.49164291088777645, "y": 1.9774686866386446 }, { "x": -0.7255944375058334, "y": 1.8929965060708582 }, { "x": -0.9456320701688128, "y": 1.7770124282458255 }, { "x": -1.147535660419294, "y": 1.6317409364082778 }, { "x": -1.327432856448695, "y": 1.4599682233319982 }, { "x": -1.481873371753295, "y": 1.2649887543377645 }, { "x": -1.6078951589120152, "y": 1.0505420820433073 }, { "x": -1.703081219322371, "y": 0.8207411246903575 }, { "x": -1.765605959329946, "y": 0.5799932836121116 }, { "x": -1.794270203675751, "y": 0.3329159127483763 }, { "x": -1.7885241947338955, "y": 0.08424776143419876 }, { "x": -1.7484781364294122, "y": -0.1612419110799692 }, { "x": -1.6749000806140657, "y": -0.39884480626278673 }, { "x": -1.5692011964358699, "y": -0.6240038877592724 }, { "x": -1.433408705228203, "y": -0.8324007817582242 }, { "x": -1.2701269999997749, "y": -1.0200386000000208 }] }), jsx("silkscreencircle", { pcbX: "-0.000127mm", pcbY: "0.249936mm", radius: "2.999994mm" }), jsx("silkscreenrect", { pcbX: "0mm", pcbY: "0.249936mm", width: "12.500102mm", height: "13.400024mm", strokeWidth: "0.254mm" }), jsx("silkscreentext", { text: "{NAME}", pcbX: "-0.025527mm", pcbY: "9.210042mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("courtyardoutline", { outline: [{ "x": -7.15013859999965, "y": 8.399920199999997 }, { "x": 7.149884600000064, "y": 8.399920199999997 }, { "x": 7.149884600000064, "y": -8.399920199999997 }, { "x": -7.15013859999965, "y": -8.399920199999997 }, { "x": -7.15013859999965, "y": 8.399920199999997 }] })] }), cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C143788.obj?uuid=fbc634f30cce46f0b7c3bdcee1371719",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C143788.step?uuid=fbc634f30cce46f0b7c3bdcee1371719",
pcbRotationOffset: 0,
modelOriginPosition: { x: 0.00012699999979304266, y: -0.25001270000007025, z: -5.600007199999999 },
}, ...props }));
};
const pinLabels = {
pin1: ["cathode", "neg"],
pin2: ["anode", "pos"]
};
const XL_1608UBC_04 = (props) => {
const { name = "LED1", ...restProps } = props;
return (jsx("led", { name: name, pinLabels: pinLabels, supplierPartNumbers: {
"jlcpcb": [
"C965807"
]
}, manufacturerPartNumber: "XL-1608UBC-04", footprint: jsxs("footprint", { children: [jsx("smtpad", { portHints: ["pin1", "cathode", "neg"], pcbX: "-0.7489952mm", pcbY: "-0.003556mm", width: "0.7999984mm", height: "0.7999984mm", shape: "rect" }), jsx("smtpad", { portHints: ["pin2", "anode", "pos"], pcbX: "0.7489952mm", pcbY: "0.003556mm", width: "0.7999984mm", height: "0.7999984mm", shape: "rect" }), jsx("silkscreenpath", { route: [{ "x": 0.2204212000000325, "y": -0.32346899999993184 }, { "x": 0.210464399999978, "y": -0.32346899999993184 }, { "x": -0.11958319999996547, "y": 0.006578600000011647 }] }), jsx("silkscreenpath", { route: [{ "x": 0.2204212000000325, "y": 0.35656519999997727 }, { "x": 0.2204212000000325, "y": 0.34658300000000963 }, { "x": -0.11958319999996547, "y": 0.006578600000011647 }] }), jsx("silkscreenpath", { route: [{ "x": 0.2204212000000325, "y": 0.35656519999997727 }, { "x": 0.2204212000000325, "y": -0.32346899999993184 }] }), jsx("silkscreenpath", { route: [{ "x": 0.24046180000004824, "y": 0.7566405999999688 }, { "x": 1.3904721999999765, "y": 0.7566405999999688 }] }), jsx("silkscreenpath", { route: [{ "x": 0.24046180000004824, "y": -0.7434834000000592 }, { "x": 1.3904721999999765, "y": -0.7434834000000592 }] }), jsx("silkscreenpath", { route: [{ "x": 1.3904721999999765, "y": 0.7565390000000889 }, { "x": 1.3904721999999765, "y": -0.7233919999999898 }] }), jsx("silkscreenpath", { route: [{ "x": -0.1395476000001281, "y": -0.7457948000001124 }, { "x": -1.1896597999998448, "y": -0.7457948000001124 }] }), jsx("silkscreenpath", { route: [{ "x": -1.4896084000000656, "y": -0.3457194000000072 }, { "x": -1.4896084000000656, "y": -0.4457446000001255 }, { "x": -1.1896597999998448, "y": -0.7457948000001124 }] }), jsx("silkscreenpath", { route: [{ "x": -1.4896084000000656, "y": 0.3542284000000109 }, { "x": -1.4896084000000656, "y": -0.3457194000000072 }] }), jsx("silkscreenpath", { route: [{ "x": -1.4896084000000656, "y": 0.3542284000000109 }, { "x": -1.4896084000000656, "y": 0.4543805999999222 }, { "x": -1.1896597999998448, "y": 0.7543292000000292 }] }), jsx("silkscreenpath", { route: [{ "x": -0.1395476000001281, "y": 0.7543292000000292 }, { "x": -1.1896597999998448, "y": 0.7543292000000292 }] }), jsx("silkscreenpath", { route: [{ "x": 0.2204212000000325, "y": 0.006578600000011647 }, { "x": -0.11958319999996547, "y": 0.006578600000011647 }] }), jsx("silkscreentext", { text: "{NAME}", pcbX: "-0.0543052mm", pcbY: "1.761238mm", anchorAlignment: "center", fontSize: "1mm" }), jsx("fabricationnotepath", { route: [{ "x": 0.5289295999999695, "y": 0.06842760000006365 }, { "x": 1.0689336000000367, "y": 0.06842760000006365 }, { "x": 1.0689336000000367, "y": -0.06156959999998435 }, { "x": 0.5289295999999695, "y": -0.06156959999998435 }, { "x": 0.5289295999999695, "y": 0.06842760000006365 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": 0.7345679999999675, "y": -0.267030200000022 }, { "x": 0.7345679999999675, "y": 0.27297380000004523 }, { "x": 0.8645398000001023, "y": 0.27297380000004523 }, { "x": 0.8645398000001023, "y": -0.267030200000022 }, { "x": 0.7345679999999675, "y": -0.267030200000022 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("fabricationnotepath", { route: [{ "x": -1.0700003999999126, "y": 0.06156959999998435 }, { "x": -0.5299964000000728, "y": 0.06156959999998435 }, { "x": -0.5299964000000728, "y": -0.06842759999994996 }, { "x": -1.0700003999999126, "y": -0.06842759999994996 }, { "x": -1.0700003999999126, "y": 0.06156959999998435 }], strokeWidth: "0mm", isFilled: true, hasStroke: false }), jsx("courtyardoutline", { outline: [{ "x": -1.3989943999999923, "y": 0.6535551999999143 }, { "x": 1.3989943999999923, "y": 0.6535551999999143 }, { "x": 1.3989943999999923, "y": -0.6535551999999143 }, { "x": -1.3989943999999923, "y": -0.6535551999999143 }, { "x": -1.3989943999999923, "y": 0.6535551999999143 }] })] }), cadModel: {
objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C965807.obj?uuid=bfb81b195f37496bb30ade8d51870f96",
stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C965807.step?uuid=bfb81b195f37496bb30ade8d51870f96",
pcbRotationOffset: 0,
modelOriginPosition: { x: -12700000070253736e-21, y: -5080000005364127e-20, z: -0.01 },
}, ...restProps }));
};
const keys = [
{ x: -24, y: 4, angle: 15 }, { x: -4, y: 4, angle: -15 },
{ x: -24, y: -16, angle: 45 }, { x: -4, y: -16, angle: -45 },
];
const mounts = [[-36, -28], [-36, 28], [36, -28], [36, 28]];
const leds = keys.map(k => ({ x: k.x, y: k.y - 9, angle: k.angle }));
const loc = (x, y, sx, sy, s) => ({ pcbX: x, pcbY: y, schX: sx, schY: sy, schSheetName: s, schSectionName: s });
const nets = {
GND: ['U1.pin22', 'TP2.pin1', 'C1.pin2', 'C2.pin2', 'ENC1.pin2', 'ENC1.pin5', 'ENC1.pin7', 'ENC1.pin8'],
V3V3: ['U1.pin21', 'TP1.pin1', 'C1.pin1', 'C2.pin1', 'RSDA.pin1', 'RSCL.pin1', 'REA.pin1', 'REB.pin1', 'REP.pin1'],
SDA: ['U1.pin1', 'TP3.pin1', 'RSDA.pin2'], SCL: ['U1.pin2', 'TP4.pin1', 'RSCL.pin2'],
ENCODER_A: ['U1.pin7', 'ENC1.pin1', 'REA.pin2'], ENCODER_B: ['U1.pin8', 'ENC1.pin3', 'REB.pin2'], ENCODER_PUSH_N: ['U1.pin9', 'ENC1.pin4', 'REP.pin2'],
};
for (let i = 1; i <= 4; i++) {
nets.GND.push(`SW${i}.pin3`, `SW${i}.pin4`, `LED${i}.pin1`);
nets.V3V3.push(`RK${i}.pin1`);
nets[`KEY${i}_N`] = [`U1.pin${i + 2}`, `RK${i}.pin2`, `SW${i}.pin1`, `SW${i}.pin2`];
nets[`LED${i}_GPIO`] = [`U1.pin${i + 9}`, `RL${i}.pin1`];
nets[`LED${i}_A`] = [`RL${i}.pin2`, `LED${i}.pin2`];
}
const unused = ['pin14', 'pin15', 'pin16', 'pin17', 'pin18', 'pin19', 'pin20', 'pin23', 'pin24', 'pin25', 'pin26', 'pin27', 'pin28', 'pin29', 'pin30', 'pin31', 'pin32', 'pin33'];
function FacetBoard() {
return jsxs("board", { width: 80, height: 64, thickness: 1.6, layers: 4, title: "FACET Four \u2022 USB macro controller", solderMaskColor: "blue", schTraceAutoLabelEnabled: true, autorouter: { local: true, traceClearance: 0.18 }, minTraceWidth: 0.2, minViaHoleDiameter: 0.3, minViaPadDiameter: 0.6, minBoardEdgeClearance: 0.3, children: [['controller', 'keys', 'encoder'].map(s => jsx(Fragment, { children: jsx("schematicsheet", { name: s, displayName: { controller: 'Native USB controller / OLED / 3.3 V', keys: 'Four macro keys / blue indicators', encoder: 'Volume encoder / push switch' }[s], children: jsx("schematicsection", { name: s }) }) }, s)), jsx(RP2040_Zero, { name: "U1", layer: "bottom", pcbRotation: 180, ...loc(24, -17, -1, 0, 'controller'), schWidth: 4, schHeight: 4.5, noConnect: unused }), [1, 2, 3, 4].map(i => jsx("testpoint", { name: `TP${i}`, doNotPlace: true, footprintVariant: "pad", padDiameter: 1.8, ...loc(-20 + i * 3, 16, 5 + i * 2, 5, 'controller') }, i)), jsx("capacitor", { name: "C1", capacitance: "100nF", footprint: "0603", manufacturerPartNumber: "CL10B104KB8NNNC", ...loc(11, -24, 8, -3, 'controller') }), jsx("capacitor", { name: "C2", capacitance: "1uF", footprint: "0603", manufacturerPartNumber: "CL10A105KB8NNNC", ...loc(11, -20, 11, -3, 'controller') }), jsx("resistor", { name: "RSDA", resistance: "4.7k", footprint: "0603", manufacturerPartNumber: "RC0603FR-074K7L", ...loc(-8, 19, 8, 0, 'controller') }), jsx("resistor", { name: "RSCL", resistance: "4.7k", footprint: "0603", manufacturerPartNumber: "RC0603FR-074K7L", ...loc(-15, 19, 11, 0, 'controller') }), keys.map((k, i) => jsxs(Fragment, { children: [jsx(KH_6X6X5H_STM, { name: `SW${i + 1}`, pcbRotation: k.angle, internallyConnectedPins: [["pin1", "pin2"], ["pin3", "pin4"]], ...loc(k.x, k.y, -9 + i * 6, 0, 'keys') }), jsx("resistor", { name: `RK${i + 1}`, resistance: "10k", footprint: "0603", manufacturerPartNumber: "RC0603FR-0710KL", ...loc(k.x + 7, k.y - 5, -9 + i * 6, 4, 'keys') }), jsx(XL_1608UBC_04, { name: `LED${i + 1}`, pcbRotation: k.angle, ...loc(leds[i].x, leds[i].y, -9 + i * 6, -5, 'keys') }), jsx("resistor", { name: `RL${i + 1}`, resistance: "1k", footprint: "0603", manufacturerPartNumber: "RC0603FR-071KL", ...loc(k.x + 4, k.y - 10, -9 + i * 6, -9, 'keys') }), jsx("silkscreentext", { text: `KEY ${i + 1}`, pcbX: k.x, pcbY: k.y + 7, fontSize: 0.8 })] }, i)), jsx(PEC11R_4020F_S0024, { name: "ENC1", pcbRotation: 45, ...loc(24, 12, 0, 0, 'encoder'), schWidth: 4, schHeight: 5 }), ['REA', 'REB', 'REP'].map((name, i) => jsx("resistor", { name: name, resistance: "10k", footprint: "0603", manufacturerPartNumber: "RC0603FR-0710KL", ...loc(12 + i * 5, 27, -5 + i * 5, 6, 'encoder') }, name)), mounts.map(([x, y]) => jsx(Fragment, { children: jsx("hole", { diameter: 2.2, pcbX: x, pcbY: y }) }, `${x},${y}`)), jsx("silkscreentext", { text: "FACET FOUR", pcbX: 3, pcbY: 30, fontSize: 1.1 }), jsx("silkscreentext", { text: "USB-C / DATA + 5V", pcbX: 24, pcbY: -30, fontSize: 0.65 }), jsx("silkscreentext", { text: "V G SDA SCL", pcbX: -12.5, pcbY: 14, fontSize: 0.7 }), jsx("silkscreentext", { text: "VOLUME / PUSH", pcbX: 24, pcbY: -1, fontSize: 0.65 }), Object.entries(nets).map(([name, pins]) => jsxs(Fragment, { children: [jsx("net", { name: name, isGroundNet: name === 'GND', isPowerNet: name === 'V3V3', nominalTraceWidth: name === 'GND' || name === 'V3V3' ? 0.3 : 0.2 }), pins.map(pin => jsx("trace", { from: `.${pin.split('.')[0]} > .${pin.split('.')[1]}`, to: `net.${name}` }, pin))] }, name))] });
}
// Lowercase wordmark outlines from Noto Sans Regular (SIL Open Font License).
// Coordinates in millimetres; no runtime font or network dependency.
const wordmarkContours = [[[-5.5744, -7.7826], [-5.6061, -7.7813], [-5.6363, -7.7775], [-5.6651, -7.771], [-5.6923, -7.762], [-5.7181, -7.7504], [-5.7424, -7.7363], [-5.7652, -7.7196], [-5.7865, -7.7002], [-5.8059, -7.6782], [-5.8226, -7.6535], [-5.8367, -7.6259], [-5.8483, -7.5955], [-5.8573, -7.5623], [-5.8638, -7.5264], [-5.8676, -7.4876], [-5.8689, -7.4461], [-5.8689, -6.3592], [-5.3255, -6.3592], [-5.3255, -6.1208], [-5.8689, -6.1208], [-5.8689, -5.6896], [-6.0512, -5.6896], [-6.1739, -6.0893], [-6.4439, -6.212], [-6.4439, -6.3592], [-6.1775, -6.3592], [-6.1775, -7.4531], [-6.1762, -7.5085], [-6.1726, -7.5607], [-6.1666, -7.6097], [-6.1582, -7.6555], [-6.1473, -7.6982], [-6.1341, -7.7377], [-6.1184, -7.774], [-6.1003, -7.8072], [-6.0803, -7.8375], [-6.0588, -7.8656], [-6.0358, -7.8912], [-6.0114, -7.9145], [-5.9854, -7.9355], [-5.958, -7.9541], [-5.9291, -7.9703], [-5.8987, -7.9842], [-5.8673, -7.9961], [-5.8351, -8.0065], [-5.8022, -8.0152], [-5.7686, -8.0224], [-5.7343, -8.0279], [-5.6992, -8.0319], [-5.6635, -8.0343], [-5.627, -8.0351], [-5.6059, -8.0348], [-5.5845, -8.0341], [-5.5629, -8.0328], [-5.5411, -8.0311], [-5.5191, -8.0289], [-5.4969, -8.0262], [-5.4744, -8.023], [-5.4517, -8.0193], [-5.4296, -8.0152], [-5.4088, -8.0108], [-5.3893, -8.0062], [-5.3711, -8.0013], [-5.3542, -7.9961], [-5.3387, -7.9907], [-5.3244, -7.985], [-5.3115, -7.979], [-5.3115, -7.7441], [-5.3233, -7.7475], [-5.336, -7.751], [-5.3496, -7.7543], [-5.3641, -7.7577], [-5.3794, -7.7609], [-5.3956, -7.7641], [-5.4127, -7.7673], [-5.4307, -7.7704], [-5.449, -7.7732], [-5.4673, -7.7757], [-5.4854, -7.7778], [-5.5034, -7.7796], [-5.5214, -7.7809], [-5.5392, -7.7819], [-5.5568, -7.7824], [-5.5744, -7.7826]], [[-3.7128, -7.4811], [-3.7138, -7.4442], [-3.7169, -7.4089], [-3.7222, -7.3752], [-3.7294, -7.3431], [-3.7388, -7.3125], [-3.7503, -7.2836], [-3.7638, -7.2562], [-3.7794, -7.2304], [-3.797, -7.2059], [-3.8164, -7.1824], [-3.8377, -7.1597], [-3.8609, -7.138], [-3.8859, -7.1172], [-3.9128, -7.0973], [-3.9416, -7.0784], [-3.9722, -7.0604], [-4.0046, -7.0429], [-4.0386, -7.0256], [-4.0743, -7.0083], [-4.1116, -6.9912], [-4.1505, -6.9741], [-4.1911, -6.9572], [-4.2334, -6.9404], [-4.2772, -6.9237], [-4.3208, -6.9065], [-4.3621, -6.8898], [-4.4012, -6.8738], [-4.4381, -6.8584], [-4.4727, -6.8436], [-4.505, -6.8293], [-4.5351, -6.8157], [-4.563, -6.8027], [-4.5887, -6.79], [-4.6126, -6.7771], [-4.6345, -6.7641], [-4.6546, -6.751], [-4.6727, -6.7378], [-4.6889, -6.7245], [-4.7031, -6.7111], [-4.7155, -6.6975], [-4.7262, -6.6836], [-4.7354, -6.669], [-4.7433, -6.6536], [-4.7497, -6.6375], [-4.7546, -6.6207], [-4.7582, -6.6032], [-4.7603, -6.585], [-4.7611, -6.5661], [-4.7595, -6.5405], [-4.7548, -6.5162], [-4.747, -6.4934], [-4.7361, -6.4719], [-4.722, -6.4517], [-4.7049, -6.433], [-4.6846, -6.4156], [-4.6611, -6.3995], [-4.6348, -6.3852], [-4.6056, -6.3727], [-4.5736, -6.3622], [-4.5389, -6.3535], [-4.5013, -6.3468], [-4.461, -6.342], [-4.4178, -6.3391], [-4.3719, -6.3382], [-4.3378, -6.3387], [-4.304, -6.3404], [-4.2703, -6.3431], [-4.2369, -6.347], [-4.2037, -6.3519], [-4.1707, -6.3579], [-4.138, -6.365], [-4.1054, -6.3732], [-4.0732, -6.3822], [-4.0412, -6.3917], [-4.0096, -6.4015], [-3.9784, -6.4118], [-3.9474, -6.4225], [-3.9168, -6.4337], [-3.8865, -6.4453], [-3.8565, -6.4574], [-3.7513, -6.212], [-3.7841, -6.1975], [-3.8174, -6.1838], [-3.8513, -6.171], [-3.8859, -6.1589], [-3.921, -6.1477], [-3.9568, -6.1374], [-3.9931, -6.1278], [-4.0301, -6.1191], [-4.0677, -6.1113], [-4.106, -6.1045], [-4.145, -6.0988], [-4.1848, -6.0941], [-4.2252, -6.0904], [-4.2664, -6.0878], [-4.3083, -6.0863], [-4.3509, -6.0858], [-4.4279, -6.0878], [-4.5011, -6.0939], [-4.5705, -6.104], [-4.6362, -6.1182], [-4.698, -6.1364], [-4.7561, -6.1587], [-4.8104, -6.1851], [-4.861, -6.2155], [-4.9066, -6.2496], [-4.9461, -6.2871], [-4.9795, -6.3281], [-5.0069, -6.3724], [-5.0282, -6.4201], [-5.0434, -6.4712], [-5.0525, -6.5257], [-5.0556, -6.5836], [-5.0545, -6.6213], [-5.0512, -6.6572], [-5.0457, -6.6914], [-5.038, -6.7238], [-5.0282, -6.7545], [-5.0161, -6.7834], [-5.0019, -6.8106], [-4.9854, -6.836], [-4.967, -6.8601], [-4.9467, -6.8834], [-4.9245, -6.9057], [-4.9004, -6.9272], [-4.8745, -6.9478], [-4.8467, -6.9675], [-4.8171, -6.9863], [-4.7856, -7.0043], [-4.7523, -7.0218], [-4.7175, -7.0394], [-4.6809, -7.0569], [-4.6427, -7.0744], [-4.6029, -7.092], [-4.5614, -7.1095], [-4.5183, -7.127], [-4.4736, -7.1446], [-4.4285, -7.1619], [-4.386, -7.1787], [-4.3463, -7.1952], [-4.3092, -7.2112], [-4.2749, -7.2267], [-4.2432, -7.2418], [-4.2142, -7.2565], [-4.1878, -7.2708], [-4.1638, -7.2848], [-4.1417, -7.2988], [-4.1215, -7.3128], [-4.1033, -7.3269], [-4.0869, -7.3409], [-4.0725, -7.3549], [-4.06, -7.3689], [-4.0494, -7.383], [-4.0403, -7.3972], [-4.0325, -7.4119], [-4.0259, -7.427], [-4.0204, -7.4426], [-4.0162, -7.4586], [-4.0132, -7.475], [-4.0114, -7.4919], [-4.0108, -7.5092], [-4.0124, -7.5399], [-4.0174, -7.5691], [-4.0256, -7.5967], [-4.0371, -7.6227], [-4.0519, -7.6471], [-4.07, -7.6699], [-4.0913, -7.6911], [-4.116, -7.7108], [-4.1443, -7.7284], [-4.1767, -7.7437], [-4.2131, -7.7567], [-4.2536, -7.7673], [-4.2981, -7.7755], [-4.3467, -7.7814], [-4.3993, -7.785], [-4.456, -7.7861], [-4.4972, -7.7854], [-4.5381, -7.7832], [-4.5789, -7.7795], [-4.6195, -7.7743], [-4.66, -7.7676], [-4.7003, -7.7595], [-4.7404, -7.7499], [-4.7803, -7.7388], [-4.8195, -7.7268], [-4.8571, -7.7146], [-4.8933, -7.7021], [-4.928, -7.6893], [-4.9613, -7.6762], [-4.993, -7.6629], [-5.0233, -7.6493], [-5.052, -7.6354], [-5.052, -7.9159], [-5.0244, -7.9295], [-4.9956, -7.9424], [-4.9659, -7.9545], [-4.935, -7.9658], [-4.9032, -7.9764], [-4.8703, -7.9862], [-4.8364, -7.9952], [-4.8014, -8.0035], [-4.765, -8.0109], [-4.727, -8.0173], [-4.6872, -8.0227], [-4.6458, -8.0272], [-4.6027, -8.0306], [-4.5578, -8.0331], [-4.5113, -8.0346], [-4.4631, -8.0351], [-4.3793, -8.0329], [-4.3, -8.0263], [-4.2251, -8.0153], [-4.1545, -8], [-4.0884, -7.9803], [-4.0266, -7.9562], [-3.9692, -7.9277], [-3.9161, -7.8948], [-3.8685, -7.8577], [-3.8272, -7.8164], [-3.7922, -7.7709], [-3.7636, -7.7213], [-3.7414, -7.6675], [-3.7255, -7.6095], [-3.716, -7.5474], [-3.7128, -7.4811]], [[-2.5032, -8.0351], [-2.4637, -8.0346], [-2.4256, -8.0334], [-2.3889, -8.0314], [-2.3538, -8.0285], [-2.3201, -8.0248], [-2.288, -8.0203], [-2.2572, -8.0149], [-2.228, -8.0088], [-2.1998, -8.0018], [-2.1723, -7.9942], [-2.1453, -7.9858], [-2.1189, -7.9768], [-2.0931, -7.967], [-2.068, -7.9565], [-2.0434, -7.9453], [-2.0194, -7.9334], [-2.0194, -7.6599], [-2.0443, -7.6711], [-2.0697, -7.6818], [-2.0958, -7.6921], [-2.1224, -7.702], [-2.1497, -7.7114], [-2.1775, -7.7204], [-2.206, -7.7289], [-2.235, -7.7371], [-2.265, -7.7445], [-2.2961, -7.7509], [-2.3283, -7.7563], [-2.3617, -7.7607], [-2.3962, -7.7642], [-2.4319, -7.7666], [-2.4688, -7.7681], [-2.5067, -7.7686], [-2.5713, -7.7658], [-2.6318, -7.7573], [-2.6881, -7.7432], [-2.7403, -7.7235], [-2.7884, -7.6981], [-2.8325, -7.667], [-2.8724, -7.6304], [-2.9082, -7.5881], [-2.9398, -7.5404], [-2.9672, -7.4878], [-2.9904, -7.4302], [-3.0094, -7.3676], [-3.0242, -7.3], [-3.0347, -7.2275], [-3.041, -7.1499], [-3.0431, -7.0674], [-3.0345, -6.9006], [-3.0085, -6.7561], [-2.9653, -6.6337], [-2.9047, -6.5336], [-2.8268, -6.4558], [-2.7316, -6.4002], [-2.619, -6.3668], [-2.4892, -6.3557], [-2.4645, -6.3562], [-2.4393, -6.3575], [-2.4136, -6.3597], [-2.3875, -6.3627], [-2.361, -6.3667], [-2.3341, -6.3715], [-2.3067, -6.3772], [-2.2789, -6.3838], [-2.2512, -6.3908], [-2.2245, -6.398], [-2.1987, -6.4053], [-2.1737, -6.4127], [-2.1496, -6.4202], [-2.1263, -6.4278], [-2.104, -6.4355], [-2.0825, -6.4434], [-1.9879, -6.1874], [-2.0097, -6.1771], [-2.033, -6.1672], [-2.0579, -6.1576], [-2.0843, -6.1484], [-2.1122, -6.1396], [-2.1417, -6.1312], [-2.1727, -6.1232], [-2.2052, -6.1156], [-2.2387, -6.1086], [-2.2725, -6.1025], [-2.3066, -6.0974], [-2.3411, -6.0932], [-2.3759, -6.09], [-2.411, -6.0876], [-2.4464, -6.0862], [-2.4822, -6.0858], [-2.5445, -6.0873], [-2.605, -6.0921], [-2.6639, -6.1001], [-2.721, -6.1112], [-2.7765, -6.1255], [-2.8303, -6.143], [-2.8823, -6.1636], [-2.9327, -6.1874], [-2.9809, -6.2147], [-3.0266, -6.2455], [-3.0697, -6.28], [-3.1102, -6.318], [-3.1481, -6.3597], [-3.1835, -6.405], [-3.2163, -6.4539], [-3.2465, -6.5065], [-3.2736, -6.5628], [-3.2971, -6.6233], [-3.317, -6.6877], [-3.3333, -6.7563], [-3.3459, -6.8289], [-3.355, -6.9055], [-3.3604, -6.9862], [-3.3622, -7.0709], [-3.3605, -7.1523], [-3.3553, -7.23], [-3.3467, -7.304], [-3.3346, -7.3742], [-3.3191, -7.4407], [-3.3001, -7.5035], [-3.2776, -7.5625], [-3.2518, -7.6179], [-3.2228, -7.6696], [-3.1913, -7.7178], [-3.1571, -7.7625], [-3.1203, -7.8037], [-3.0808, -7.8414], [-3.0388, -7.8755], [-2.9941, -7.9062], [-2.9467, -7.9334], [-2.8972, -7.9572], [-2.8461, -7.9779], [-2.7932, -7.9953], [-2.7386, -8.0096], [-2.6823, -8.0208], [-2.6243, -8.0287], [-2.5646, -8.0335], [-2.5032, -8.0351]], [[-1.4164, -5.4161], [-1.4353, -5.4169], [-1.4534, -5.4191], [-1.4708, -5.4228], [-1.4874, -5.428], [-1.5032, -5.4346], [-1.5183, -5.4428], [-1.5326, -5.4524], [-1.5461, -5.4635], [-1.5584, -5.4761], [-1.5691, -5.4905], [-1.5782, -5.5066], [-1.5856, -5.5244], [-1.5913, -5.5438], [-1.5954, -5.565], [-1.5979, -5.5879], [-1.5987, -5.6125], [-1.5979, -5.6362], [-1.5954, -5.6585], [-1.5913, -5.6792], [-1.5856, -5.6984], [-1.5782, -5.716], [-1.5691, -5.7321], [-1.5584, -5.7467], [-1.5461, -5.7597], [-1.5326, -5.7712], [-1.5183, -5.7812], [-1.5032, -5.7896], [-1.4874, -5.7965], [-1.4708, -5.8019], [-1.4534, -5.8057], [-1.4353, -5.808], [-1.4164, -5.8088], [-1.3991, -5.808], [-1.3823, -5.8057], [-1.366, -5.8019], [-1.3502, -5.7965], [-1.3349, -5.7896], [-1.3201, -5.7812], [-1.3058, -5.7712], [-1.2919, -5.7597], [-1.2792, -5.7467], [-1.2682, -5.7321], [-1.2588, -5.716], [-1.2512, -5.6984], [-1.2452, -5.6792], [-1.241, -5.6585], [-1.2384, -5.6362], [-1.2376, -5.6125], [-1.2384, -5.5879], [-1.241, -5.565], [-1.2452, -5.5438], [-1.2512, -5.5244], [-1.2588, -5.5066], [-1.2682, -5.4905], [-1.2792, -5.4761], [-1.2919, -5.4635], [-1.3058, -5.4524], [-1.3201, -5.4428], [-1.3349, -5.4346], [-1.3502, -5.428], [-1.366, -5.4228], [-1.3823, -5.4191], [-1.3991, -5.4169], [-1.4164, -5.4161]], [[-1.5742, -6.1208], [-1.5742, -8], [-1.2656, -8], [-1.2656, -6.1208]], [[0.2069, -6.0858], [0.1586, -6.0875], [0.112, -6.0928], [0.067, -6.1015], [0.0237, -6.1138], [-0.018, -6.1296], [-0.0581, -6.1489], [-0.0965, -6.1717], [-0.1332, -6.198], [-0.1683, -6.2267], [-0.2018, -6.2567], [-0.2336, -6.288], [-0.2638, -6.3207], [-0.2924, -6.3546], [-0.3193, -6.3899], [-0.3445, -6.4265], [-0.3681, -6.4644], [-0.3821, -6.4644], [-0.4172, -6.1208], [-0.6696, -6.1208], [-0.6696, -8], [-0.3611, -8], [-0.3611, -6.9973], [-0.3599, -6.9507], [-0.3564, -6.9056], [-0.3505, -6.862], [-0.3423, -6.8198], [-0.3317, -6.7791], [-0.3187, -6.7399], [-0.3034, -6.7022], [-0.2857, -6.666], [-0.2661, -6.6315], [-0.2449, -6.5989], [-0.2221, -6.5684], [-0.1976, -6.5398], [-0.1717, -6.5132], [-0.1441, -6.4885], [-0.1149, -6.4658], [-0.0841, -6.4451], [-0.0523, -6.4266], [-0.0199, -6.4106], [0.013, -6.397], [0.0465, -6.386], [0.0805, -6.3773], [0.115, -6.3712], [0.1502, -6.3675], [0.1858, -6.3662], [0.1982, -6.3663], [0.2107, -6.3667], [0.2234, -6.3672], [0.2362, -6.368], [0.2492, -6.369], [0.2624, -6.3702], [0.2757, -6.3716], [0.2892, -6.3732], [0.3027, -6.3751], [0.3159, -6.377], [0.3288, -6.379], [0.3414, -6.3811], [0.3537, -6.3834], [0.3658, -6.3857], [0.3776, -6.3882], [0.3892, -6.3908], [0.4277, -6.1068], [0.4161, -6.1042], [0.4039, -6.1019], [0.3913, -6.0996], [0.3782, -6.0976], [0.3646, -6.0957], [0.3505, -6.094], [0.3359, -6.0924], [0.3208, -6.091], [0.3056, -6.0898], [0.2907, -6.0887], [0.276, -6.0878], [0.2616, -6.0871], [0.2475, -6.0865], [0.2337, -6.0861], [0.2201, -6.0858], [0.2069, -6.0858]], [[1.5321, -8.0351], [1.5717, -8.0346], [1.6098, -8.0334], [1.6464, -8.0314], [1.6815, -8.0285], [1.7152, -8.0248], [1.7474, -8.0203], [1.7781, -8.0149], [1.8073, -8.0088], [1.8355, -8.0018], [1.8631, -7.9942], [1.8901, -7.9858], [1.9164, -7.9768], [1.9422, -7.967], [1.9674, -7.9565], [1.9919, -7.9453], [2.0159, -7.9334], [2.0159, -7.6599], [1.9911, -7.6711], [1.9656, -7.6818], [1.9396, -7.6921], [1.9129, -7.702], [1.8857, -7.7114], [1.8578, -7.7204], [1.8294, -7.7289], [1.8003, -7.7371], [1.7704, -7.7445], [1.7393, -7.7509], [1.707, -7.7563], [1.6736, -7.7607], [1.6391, -7.7642], [1.6034, -7.7666], [1.5666, -7.7681], [1.5286, -7.7686], [1.464, -7.7658], [1.4036, -7.7573], [1.3472, -7.7432], [1.295, -7.7235], [1.2469, -7.6981], [1.2029, -7.667], [1.163, -7.6304], [1.1272, -7.5881], [1.0955, -7.5404], [1.0681, -7.4878], [1.0449, -7.4302], [1.0259, -7.3676], [1.0112, -7.3], [1.0006, -7.2275], [0.9943, -7.1499], [0.9922, -7.0674], [1.0008, -6.9006], [1.0268, -6.7561], [1.0701, -6.6337], [1.1307, -6.5336], [1.2086, -6.4558], [1.3038, -6.4002], [1.4163, -6.3668], [1.5461, -6.3557], [1.5709, -6.3562], [1.5961, -6.3575], [1.6217, -6.3597], [1.6478, -6.3627], [1.6743, -6.3667], [1.7013, -6.3715], [1.7286, -6.3772], [1.7565, -6.3838], [1.7841, -6.3908], [1.8108, -6.398], [1.8367, -6.4053], [1.8617, -6.4127], [1.8858, -6.4202], [1.909, -6.4278], [1.9313, -6.4355], [1.9528, -6.4434], [2.0475, -6.1874], [2.0257, -6.1771], [2.0023, -6.1672], [1.9775, -6.1576], [1.9511, -6.1484], [1.9231, -6.1396], [1.8936, -6.1312], [1.8626, -6.1232], [1.8301, -6.1156], [1.7966, -6.1086], [1.7628, -6.1025], [1.7287, -6.0974], [1.6942, -6.0932], [1.6595, -6.09], [1.6243, -6.0876], [1.5889, -6.0862], [1.5531, -6.0858], [1.4909, -6.0873], [1.4303, -6.0921], [1.3714, -6.1001], [1.3143, -6.1112], [1.2588, -6.1255], [1.2051, -6.143], [1.153, -6.1636], [1.1026, -6.1874], [1.0544, -6.2147], [1.0087, -6.2455], [0.9656, -6.28], [0.9251, -6.318], [0.8872, -6.3597], [0.8518, -6.405], [0.819, -6.4539], [0.7888, -6.5065], [0.7617, -6.5628], [0.7382, -6.6233], [0.7183, -6.6877], [0.7021, -6.7563], [0.6894, -6.8289], [0.6804, -6.9055], [0.6749, -6.9862], [0.6731, -7.0709], [0.6749, -7.1523], [0.68, -7.23], [0.6887, -7.304], [0.7007, -7.3742], [0.7163, -7.4407], [0.7353, -7.5035], [0.7577, -7.5625], [0.7836, -7.6179], [0.8125, -7.6696], [0.8441, -7.7178], [0.8782, -7.7625], [0.915, -7.8037], [0.9545, -7.8414], [0.9966, -7.8755], [1.0413, -7.9062], [1.0886, -7.9334], [1.1381, -7.9572], [1.1893, -7.9779], [1.2422, -7.9953], [1.2968, -8.0096], [1.353, -8.0208], [1.411, -8.0287], [1.4707, -8.0335], [1.5321, -8.0351]], [[3.7233, -6.1208], [3.7233, -7.099], [3.7214, -7.179], [3.7157, -7.2541], [3.7063, -7.3245], [3.6931, -7.39], [3.6761, -7.4507], [3.6553, -7.5065], [3.6307, -7.5576], [3.6023, -7.6038], [3.5691, -7.6449], [3.5299, -7.6805], [3.4848, -7.7107], [3.4336, -7.7353], [3.3765, -7.7545], [3.3134, -7.7682], [3.2444, -7.7764], [3.1694, -7.7791], [3.0716, -7.7721], [2.9868, -7.7511], [2.9151, -7.716], [2.8565, -7.6669], [2.8108, -7.6038], [2.7782, -7.5267], [2.7587, -7.4355], [2.7522, -7.3304], [2.7522, -6.1208], [2.4401, -6.1208], [2.4401, -7.3514], [2.4428, -7.4378], [2.4509, -7.518], [2.4643, -7.5922], [2.4831, -7.6604], [2.5072, -7.7224], [2.5368, -7.7784], [2.5717, -7.8282], [2.6119, -7.872], [2.6575, -7.9102], [2.7083, -7.9434], [2.7644, -7.9714], [2.8258, -7.9943], [2.8924, -8.0121], [2.9643, -8.0249], [3.0414, -8.0325], [3.1238, -8.0351], [3.169, -8.034], [3.2136, -8.0308], [3.2576, -8.0254], [3.3008, -8.018], [3.3435, -8.0084], [3.3854, -7.9966], [3.4267, -7.9827], [3.4674, -7.9667], [3.5066, -7.9484], [3.5436, -7.9276], [3.5785, -7.9043], [3.6111, -7.8786], [3.6416, -7.8504], [3.6698, -7.8198], [3.6959, -7.7867], [3.7198, -7.7511], [3.7338, -7.7511], [3.7794, -8], [4.0318, -8], [4.0318, -6.1208]], [[4.7856, -5.4161], [4.7667, -5.4169], [4.7486, -5.4191], [4.7312, -5.4228], [4.7146, -5.428], [4.6988, -5.4346], [4.6837, -5.4428], [4.6694, -5.4524], [4.6559, -5.4635], [4.6436, -5.4761], [4.6329, -5.4905], [4.6238, -5.5066], [4.6164, -5.5244], [4.6107, -5.5438], [4.6066, -5.565], [4.6041, -5.5879], [4.6033, -5.6125], [4.6041, -5.6362], [4.6066, -5.6585], [4.6107, -5.6792], [4.6164, -5.6984], [4.6238, -5.716], [4.6329, -5.7321], [4.6436, -5.7467], [4.6559, -5.7597], [4.6694, -5.7712], [4.6837, -5.7812], [4.6988, -5.7896], [4.7146, -5.7965], [4.7312, -5.8019], [4.7486, -5.8057], [4.7667, -5.808], [4.7856, -5.8088], [4.8029, -5.808], [4.8197, -5.8057], [4.836, -5.8019], [4.8518, -5.7965], [4.8671, -5.7896], [4.8819, -5.7812], [4.8962, -5.7712], [4.9101, -5.7597], [4.9228, -5.7467], [4.9338, -5.7321], [4.9432, -5.716], [4.9508, -5.6984], [4.9568, -5.6792], [4.961, -5.6585], [4.9636, -5.6362], [4.9644, -5.6125], [4.9636, -5.5879], [4.961, -5.565], [4.9568, -5.5438], [4.9508, -5.5244], [4.9432, -5.5066], [4.9338, -5.4905], [4.9228, -5.4761], [4.9101, -5.4635], [4.8962, -5.4524], [4.8819, -5.4428], [4.8671, -5.4346], [4.8518, -5.428], [4.836, -5.4228], [4.8197, -5.4191], [4.8029, -5.4169], [4.7856, -5.4161]], [[4.6278, -6.1208], [4.6278, -8], [4.9364, -8], [4.9364, -6.1208]], [[6.1599, -7.7826], [6.1282, -7.7813], [6.098, -7.7775], [6.0693, -7.771], [6.042, -7.762], [6.0163, -7.7504], [5.992, -7.7363], [5.9692, -7.7196], [5.9478, -7.7002], [5.9285, -7.6782], [5.9118, -7.6535], [5.8976, -7.6259], [5.886, -7.5955], [5.877, -7.5623], [5.8706, -7.5264], [5.8667, -7.4876], [5.8654, -7.4461], [5.8654, -6.3592], [6.4088, -6.3592], [6.4088, -6.1208], [5.8654, -6.1208], [5.8654, -5.6896], [5.6831, -5.6896], [5.5604, -6.0893], [5.2905, -6.212], [5.2905, -6.3592], [5.5569, -6.3592], [5.5569, -7.4531], [5.5581, -7.5085], [5.5617, -7.5607], [5.5678, -7.6097], [5.5762, -7.6555], [5.587, -7.6982], [5.6003, -7.7377], [5.616, -7.774], [5.634, -7.8072], [5.6541, -7.8375], [5.6756, -7.8656], [5.6985, -7.8912], [5.723, -7.9145], [5.7489, -7.9355], [5.7764, -7.9541], [5.8053, -7.9703], [5.8356, -7.9842], [5.8671, -7.9961], [5.8993, -8.0065], [5.9322, -8.0152], [5.9658, -8.0224], [6.0001, -8.0279], [6.0351, -8.0319], [6.0709, -8.0343], [6.1073, -8.0351], [6.1285, -8.0348], [6.1498, -8.0341], [6.1714, -8.0328], [6.1932, -8.0311], [6.2153, -8.0289], [6.2375, -8.0262], [6.26, -8.023], [6.2826, -8.0193], [6.3048, -8.0152], [6.3256, -8.0108], [6.3451, -8.0062], [6.3633, -8.0013], [6.3801, -7.9961], [6.3957, -7.9907], [6.4099, -7.985], [6.4229, -7.979], [6.4229, -7.7441], [6.411, -7.7475], [6.3983, -7.751], [6.3847, -7.7543], [6.3703, -7.7577], [6.3549, -7.7609], [6.3387, -7.7641], [6.3216, -7.7673], [6.3037, -7.7704], [6.2853, -7.7732], [6.2671, -7.7757], [6.2489, -7.7778], [6.2309, -7.7796], [6.213, -7.7809], [6.1952, -7.7819], [6.1775, -7.7824], [6.1599, -7.7826]]];
function Cylinder({ r, h, x = 0, y = 0, z = 0 }) {
const points = Array.from({ length: 48 }, (_, i) => [r * Math.cos(i * Math.PI / 24), r * Math.sin(i * Math.PI / 24)]);
return jsx(jscad.translate, { offset: [x, y, z - h / 2], children: jsx(jscad.extrudeLinear, { height: h, children: jsx(jscad.polygon, { points: points }) }) });
}
function RoundBox({ w, h, d, r = 2, x = 0, y = 0, z = 0 }) { return jsx(jscad.hull, { children: [-1, 1].flatMap(a => [-1, 1].map(b => jsx(Fragment, { children: jsx(Cylinder, { r: r, h: d, x: x + a * (w / 2 - r), y: y + b * (h / 2 - r), z: z }) }, `${a},${b}`))) }); }
function Shell() {
return jsx(jscad.colorize, { color: "#233044", children: jsxs(jscad.subtract, { children: [jsxs(jscad.union, { children: [jsxs(jscad.subtract, { children: [jsx(RoundBox, { w: 85, h: 69, d: 15, r: 6, z: -1 }), jsx(RoundBox, { w: 81, h: 65, d: 18, r: 4, z: 2.5 })] }), mounts.map(([x, y], i) => jsx(Fragment, { children: jsx(Cylinder, { r: 2.5, h: 7.7, x: x, y: y, z: -4.65 }) }, i))] }), mounts.map(([x, y], i) => jsx(Fragment, { children: jsx(Cylinder, { r: 0.85, h: 10, x: x, y: y, z: -3 }) }, i)), jsx(RoundBox, { w: 14, h: 14, d: 6, r: 1, x: 24, y: -34, z: -3.5 }), jsx(RoundBox, { w: 19, h: 22, d: 4, r: 2, x: 24, y: -15, z: -8 })] }) });
}
function Lid() {
return jsx(jscad.colorize, { color: "#dce4ed", children: jsxs(jscad.subtract, { children: [jsx(RoundBox, { w: 85, h: 69, d: 1.6, r: 6, z: 7.3 }), keys.map((k, i) => jsx(Fragment, { children: jsx(jscad.translate, { offset: [k.x, k.y, 7.3], children: jsx(jscad.rotate, { angles: [0, 0, k.angle], children: jsx(RoundBox, { w: 13, h: 13, d: 5, r: 1 }) }) }) }, i)), jsx(RoundBox, { w: 29, h: 9, d: 5, r: 1, x: -12, y: 24, z: 7.3 }), jsx(Cylinder, { r: 3.6, h: 5, x: 24, y: 12, z: 7.3 }), jsx(jscad.translate, { offset: [24, 12, 6.9], children: jsx(jscad.rotate, { angles: [0, 0, 45], children: jsx(jscad.cuboid, { size: [15, 16, 1.4] }) }) }), leds.map((p, i) => jsx(Fragment, { children: jsx(Cylinder, { r: 1, h: 5, x: p.x, y: p.y, z: 7.3 }) }, i)), mounts.map(([x, y], i) => jsx(Fragment, { children: jsx(Cylinder, { r: 1.2, h: 5, x: x, y: y, z: 7.3 }) }, i))] }) });
}
function KeyCap({ index }) {
const k = keys[index];
return jsx(jscad.colorize, { color: index === 0 ? '#2584ff' : '#405775', children: jsx(jscad.translate, { offset: [k.x, k.y, 0], children: jsx(jscad.rotate, { angles: [0, 0, k.angle], children: jsxs(jscad.union, { children: [jsx(RoundBox, { w: 12.3, h: 12.3, d: 2.8, r: 1.2, z: 8.4 }), jsx(RoundBox, { w: 14, h: 14, d: 0.5, r: 1.3, z: 6.25 }), jsx(Cylinder, { r: 1.5, h: 1.2, z: 6.4 })] }) }) }) });
}
function Knob() { return jsx(jscad.colorize, { color: "#2584ff", children: jsxs(jscad.subtract, { children: [jsx(Cylinder, { r: 10, h: 12, x: 24, y: 12, z: 19 }), jsx(Cylinder, { r: 3.05, h: 12, x: 24, y: 12, z: 18 }), Array.from({ length: 32 }, (_, i) => jsx(Fragment, { children: jsx(Cylinder, { r: 0.55, h: 10, x: 24 + 10 * Math.cos(i * Math.PI / 16), y: 12 + 10 * Math.sin(i * Math.PI / 16), z: 19 }) }, i))] }) }); }
function Lenses() { return jsx(jscad.colorize, { color: "#5cb8ff", children: jsx(jscad.union, { children: leds.map((p, i) => jsx(Fragment, { children: jsx(Cylinder, { r: 0.8, h: 6.1, x: p.x, y: p.y, z: 5.05 }) }, i)) }) }); }
function OledBoard() { return jsx(jscad.colorize, { color: "#174e6a", children: jsx(jscad.cuboid, { size: [36, 12.5, 1.2], center: [-12, 24, 5.5] }) }); }
function OledGlass() { return jsx(jscad.colorize, { color: "#071923", children: jsx(jscad.cuboid, { size: [30, 10, 1.1], center: [-12, 24, 6.65] }) }); }
function ScreenPixels() { return jsx(jscad.colorize, { color: "#54d8ff", children: jsxs(jscad.union, { children: [[0, 1, 2, 3].map(i => jsx(Fragment, { children: jsx(jscad.cuboid, { size: [2.3, 2 + i * 0.8, 0.05], center: [-23 + i * 3.2, 23, 7.225] }) }, i)), jsx(jscad.cuboid, { size: [8, 0.45, 0.05], center: [-3, 25, 7.225] }), jsx(jscad.cuboid, { size: [5, 0.45, 0.05], center: [-4.5, 23, 7.225] })] }) }); }
function DisplaySupports() { return jsx(jscad.colorize, { color: "#233044", children: jsx(jscad.union, { children: [-29, 5].map(x => jsx(Fragment, { children: jsx(jscad.cuboid, { size: [2, 10, 4.1], center: [x, 24, 2.85] }) }, x)) }) }); }
function Brand() { return jsx(jscad.colorize, { color: "#2584ff", children: jsx(jscad.translate, { offset: [23, -5, 8.13], children: jsx(jscad.extrudeLinear, { height: 0.08, children: jsx(jscad.union, { children: wordmarkContours.map((points, i) => jsx(jscad.polygon, { points: points }, i)) }) }) }) }); }
function Screws() { return jsx(jscad.colorize, { color: "#9ca7b6", children: jsx(jscad.union, { children: mounts.map(([x, y], i) => jsxs(Fragment, { children: [jsx(Cylinder, { r: 1, h: 13, x: x, y: y, z: 2 }), jsxs(jscad.subtract, { children: [jsx(Cylinder, { r: 1.8, h: 0.8, x: x, y: y, z: 8.5 }), jsx(jscad.cuboid, { size: [2.3, 0.5, 0.6], center: [x, y, 8.9] })] })] }, i)) }) }); }
function ModuleBoard() { return jsx(jscad.colorize, { color: "#207b70", children: jsx(jscad.cuboid, { size: [18, 23.5, 1], center: [24, -17, -1.5] }) }); }
function UsbShell() { return jsx(jscad.colorize, { color: "#aab4c0", children: jsxs(jscad.subtract, { children: [jsx(RoundBox, { w: 8.9, h: 7.5, d: 3.2, r: 1.2, x: 24, y: -26.7, z: -3.6 }), jsx(RoundBox, { w: 7.5, h: 9, d: 2, r: 0.7, x: 24, y: -27.7, z: -3.6 })] }) }); }
function Harness() { return jsx(jscad.union, { children: ['#e15a53', '#303641', '#e5b940', '#4b9ee7'].map((color, i) => jsx(Fragment, { children: jsx(jscad.colorize, { color: color, children: jsxs(jscad.hull, { children: [jsx(jscad.sphere, { radius: 0.25, center: [-17 + i * 3, 16, 1.1] }), jsx(jscad.sphere, { radius: 0.25, center: [-17 + i * 3, 19, 4.8] })] }) }) }, i)) }); }
const cad = (node, z = 0) => ({ jscad: renderToJscadPlan(jsx(jscad.translate, { offset: [0, 0, z], children: node })) });
function FacetAssembly({ exploded = false }) {
const lift = exploded ? 26 : 0;
return jsxs(assembly.device, { name: "FACET Four \u2022 USB macro controller", children: [jsx(FacetBoard, {}), jsx(assembly.printedpart, { name: "BASE", material: "petg", jscad: jsx(jscad.translate, { offset: [0, 0, exploded ? -25 : 0], children: jsx(Shell, {}) }) }), jsx(assembly.printedpart, { name: "FACEPLATE", material: "petg", jscad: jsx(jscad.translate, { offset: [0, 0, lift], children: jsx(Lid, {}) }) }), [0, 1, 2, 3].map(i => jsx(assembly.printedpart, { name: `KEYCAP_${i + 1}`, material: "petg", jscad: jsx(jscad.translate, { offset: [0, 0, lift + (exploded ? 10 : 0)], children: jsx(KeyCap, { index: i }) }) }, i)), jsx(assembly.printedpart, { name: "KNOB", material: "petg", jscad: jsx(jscad.translate, { offset: [0, 0, lift], children: jsx(Knob, {}) }) }), jsx(assembly.part, { name: "LED_LIGHT_PIPES", cadModel: cad(jsx(Lenses, {}), lift) }), jsx(assembly.part, { name: "OLED_MODULE", displayName: "Waveshare 0.91inch OLED \u2022 dimensional assembly model", cadModel: cad(jsx(OledBoard, {}), exploded ? 12 : 0) }), jsx(assembly.part, { name: "OLED_GLASS", cadModel: cad(jsx(OledGlass, {}), exploded ? 12 : 0) }), jsx(assembly.part, { name: "DISPLAY_PREVIEW", displayName: "Illustrative display graphics \u2022 firmware required", cadModel: cad(jsx(ScreenPixels, {}), exploded ? 12 : 0) }), jsx(assembly.part, { name: "DISPLAY_SUPPORTS", cadModel: cad(jsx(DisplaySupports, {})) }), jsx(assembly.part, { name: "BLUE_WORDMARK", cadModel: cad(jsx(Brand, {}), lift) }), jsx(assembly.part, { name: "SCREWS", displayName: "M2 \u00D7 14 prototype fasteners", cadModel: cad(jsx(Screws, {}), lift) }), jsx(assembly.part, { name: "RP2040_MODULE_ENVELOPE", displayName: "RP2040-Zero dimensional PCB envelope; imported footprint has no supplier CAD", cadModel: cad(jsx(ModuleBoard, {})) }), jsx(assembly.part, { name: "USB_CONNECTOR_ENVELOPE", displayName: "Dimensional USB-C opening reference", cadModel: cad(jsx(UsbShell, {})) }), !exploded && jsx(assembly.part, { name: "OLED_HARNESS", displayName: "Four soldered wires: 3V3 / GND / SDA / SCL", cadModel: cad(jsx(Harness, {})) })] });
}
function EnclosedFacet() { return jsx(FacetAssembly, {}); }
export { FacetAssembly, EnclosedFacet as default };