@tscircuit/core 0.0.1404 → 0.0.1405
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/index.d.ts +29 -0
- package/dist/index.js +32 -21
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -319,6 +319,14 @@ type ReactSubtree = {
|
|
|
319
319
|
component: NormalComponent;
|
|
320
320
|
};
|
|
321
321
|
|
|
322
|
+
type VerticalPortSideConfiguration = {
|
|
323
|
+
direction?: "top-to-bottom" | "bottom-to-top";
|
|
324
|
+
pins: number[];
|
|
325
|
+
};
|
|
326
|
+
type HorizontalPortSideConfiguration = {
|
|
327
|
+
direction?: "left-to-right" | "right-to-left";
|
|
328
|
+
pins: number[];
|
|
329
|
+
};
|
|
322
330
|
type SchematicBoxPortPositionWithMetadata = {
|
|
323
331
|
trueIndex: number;
|
|
324
332
|
pinNumber: number;
|
|
@@ -327,6 +335,26 @@ type SchematicBoxPortPositionWithMetadata = {
|
|
|
327
335
|
x: number;
|
|
328
336
|
y: number;
|
|
329
337
|
};
|
|
338
|
+
type ExplicitPinMappingArrangement = {
|
|
339
|
+
leftSide?: VerticalPortSideConfiguration;
|
|
340
|
+
rightSide?: VerticalPortSideConfiguration;
|
|
341
|
+
topSide?: HorizontalPortSideConfiguration;
|
|
342
|
+
bottomSide?: HorizontalPortSideConfiguration;
|
|
343
|
+
};
|
|
344
|
+
/** @deprecated prefer SidePinCounts */
|
|
345
|
+
interface SideSizes {
|
|
346
|
+
leftSize?: number;
|
|
347
|
+
rightSize?: number;
|
|
348
|
+
topSize?: number;
|
|
349
|
+
bottomSize?: number;
|
|
350
|
+
}
|
|
351
|
+
interface SidePinCounts {
|
|
352
|
+
leftPinCount?: number;
|
|
353
|
+
rightPinCount?: number;
|
|
354
|
+
topPinCount?: number;
|
|
355
|
+
bottomPinCount?: number;
|
|
356
|
+
}
|
|
357
|
+
type PortArrangement = SideSizes | SidePinCounts | ExplicitPinMappingArrangement;
|
|
330
358
|
interface SchematicBoxDimensions {
|
|
331
359
|
pinCount: number;
|
|
332
360
|
getPortPositionByPinNumber(pinNumber: number): SchematicBoxPortPositionWithMetadata | null;
|
|
@@ -2310,6 +2338,7 @@ declare class NormalComponent<ZodProps extends z.ZodType = any, PortNames extend
|
|
|
2310
2338
|
* Extract pin labels from ports using existing Port logic
|
|
2311
2339
|
*/
|
|
2312
2340
|
_getPinLabelsFromPorts(): Record<string, string>;
|
|
2341
|
+
_getImplicitSparseSchematicPortArrangement(pinCount: number): PortArrangement | undefined;
|
|
2313
2342
|
_getSchematicBoxDimensions(): SchematicBoxDimensions | null;
|
|
2314
2343
|
getFootprinterString(): string | null;
|
|
2315
2344
|
doInitialCadModelRender(): void;
|
package/dist/index.js
CHANGED
|
@@ -10980,7 +10980,6 @@ var createComponentsFromCircuitJson = ({
|
|
|
10980
10980
|
};
|
|
10981
10981
|
|
|
10982
10982
|
// lib/utils/filterPinLabels.ts
|
|
10983
|
-
import { chipProps } from "@tscircuit/props";
|
|
10984
10983
|
function filterPinLabels(pinLabels) {
|
|
10985
10984
|
if (!pinLabels)
|
|
10986
10985
|
return {
|
|
@@ -11010,18 +11009,8 @@ function filterPinLabels(pinLabels) {
|
|
|
11010
11009
|
invalidPinLabelsMessages
|
|
11011
11010
|
};
|
|
11012
11011
|
}
|
|
11013
|
-
function isValidPinLabel(
|
|
11014
|
-
|
|
11015
|
-
const testProps = {
|
|
11016
|
-
name: "test",
|
|
11017
|
-
footprint: "test",
|
|
11018
|
-
pinLabels: { [pin]: label }
|
|
11019
|
-
};
|
|
11020
|
-
const result = chipProps.safeParse(testProps);
|
|
11021
|
-
return result.success;
|
|
11022
|
-
} catch (error) {
|
|
11023
|
-
return false;
|
|
11024
|
-
}
|
|
11012
|
+
function isValidPinLabel(_pin, label) {
|
|
11013
|
+
return /^[A-Za-z0-9_]+$/.test(label);
|
|
11025
11014
|
}
|
|
11026
11015
|
|
|
11027
11016
|
// lib/utils/get-bounds-of-pcb-components.ts
|
|
@@ -11229,7 +11218,7 @@ var getAllDimensionsForSchematicBox = (params) => {
|
|
|
11229
11218
|
currentDistanceFromEdge += pinStyle.topMargin;
|
|
11230
11219
|
}
|
|
11231
11220
|
orderedTruePorts.push({
|
|
11232
|
-
trueIndex:
|
|
11221
|
+
trueIndex: pinNumber - 1,
|
|
11233
11222
|
pinNumber,
|
|
11234
11223
|
side: "left",
|
|
11235
11224
|
distanceFromOrthogonalEdge: currentDistanceFromEdge
|
|
@@ -11257,7 +11246,7 @@ var getAllDimensionsForSchematicBox = (params) => {
|
|
|
11257
11246
|
currentDistanceFromEdge += pinStyle.leftMargin;
|
|
11258
11247
|
}
|
|
11259
11248
|
orderedTruePorts.push({
|
|
11260
|
-
trueIndex:
|
|
11249
|
+
trueIndex: pinNumber - 1,
|
|
11261
11250
|
pinNumber,
|
|
11262
11251
|
side: "bottom",
|
|
11263
11252
|
distanceFromOrthogonalEdge: currentDistanceFromEdge
|
|
@@ -11285,7 +11274,7 @@ var getAllDimensionsForSchematicBox = (params) => {
|
|
|
11285
11274
|
currentDistanceFromEdge += pinStyle.bottomMargin;
|
|
11286
11275
|
}
|
|
11287
11276
|
orderedTruePorts.push({
|
|
11288
|
-
trueIndex:
|
|
11277
|
+
trueIndex: pinNumber - 1,
|
|
11289
11278
|
pinNumber,
|
|
11290
11279
|
side: "right",
|
|
11291
11280
|
distanceFromOrthogonalEdge: currentDistanceFromEdge
|
|
@@ -11313,7 +11302,7 @@ var getAllDimensionsForSchematicBox = (params) => {
|
|
|
11313
11302
|
currentDistanceFromEdge += pinStyle.rightMargin;
|
|
11314
11303
|
}
|
|
11315
11304
|
orderedTruePorts.push({
|
|
11316
|
-
trueIndex:
|
|
11305
|
+
trueIndex: pinNumber - 1,
|
|
11317
11306
|
pinNumber,
|
|
11318
11307
|
side: "top",
|
|
11319
11308
|
distanceFromOrthogonalEdge: currentDistanceFromEdge
|
|
@@ -13292,6 +13281,9 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
|
|
|
13292
13281
|
const requiredPinCount = opts.pinCount ?? this._getPrimaryPinCount() ?? 0;
|
|
13293
13282
|
for (let pn = 1; pn <= requiredPinCount; pn++) {
|
|
13294
13283
|
if (portsToCreate.find((p) => p._parsedProps.pinNumber === pn)) continue;
|
|
13284
|
+
if (!schPortArrangement && pinLabelsFromProps && !Array.isArray(propsPinLabels) && !pinLabelsFromProps[`pin${pn}`]) {
|
|
13285
|
+
continue;
|
|
13286
|
+
}
|
|
13295
13287
|
if (!schPortArrangement) {
|
|
13296
13288
|
portsToCreate.push(
|
|
13297
13289
|
new Port({
|
|
@@ -14150,6 +14142,24 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
|
|
|
14150
14142
|
}
|
|
14151
14143
|
return pinLabels;
|
|
14152
14144
|
}
|
|
14145
|
+
_getImplicitSparseSchematicPortArrangement(pinCount) {
|
|
14146
|
+
const pinNumbers = Array.from(
|
|
14147
|
+
new Set(
|
|
14148
|
+
this._getAllPortsFromChildren().filter((port) => port._isPrimaryPort).map((port) => port._parsedProps.pinNumber).filter((pinNumber) => pinNumber !== void 0)
|
|
14149
|
+
)
|
|
14150
|
+
).sort((a, b) => a - b);
|
|
14151
|
+
if (pinNumbers.length !== pinCount) return void 0;
|
|
14152
|
+
const hasSparsePinNumbers = pinNumbers.some(
|
|
14153
|
+
(pinNumber, index) => pinNumber !== index + 1
|
|
14154
|
+
);
|
|
14155
|
+
if (!hasSparsePinNumbers) return void 0;
|
|
14156
|
+
const rightSize = Math.floor(pinCount / 2);
|
|
14157
|
+
const leftSize = pinCount - rightSize;
|
|
14158
|
+
return {
|
|
14159
|
+
leftSide: { pins: pinNumbers.slice(0, leftSize) },
|
|
14160
|
+
rightSide: { pins: pinNumbers.slice(leftSize) }
|
|
14161
|
+
};
|
|
14162
|
+
}
|
|
14153
14163
|
_getSchematicBoxDimensions() {
|
|
14154
14164
|
if (this.getSchematicSymbol()) return null;
|
|
14155
14165
|
if (!this.config.shouldRenderAsSchematicBox && !this._parsedProps?.showAsSchematicBox) {
|
|
@@ -14163,6 +14173,7 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
|
|
|
14163
14173
|
...pinLabelsFromPorts,
|
|
14164
14174
|
...props.pinLabels
|
|
14165
14175
|
};
|
|
14176
|
+
const schPortArrangement = this._getSchematicPortArrangement() ?? this._getImplicitSparseSchematicPortArrangement(pinCount);
|
|
14166
14177
|
const dimensions = getAllDimensionsForSchematicBox({
|
|
14167
14178
|
schWidth: props.schWidth,
|
|
14168
14179
|
schHeight: props.schHeight,
|
|
@@ -14172,7 +14183,7 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
|
|
|
14172
14183
|
allPinLabels
|
|
14173
14184
|
),
|
|
14174
14185
|
pinCount,
|
|
14175
|
-
schPortArrangement
|
|
14186
|
+
schPortArrangement,
|
|
14176
14187
|
pinLabels: allPinLabels
|
|
14177
14188
|
});
|
|
14178
14189
|
return dimensions;
|
|
@@ -14858,7 +14869,7 @@ function inflateSourceCapacitor(sourceElm, inflatorContext) {
|
|
|
14858
14869
|
}
|
|
14859
14870
|
|
|
14860
14871
|
// lib/components/normal-components/Chip.ts
|
|
14861
|
-
import { chipProps
|
|
14872
|
+
import { chipProps } from "@tscircuit/props";
|
|
14862
14873
|
import { pcb_component_invalid_layer_error as pcb_component_invalid_layer_error2 } from "circuit-json";
|
|
14863
14874
|
var Chip = class extends NormalComponent3 {
|
|
14864
14875
|
schematicBoxDimensions = null;
|
|
@@ -14868,7 +14879,7 @@ var Chip = class extends NormalComponent3 {
|
|
|
14868
14879
|
get config() {
|
|
14869
14880
|
return {
|
|
14870
14881
|
componentName: "Chip",
|
|
14871
|
-
zodProps:
|
|
14882
|
+
zodProps: chipProps,
|
|
14872
14883
|
shouldRenderAsSchematicBox: true
|
|
14873
14884
|
};
|
|
14874
14885
|
}
|
|
@@ -25318,7 +25329,7 @@ import { identity as identity5 } from "transformation-matrix";
|
|
|
25318
25329
|
var package_default = {
|
|
25319
25330
|
name: "@tscircuit/core",
|
|
25320
25331
|
type: "module",
|
|
25321
|
-
version: "0.0.
|
|
25332
|
+
version: "0.0.1404",
|
|
25322
25333
|
types: "dist/index.d.ts",
|
|
25323
25334
|
main: "dist/index.js",
|
|
25324
25335
|
module: "dist/index.js",
|