easyeda 0.0.251 → 0.0.253
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/browser/index.d.ts +6 -7
- package/dist/browser/index.js +126 -41
- package/dist/browser/index.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +123 -40
- package/dist/index.js.map +1 -1
- package/dist/main.cjs +125 -42
- package/dist/main.cjs.map +1 -1
- package/package.json +2 -2
package/dist/browser/index.d.ts
CHANGED
|
@@ -2245,13 +2245,11 @@ declare const EasyEdaJsonSchema: z.ZodObject<{
|
|
|
2245
2245
|
type RawEasyEdaJson = z.input<typeof EasyEdaJsonSchema>;
|
|
2246
2246
|
type BetterEasyEdaJson = z.infer<typeof EasyEdaJsonSchema>;
|
|
2247
2247
|
|
|
2248
|
-
declare const convertRawEasyToTsx: ({ rawEasy
|
|
2248
|
+
declare const convertRawEasyToTsx: ({ rawEasy }: {
|
|
2249
2249
|
rawEasy: any;
|
|
2250
|
-
format?: "obj" | "step";
|
|
2251
2250
|
}) => Promise<string>;
|
|
2252
|
-
declare const convertBetterEasyToTsx: ({ betterEasy,
|
|
2251
|
+
declare const convertBetterEasyToTsx: ({ betterEasy, }: {
|
|
2253
2252
|
betterEasy: BetterEasyEdaJson;
|
|
2254
|
-
format?: "obj" | "step";
|
|
2255
2253
|
}) => Promise<string>;
|
|
2256
2254
|
|
|
2257
2255
|
declare function fetchEasyEDAComponent(jlcpcbPartNumber: string, { fetch, includeModelMetadata, }?: {
|
|
@@ -2264,8 +2262,9 @@ declare const generateFootprintTsx: (circuitJson: AnyCircuitElement[]) => string
|
|
|
2264
2262
|
type Params = {
|
|
2265
2263
|
easyedaPartNumber: string;
|
|
2266
2264
|
easyedaModelUuid: string;
|
|
2267
|
-
format?: "obj" | "step";
|
|
2268
2265
|
};
|
|
2269
|
-
declare const
|
|
2266
|
+
declare const getModelObjCdnUrl: ({ easyedaModelUuid, easyedaPartNumber, }: Params) => string;
|
|
2267
|
+
declare const getModelStepCdnUrl: ({ easyedaModelUuid, easyedaPartNumber, }: Params) => string;
|
|
2268
|
+
declare const getModelCdnUrl: ({ easyedaModelUuid, easyedaPartNumber, }: Params) => string;
|
|
2270
2269
|
|
|
2271
|
-
export { convertBetterEasyToTsx, convertRawEasyToTsx, fetchEasyEDAComponent, generateFootprintTsx, getModelCdnUrl };
|
|
2270
|
+
export { convertBetterEasyToTsx, convertRawEasyToTsx, fetchEasyEDAComponent, generateFootprintTsx, getModelCdnUrl, getModelObjCdnUrl, getModelStepCdnUrl };
|
package/dist/browser/index.js
CHANGED
|
@@ -9159,7 +9159,13 @@ var getCadPositionZMmFromMetadata = (easyEdaJson) => {
|
|
|
9159
9159
|
const minZ = Math.abs(bounds.min.z) < 1e-6 ? 0 : bounds.min.z;
|
|
9160
9160
|
return minZ - mil10ToMm(svgNodeZ);
|
|
9161
9161
|
};
|
|
9162
|
-
var convertEasyEdaJsonToCircuitJson = (easyEdaJson, {
|
|
9162
|
+
var convertEasyEdaJsonToCircuitJson = (easyEdaJson, {
|
|
9163
|
+
useModelCdn,
|
|
9164
|
+
shouldRecenter = true,
|
|
9165
|
+
cadPositionXMm,
|
|
9166
|
+
cadPositionYMm,
|
|
9167
|
+
cadPositionZMm
|
|
9168
|
+
} = {}) => {
|
|
9163
9169
|
const resolvedCadPositionZMm = cadPositionZMm ?? getCadPositionZMmFromMetadata(easyEdaJson);
|
|
9164
9170
|
const circuitElements = [];
|
|
9165
9171
|
const source_component = any_source_component.parse({
|
|
@@ -9404,8 +9410,8 @@ var convertEasyEdaJsonToCircuitJson = (easyEdaJson, { useModelCdn, shouldRecente
|
|
|
9404
9410
|
anchor_alignment: "center_of_component_on_board_surface",
|
|
9405
9411
|
model_origin_alignment: "center_of_component_on_board_surface",
|
|
9406
9412
|
model_origin_position: {
|
|
9407
|
-
x: 0,
|
|
9408
|
-
y: 0,
|
|
9413
|
+
x: cadPositionXMm ?? 0,
|
|
9414
|
+
y: cadPositionYMm ?? 0,
|
|
9409
9415
|
z: resolvedCadPositionZMm ?? position2.z
|
|
9410
9416
|
},
|
|
9411
9417
|
position: { x: 0, y: 0, z: 0 },
|
|
@@ -10293,15 +10299,106 @@ function normalizeManufacturerPartNumber(partNumber) {
|
|
|
10293
10299
|
return normalized;
|
|
10294
10300
|
}
|
|
10295
10301
|
|
|
10302
|
+
// lib/websafe/get-easyeda-cad-placement-helpers.ts
|
|
10303
|
+
var milToMm = (mil) => mil * 0.0254;
|
|
10304
|
+
var getBoundsCenter = (bounds) => ({
|
|
10305
|
+
x: (bounds.min.x + bounds.max.x) / 2,
|
|
10306
|
+
y: (bounds.min.y + bounds.max.y) / 2
|
|
10307
|
+
});
|
|
10308
|
+
var getCadSvgNode = (easyEdaJson) => {
|
|
10309
|
+
const svgNode = easyEdaJson.packageDetail.dataStr.shape.find(
|
|
10310
|
+
(shape) => shape.type === "SVGNODE" && shape.svgData.attrs?.uuid
|
|
10311
|
+
);
|
|
10312
|
+
return svgNode?.type === "SVGNODE" ? svgNode : null;
|
|
10313
|
+
};
|
|
10314
|
+
var parseMil10Value = (value) => Number(String(value).replace("mil", "")) / 10;
|
|
10315
|
+
var isZeroishModelCenter = (value) => Math.abs(value) < 1e-6;
|
|
10316
|
+
var isZeroishFootprintDelta = (value) => Math.abs(value) < 1e-3;
|
|
10317
|
+
var getPadCenter = (easyEdaJson) => {
|
|
10318
|
+
const pads = easyEdaJson.packageDetail.dataStr.shape.filter(
|
|
10319
|
+
(shape) => shape.type === "PAD"
|
|
10320
|
+
);
|
|
10321
|
+
if (pads.length === 0) return null;
|
|
10322
|
+
const xs = pads.map((pad) => parseMil10Value(pad.center.x));
|
|
10323
|
+
const ys = pads.map((pad) => parseMil10Value(pad.center.y));
|
|
10324
|
+
return {
|
|
10325
|
+
x: (Math.min(...xs) + Math.max(...xs)) / 2,
|
|
10326
|
+
y: (Math.min(...ys) + Math.max(...ys)) / 2
|
|
10327
|
+
};
|
|
10328
|
+
};
|
|
10329
|
+
var getRotatedOffsetMm = ({
|
|
10330
|
+
bounds,
|
|
10331
|
+
rawOffsetMil,
|
|
10332
|
+
rotationDeg
|
|
10333
|
+
}) => {
|
|
10334
|
+
const center = getBoundsCenter(bounds);
|
|
10335
|
+
const offsetX = milToMm(rawOffsetMil.x);
|
|
10336
|
+
const offsetY = milToMm(rawOffsetMil.y);
|
|
10337
|
+
switch (rotationDeg) {
|
|
10338
|
+
case 0:
|
|
10339
|
+
return { x: center.x + offsetX, y: center.y + offsetY };
|
|
10340
|
+
case 90:
|
|
10341
|
+
return { x: center.x + offsetY, y: center.y + offsetX };
|
|
10342
|
+
case 180:
|
|
10343
|
+
return { x: center.x - offsetX, y: center.y - offsetY };
|
|
10344
|
+
case 270:
|
|
10345
|
+
return { x: center.x - offsetY, y: center.y - offsetX };
|
|
10346
|
+
}
|
|
10347
|
+
};
|
|
10348
|
+
var getCadModelOffsetMm = (easyEdaJson) => {
|
|
10349
|
+
const svgNode = getCadSvgNode(easyEdaJson);
|
|
10350
|
+
const bounds = easyEdaJson._objMetadata?.bounds;
|
|
10351
|
+
if (!svgNode || !bounds) return null;
|
|
10352
|
+
const [originX, originY] = String(svgNode.svgData.attrs?.c_origin ?? "0,0").split(",").map((value) => Number(value.trim()));
|
|
10353
|
+
if (!Number.isFinite(originX) || !Number.isFinite(originY)) return null;
|
|
10354
|
+
const [, , rotationZRaw] = String(
|
|
10355
|
+
svgNode.svgData.attrs?.c_rotation ?? "0,0,0"
|
|
10356
|
+
).split(",").map((value) => Number(value.trim()));
|
|
10357
|
+
const rotationDeg = (rotationZRaw % 360 + 360) % 360;
|
|
10358
|
+
if (![0, 90, 180, 270].includes(rotationDeg)) return null;
|
|
10359
|
+
const modelCenter = getBoundsCenter(bounds);
|
|
10360
|
+
const footprintCenter = easyEdaJson.packageDetail.dataStr.head;
|
|
10361
|
+
const padCenter = getPadCenter(easyEdaJson);
|
|
10362
|
+
const padCenterDelta = padCenter ? {
|
|
10363
|
+
x: padCenter.x - footprintCenter.x,
|
|
10364
|
+
y: padCenter.y - footprintCenter.y
|
|
10365
|
+
} : null;
|
|
10366
|
+
const rawOffsetMil = {
|
|
10367
|
+
x: (originX - footprintCenter.x) * 10,
|
|
10368
|
+
y: (originY - footprintCenter.y) * 10
|
|
10369
|
+
};
|
|
10370
|
+
if (padCenter && padCenterDelta && isZeroishModelCenter(modelCenter.x) && isZeroishModelCenter(modelCenter.y) && isZeroishFootprintDelta(padCenterDelta.x) && isZeroishFootprintDelta(padCenterDelta.y)) {
|
|
10371
|
+
return { x: 0, y: 0 };
|
|
10372
|
+
}
|
|
10373
|
+
return getRotatedOffsetMm({
|
|
10374
|
+
bounds,
|
|
10375
|
+
rawOffsetMil,
|
|
10376
|
+
rotationDeg
|
|
10377
|
+
});
|
|
10378
|
+
};
|
|
10379
|
+
var getCadSvgNodeZOffsetMm = (easyEdaJson) => {
|
|
10380
|
+
const svgNode = getCadSvgNode(easyEdaJson);
|
|
10381
|
+
if (!svgNode) return null;
|
|
10382
|
+
const svgNodeZ = Number(svgNode.svgData.attrs?.z ?? 0);
|
|
10383
|
+
if (!Number.isFinite(svgNodeZ)) return null;
|
|
10384
|
+
return mil10ToMm(svgNodeZ);
|
|
10385
|
+
};
|
|
10386
|
+
var getCadSvgNodeModelUuid = (easyEdaJson) => getCadSvgNode(easyEdaJson)?.svgData.attrs?.uuid ?? null;
|
|
10387
|
+
|
|
10296
10388
|
// lib/websafe/get-model-cdn-url.ts
|
|
10297
|
-
var
|
|
10389
|
+
var getModelObjCdnUrl = ({
|
|
10298
10390
|
easyedaModelUuid,
|
|
10299
|
-
easyedaPartNumber
|
|
10300
|
-
format = "obj"
|
|
10391
|
+
easyedaPartNumber
|
|
10301
10392
|
}) => {
|
|
10302
|
-
|
|
10303
|
-
return `https://modelcdn.tscircuit.com/easyeda_models/assets/${easyedaPartNumber}.${extension}?uuid=${easyedaModelUuid}`;
|
|
10393
|
+
return `https://modelcdn.tscircuit.com/easyeda_models/assets/${easyedaPartNumber}.obj?uuid=${easyedaModelUuid}`;
|
|
10304
10394
|
};
|
|
10395
|
+
var getModelStepCdnUrl = ({
|
|
10396
|
+
easyedaModelUuid,
|
|
10397
|
+
easyedaPartNumber
|
|
10398
|
+
}) => {
|
|
10399
|
+
return `https://modelcdn.tscircuit.com/easyeda_models/assets/${easyedaPartNumber}.step?uuid=${easyedaModelUuid}`;
|
|
10400
|
+
};
|
|
10401
|
+
var getModelCdnUrl = getModelObjCdnUrl;
|
|
10305
10402
|
|
|
10306
10403
|
// lib/websafe/get-easyeda-cad-model-placement.ts
|
|
10307
10404
|
var placementCache = /* @__PURE__ */ new Map();
|
|
@@ -10337,43 +10434,32 @@ var parseObjBounds = (objText) => {
|
|
|
10337
10434
|
max: { x: maxX, y: maxY, z: maxZ }
|
|
10338
10435
|
};
|
|
10339
10436
|
};
|
|
10340
|
-
var getSvgNodeZOffsetMm = (easyEdaJson) => {
|
|
10341
|
-
const svgNode = easyEdaJson.packageDetail.dataStr.shape.find(
|
|
10342
|
-
(shape) => shape.type === "SVGNODE" && shape.svgData.attrs?.uuid
|
|
10343
|
-
);
|
|
10344
|
-
if (!svgNode || svgNode.type !== "SVGNODE") return null;
|
|
10345
|
-
const svgNodeZ = Number(svgNode.svgData.attrs?.z ?? 0);
|
|
10346
|
-
if (!Number.isFinite(svgNodeZ)) return null;
|
|
10347
|
-
return mil10ToMm(svgNodeZ);
|
|
10348
|
-
};
|
|
10349
10437
|
var getPositionZMmFromBounds = (bounds, svgNodeZOffsetMm) => {
|
|
10350
10438
|
const minZ = Math.abs(bounds.min.z) < 1e-6 ? 0 : bounds.min.z;
|
|
10351
10439
|
return minZ - svgNodeZOffsetMm;
|
|
10352
10440
|
};
|
|
10353
10441
|
var getEasyEdaCadModelPlacement = async (easyEdaJson, { fetch: fetch2 = globalThis.fetch } = {}) => {
|
|
10354
|
-
const
|
|
10355
|
-
(shape) => shape.type === "SVGNODE" && shape.svgData.attrs?.uuid
|
|
10356
|
-
);
|
|
10357
|
-
if (!svgNode || svgNode.type !== "SVGNODE") return null;
|
|
10358
|
-
const modelUuid = svgNode.svgData.attrs?.uuid;
|
|
10442
|
+
const modelUuid = getCadSvgNodeModelUuid(easyEdaJson);
|
|
10359
10443
|
const partNumber = easyEdaJson.lcsc.number;
|
|
10360
|
-
const
|
|
10361
|
-
|
|
10444
|
+
const derivedOffsetMm = getCadModelOffsetMm(easyEdaJson);
|
|
10445
|
+
const svgNodeZOffsetMm = getCadSvgNodeZOffsetMm(easyEdaJson);
|
|
10446
|
+
if (!modelUuid || !partNumber || svgNodeZOffsetMm == null || !derivedOffsetMm || !fetch2) {
|
|
10362
10447
|
return null;
|
|
10363
10448
|
}
|
|
10364
|
-
const modelObjUrl =
|
|
10449
|
+
const modelObjUrl = getModelObjCdnUrl({
|
|
10365
10450
|
easyedaModelUuid: modelUuid,
|
|
10366
10451
|
easyedaPartNumber: partNumber
|
|
10367
10452
|
});
|
|
10368
|
-
const modelStepUrl =
|
|
10453
|
+
const modelStepUrl = getModelStepCdnUrl({
|
|
10369
10454
|
easyedaModelUuid: modelUuid,
|
|
10370
|
-
easyedaPartNumber: partNumber
|
|
10371
|
-
format: "step"
|
|
10455
|
+
easyedaPartNumber: partNumber
|
|
10372
10456
|
});
|
|
10373
10457
|
const metadataBounds = easyEdaJson._objMetadata?.bounds;
|
|
10374
10458
|
if (metadataBounds) {
|
|
10375
10459
|
return {
|
|
10376
10460
|
modelObjUrl,
|
|
10461
|
+
positionXMm: derivedOffsetMm.x,
|
|
10462
|
+
positionYMm: derivedOffsetMm.y,
|
|
10377
10463
|
modelStepUrl,
|
|
10378
10464
|
bounds: metadataBounds,
|
|
10379
10465
|
positionZMm: getPositionZMmFromBounds(metadataBounds, svgNodeZOffsetMm)
|
|
@@ -10391,6 +10477,8 @@ var getEasyEdaCadModelPlacement = async (easyEdaJson, { fetch: fetch2 = globalTh
|
|
|
10391
10477
|
if (!bounds) return null;
|
|
10392
10478
|
return {
|
|
10393
10479
|
modelObjUrl,
|
|
10480
|
+
positionXMm: derivedOffsetMm.x,
|
|
10481
|
+
positionYMm: derivedOffsetMm.y,
|
|
10394
10482
|
modelStepUrl,
|
|
10395
10483
|
bounds,
|
|
10396
10484
|
// Align the EasyEDA SVG-node Z against the model's minimum Z.
|
|
@@ -10539,25 +10627,22 @@ ${cadModelLines}
|
|
|
10539
10627
|
};
|
|
10540
10628
|
|
|
10541
10629
|
// lib/websafe/convert-to-typescript-component/index.tsx
|
|
10542
|
-
var convertRawEasyToTsx = async ({
|
|
10543
|
-
rawEasy,
|
|
10544
|
-
format = "obj"
|
|
10545
|
-
}) => {
|
|
10630
|
+
var convertRawEasyToTsx = async ({ rawEasy }) => {
|
|
10546
10631
|
const betterEasy = EasyEdaJsonSchema.parse(rawEasy);
|
|
10547
10632
|
const result = await convertBetterEasyToTsx({
|
|
10548
|
-
betterEasy
|
|
10549
|
-
format
|
|
10633
|
+
betterEasy
|
|
10550
10634
|
});
|
|
10551
10635
|
return result;
|
|
10552
10636
|
};
|
|
10553
10637
|
var convertBetterEasyToTsx = async ({
|
|
10554
|
-
betterEasy
|
|
10555
|
-
format = "obj"
|
|
10638
|
+
betterEasy
|
|
10556
10639
|
}) => {
|
|
10557
10640
|
const cadPlacement = await getEasyEdaCadModelPlacement(betterEasy);
|
|
10558
10641
|
const circuitJson = convertEasyEdaJsonToCircuitJson(betterEasy, {
|
|
10559
10642
|
useModelCdn: true,
|
|
10560
10643
|
shouldRecenter: true,
|
|
10644
|
+
cadPositionXMm: cadPlacement?.positionXMm,
|
|
10645
|
+
cadPositionYMm: cadPlacement?.positionYMm,
|
|
10561
10646
|
cadPositionZMm: cadPlacement?.positionZMm
|
|
10562
10647
|
});
|
|
10563
10648
|
const [cadComponent] = su(circuitJson).cad_component.list();
|
|
@@ -10594,8 +10679,6 @@ var convertBetterEasyToTsx = async ({
|
|
|
10594
10679
|
modelStepUrl = cadComponent.model_step_url;
|
|
10595
10680
|
}
|
|
10596
10681
|
}
|
|
10597
|
-
const selectedObjUrl = format === "obj" ? modelObjUrl : void 0;
|
|
10598
|
-
const selectedStepUrl = format === "step" ? modelStepUrl : void 0;
|
|
10599
10682
|
const supplierPartNumbers = {
|
|
10600
10683
|
jlcpcb: [betterEasy.lcsc.number]
|
|
10601
10684
|
};
|
|
@@ -10603,8 +10686,8 @@ var convertBetterEasyToTsx = async ({
|
|
|
10603
10686
|
componentName: pn,
|
|
10604
10687
|
manufacturerPartNumber: pn,
|
|
10605
10688
|
pinLabels,
|
|
10606
|
-
objUrl:
|
|
10607
|
-
stepUrl:
|
|
10689
|
+
objUrl: modelObjUrl,
|
|
10690
|
+
stepUrl: modelStepUrl,
|
|
10608
10691
|
circuitJson,
|
|
10609
10692
|
supplierPartNumbers
|
|
10610
10693
|
});
|
|
@@ -10753,6 +10836,8 @@ export {
|
|
|
10753
10836
|
convertRawEasyToTsx,
|
|
10754
10837
|
fetchEasyEDAComponent,
|
|
10755
10838
|
generateFootprintTsx,
|
|
10756
|
-
getModelCdnUrl
|
|
10839
|
+
getModelCdnUrl,
|
|
10840
|
+
getModelObjCdnUrl,
|
|
10841
|
+
getModelStepCdnUrl
|
|
10757
10842
|
};
|
|
10758
10843
|
//# sourceMappingURL=index.js.map
|