easyeda 0.0.253 → 0.0.255

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.
@@ -8882,6 +8882,11 @@ var unitToMm = {
8882
8882
  ft: 304.8,
8883
8883
  feet: 304.8
8884
8884
  };
8885
+ var mmNumberFormatter = new Intl.NumberFormat("en-US", {
8886
+ useGrouping: false,
8887
+ notation: "standard",
8888
+ maximumFractionDigits: 12
8889
+ });
8885
8890
  var mm = (n) => {
8886
8891
  let unit = typeof n === "number" ? "mm" : n.replace(/^[^a-zA-Z]+/g, "").toLowerCase();
8887
8892
  if (!unit)
@@ -8893,11 +8898,15 @@ var mm = (n) => {
8893
8898
  throw new Error(`Unsupported unit: ${unit}`);
8894
8899
  };
8895
8900
  var mmStr = (n) => {
8896
- return `${mm(n)}mm`;
8901
+ return `${mmNumberFormatter.format(mm(n))}mm`;
8902
+ };
8903
+ var mil2mm = (mil) => {
8904
+ if (typeof mil === "number")
8905
+ return mm(`${mil}mil`);
8906
+ if (mil.match(/^\d+$/))
8907
+ return mm(`${mil}mil`);
8908
+ return mm(mil);
8897
8909
  };
8898
-
8899
- // lib/constants.ts
8900
- var DEFAULT_PCB_THICKNESS_MM = 1.6;
8901
8910
 
8902
8911
  // lib/math/arc-utils.ts
8903
8912
  function generateArcFromSweep(startX, startY, endX, endY, radius, largeArcFlag, sweepFlag) {
@@ -9024,15 +9033,13 @@ var normalizeSymbolName = (name) => {
9024
9033
  return trimmedName;
9025
9034
  };
9026
9035
 
9036
+ // lib/constants.ts
9037
+ var DEFAULT_PCB_THICKNESS_MM = 1.6;
9038
+
9027
9039
  // lib/convert-easyeda-json-to-tscircuit-soup-json.ts
9028
9040
  var EASYEDA_STEP_MODEL_URL = "https://modules.easyeda.com/qAxj6KHrDKw4blvCG8QJPs7Y";
9029
9041
  var EASYEDA_OBJ_MODEL_URL = "https://modules.easyeda.com/3dmodel";
9030
9042
  var TSCIRCUIT_MODEL_CDN_URL = "https://modelcdn.tscircuit.com/easyeda_models";
9031
- var mil2mm = (mil) => {
9032
- if (typeof mil === "number") return mm(`${mil}mil`);
9033
- if (mil.match(/^\d+$/)) return mm(`${mil}mil`);
9034
- return mm(mil);
9035
- };
9036
9043
  var milx10 = (mil10) => {
9037
9044
  if (typeof mil10 === "number") return mil2mm(mil10) * 10;
9038
9045
  if (mil10.match(/^\d+$/)) return mil2mm(mil10) * 10;
@@ -9164,7 +9171,8 @@ var convertEasyEdaJsonToCircuitJson = (easyEdaJson, {
9164
9171
  shouldRecenter = true,
9165
9172
  cadPositionXMm,
9166
9173
  cadPositionYMm,
9167
- cadPositionZMm
9174
+ cadPositionZMm,
9175
+ showDesignator = false
9168
9176
  } = {}) => {
9169
9177
  const resolvedCadPositionZMm = cadPositionZMm ?? getCadPositionZMmFromMetadata(easyEdaJson);
9170
9178
  const circuitElements = [];
@@ -9353,6 +9361,7 @@ var convertEasyEdaJsonToCircuitJson = (easyEdaJson, {
9353
9361
  ).forEach((sr, index) => {
9354
9362
  circuitElements.push(handleCutout(sr, index));
9355
9363
  });
9364
+ let hasFoundDesignator = false;
9356
9365
  easyEdaJson.packageDetail.dataStr.shape.forEach((shape, index) => {
9357
9366
  if (shape.type === "TRACK") {
9358
9367
  if (!isCourtyardLayer(shape.layer)) {
@@ -9364,12 +9373,22 @@ var convertEasyEdaJsonToCircuitJson = (easyEdaJson, {
9364
9373
  }
9365
9374
  } else if (shape.type === "TEXT") {
9366
9375
  if (isCourtyardLayer(shape.layer)) return;
9376
+ let text = shape.text;
9377
+ const designatorPrefix = easyEdaJson.dataStr.head.c_para.pre || "U";
9378
+ const normalizedPrefix = designatorPrefix.replace(/\?/g, "");
9379
+ const trimmedText = text.trim();
9380
+ const isDesignator = trimmedText === designatorPrefix || trimmedText === `${normalizedPrefix}?` || trimmedText === normalizedPrefix;
9381
+ if (isDesignator) {
9382
+ if (!showDesignator) return;
9383
+ text = "{NAME}";
9384
+ hasFoundDesignator = true;
9385
+ }
9367
9386
  circuitElements.push(
9368
9387
  pcb_silkscreen_text.parse({
9369
9388
  type: "pcb_silkscreen_text",
9370
9389
  pcb_silkscreen_text_id: `pcb_silkscreen_text_${index + 1}`,
9371
9390
  pcb_component_id: "pcb_component_1",
9372
- text: normalizeSymbolName(shape.text),
9391
+ text,
9373
9392
  anchor_position: {
9374
9393
  x: mil2mm(shape.x),
9375
9394
  y: mil2mm(shape.y)
@@ -9379,12 +9398,31 @@ var convertEasyEdaJsonToCircuitJson = (easyEdaJson, {
9379
9398
  C: "center",
9380
9399
  R: "bottom_right"
9381
9400
  }[shape.textAnchor ?? "L"],
9382
- font_size: shape.size_mm ? shape.size_mm : void 0,
9401
+ font_size: shape.size_mm || 1,
9383
9402
  layer: "top"
9384
9403
  })
9385
9404
  );
9386
9405
  }
9387
9406
  });
9407
+ if (!hasFoundDesignator && showDesignator) {
9408
+ const bbox = easyEdaJson.packageDetail.dataStr.BBox;
9409
+ circuitElements.push(
9410
+ pcb_silkscreen_text.parse({
9411
+ type: "pcb_silkscreen_text",
9412
+ pcb_silkscreen_text_id: `pcb_silkscreen_text_designator_fallback`,
9413
+ pcb_component_id: "pcb_component_1",
9414
+ text: "{NAME}",
9415
+ anchor_position: {
9416
+ x: milx10(bbox.x + bbox.width / 2),
9417
+ y: milx10(bbox.y) - 1
9418
+ // 1mm above top edge
9419
+ },
9420
+ anchor_alignment: "center",
9421
+ font_size: 1,
9422
+ layer: "top"
9423
+ })
9424
+ );
9425
+ }
9388
9426
  const pcbElements = circuitElements.filter(
9389
9427
  (e) => e.type === "pcb_smtpad" || e.type === "pcb_plated_hole" || e.type === "pcb_hole" || e.type === "pcb_via" || e.type === "pcb_courtyard_outline" || e.type === "pcb_silkscreen_path" || e.type === "pcb_silkscreen_text"
9390
9428
  );
@@ -10558,8 +10596,10 @@ var generateFootprintTsx = (circuitJson) => {
10558
10596
  );
10559
10597
  }
10560
10598
  for (const silkscreenText of silkscreenTexts) {
10599
+ const isRefDes = silkscreenText.text === "{NAME}";
10600
+ const textValue = isRefDes ? "{props.name}" : JSON.stringify(silkscreenText.text);
10561
10601
  elementStrings.push(
10562
- `<silkscreentext text="${silkscreenText.text}" pcbX="${mmStr(silkscreenText.anchor_position.x)}" pcbY="${mmStr(silkscreenText.anchor_position.y)}" anchorAlignment="${silkscreenText.anchor_alignment}" ${silkscreenText.font_size ? `fontSize="${mmStr(silkscreenText.font_size)}"` : ""} />`
10602
+ `<silkscreentext text=${textValue} pcbX="${mmStr(silkscreenText.anchor_position.x)}" pcbY="${mmStr(silkscreenText.anchor_position.y)}" anchorAlignment="${silkscreenText.anchor_alignment}" ${silkscreenText.font_size ? `fontSize="${mmStr(silkscreenText.font_size)}"` : ""} />`
10563
10603
  );
10564
10604
  }
10565
10605
  for (const courtyardOutline of courtyardOutlines) {
@@ -10643,7 +10683,8 @@ var convertBetterEasyToTsx = async ({
10643
10683
  shouldRecenter: true,
10644
10684
  cadPositionXMm: cadPlacement?.positionXMm,
10645
10685
  cadPositionYMm: cadPlacement?.positionYMm,
10646
- cadPositionZMm: cadPlacement?.positionZMm
10686
+ cadPositionZMm: cadPlacement?.positionZMm,
10687
+ showDesignator: true
10647
10688
  });
10648
10689
  const [cadComponent] = su(circuitJson).cad_component.list();
10649
10690
  if (cadComponent) {