@tscircuit/core 0.0.2013 → 0.0.2015

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 CHANGED
@@ -110181,15 +110181,20 @@ declare class AssemblyDevice extends PrimitiveComponent<typeof assemblyDevicePro
110181
110181
  componentName: string;
110182
110182
  zodProps: zod.ZodObject<{
110183
110183
  name: zod.ZodOptional<zod.ZodString>;
110184
+ modelUrl: zod.ZodOptional<zod.ZodEffects<zod.ZodType<string, zod.ZodTypeDef, string>, string, string>>;
110184
110185
  }, "strip", zod.ZodTypeAny, {
110185
110186
  name?: string | undefined;
110187
+ modelUrl?: string | undefined;
110186
110188
  }, {
110187
110189
  name?: string | undefined;
110190
+ modelUrl?: string | undefined;
110188
110191
  }>;
110189
110192
  };
110190
110193
  doInitialAssignNameToUnnamedComponents(): void;
110191
110194
  computeSchematicGlobalTransform(): Matrix;
110192
110195
  _computePcbGlobalTransformBeforeLayout(): Matrix;
110196
+ doInitialSourceRender(): void;
110197
+ doInitialCadModelRender(): void;
110193
110198
  }
110194
110199
 
110195
110200
  declare class AssemblyScreen extends PrimitiveComponent<typeof assemblyScreenProps> implements AssemblyDeviceContainer {
@@ -110198,6 +110203,7 @@ declare class AssemblyScreen extends PrimitiveComponent<typeof assemblyScreenPro
110198
110203
  componentName: string;
110199
110204
  zodProps: zod.ZodEffects<zod.ZodObject<{
110200
110205
  name: zod.ZodEffects<zod.ZodString, string, string>;
110206
+ modelUrl: zod.ZodOptional<zod.ZodEffects<zod.ZodType<string, zod.ZodTypeDef, string>, string, string>>;
110201
110207
  connectsTo: zod.ZodEffects<zod.ZodString, string, string>;
110202
110208
  width: zod.ZodOptional<zod.ZodEffects<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>, number, string | number>>;
110203
110209
  height: zod.ZodOptional<zod.ZodEffects<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>, number, string | number>>;
@@ -110207,24 +110213,28 @@ declare class AssemblyScreen extends PrimitiveComponent<typeof assemblyScreenPro
110207
110213
  connectsTo: string;
110208
110214
  width?: number | undefined;
110209
110215
  height?: number | undefined;
110216
+ modelUrl?: string | undefined;
110210
110217
  cadModel?: string | undefined;
110211
110218
  }, {
110212
110219
  name: string;
110213
110220
  connectsTo: string;
110214
110221
  width?: string | number | undefined;
110215
110222
  height?: string | number | undefined;
110223
+ modelUrl?: string | undefined;
110216
110224
  cadModel?: string | undefined;
110217
110225
  }>, {
110218
110226
  name: string;
110219
110227
  connectsTo: string;
110220
110228
  width?: number | undefined;
110221
110229
  height?: number | undefined;
110230
+ modelUrl?: string | undefined;
110222
110231
  cadModel?: string | undefined;
110223
110232
  }, {
110224
110233
  name: string;
110225
110234
  connectsTo: string;
110226
110235
  width?: string | number | undefined;
110227
110236
  height?: string | number | undefined;
110237
+ modelUrl?: string | undefined;
110228
110238
  cadModel?: string | undefined;
110229
110239
  }>;
110230
110240
  };
@@ -110237,9 +110247,10 @@ declare class AssemblySubassembly extends PrimitiveComponent<typeof assemblySuba
110237
110247
  isAssemblyDeviceContainer: true;
110238
110248
  get config(): {
110239
110249
  componentName: string;
110240
- zodProps: zod.ZodObject<{
110250
+ zodProps: zod.ZodEffects<zod.ZodObject<{
110241
110251
  name: zod.ZodEffects<zod.ZodString, string, string>;
110242
110252
  displayName: zod.ZodOptional<zod.ZodString>;
110253
+ modelUrl: zod.ZodOptional<zod.ZodEffects<zod.ZodType<string, zod.ZodTypeDef, string>, string, string>>;
110243
110254
  cadModel: zod.ZodOptional<zod.ZodUnion<[zod.ZodNull, zod.ZodString, zod.ZodType<react.ReactElement<any, string | react.JSXElementConstructor<any>>, zod.ZodTypeDef, react.ReactElement<any, string | react.JSXElementConstructor<any>>>, zod.ZodObject<{
110244
110255
  rotationOffset: zod.ZodOptional<zod.ZodUnion<[zod.ZodNumber, zod.ZodObject<{
110245
110256
  x: zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>;
@@ -111582,6 +111593,579 @@ declare class AssemblySubassembly extends PrimitiveComponent<typeof assemblySuba
111582
111593
  }, "strip", zod.ZodTypeAny, {
111583
111594
  name: string;
111584
111595
  displayName?: string | undefined;
111596
+ modelUrl?: string | undefined;
111597
+ cadModel?: string | {
111598
+ stlUrl: string;
111599
+ rotationOffset?: number | {
111600
+ x: string | number;
111601
+ y: string | number;
111602
+ z: string | number;
111603
+ } | undefined;
111604
+ positionOffset?: {
111605
+ x: number;
111606
+ y: number;
111607
+ z: number;
111608
+ } | undefined;
111609
+ modelOriginPosition?: {
111610
+ x: number;
111611
+ y: number;
111612
+ z: number;
111613
+ } | undefined;
111614
+ modelBounds?: {
111615
+ min: {
111616
+ x: number;
111617
+ y: number;
111618
+ z: number;
111619
+ };
111620
+ max: {
111621
+ x: number;
111622
+ y: number;
111623
+ z: number;
111624
+ };
111625
+ } | undefined;
111626
+ size?: {
111627
+ x: number;
111628
+ y: number;
111629
+ z: number;
111630
+ } | undefined;
111631
+ modelUnitToMmScale?: number | undefined;
111632
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
111633
+ pcbRotationOffset?: number | undefined;
111634
+ zOffsetFromSurface?: number | undefined;
111635
+ showAsTranslucentModel?: boolean | undefined;
111636
+ stepUrl?: string | undefined;
111637
+ } | {
111638
+ objUrl: string;
111639
+ rotationOffset?: number | {
111640
+ x: string | number;
111641
+ y: string | number;
111642
+ z: string | number;
111643
+ } | undefined;
111644
+ positionOffset?: {
111645
+ x: number;
111646
+ y: number;
111647
+ z: number;
111648
+ } | undefined;
111649
+ modelOriginPosition?: {
111650
+ x: number;
111651
+ y: number;
111652
+ z: number;
111653
+ } | undefined;
111654
+ modelBounds?: {
111655
+ min: {
111656
+ x: number;
111657
+ y: number;
111658
+ z: number;
111659
+ };
111660
+ max: {
111661
+ x: number;
111662
+ y: number;
111663
+ z: number;
111664
+ };
111665
+ } | undefined;
111666
+ size?: {
111667
+ x: number;
111668
+ y: number;
111669
+ z: number;
111670
+ } | undefined;
111671
+ modelUnitToMmScale?: number | undefined;
111672
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
111673
+ pcbRotationOffset?: number | undefined;
111674
+ zOffsetFromSurface?: number | undefined;
111675
+ showAsTranslucentModel?: boolean | undefined;
111676
+ stepUrl?: string | undefined;
111677
+ mtlUrl?: string | undefined;
111678
+ } | {
111679
+ gltfUrl: string;
111680
+ rotationOffset?: number | {
111681
+ x: string | number;
111682
+ y: string | number;
111683
+ z: string | number;
111684
+ } | undefined;
111685
+ positionOffset?: {
111686
+ x: number;
111687
+ y: number;
111688
+ z: number;
111689
+ } | undefined;
111690
+ modelOriginPosition?: {
111691
+ x: number;
111692
+ y: number;
111693
+ z: number;
111694
+ } | undefined;
111695
+ modelBounds?: {
111696
+ min: {
111697
+ x: number;
111698
+ y: number;
111699
+ z: number;
111700
+ };
111701
+ max: {
111702
+ x: number;
111703
+ y: number;
111704
+ z: number;
111705
+ };
111706
+ } | undefined;
111707
+ size?: {
111708
+ x: number;
111709
+ y: number;
111710
+ z: number;
111711
+ } | undefined;
111712
+ modelUnitToMmScale?: number | undefined;
111713
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
111714
+ pcbRotationOffset?: number | undefined;
111715
+ zOffsetFromSurface?: number | undefined;
111716
+ showAsTranslucentModel?: boolean | undefined;
111717
+ stepUrl?: string | undefined;
111718
+ } | {
111719
+ glbUrl: string;
111720
+ rotationOffset?: number | {
111721
+ x: string | number;
111722
+ y: string | number;
111723
+ z: string | number;
111724
+ } | undefined;
111725
+ positionOffset?: {
111726
+ x: number;
111727
+ y: number;
111728
+ z: number;
111729
+ } | undefined;
111730
+ modelOriginPosition?: {
111731
+ x: number;
111732
+ y: number;
111733
+ z: number;
111734
+ } | undefined;
111735
+ modelBounds?: {
111736
+ min: {
111737
+ x: number;
111738
+ y: number;
111739
+ z: number;
111740
+ };
111741
+ max: {
111742
+ x: number;
111743
+ y: number;
111744
+ z: number;
111745
+ };
111746
+ } | undefined;
111747
+ size?: {
111748
+ x: number;
111749
+ y: number;
111750
+ z: number;
111751
+ } | undefined;
111752
+ modelUnitToMmScale?: number | undefined;
111753
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
111754
+ pcbRotationOffset?: number | undefined;
111755
+ zOffsetFromSurface?: number | undefined;
111756
+ showAsTranslucentModel?: boolean | undefined;
111757
+ stepUrl?: string | undefined;
111758
+ } | {
111759
+ stepUrl: string;
111760
+ rotationOffset?: number | {
111761
+ x: string | number;
111762
+ y: string | number;
111763
+ z: string | number;
111764
+ } | undefined;
111765
+ positionOffset?: {
111766
+ x: number;
111767
+ y: number;
111768
+ z: number;
111769
+ } | undefined;
111770
+ modelOriginPosition?: {
111771
+ x: number;
111772
+ y: number;
111773
+ z: number;
111774
+ } | undefined;
111775
+ modelBounds?: {
111776
+ min: {
111777
+ x: number;
111778
+ y: number;
111779
+ z: number;
111780
+ };
111781
+ max: {
111782
+ x: number;
111783
+ y: number;
111784
+ z: number;
111785
+ };
111786
+ } | undefined;
111787
+ size?: {
111788
+ x: number;
111789
+ y: number;
111790
+ z: number;
111791
+ } | undefined;
111792
+ modelUnitToMmScale?: number | undefined;
111793
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
111794
+ pcbRotationOffset?: number | undefined;
111795
+ zOffsetFromSurface?: number | undefined;
111796
+ showAsTranslucentModel?: boolean | undefined;
111797
+ } | {
111798
+ wrlUrl: string;
111799
+ rotationOffset?: number | {
111800
+ x: string | number;
111801
+ y: string | number;
111802
+ z: string | number;
111803
+ } | undefined;
111804
+ positionOffset?: {
111805
+ x: number;
111806
+ y: number;
111807
+ z: number;
111808
+ } | undefined;
111809
+ modelOriginPosition?: {
111810
+ x: number;
111811
+ y: number;
111812
+ z: number;
111813
+ } | undefined;
111814
+ modelBounds?: {
111815
+ min: {
111816
+ x: number;
111817
+ y: number;
111818
+ z: number;
111819
+ };
111820
+ max: {
111821
+ x: number;
111822
+ y: number;
111823
+ z: number;
111824
+ };
111825
+ } | undefined;
111826
+ size?: {
111827
+ x: number;
111828
+ y: number;
111829
+ z: number;
111830
+ } | undefined;
111831
+ modelUnitToMmScale?: number | undefined;
111832
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
111833
+ pcbRotationOffset?: number | undefined;
111834
+ zOffsetFromSurface?: number | undefined;
111835
+ showAsTranslucentModel?: boolean | undefined;
111836
+ stepUrl?: string | undefined;
111837
+ } | {
111838
+ jscad: Record<string, any>;
111839
+ rotationOffset?: number | {
111840
+ x: string | number;
111841
+ y: string | number;
111842
+ z: string | number;
111843
+ } | undefined;
111844
+ positionOffset?: {
111845
+ x: number;
111846
+ y: number;
111847
+ z: number;
111848
+ } | undefined;
111849
+ modelOriginPosition?: {
111850
+ x: number;
111851
+ y: number;
111852
+ z: number;
111853
+ } | undefined;
111854
+ modelBounds?: {
111855
+ min: {
111856
+ x: number;
111857
+ y: number;
111858
+ z: number;
111859
+ };
111860
+ max: {
111861
+ x: number;
111862
+ y: number;
111863
+ z: number;
111864
+ };
111865
+ } | undefined;
111866
+ size?: {
111867
+ x: number;
111868
+ y: number;
111869
+ z: number;
111870
+ } | undefined;
111871
+ modelUnitToMmScale?: number | undefined;
111872
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
111873
+ pcbRotationOffset?: number | undefined;
111874
+ zOffsetFromSurface?: number | undefined;
111875
+ showAsTranslucentModel?: boolean | undefined;
111876
+ stepUrl?: string | undefined;
111877
+ } | react.ReactElement<any, string | react.JSXElementConstructor<any>> | null | undefined;
111878
+ children?: react.ReactNode;
111879
+ }, {
111880
+ name: string;
111881
+ displayName?: string | undefined;
111882
+ modelUrl?: string | undefined;
111883
+ cadModel?: string | {
111884
+ stlUrl: string;
111885
+ rotationOffset?: number | {
111886
+ x: string | number;
111887
+ y: string | number;
111888
+ z: string | number;
111889
+ } | undefined;
111890
+ positionOffset?: {
111891
+ x: string | number;
111892
+ y: string | number;
111893
+ z: string | number;
111894
+ } | undefined;
111895
+ modelOriginPosition?: {
111896
+ x: string | number;
111897
+ y: string | number;
111898
+ z: string | number;
111899
+ } | undefined;
111900
+ modelBounds?: {
111901
+ min: {
111902
+ x: string | number;
111903
+ y: string | number;
111904
+ z: string | number;
111905
+ };
111906
+ max: {
111907
+ x: string | number;
111908
+ y: string | number;
111909
+ z: string | number;
111910
+ };
111911
+ } | undefined;
111912
+ size?: {
111913
+ x: string | number;
111914
+ y: string | number;
111915
+ z: string | number;
111916
+ } | undefined;
111917
+ modelUnitToMmScale?: string | number | undefined;
111918
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
111919
+ pcbRotationOffset?: number | undefined;
111920
+ zOffsetFromSurface?: string | number | undefined;
111921
+ showAsTranslucentModel?: boolean | undefined;
111922
+ stepUrl?: string | undefined;
111923
+ } | {
111924
+ objUrl: string;
111925
+ rotationOffset?: number | {
111926
+ x: string | number;
111927
+ y: string | number;
111928
+ z: string | number;
111929
+ } | undefined;
111930
+ positionOffset?: {
111931
+ x: string | number;
111932
+ y: string | number;
111933
+ z: string | number;
111934
+ } | undefined;
111935
+ modelOriginPosition?: {
111936
+ x: string | number;
111937
+ y: string | number;
111938
+ z: string | number;
111939
+ } | undefined;
111940
+ modelBounds?: {
111941
+ min: {
111942
+ x: string | number;
111943
+ y: string | number;
111944
+ z: string | number;
111945
+ };
111946
+ max: {
111947
+ x: string | number;
111948
+ y: string | number;
111949
+ z: string | number;
111950
+ };
111951
+ } | undefined;
111952
+ size?: {
111953
+ x: string | number;
111954
+ y: string | number;
111955
+ z: string | number;
111956
+ } | undefined;
111957
+ modelUnitToMmScale?: string | number | undefined;
111958
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
111959
+ pcbRotationOffset?: number | undefined;
111960
+ zOffsetFromSurface?: string | number | undefined;
111961
+ showAsTranslucentModel?: boolean | undefined;
111962
+ stepUrl?: string | undefined;
111963
+ mtlUrl?: string | undefined;
111964
+ } | {
111965
+ gltfUrl: string;
111966
+ rotationOffset?: number | {
111967
+ x: string | number;
111968
+ y: string | number;
111969
+ z: string | number;
111970
+ } | undefined;
111971
+ positionOffset?: {
111972
+ x: string | number;
111973
+ y: string | number;
111974
+ z: string | number;
111975
+ } | undefined;
111976
+ modelOriginPosition?: {
111977
+ x: string | number;
111978
+ y: string | number;
111979
+ z: string | number;
111980
+ } | undefined;
111981
+ modelBounds?: {
111982
+ min: {
111983
+ x: string | number;
111984
+ y: string | number;
111985
+ z: string | number;
111986
+ };
111987
+ max: {
111988
+ x: string | number;
111989
+ y: string | number;
111990
+ z: string | number;
111991
+ };
111992
+ } | undefined;
111993
+ size?: {
111994
+ x: string | number;
111995
+ y: string | number;
111996
+ z: string | number;
111997
+ } | undefined;
111998
+ modelUnitToMmScale?: string | number | undefined;
111999
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
112000
+ pcbRotationOffset?: number | undefined;
112001
+ zOffsetFromSurface?: string | number | undefined;
112002
+ showAsTranslucentModel?: boolean | undefined;
112003
+ stepUrl?: string | undefined;
112004
+ } | {
112005
+ glbUrl: string;
112006
+ rotationOffset?: number | {
112007
+ x: string | number;
112008
+ y: string | number;
112009
+ z: string | number;
112010
+ } | undefined;
112011
+ positionOffset?: {
112012
+ x: string | number;
112013
+ y: string | number;
112014
+ z: string | number;
112015
+ } | undefined;
112016
+ modelOriginPosition?: {
112017
+ x: string | number;
112018
+ y: string | number;
112019
+ z: string | number;
112020
+ } | undefined;
112021
+ modelBounds?: {
112022
+ min: {
112023
+ x: string | number;
112024
+ y: string | number;
112025
+ z: string | number;
112026
+ };
112027
+ max: {
112028
+ x: string | number;
112029
+ y: string | number;
112030
+ z: string | number;
112031
+ };
112032
+ } | undefined;
112033
+ size?: {
112034
+ x: string | number;
112035
+ y: string | number;
112036
+ z: string | number;
112037
+ } | undefined;
112038
+ modelUnitToMmScale?: string | number | undefined;
112039
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
112040
+ pcbRotationOffset?: number | undefined;
112041
+ zOffsetFromSurface?: string | number | undefined;
112042
+ showAsTranslucentModel?: boolean | undefined;
112043
+ stepUrl?: string | undefined;
112044
+ } | {
112045
+ stepUrl: string;
112046
+ rotationOffset?: number | {
112047
+ x: string | number;
112048
+ y: string | number;
112049
+ z: string | number;
112050
+ } | undefined;
112051
+ positionOffset?: {
112052
+ x: string | number;
112053
+ y: string | number;
112054
+ z: string | number;
112055
+ } | undefined;
112056
+ modelOriginPosition?: {
112057
+ x: string | number;
112058
+ y: string | number;
112059
+ z: string | number;
112060
+ } | undefined;
112061
+ modelBounds?: {
112062
+ min: {
112063
+ x: string | number;
112064
+ y: string | number;
112065
+ z: string | number;
112066
+ };
112067
+ max: {
112068
+ x: string | number;
112069
+ y: string | number;
112070
+ z: string | number;
112071
+ };
112072
+ } | undefined;
112073
+ size?: {
112074
+ x: string | number;
112075
+ y: string | number;
112076
+ z: string | number;
112077
+ } | undefined;
112078
+ modelUnitToMmScale?: string | number | undefined;
112079
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
112080
+ pcbRotationOffset?: number | undefined;
112081
+ zOffsetFromSurface?: string | number | undefined;
112082
+ showAsTranslucentModel?: boolean | undefined;
112083
+ } | {
112084
+ wrlUrl: string;
112085
+ rotationOffset?: number | {
112086
+ x: string | number;
112087
+ y: string | number;
112088
+ z: string | number;
112089
+ } | undefined;
112090
+ positionOffset?: {
112091
+ x: string | number;
112092
+ y: string | number;
112093
+ z: string | number;
112094
+ } | undefined;
112095
+ modelOriginPosition?: {
112096
+ x: string | number;
112097
+ y: string | number;
112098
+ z: string | number;
112099
+ } | undefined;
112100
+ modelBounds?: {
112101
+ min: {
112102
+ x: string | number;
112103
+ y: string | number;
112104
+ z: string | number;
112105
+ };
112106
+ max: {
112107
+ x: string | number;
112108
+ y: string | number;
112109
+ z: string | number;
112110
+ };
112111
+ } | undefined;
112112
+ size?: {
112113
+ x: string | number;
112114
+ y: string | number;
112115
+ z: string | number;
112116
+ } | undefined;
112117
+ modelUnitToMmScale?: string | number | undefined;
112118
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
112119
+ pcbRotationOffset?: number | undefined;
112120
+ zOffsetFromSurface?: string | number | undefined;
112121
+ showAsTranslucentModel?: boolean | undefined;
112122
+ stepUrl?: string | undefined;
112123
+ } | {
112124
+ jscad: Record<string, any>;
112125
+ rotationOffset?: number | {
112126
+ x: string | number;
112127
+ y: string | number;
112128
+ z: string | number;
112129
+ } | undefined;
112130
+ positionOffset?: {
112131
+ x: string | number;
112132
+ y: string | number;
112133
+ z: string | number;
112134
+ } | undefined;
112135
+ modelOriginPosition?: {
112136
+ x: string | number;
112137
+ y: string | number;
112138
+ z: string | number;
112139
+ } | undefined;
112140
+ modelBounds?: {
112141
+ min: {
112142
+ x: string | number;
112143
+ y: string | number;
112144
+ z: string | number;
112145
+ };
112146
+ max: {
112147
+ x: string | number;
112148
+ y: string | number;
112149
+ z: string | number;
112150
+ };
112151
+ } | undefined;
112152
+ size?: {
112153
+ x: string | number;
112154
+ y: string | number;
112155
+ z: string | number;
112156
+ } | undefined;
112157
+ modelUnitToMmScale?: string | number | undefined;
112158
+ modelBoardNormalDirection?: "x+" | "x-" | "y+" | "y-" | "z+" | "z-" | undefined;
112159
+ pcbRotationOffset?: number | undefined;
112160
+ zOffsetFromSurface?: string | number | undefined;
112161
+ showAsTranslucentModel?: boolean | undefined;
112162
+ stepUrl?: string | undefined;
112163
+ } | react.ReactElement<any, string | react.JSXElementConstructor<any>> | null | undefined;
112164
+ children?: react.ReactNode;
112165
+ }>, {
112166
+ name: string;
112167
+ displayName?: string | undefined;
112168
+ modelUrl?: string | undefined;
111585
112169
  cadModel?: string | {
111586
112170
  stlUrl: string;
111587
112171
  rotationOffset?: number | {
@@ -111867,6 +112451,7 @@ declare class AssemblySubassembly extends PrimitiveComponent<typeof assemblySuba
111867
112451
  }, {
111868
112452
  name: string;
111869
112453
  displayName?: string | undefined;
112454
+ modelUrl?: string | undefined;
111870
112455
  cadModel?: string | {
111871
112456
  stlUrl: string;
111872
112457
  rotationOffset?: number | {
package/dist/index.js CHANGED
@@ -3196,6 +3196,53 @@ function fillPolygonWithRects(polygon, options = {}) {
3196
3196
  return rects;
3197
3197
  }
3198
3198
 
3199
+ // lib/utils/obstacles/generateApproximatingRects.ts
3200
+ function generateApproximatingRects(rotatedRect, numRects = 2) {
3201
+ const { center, width, height, rotation: rotation5 } = rotatedRect;
3202
+ const rects = [];
3203
+ const angleRad = rotation5 * Math.PI / 180;
3204
+ const cosAngle = Math.cos(angleRad);
3205
+ const sinAngle = Math.sin(angleRad);
3206
+ const normalizedRotation = (rotation5 % 360 + 360) % 360;
3207
+ const sliceAlongWidth = height <= width ? normalizedRotation >= 45 && normalizedRotation < 135 || normalizedRotation >= 225 && normalizedRotation < 315 : normalizedRotation >= 135 && normalizedRotation < 225 || normalizedRotation >= 315 || normalizedRotation < 45;
3208
+ if (sliceAlongWidth) {
3209
+ const sliceWidth = width / numRects;
3210
+ for (let i = 0; i < numRects; i++) {
3211
+ const x = (i - numRects / 2 + 0.5) * sliceWidth;
3212
+ const rotatedX = -x * cosAngle;
3213
+ const rotatedY = -x * sinAngle;
3214
+ const coverageWidth = sliceWidth * 1.1;
3215
+ const coverageHeight = Math.abs(height * cosAngle) + Math.abs(sliceWidth * sinAngle);
3216
+ rects.push({
3217
+ center: {
3218
+ x: center.x + rotatedX,
3219
+ y: center.y + rotatedY
3220
+ },
3221
+ width: coverageWidth,
3222
+ height: coverageHeight
3223
+ });
3224
+ }
3225
+ } else {
3226
+ const sliceHeight = height / numRects;
3227
+ for (let i = 0; i < numRects; i++) {
3228
+ const y = (i - numRects / 2 + 0.5) * sliceHeight;
3229
+ const rotatedX = -y * sinAngle;
3230
+ const rotatedY = y * cosAngle;
3231
+ const coverageWidth = Math.abs(width * cosAngle) + Math.abs(sliceHeight * sinAngle);
3232
+ const coverageHeight = sliceHeight * 1.1;
3233
+ rects.push({
3234
+ center: {
3235
+ x: center.x + rotatedX,
3236
+ y: center.y + rotatedY
3237
+ },
3238
+ width: coverageWidth,
3239
+ height: coverageHeight
3240
+ });
3241
+ }
3242
+ }
3243
+ return rects;
3244
+ }
3245
+
3199
3246
  // lib/utils/obstacles/getAxisAlignedRectFromPolygon.ts
3200
3247
  var AXIS_ALIGNED_RECT_TOLERANCE_MM = 1e-3;
3201
3248
  var getAxisAlignedRectFromPolygon = (points) => {
@@ -3233,6 +3280,59 @@ var getAxisAlignedRectFromPolygon = (points) => {
3233
3280
  };
3234
3281
  };
3235
3282
 
3283
+ // lib/utils/obstacles/getObstaclesFromPcbKeepoutOutline.ts
3284
+ var getObstaclesFromPcbKeepoutOutline = (keepout, componentId) => {
3285
+ const { outline, stroke_width } = keepout;
3286
+ if (!Number.isFinite(stroke_width) || stroke_width <= 0) return [];
3287
+ const obstacles = [];
3288
+ for (let segmentIndex = 0; segmentIndex < outline.length - 1; segmentIndex++) {
3289
+ const start = outline[segmentIndex];
3290
+ const end = outline[segmentIndex + 1];
3291
+ const deltaX = end.x - start.x;
3292
+ const deltaY = end.y - start.y;
3293
+ const segmentLength = Math.hypot(deltaX, deltaY);
3294
+ if (!Number.isFinite(segmentLength) || segmentLength === 0) continue;
3295
+ const approximatingRects = generateApproximatingRects({
3296
+ center: {
3297
+ x: (start.x + end.x) / 2,
3298
+ y: (start.y + end.y) / 2
3299
+ },
3300
+ width: segmentLength,
3301
+ height: stroke_width,
3302
+ rotation: Math.atan2(deltaY, deltaX) * 180 / Math.PI
3303
+ });
3304
+ for (const [approximationIndex, rect] of approximatingRects.entries()) {
3305
+ obstacles.push({
3306
+ obstacleId: `${keepout.pcb_keepout_id}_segment_${segmentIndex}_rect_${approximationIndex}`,
3307
+ componentId,
3308
+ type: "rect",
3309
+ layers: keepout.layers,
3310
+ ...rect,
3311
+ connectedTo: []
3312
+ });
3313
+ }
3314
+ }
3315
+ const isClosed = outline.length > 1 && outline[0].x === outline.at(-1)?.x && outline[0].y === outline.at(-1)?.y;
3316
+ const joinPoints = isClosed ? outline.slice(0, -1) : outline;
3317
+ for (const [joinIndex, point6] of joinPoints.entries()) {
3318
+ const approximatingRects = fillCircleWithRects(
3319
+ { center: point6, radius: stroke_width / 2 },
3320
+ { rectHeight: stroke_width / 4 }
3321
+ );
3322
+ for (const [approximationIndex, rect] of approximatingRects.entries()) {
3323
+ obstacles.push({
3324
+ obstacleId: `${keepout.pcb_keepout_id}_join_${joinIndex}_rect_${approximationIndex}`,
3325
+ componentId,
3326
+ type: "rect",
3327
+ layers: keepout.layers,
3328
+ ...rect,
3329
+ connectedTo: []
3330
+ });
3331
+ }
3332
+ }
3333
+ return obstacles;
3334
+ };
3335
+
3236
3336
  // lib/utils/obstacles/getObstaclesFromRoute.ts
3237
3337
  var isCloseTo = (a, b) => Math.abs(a - b) < 1e-4;
3238
3338
  var getObstaclesFromRoute = (route, source_trace_id, { viaDiameter = 0.5 } = {}) => {
@@ -3472,6 +3572,10 @@ var getObstaclesFromCircuitJson = (circuitJson, connMap) => {
3472
3572
  height: element.height,
3473
3573
  connectedTo: []
3474
3574
  });
3575
+ } else if (element.shape === "outline") {
3576
+ obstacles.push(
3577
+ ...getObstaclesFromPcbKeepoutOutline(element, pcbComponentId)
3578
+ );
3475
3579
  }
3476
3580
  } else if (element.type === "pcb_cutout") {
3477
3581
  if (element.shape === "rect") {
@@ -13815,10 +13919,28 @@ var getFileExtension = (filename) => {
13815
13919
  };
13816
13920
 
13817
13921
  // lib/components/primitive-components/CadModel_renderInAssembly.ts
13818
- import {
13819
- cadModelBase as cadModelBase2,
13820
- point3 as point32
13821
- } from "@tscircuit/props";
13922
+ import { cadModelBase as cadModelBase2, point3 as point32 } from "@tscircuit/props";
13923
+
13924
+ // lib/components/primitive-components/resolve-assembly-model-url.ts
13925
+ var resolveAssemblyModelUrl = (modelUrl) => {
13926
+ const url = modelUrl.replace(/#ext=\w+$/, "");
13927
+ switch (getFileExtension(modelUrl)) {
13928
+ case "obj":
13929
+ return { objUrl: url };
13930
+ case "gltf":
13931
+ return { gltfUrl: url };
13932
+ case "glb":
13933
+ return { glbUrl: url };
13934
+ case "step":
13935
+ case "stp":
13936
+ return { stepUrl: url };
13937
+ case "wrl":
13938
+ case "vrml":
13939
+ return { wrlUrl: url };
13940
+ default:
13941
+ return { stlUrl: url };
13942
+ }
13943
+ };
13822
13944
 
13823
13945
  // lib/components/primitive-components/render-assembly-cad-model.ts
13824
13946
  import { normalizeDegrees as normalizeDegrees3 } from "@tscircuit/math-utils";
@@ -13905,30 +14027,7 @@ var CadModel_renderInAssembly = (component) => {
13905
14027
  z: props.pcbZ ?? 0
13906
14028
  })
13907
14029
  });
13908
- const modelUrl = props.modelUrl.replace(/#ext=\w+$/, "");
13909
- let model;
13910
- switch (getFileExtension(props.modelUrl)) {
13911
- case "obj":
13912
- model = { ...base, objUrl: modelUrl };
13913
- break;
13914
- case "gltf":
13915
- model = { ...base, gltfUrl: modelUrl };
13916
- break;
13917
- case "glb":
13918
- model = { ...base, glbUrl: modelUrl };
13919
- break;
13920
- case "step":
13921
- case "stp":
13922
- model = { ...base, stepUrl: modelUrl };
13923
- break;
13924
- case "wrl":
13925
- case "vrml":
13926
- model = { ...base, wrlUrl: modelUrl };
13927
- break;
13928
- default:
13929
- model = { ...base, stlUrl: modelUrl };
13930
- break;
13931
- }
14030
+ const model = { ...base, ...resolveAssemblyModelUrl(props.modelUrl) };
13932
14031
  component.cad_component_id = renderAssemblyCadModel(owner, model, placement);
13933
14032
  return true;
13934
14033
  };
@@ -64471,7 +64570,7 @@ function Group_getRoutingPhasePlans(group) {
64471
64570
  var package_default = {
64472
64571
  name: "@tscircuit/core",
64473
64572
  type: "module",
64474
- version: "0.0.2012",
64573
+ version: "0.0.2014",
64475
64574
  types: "dist/index.d.ts",
64476
64575
  main: "dist/index.js",
64477
64576
  module: "dist/index.js",
@@ -64526,7 +64625,7 @@ var package_default = {
64526
64625
  "@tscircuit/math-utils": "^0.0.36",
64527
64626
  "@tscircuit/miniflex": "^0.0.4",
64528
64627
  "@tscircuit/ngspice-spice-engine": "^0.0.20",
64529
- "@tscircuit/props": "^0.0.669",
64628
+ "@tscircuit/props": "^0.0.670",
64530
64629
  "@tscircuit/schematic-match-adapt": "^0.0.18",
64531
64630
  "@tscircuit/schematic-trace-solver": "^0.0.212",
64532
64631
  "@tscircuit/solver-utils": "^0.0.16",
@@ -64605,7 +64704,7 @@ var package_default = {
64605
64704
  },
64606
64705
  overrides: {
64607
64706
  "@tscircuit/circuit-json-util": "^0.0.116",
64608
- "@tscircuit/props": "^0.0.669",
64707
+ "@tscircuit/props": "^0.0.670",
64609
64708
  "circuit-json": "^0.0.506"
64610
64709
  }
64611
64710
  };
@@ -76441,9 +76540,22 @@ var AssemblyDevice = class extends PrimitiveComponent2 {
76441
76540
  _computePcbGlobalTransformBeforeLayout() {
76442
76541
  return identity10();
76443
76542
  }
76444
- // Compatibility stage: this is a transparent product-level container and emits no
76445
- // Circuit JSON. The later schema migration adds source_assembly_device without
76446
- // changing the authoring element or its assembly-container semantics.
76543
+ doInitialSourceRender() {
76544
+ if (this._parsedProps.modelUrl === void 0 || !this.root) return;
76545
+ this.source_component_id = this.root.db.source_component.insert({
76546
+ ftype: "simple_chip",
76547
+ name: this.name
76548
+ }).source_component_id;
76549
+ }
76550
+ doInitialCadModelRender() {
76551
+ if (!this.root || this.root.pcbDisabled || !this.source_component_id || this._parsedProps.modelUrl === void 0)
76552
+ return;
76553
+ this.cad_component_id = renderAssemblyCadModel(
76554
+ this,
76555
+ resolveAssemblyModelUrl(this._parsedProps.modelUrl),
76556
+ { position: { x: 0, y: 0, z: 0 }, pcbRotation: 0, layer: "top" }
76557
+ );
76558
+ }
76447
76559
  };
76448
76560
 
76449
76561
  // lib/components/primitive-components/AssemblyScreen.ts
@@ -76466,7 +76578,7 @@ var AssemblyScreen_doInitialCadModelRender = (component) => {
76466
76578
  const placement = resolveAssemblyPlacement(component);
76467
76579
  component.cad_component_id = renderAssemblyCadModel(
76468
76580
  component,
76469
- component._parsedProps.cadModel ?? getDefaultFlexScreenModel(component),
76581
+ component._parsedProps.modelUrl !== void 0 ? resolveAssemblyModelUrl(component._parsedProps.modelUrl) : component._parsedProps.cadModel ?? getDefaultFlexScreenModel(component),
76470
76582
  placement
76471
76583
  );
76472
76584
  };
@@ -76525,7 +76637,7 @@ var AssemblySubassembly = class extends PrimitiveComponent2 {
76525
76637
  doInitialCadModelRender() {
76526
76638
  if (!this.root || this.root.pcbDisabled || !this.source_component_id) return;
76527
76639
  const placement = resolveAssemblyPlacement(this);
76528
- const model = this._parsedProps.cadModel;
76640
+ const model = this._parsedProps.modelUrl !== void 0 ? resolveAssemblyModelUrl(this._parsedProps.modelUrl) : this._parsedProps.cadModel;
76529
76641
  if (model && !(typeof model === "object" && "type" in model)) {
76530
76642
  this.cad_component_id = renderAssemblyCadModel(this, model, placement);
76531
76643
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.2013",
4
+ "version": "0.0.2015",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -56,7 +56,7 @@
56
56
  "@tscircuit/math-utils": "^0.0.36",
57
57
  "@tscircuit/miniflex": "^0.0.4",
58
58
  "@tscircuit/ngspice-spice-engine": "^0.0.20",
59
- "@tscircuit/props": "^0.0.669",
59
+ "@tscircuit/props": "^0.0.670",
60
60
  "@tscircuit/schematic-match-adapt": "^0.0.18",
61
61
  "@tscircuit/schematic-trace-solver": "^0.0.212",
62
62
  "@tscircuit/solver-utils": "^0.0.16",
@@ -135,7 +135,7 @@
135
135
  },
136
136
  "overrides": {
137
137
  "@tscircuit/circuit-json-util": "^0.0.116",
138
- "@tscircuit/props": "^0.0.669",
138
+ "@tscircuit/props": "^0.0.670",
139
139
  "circuit-json": "^0.0.506"
140
140
  }
141
141
  }