@windypro-rourou/dsh-eda 0.1.0 → 0.1.1

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.
Files changed (407) hide show
  1. package/README.md +71 -119
  2. package/cordis.patch.yml +9 -7
  3. package/lib/board.js +80 -0
  4. package/lib/client.js +2 -2
  5. package/lib/index.js +339 -11
  6. package/lib/installer.js +4 -4
  7. package/lib/skill.js +138 -0
  8. package/package.json +12 -2
  9. package/skill/INDEX.md +193 -0
  10. package/skill/README.official.md +125 -0
  11. package/skill/README.zh-Hans.official.md +125 -0
  12. package/skill/SKILL.md +746 -0
  13. package/skill/format/index.md +152 -0
  14. package/skill/format/pcb/3d.md +166 -0
  15. package/skill/format/pcb/attr.md +63 -0
  16. package/skill/format/pcb/common.md +306 -0
  17. package/skill/format/pcb/component.md +132 -0
  18. package/skill/format/pcb/dimension.md +58 -0
  19. package/skill/format/pcb/index.md +17 -0
  20. package/skill/format/pcb/obj.md +43 -0
  21. package/skill/format/pcb/pad_via.md +151 -0
  22. package/skill/format/pcb/panel.md +64 -0
  23. package/skill/format/pcb/partition.md +43 -0
  24. package/skill/format/pcb/primitive.md +196 -0
  25. package/skill/format/pcb/rule.md +71 -0
  26. package/skill/format/pcb/shape.md +441 -0
  27. package/skill/format/pcb/text.md +62 -0
  28. package/skill/format/project/blob.md +30 -0
  29. package/skill/format/project/common.md +42 -0
  30. package/skill/format/project/group.md +62 -0
  31. package/skill/format/project/index.md +12 -0
  32. package/skill/format/project/instance.md +32 -0
  33. package/skill/format/project/meta.md +189 -0
  34. package/skill/format/project/variant.md +30 -0
  35. package/skill/format/schematic/attr.md +41 -0
  36. package/skill/format/schematic/common.md +47 -0
  37. package/skill/format/schematic/component.md +91 -0
  38. package/skill/format/schematic/index.md +14 -0
  39. package/skill/format/schematic/obj.md +41 -0
  40. package/skill/format/schematic/pin.md +59 -0
  41. package/skill/format/schematic/shape.md +231 -0
  42. package/skill/format/schematic/structure.md +53 -0
  43. package/skill/format/schematic/table.md +109 -0
  44. package/skill/format/schematic/text.md +47 -0
  45. package/skill/format/schematic/wire.md +132 -0
  46. package/skill/guide/ancillary-projects/pro-api-sdk.md +1 -0
  47. package/skill/guide/ancillary-projects/pro-api-types.md +5 -0
  48. package/skill/guide/ancillary-projects.md +10 -0
  49. package/skill/guide/error-handling.md +38 -0
  50. package/skill/guide/extension-json.md +135 -0
  51. package/skill/guide/extensions-marketplace.md +61 -0
  52. package/skill/guide/how-to-start.md +301 -0
  53. package/skill/guide/i18n.md +57 -0
  54. package/skill/guide/index.md +7 -0
  55. package/skill/guide/inline-frame.md +20 -0
  56. package/skill/guide/invoke-apis.md +81 -0
  57. package/skill/guide/stability.md +37 -0
  58. package/skill/references/_index.md +398 -0
  59. package/skill/references/_quick-reference.md +3028 -0
  60. package/skill/references/classes/DMT_Board.md +533 -0
  61. package/skill/references/classes/DMT_EditorControl.md +1736 -0
  62. package/skill/references/classes/DMT_Event.md +356 -0
  63. package/skill/references/classes/DMT_Folder.md +775 -0
  64. package/skill/references/classes/DMT_Panel.md +531 -0
  65. package/skill/references/classes/DMT_Pcb.md +575 -0
  66. package/skill/references/classes/DMT_Project.md +573 -0
  67. package/skill/references/classes/DMT_Schematic.md +1477 -0
  68. package/skill/references/classes/DMT_SelectControl.md +96 -0
  69. package/skill/references/classes/DMT_Team.md +172 -0
  70. package/skill/references/classes/DMT_Workspace.md +198 -0
  71. package/skill/references/classes/EDA.md +961 -0
  72. package/skill/references/classes/IPCB_ComplexPolygon.md +299 -0
  73. package/skill/references/classes/IPCB_Polygon.md +175 -0
  74. package/skill/references/classes/IPCB_PrimitiveArc.md +1901 -0
  75. package/skill/references/classes/IPCB_PrimitiveAttribute.md +2993 -0
  76. package/skill/references/classes/IPCB_PrimitiveComponent.md +2627 -0
  77. package/skill/references/classes/IPCB_PrimitiveComponentPad.md +410 -0
  78. package/skill/references/classes/IPCB_PrimitiveDimension.md +1419 -0
  79. package/skill/references/classes/IPCB_PrimitiveFill.md +1325 -0
  80. package/skill/references/classes/IPCB_PrimitiveImage.md +1461 -0
  81. package/skill/references/classes/IPCB_PrimitiveLine.md +1639 -0
  82. package/skill/references/classes/IPCB_PrimitiveObject.md +1700 -0
  83. package/skill/references/classes/IPCB_PrimitivePad.md +3155 -0
  84. package/skill/references/classes/IPCB_PrimitivePolyline.md +1193 -0
  85. package/skill/references/classes/IPCB_PrimitivePour.md +1858 -0
  86. package/skill/references/classes/IPCB_PrimitivePoured.md +556 -0
  87. package/skill/references/classes/IPCB_PrimitiveRegion.md +1332 -0
  88. package/skill/references/classes/IPCB_PrimitiveString.md +2315 -0
  89. package/skill/references/classes/IPCB_PrimitiveVia.md +1588 -0
  90. package/skill/references/classes/ISCH_PrimitiveArc.md +1676 -0
  91. package/skill/references/classes/ISCH_PrimitiveAttribute.md +2541 -0
  92. package/skill/references/classes/ISCH_PrimitiveBus.md +973 -0
  93. package/skill/references/classes/ISCH_PrimitiveCbbSymbolComponent.md +260 -0
  94. package/skill/references/classes/ISCH_PrimitiveCircle.md +1392 -0
  95. package/skill/references/classes/ISCH_PrimitiveComponent.md +2913 -0
  96. package/skill/references/classes/ISCH_PrimitiveComponentPin.md +155 -0
  97. package/skill/references/classes/ISCH_PrimitiveObject.md +960 -0
  98. package/skill/references/classes/ISCH_PrimitivePin.md +2402 -0
  99. package/skill/references/classes/ISCH_PrimitivePolygon.md +1028 -0
  100. package/skill/references/classes/ISCH_PrimitiveRectangle.md +1777 -0
  101. package/skill/references/classes/ISCH_PrimitiveText.md +1771 -0
  102. package/skill/references/classes/ISCH_PrimitiveWire.md +973 -0
  103. package/skill/references/classes/LIB_3DModel.md +780 -0
  104. package/skill/references/classes/LIB_Cbb.md +957 -0
  105. package/skill/references/classes/LIB_Classification.md +965 -0
  106. package/skill/references/classes/LIB_Device.md +1221 -0
  107. package/skill/references/classes/LIB_Footprint.md +1153 -0
  108. package/skill/references/classes/LIB_LibrariesList.md +329 -0
  109. package/skill/references/classes/LIB_PanelLibrary.md +855 -0
  110. package/skill/references/classes/LIB_SelectControl.md +89 -0
  111. package/skill/references/classes/LIB_SimulationModel.md +821 -0
  112. package/skill/references/classes/LIB_Symbol.md +1195 -0
  113. package/skill/references/classes/PCB_Document.md +1754 -0
  114. package/skill/references/classes/PCB_Drc.md +3375 -0
  115. package/skill/references/classes/PCB_Event.md +1081 -0
  116. package/skill/references/classes/PCB_Layer.md +1911 -0
  117. package/skill/references/classes/PCB_ManufactureData.md +2968 -0
  118. package/skill/references/classes/PCB_MathPolygon.md +785 -0
  119. package/skill/references/classes/PCB_Net.md +1128 -0
  120. package/skill/references/classes/PCB_Primitive.md +217 -0
  121. package/skill/references/classes/PCB_PrimitiveArc.md +894 -0
  122. package/skill/references/classes/PCB_PrimitiveAttribute.md +717 -0
  123. package/skill/references/classes/PCB_PrimitiveComponent.md +1050 -0
  124. package/skill/references/classes/PCB_PrimitiveDimension.md +833 -0
  125. package/skill/references/classes/PCB_PrimitiveFill.md +861 -0
  126. package/skill/references/classes/PCB_PrimitiveImage.md +875 -0
  127. package/skill/references/classes/PCB_PrimitiveLine.md +858 -0
  128. package/skill/references/classes/PCB_PrimitiveObject.md +800 -0
  129. package/skill/references/classes/PCB_PrimitivePad.md +944 -0
  130. package/skill/references/classes/PCB_PrimitivePolyline.md +819 -0
  131. package/skill/references/classes/PCB_PrimitivePour.md +845 -0
  132. package/skill/references/classes/PCB_PrimitivePoured.md +363 -0
  133. package/skill/references/classes/PCB_PrimitiveRegion.md +799 -0
  134. package/skill/references/classes/PCB_PrimitiveString.md +910 -0
  135. package/skill/references/classes/PCB_PrimitiveVia.md +765 -0
  136. package/skill/references/classes/PCB_RayTracerEngine.md +263 -0
  137. package/skill/references/classes/PCB_SelectControl.md +495 -0
  138. package/skill/references/classes/PNL_Document.md +83 -0
  139. package/skill/references/classes/SCH_Document.md +809 -0
  140. package/skill/references/classes/SCH_Drc.md +242 -0
  141. package/skill/references/classes/SCH_Event.md +583 -0
  142. package/skill/references/classes/SCH_ManufactureData.md +1205 -0
  143. package/skill/references/classes/SCH_Net.md +200 -0
  144. package/skill/references/classes/SCH_Netlist.md +191 -0
  145. package/skill/references/classes/SCH_Primitive.md +337 -0
  146. package/skill/references/classes/SCH_PrimitiveArc.md +692 -0
  147. package/skill/references/classes/SCH_PrimitiveAttribute.md +590 -0
  148. package/skill/references/classes/SCH_PrimitiveBus.md +624 -0
  149. package/skill/references/classes/SCH_PrimitiveCircle.md +683 -0
  150. package/skill/references/classes/SCH_PrimitiveComponent.md +2240 -0
  151. package/skill/references/classes/SCH_PrimitiveObject.md +666 -0
  152. package/skill/references/classes/SCH_PrimitivePin.md +754 -0
  153. package/skill/references/classes/SCH_PrimitivePolygon.md +627 -0
  154. package/skill/references/classes/SCH_PrimitiveRectangle.md +731 -0
  155. package/skill/references/classes/SCH_PrimitiveText.md +746 -0
  156. package/skill/references/classes/SCH_PrimitiveWire.md +703 -0
  157. package/skill/references/classes/SCH_SelectControl.md +520 -0
  158. package/skill/references/classes/SCH_SimulationEngine.md +133 -0
  159. package/skill/references/classes/SCH_Utils.md +121 -0
  160. package/skill/references/classes/SYS_ClientUrl.md +173 -0
  161. package/skill/references/classes/SYS_Dialog.md +825 -0
  162. package/skill/references/classes/SYS_Environment.md +502 -0
  163. package/skill/references/classes/SYS_FileManager.md +1686 -0
  164. package/skill/references/classes/SYS_FileSystem.md +1171 -0
  165. package/skill/references/classes/SYS_FontManager.md +224 -0
  166. package/skill/references/classes/SYS_FormatConversion.md +349 -0
  167. package/skill/references/classes/SYS_HeaderMenu.md +479 -0
  168. package/skill/references/classes/SYS_I18n.md +861 -0
  169. package/skill/references/classes/SYS_IFrame.md +535 -0
  170. package/skill/references/classes/SYS_LoadingAndProgressBar.md +246 -0
  171. package/skill/references/classes/SYS_Log.md +424 -0
  172. package/skill/references/classes/SYS_Math.md +1565 -0
  173. package/skill/references/classes/SYS_Message.md +363 -0
  174. package/skill/references/classes/SYS_MessageBox.md +285 -0
  175. package/skill/references/classes/SYS_MessageBus.md +1618 -0
  176. package/skill/references/classes/SYS_PanelControl.md +696 -0
  177. package/skill/references/classes/SYS_RightClickMenu.md +175 -0
  178. package/skill/references/classes/SYS_Setting.md +85 -0
  179. package/skill/references/classes/SYS_ShortcutKey.md +623 -0
  180. package/skill/references/classes/SYS_Storage.md +484 -0
  181. package/skill/references/classes/SYS_Timer.md +447 -0
  182. package/skill/references/classes/SYS_ToastMessage.md +194 -0
  183. package/skill/references/classes/SYS_Tool.md +241 -0
  184. package/skill/references/classes/SYS_Unit.md +594 -0
  185. package/skill/references/classes/SYS_WebSocket.md +401 -0
  186. package/skill/references/classes/SYS_Window.md +850 -0
  187. package/skill/references/enums/EDMT_EditorDocumentType.md +279 -0
  188. package/skill/references/enums/EDMT_EditorSplitScreenDirection.md +48 -0
  189. package/skill/references/enums/EDMT_EditorTabEventType.md +63 -0
  190. package/skill/references/enums/EDMT_IndicatorMarkerType.md +81 -0
  191. package/skill/references/enums/EDMT_ItemType.md +158 -0
  192. package/skill/references/enums/EDMT_ProjectCollaborationMode.md +48 -0
  193. package/skill/references/enums/ELIB_DeviceJlcLibraryCategory.md +48 -0
  194. package/skill/references/enums/ELIB_LibraryType.md +114 -0
  195. package/skill/references/enums/ELIB_PreviewType.md +70 -0
  196. package/skill/references/enums/ELIB_SimulationModelType.md +48 -0
  197. package/skill/references/enums/ELIB_SymbolType.md +125 -0
  198. package/skill/references/enums/EPCB_AutoRoutingCornerStyle.md +48 -0
  199. package/skill/references/enums/EPCB_AutoRoutingExistingPrimitiveMode.md +48 -0
  200. package/skill/references/enums/EPCB_AutoRoutingOptimization.md +48 -0
  201. package/skill/references/enums/EPCB_DocumentCanvasUpdateCalculationActiveStatus.md +48 -0
  202. package/skill/references/enums/EPCB_DocumentRatlineCalculatingActiveStatus.md +52 -0
  203. package/skill/references/enums/EPCB_InactiveLayerDisplayMode.md +59 -0
  204. package/skill/references/enums/EPCB_LayerColorConfiguration.md +81 -0
  205. package/skill/references/enums/EPCB_LayerId.md +882 -0
  206. package/skill/references/enums/EPCB_LayerStatus.md +59 -0
  207. package/skill/references/enums/EPCB_LayerType.md +114 -0
  208. package/skill/references/enums/EPCB_MouseEventType.md +59 -0
  209. package/skill/references/enums/EPCB_NetEventType.md +59 -0
  210. package/skill/references/enums/EPCB_PcbPlateType.md +48 -0
  211. package/skill/references/enums/EPCB_PdfOutputMethod.md +59 -0
  212. package/skill/references/enums/EPCB_PrimitiveArcInteractiveMode.md +48 -0
  213. package/skill/references/enums/EPCB_PrimitiveDimensionType.md +59 -0
  214. package/skill/references/enums/EPCB_PrimitiveEventType.md +59 -0
  215. package/skill/references/enums/EPCB_PrimitiveFillMode.md +63 -0
  216. package/skill/references/enums/EPCB_PrimitivePadHeatWeldingConnectionMethod.md +59 -0
  217. package/skill/references/enums/EPCB_PrimitivePadHoleType.md +59 -0
  218. package/skill/references/enums/EPCB_PrimitivePadShapeType.md +81 -0
  219. package/skill/references/enums/EPCB_PrimitivePadType.md +59 -0
  220. package/skill/references/enums/EPCB_PrimitivePourFillMethod.md +59 -0
  221. package/skill/references/enums/EPCB_PrimitiveRegionRuleType.md +96 -0
  222. package/skill/references/enums/EPCB_PrimitiveStringAlignMode.md +125 -0
  223. package/skill/references/enums/EPCB_PrimitiveType.md +202 -0
  224. package/skill/references/enums/EPCB_PrimitiveViaType.md +59 -0
  225. package/skill/references/enums/ESCH_DynamicSimulationEnginePullEventType.md +103 -0
  226. package/skill/references/enums/ESCH_DynamicSimulationEnginePushEventType.md +81 -0
  227. package/skill/references/enums/ESCH_ExportDocumentFileType.md +59 -0
  228. package/skill/references/enums/ESCH_MouseEventType.md +48 -0
  229. package/skill/references/enums/ESCH_PrimitiveComponentType.md +125 -0
  230. package/skill/references/enums/ESCH_PrimitiveEventType.md +70 -0
  231. package/skill/references/enums/ESCH_PrimitiveFillStyle.md +114 -0
  232. package/skill/references/enums/ESCH_PrimitiveLineType.md +70 -0
  233. package/skill/references/enums/ESCH_PrimitivePinShape.md +70 -0
  234. package/skill/references/enums/ESCH_PrimitivePinType.md +147 -0
  235. package/skill/references/enums/ESCH_PrimitiveTextAlignMode.md +125 -0
  236. package/skill/references/enums/ESCH_PrimitiveType.md +180 -0
  237. package/skill/references/enums/ESCH_SimulationNetlistType.md +37 -0
  238. package/skill/references/enums/ESCH_SpiceSimulationEnginePullEventType.md +48 -0
  239. package/skill/references/enums/ESCH_SpiceSimulationEnginePushEventType.md +70 -0
  240. package/skill/references/enums/ESYS_BottomPanelTab.md +81 -0
  241. package/skill/references/enums/ESYS_HeaderMenuEnvironment.md +158 -0
  242. package/skill/references/enums/ESYS_ImportProjectBoardOutlineSource.md +52 -0
  243. package/skill/references/enums/ESYS_ImportProjectImportOption.md +59 -0
  244. package/skill/references/enums/ESYS_ImportProjectSchematicObjectStyle.md +48 -0
  245. package/skill/references/enums/ESYS_ImportProjectViaSolderMaskExpansion.md +52 -0
  246. package/skill/references/enums/ESYS_LeftPanelTab.md +81 -0
  247. package/skill/references/enums/ESYS_LogType.md +103 -0
  248. package/skill/references/enums/ESYS_NetlistType.md +114 -0
  249. package/skill/references/enums/ESYS_RightPanelTab.md +202 -0
  250. package/skill/references/enums/ESYS_ShortcutKeyEffectiveEditorRange.md +191 -0
  251. package/skill/references/enums/ESYS_ShortcutKeyEffectiveEditorScene.md +92 -0
  252. package/skill/references/enums/ESYS_StartPageQuickStartItem.md +206 -0
  253. package/skill/references/enums/ESYS_Theme.md +48 -0
  254. package/skill/references/enums/ESYS_ToastMessageType.md +81 -0
  255. package/skill/references/enums/ESYS_Unit.md +103 -0
  256. package/skill/references/enums/ESYS_WindowEventType.md +48 -0
  257. package/skill/references/enums/ESYS_WindowOpenTarget.md +48 -0
  258. package/skill/references/enums/NetportDeviceName.md +147 -0
  259. package/skill/references/enums/SchToolBarDeviceName.md +279 -0
  260. package/skill/references/interfaces/BoardProps.md +169 -0
  261. package/skill/references/interfaces/ButtonProps.md +169 -0
  262. package/skill/references/interfaces/CheckBoxProps.md +196 -0
  263. package/skill/references/interfaces/ComponentPropsMap.md +448 -0
  264. package/skill/references/interfaces/DialogProps.md +385 -0
  265. package/skill/references/interfaces/FlexItemProps.md +116 -0
  266. package/skill/references/interfaces/FlexProps.md +224 -0
  267. package/skill/references/interfaces/GridItemProps.md +143 -0
  268. package/skill/references/interfaces/GridProps.md +143 -0
  269. package/skill/references/interfaces/IDMT_BoardItem.md +171 -0
  270. package/skill/references/interfaces/IDMT_BriefProjectItem.md +171 -0
  271. package/skill/references/interfaces/IDMT_EditorDocumentItem.md +169 -0
  272. package/skill/references/interfaces/IDMT_EditorSplitScreenItem.md +173 -0
  273. package/skill/references/interfaces/IDMT_EditorTabItem.md +169 -0
  274. package/skill/references/interfaces/IDMT_FolderItem.md +225 -0
  275. package/skill/references/interfaces/IDMT_IndicatorMarkerShape.md +393 -0
  276. package/skill/references/interfaces/IDMT_PanelItem.md +144 -0
  277. package/skill/references/interfaces/IDMT_PcbItem.md +171 -0
  278. package/skill/references/interfaces/IDMT_ProjectItem.md +143 -0
  279. package/skill/references/interfaces/IDMT_SchematicItem.md +225 -0
  280. package/skill/references/interfaces/IDMT_SchematicPageItem.md +198 -0
  281. package/skill/references/interfaces/IDMT_TeamItem.md +144 -0
  282. package/skill/references/interfaces/IDMT_WorkspaceItem.md +117 -0
  283. package/skill/references/interfaces/IDesignPortal.md +103 -0
  284. package/skill/references/interfaces/ILIB_3DModelItem.md +198 -0
  285. package/skill/references/interfaces/ILIB_3DModelSearchItem.md +277 -0
  286. package/skill/references/interfaces/ILIB_CbbItem.md +225 -0
  287. package/skill/references/interfaces/ILIB_CbbSearchItem.md +277 -0
  288. package/skill/references/interfaces/ILIB_ClassificationIndex.md +150 -0
  289. package/skill/references/interfaces/ILIB_DeviceAssociationItem.md +210 -0
  290. package/skill/references/interfaces/ILIB_DeviceExtendPropertyItem.md +304 -0
  291. package/skill/references/interfaces/ILIB_DeviceItem.md +279 -0
  292. package/skill/references/interfaces/ILIB_DevicePropertiesForSearch.md +250 -0
  293. package/skill/references/interfaces/ILIB_DeviceSearchItem.md +521 -0
  294. package/skill/references/interfaces/ILIB_ExtendLibrary3DModelFunctions.md +64 -0
  295. package/skill/references/interfaces/ILIB_ExtendLibraryCbbFunctions.md +99 -0
  296. package/skill/references/interfaces/ILIB_ExtendLibraryClassificationIndex.md +150 -0
  297. package/skill/references/interfaces/ILIB_ExtendLibraryDeviceFunctions.md +157 -0
  298. package/skill/references/interfaces/ILIB_ExtendLibraryFootprintFunctions.md +63 -0
  299. package/skill/references/interfaces/ILIB_ExtendLibraryFunctions.md +123 -0
  300. package/skill/references/interfaces/ILIB_ExtendLibraryItem.md +97 -0
  301. package/skill/references/interfaces/ILIB_ExtendLibraryItemIndex.md +98 -0
  302. package/skill/references/interfaces/ILIB_ExtendLibrarySearchProperty.md +115 -0
  303. package/skill/references/interfaces/ILIB_ExtendLibrarySearchResult.md +169 -0
  304. package/skill/references/interfaces/ILIB_ExtendLibrarySearchResultDataLine.md +234 -0
  305. package/skill/references/interfaces/ILIB_ExtendLibrarySymbolFunctions.md +105 -0
  306. package/skill/references/interfaces/ILIB_ExtendLibraryUserIndex.md +96 -0
  307. package/skill/references/interfaces/ILIB_FootprintItem.md +198 -0
  308. package/skill/references/interfaces/ILIB_FootprintPropertiesForSearch.md +61 -0
  309. package/skill/references/interfaces/ILIB_FootprintSearchItem.md +277 -0
  310. package/skill/references/interfaces/ILIB_LibraryInfo.md +92 -0
  311. package/skill/references/interfaces/ILIB_LibraryItem.md +115 -0
  312. package/skill/references/interfaces/ILIB_PanelLibraryItem.md +198 -0
  313. package/skill/references/interfaces/ILIB_PanelLibrarySearchItem.md +277 -0
  314. package/skill/references/interfaces/ILIB_SimulationModelItem.md +306 -0
  315. package/skill/references/interfaces/ILIB_SimulationModelSearchItem.md +304 -0
  316. package/skill/references/interfaces/ILIB_SymbolItem.md +279 -0
  317. package/skill/references/interfaces/ILIB_SymbolPropertiesForSearch.md +61 -0
  318. package/skill/references/interfaces/ILIB_SymbolSearchItem.md +304 -0
  319. package/skill/references/interfaces/IPCB_AutoLayoutResult.md +169 -0
  320. package/skill/references/interfaces/IPCB_AutoRoutingProps.md +220 -0
  321. package/skill/references/interfaces/IPCB_AutoRoutingResult.md +169 -0
  322. package/skill/references/interfaces/IPCB_BomPropertiesTableColumns.md +169 -0
  323. package/skill/references/interfaces/IPCB_DifferentialPairItem.md +115 -0
  324. package/skill/references/interfaces/IPCB_DiscretizeOptions.md +65 -0
  325. package/skill/references/interfaces/IPCB_DiscretizedPoint.md +88 -0
  326. package/skill/references/interfaces/IPCB_EqualLengthNetGroupItem.md +115 -0
  327. package/skill/references/interfaces/IPCB_LayerItem.md +277 -0
  328. package/skill/references/interfaces/IPCB_NetClassItem.md +115 -0
  329. package/skill/references/interfaces/IPCB_NetInfo.md +115 -0
  330. package/skill/references/interfaces/IPCB_PadPairGroupItem.md +88 -0
  331. package/skill/references/interfaces/IPCB_PadPairMinWireLengthItem.md +88 -0
  332. package/skill/references/interfaces/IPCB_PhysicalStackingConfiguration.md +115 -0
  333. package/skill/references/interfaces/IPCB_Primitive.md +218 -0
  334. package/skill/references/interfaces/IPCB_PrimitiveAPI.md +175 -0
  335. package/skill/references/interfaces/IPCB_PrimitivePadHeatWelding.md +151 -0
  336. package/skill/references/interfaces/IPCB_PrimitivePouredPourFill.md +142 -0
  337. package/skill/references/interfaces/IPCB_PrimitiveSolderMaskAndPasteMaskExpansion.md +154 -0
  338. package/skill/references/interfaces/IPCB_SubstratePhysicalProperties.md +88 -0
  339. package/skill/references/interfaces/IRawNet.md +103 -0
  340. package/skill/references/interfaces/IRawPureSchematic.md +80 -0
  341. package/skill/references/interfaces/IRawSchematic.md +103 -0
  342. package/skill/references/interfaces/IRawWire.md +149 -0
  343. package/skill/references/interfaces/ISCH_DrcError.md +142 -0
  344. package/skill/references/interfaces/ISCH_DrcErrorPrimitive.md +142 -0
  345. package/skill/references/interfaces/ISCH_ExportPngResolution.md +94 -0
  346. package/skill/references/interfaces/ISCH_NetInfo.md +88 -0
  347. package/skill/references/interfaces/ISCH_Primitive.md +219 -0
  348. package/skill/references/interfaces/ISCH_PrimitiveAPI.md +175 -0
  349. package/skill/references/interfaces/ISCH_ProjectNetInfo.md +142 -0
  350. package/skill/references/interfaces/ISCH_WireInfo.md +169 -0
  351. package/skill/references/interfaces/ISYS_FileSystemFileList.md +169 -0
  352. package/skill/references/interfaces/ISYS_HeaderMenuSub1MenuItem.md +174 -0
  353. package/skill/references/interfaces/ISYS_HeaderMenuSub2MenuItem.md +147 -0
  354. package/skill/references/interfaces/ISYS_HeaderMenuTopMenuItem.md +115 -0
  355. package/skill/references/interfaces/ISYS_HeaderMenus.md +408 -0
  356. package/skill/references/interfaces/ISYS_LogLine.md +115 -0
  357. package/skill/references/interfaces/ISYS_MathBBox.md +142 -0
  358. package/skill/references/interfaces/ISYS_MathPoint.md +88 -0
  359. package/skill/references/interfaces/ISYS_MathPolygonWithHoles.md +92 -0
  360. package/skill/references/interfaces/ISYS_MessageBusTask.md +115 -0
  361. package/skill/references/interfaces/ISYS_MultilingualLanguagesData.md +13 -0
  362. package/skill/references/interfaces/ISYS_PcbComparisonResponse.md +115 -0
  363. package/skill/references/interfaces/ISYS_RightClickMenuItem.md +174 -0
  364. package/skill/references/interfaces/ISYS_ShortcutKeyData.md +169 -0
  365. package/skill/references/interfaces/ISYS_ShortcutKeyDataWithCallFn.md +62 -0
  366. package/skill/references/interfaces/ISYS_ShortcutKeyDataWithUserDefinedShortcutKey.md +62 -0
  367. package/skill/references/interfaces/ISYS_WindowEventListenerRemovableObject.md +109 -0
  368. package/skill/references/interfaces/IconProps.md +88 -0
  369. package/skill/references/interfaces/ImageProps.md +115 -0
  370. package/skill/references/interfaces/InputProps.md +520 -0
  371. package/skill/references/interfaces/ListChildren.md +223 -0
  372. package/skill/references/interfaces/ListProps.md +223 -0
  373. package/skill/references/interfaces/ModalProps.md +358 -0
  374. package/skill/references/interfaces/RadioGroupProps.md +196 -0
  375. package/skill/references/interfaces/RadioItem.md +115 -0
  376. package/skill/references/interfaces/ScrollerProps.md +169 -0
  377. package/skill/references/interfaces/SelectListItem.md +142 -0
  378. package/skill/references/interfaces/SelectProps.md +169 -0
  379. package/skill/references/interfaces/SlotProps.md +88 -0
  380. package/skill/references/interfaces/StyleProps.md +385 -0
  381. package/skill/references/interfaces/TextAreaProps.md +196 -0
  382. package/skill/references/interfaces/TextProps.md +169 -0
  383. package/skill/references/types/ISYS_LanguageKeyValuePairs.md +13 -0
  384. package/skill/references/types/TPCB_LayerTypesOfInnerLayer.md +12 -0
  385. package/skill/references/types/TPCB_LayersInTheSelectable.md +43 -0
  386. package/skill/references/types/TPCB_LayersOfComponent.md +12 -0
  387. package/skill/references/types/TPCB_LayersOfCopper.md +16 -0
  388. package/skill/references/types/TPCB_LayersOfCustom.md +42 -0
  389. package/skill/references/types/TPCB_LayersOfDimension.md +17 -0
  390. package/skill/references/types/TPCB_LayersOfFill.md +29 -0
  391. package/skill/references/types/TPCB_LayersOfImage.md +23 -0
  392. package/skill/references/types/TPCB_LayersOfInner.md +42 -0
  393. package/skill/references/types/TPCB_LayersOfLine.md +26 -0
  394. package/skill/references/types/TPCB_LayersOfObject.md +13 -0
  395. package/skill/references/types/TPCB_LayersOfPad.md +12 -0
  396. package/skill/references/types/TPCB_LayersOfRegion.md +12 -0
  397. package/skill/references/types/TPCB_NumberOfCopperLayers.md +10 -0
  398. package/skill/references/types/TPCB_PolygonSourceArray.md +83 -0
  399. package/skill/references/types/TPCB_PrimitiveDimensionCoordinateSet.md +67 -0
  400. package/skill/references/types/TPCB_PrimitivePadHole.md +31 -0
  401. package/skill/references/types/TPCB_PrimitivePadShape.md +62 -0
  402. package/skill/references/types/TPCB_PrimitiveSpecialPadShape.md +20 -0
  403. package/skill/references/types/TSYS_MathPolygonGroup.md +16 -0
  404. package/skill/references/types/TSYS_MathPolygonInput.md +21 -0
  405. package/skill/references/types/TSYS_PcbComparisonErrorCode.md +10 -0
  406. package/skill/references/types/TSYS_ShortcutKeys.md +97 -0
  407. package/skill/user-guide/using-extension.md +47 -0
@@ -0,0 +1,10 @@
1
+ # Ancillary Projects
2
+
3
+ The current EasyEDA Professional Edition Extension API provides the following helper items that you can use for a more complete development experience:
4
+
5
+ | Project | Type | Badges | License | Description |
6
+ | ------------------------------------------------------------ | ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------ |
7
+ | [pro-api-sdk](./ancillary-projects/pro-api-sdk) | Git Repo | <a href="https://github.com/easyeda/pro-api-sdk" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/github/stars/easyeda/pro-api-sdk" alt="GitHub Repo Stars" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> <a href="https://github.com/easyeda/pro-api-sdk/issues" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/github/issues/easyeda/pro-api-sdk" alt="GitHub Issues" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> | <a href="https://choosealicense.com/licenses/apache-2.0/" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/github/license/easyeda/pro-api-sdk" alt="GitHub License" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> | Extension Development SDK |
8
+ | [pro-api-types](./ancillary-projects/pro-api-types) | npm Package | <a href="https://www.npmjs.com/package/@jlceda/pro-api-types" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/npm/v/%40jlceda%2Fpro-api-types" alt="NPM Version" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> | <a href="https://choosealicense.com/licenses/apache-2.0/" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/npm/l/%40jlceda%2Fpro-api-types" alt="NPM License" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> | Extension API Type Definitions |
9
+ | [eext-run-api-gateway](https://jlcext.com/item/oshwhub-official/run-api-gateway) | EasyEDA Extension | <a href="https://github.com/easyeda/eext-run-api-gateway" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/github/stars/easyeda/eext-run-api-gateway" alt="GitHub Repo Stars" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> <a href="https://github.com/easyeda/eext-run-api-gateway/issues" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/github/issues/easyeda/eext-run-api-gateway" alt="GitHub Issues" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> | <a href="https://choosealicense.com/licenses/apache-2.0/" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/github/license/easyeda/eext-run-api-gateway" alt="GitHub License" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> | EDA \<-\> AI Gateway Extension |
10
+ | [easyeda-api-skill](https://clawhub.ai/yanranxiaoxi/easyeda-api) | AI Skill | <a href="https://github.com/easyeda/easyeda-api-skill" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/github/stars/easyeda/easyeda-api-skill" alt="GitHub Repo Stars" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> <a href="https://github.com/easyeda/easyeda-api-skill/issues" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/github/issues/easyeda/easyeda-api-skill" alt="GitHub Issues" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> | <a href="https://github.com/aws/mit-0" style="vertical-align: inherit;" target="_blank"><img src="https://img.shields.io/github/license/easyeda/easyeda-api-skill" alt="GitHub License" class="not-medium-zoom-image" style="display: inline; vertical-align: inherit;" /></a> | Extension API AI Skill |
@@ -0,0 +1,38 @@
1
+ # Error Handling
2
+
3
+ ## Disable Extensions and Scripting Systems Globally
4
+
5
+ When you encounter an exception caused by an extension that prevents you from removing the extension through the normal route (such as corrupted or masked data in the top menu bar, or an uninstall returning an error), you can globally disable the extension and the scripting system by adding the `safetyMode=true` parameter within the URL of the EasyEDA Professional editor:
6
+
7
+ ```diff
8
+ - https://pro.easyeda.com/editor
9
+ + https://pro.easyeda.com/editor?safetyMode=true
10
+ ```
11
+
12
+ ::: tip
13
+
14
+ If you wish to enter debug mode at the same time, you can add the `cll=debug` parameter again:
15
+
16
+ ```diff
17
+ - https://pro.easyeda.com/editor?safetyMode=true
18
+ + https://pro.easyeda.com/editor?safetyMode=true&cll=debug
19
+ ```
20
+
21
+ :::
22
+
23
+ ## Remove All Extensions Globally
24
+
25
+ ::: danger
26
+
27
+ **DANGEROUS!** All your installed extensions and standalone scripts will be removed and cannot be recovered. This method should only be used if a serious error is confirmed to be caused by an extension and cannot be resolved by conventional means.
28
+
29
+ :::
30
+
31
+ ::: details Thanos mode switch
32
+
33
+ ```diff
34
+ - https://pro.easyeda.com/editor
35
+ + https://pro.easyeda.com/editor?DANGEROUS_OPERATION_DeleteExtensionStorage=true
36
+ ```
37
+
38
+ :::
@@ -0,0 +1,135 @@
1
+ # Extension Configuration File
2
+
3
+ In order to define the properties of an extension and the various functions that an extension can invoke, each extension should have an extension configuration file named `extension.json` in the root directory with the following default contents:
4
+
5
+ <<< @/private/pro-api-sdk/extension.json{json}
6
+
7
+ ## name <Badge type="tip" text="string" />
8
+
9
+ Extension name. It can only contain lowercase English characters `a-z`, numbers `0-9`, and underscores `-`, and is `5-30` characters long.
10
+
11
+ ## uuid <Badge type="tip" text="string" />
12
+
13
+ UUID. A unique ID for the extension that can contain only lowercase English characters `a-z`, numbers `0-9`, and is `32` characters long.
14
+
15
+ ## displayName <Badge type="tip" text="string" />
16
+
17
+ Display name.
18
+
19
+ ## description <Badge type="tip" text="string" />
20
+
21
+ Description.
22
+
23
+ ## version <Badge type="tip" text="string" />
24
+
25
+ Version number. The format is `major.minor.patch`.
26
+
27
+ ## publisher <Badge type="tip" text="string" />
28
+
29
+ Developer Information.
30
+
31
+ ## engines <Badge type="tip" text="Object" /> <Badge type="warning" text="feature" />
32
+
33
+ The engine to which the extension applies.
34
+
35
+ ### engines.eda <Badge type="tip" text="string" /> <Badge type="warning" text="feature" />
36
+
37
+ Extended adapted version of EasyEDA Professional (online).
38
+
39
+ ## license <Badge type="tip" text="string" />
40
+
41
+ Open-source licensing terms. It is recommended to go to [Choose a License](https://choosealicense.com/) to select the appropriate open source license for your project.
42
+
43
+ ## repository <Badge type="tip" text="Object" /> <Badge type="warning" text="feature" /> <Badge type="info" text="in working" />
44
+
45
+ Repository information for the source code of the extension.
46
+
47
+ ### repository.type <Badge type="tip" text="string" /> <Badge type="warning" text="feature" /> <Badge type="info" text="in working" />
48
+
49
+ The type of source code repository. Optional values are `extension-store` `git` `mercurial` `svn` `ftp` `github` `gitlab` `gitlab-selfhosted` `gitee` `gitea` `bitbucket` `coding` `gnu-savannah` ` gitbucket` `gogs`.
50
+
51
+ ### repository.url <Badge type="tip" text="string" /> <Badge type="warning" text="feature" /> <Badge type="info" text="in working" />
52
+
53
+ Source code repository URL.
54
+
55
+ ## categories <Badge type="tip" text="string | Array<string>" />
56
+
57
+ The extension's classification. Optional values are `Schematic` `Symbol` `PCB` `Footprint` `Panel` `Library` `Project` `Other`.
58
+
59
+ ## keywords <Badge type="tip" text="Array<string>" />
60
+
61
+ Keywords.
62
+
63
+ ## images <Badge type="tip" text="Object" />
64
+
65
+ Images.
66
+
67
+ ### images.logo <Badge type="tip" text="string" />
68
+
69
+ Logo. Size `1:1`, PNG/JPEG format. Logos can be drawn using an AI generation tool such as [AutoDraw](https://www.autodraw.com/) and a minimum size of `500×500` is recommended.
70
+
71
+ ### images.banner <Badge type="tip" text="string" /> <Badge type="warning" text="feature" />
72
+
73
+ Banner. Size `64:27`, for presentation of extension's store page, JPEG format.
74
+
75
+ ## homepage <Badge type="tip" text="string" />
76
+
77
+ Project homepage.
78
+
79
+ ## bugs <Badge type="tip" text="string" />
80
+
81
+ Vulnerability feedback channel. Please fill in a correct URI.
82
+
83
+ ## activationEvents <Badge type="tip" text="Object" /> <Badge type="warning" text="feature" /> <Badge type="info" text="in working" />
84
+
85
+ Extension's activation event.
86
+
87
+ ## entry <Badge type="tip" text="string" />
88
+
89
+ Entry file. No modification is recommended, it is correctly defined within the SDK.
90
+
91
+ ## dependentExtensions <Badge type="tip" text="Object" /> <Badge type="warning" text="feature" /> <Badge type="info" text="in working" />
92
+
93
+ Dependencies on other extensions. Supports the use of 32-bit UUIDs of extensions in the Extension Store (automatic pulling supported), or user-defined extension names (manual upload required).
94
+
95
+ ## headerMenus <Badge type="tip" text="Object" />
96
+
97
+ The header menu registered when the extension is initialized.
98
+
99
+ The header menu is currently supported to be configured separately according to the following pages:
100
+
101
+ ```json
102
+ {
103
+ "headerMenus": {
104
+ "home": [], // [!code focus:9]
105
+ "blank": [],
106
+ "sch": [],
107
+ "symbol": [],
108
+ "pcb": [],
109
+ "footprint": [],
110
+ "pcbView": [],
111
+ "panel": [],
112
+ "panelView": []
113
+ }
114
+ }
115
+ ```
116
+
117
+ ### headerMenus[].id <Badge type="tip" text="string" />
118
+
119
+ Menu item ID. must be unique.
120
+
121
+ ### headerMenus[].title <Badge type="tip" text="string" />
122
+
123
+ Menu item title.
124
+
125
+ ### headerMenus[].menuItems <Badge type="tip" text="Object" />
126
+
127
+ Menu item subitems. Up to two levels of subitems can be nested.
128
+
129
+ `menuItems` conflicts with `registerFn`, only one of them is allowed to exist in the same level.
130
+
131
+ ### headerMenus[].registerFn <Badge type="tip" text="string" />
132
+
133
+ Menu associated registered method. The method here is associated with a method exported within the code of this extension, you need to export the specified method as an `ES Module` using `export` and fill in its method name here.
134
+
135
+ `registerFn` conflicts with `menuItems`, only one of them is allowed to exist in the same level.
@@ -0,0 +1,61 @@
1
+ # Extensions Marketplace
2
+
3
+ EasyEDA Extensions Marketplace site [https://jlcext.com](https://jlcext.com), which is a professional platform for users to download and share extensions.
4
+
5
+ If you want to learn how to develop extensions, please refer to the [how-to-start](./how-to-start), which describes in detail how to install the development environment and build your own EasyEDA Pro extension from scratch.
6
+
7
+ ## Publishing Your Extension
8
+
9
+ When you have fully verified the functionality of the extension you have developed and wish to share it with other users, please visit the [EasyEDA Extensions Marketplace](https://jlcext.com/) and click the **Extension Management** button in the upper right corner:
10
+
11
+ ![图 0](/storage/images/en/api/guide/extensions-marketplace/extensions-marketplace_20260617_210219.jpg)
12
+
13
+
14
+ Enter the extension management page, which supports uploading, publishing and versioning of extensions.
15
+
16
+ Click the **Extension Upload** button to upload your first extension that meets the following requirements:
17
+
18
+ 1. The extension `extension.json` should contain the following attributes: `name`, `uuid`, `displayName`, `description`, `version`, and `license`;
19
+ 2. select and fill in at least one or more of the required extension types (`categories`);
20
+ 3. the extension must provide a custom icon and must not use the default `logo` provided in the SDK, the recommended icon size ratio is `1:1`, the format must be PNG or JPEG, the content must be clear without risk of infringement, and the file size must not exceed `5 MiB`;
21
+ 4. make sure that the entry file (`entry`) of the extension exists and is valid;
22
+ 5. the value of the `name` attribute must not be duplicated across extensions with different `uuid`;
23
+ 6. include a detailed description of the extension's functionality and usage in the `README.md` file;
24
+ 7. if necessary, keep an change log for the extension in the `CHANGELOG.md` file;
25
+ 8. the extension **DOESN'T** contain private information, such as your phone numbers.
26
+
27
+ ![图 0](/storage/images/en/api/guide/extensions-marketplace/extensions-marketplace_20260603_163928.png)
28
+
29
+ Select your compiled `.eext` file in the upload pop-up window and upload it. The first uploaded extension will automatically create a namespace into which all subsequent uploads of the extension (identified by `uuid`) will be grouped.
30
+
31
+ You can view the extension's name, description, version, install count, updated time, and other information on the namespace cover:
32
+
33
+ ![图 4](/storage/images/en/api/guide/extensions-marketplace/extensions-marketplace_20260702_172246.png)
34
+
35
+
36
+ After the extension is uploaded, it will automatically enter the review process. After approval, it will be listed in the marketplace:
37
+
38
+ ![图 5](/storage/images/en/api/guide/extensions-marketplace/extensions-marketplace_20260702_172309.png)
39
+
40
+
41
+ After waiting for the review to complete, the review status will change to **Passed**. If there is a case that the review is not passed, please check the reason in the message notification in time and check the non-compliant content in the extension:
42
+
43
+ ![图 6](/storage/images/en/api/guide/extensions-marketplace/extensions-marketplace_20260702_172321.png)
44
+
45
+ After approval, other users will be able to view your extension details and download the uploaded version:
46
+
47
+ ![图 7](/storage/images/en/api/guide/extensions-marketplace/extensions-marketplace_20260702_172403.png)
48
+
49
+ You can view the extension's detail page, where the `README.md` and `CHANGELOG.md` contents of the extension file will be displayed:
50
+
51
+ ![图 8](/storage/images/en/api/guide/extensions-marketplace/extensions-marketplace_20260702_172447.png)
52
+
53
+ All published versions of the extension are listed in the history:
54
+
55
+ ![图 9](/storage/images/en/api/guide/extensions-marketplace/extensions-marketplace_20260702_172548.png)
56
+
57
+ You can leave ratings and reviews of the extension in the comments section:
58
+
59
+ ![图 10](/storage/images/en/api/guide/extensions-marketplace/extensions-marketplace_20260702_172603.png)
60
+
61
+ You can also downgrade the namespace of an extension at any time on the extension management page. This does not affect the status of uploaded versions, and you can also individually unpublish a specific version in the versioning management.
@@ -0,0 +1,301 @@
1
+ # How to Get Started <Badge type="tip" text="Intro" />
2
+
3
+ In the EasyEDA Professional extension engine, all extensions are independent JavaScript scripts running under their own scope chains.
4
+
5
+ Each extension requires a UUID as the uniquely identifiable name of the extension, and this UUID exists in two cases:
6
+
7
+ 1. the extension has been included and referenced from the EasyEDA Pro Extension Store, or the extension developer has requested a UUID for the extension and filled in the `uuid` field in `extension.json`, in this case, the UUID is an auto-generated 32-bit string, and you can find it on the Extension Store page for the extension;
8
+ 2. if the extension is not included and does not fill in the `uuid` field, then the UUID is the `name` field defined by the extension developer in `extension.json`, please be careful about using this field as the name of the extension's interdependent references as it is always variable and may be renamed.
9
+
10
+ ::: info
11
+
12
+ If you are using [pro-api-sdk](./ancillary-projects/pro-api-sdk), a new UUID will be automatically generated for you the first time you run `npm run build`.
13
+
14
+ If you wish to build the full development environment manually, you can also safely use <code id="generatedUuid"></code> as the UUID for the new extension, which is randomly generated when you visit the current page.
15
+
16
+ :::
17
+
18
+ All user extensions run locally on the client, which means you can write them in JavaScript according to the [ECMAScript Next](https://262.ecma-international.org/) specification, but note that in the main thread, there are limitations on accessing the DOM, external requests, local file system, and other browser APIs. However, it should be noted that in the main thread, calls to the DOM, external requests, local filesystem, and other browser APIs will be limited, and we will provide predefined interfaces in the extension APIs to address the need for this type of access.
19
+
20
+ ::: tip
21
+
22
+ EasyEDA offers a wide range of extension examples, allowing users to view the source code and compile it for use:
23
+ Extensions source code: [https://github.com/easyeda](https://github.com/easyeda)
24
+ Extensions marketplace : [https://jlcext.com/](https://jlcext.com/)
25
+
26
+ :::
27
+
28
+ ## Development Environment (Computer)
29
+
30
+ In order to facilitate the environment configuration, we provide [pro-api-sdk](https://gitee.com/jlceda/pro-api-sdk), and we recommend all developers to use this SDK for development, and this document will be based on this SDK to explain. You can get and configure the SDK environment in the following ways:
31
+
32
+ ### I. Install Visual Studio Code
33
+
34
+ Visual Studio Code is the most recommended IDE for novice developers, hereafter referred to as **VSCode**, and you can download it from its [official website](https://code.visualstudio.com/#alt-downloads).
35
+
36
+ If you don't understand the difference between the versions, please download the version indicated in the figure below (Windows System Installer x64):
37
+
38
+ ![VS Code Windows System Installer x64](/storage/images/cn/api/guide/how-to-start/how-to-start_20240729_170651.png)
39
+
40
+ ### II. Install Git
41
+
42
+ Git is the recommended tool for pulling SDKs, and you can download it from its [official website](https://git-scm.com/download).
43
+
44
+ On the right side of the official download page, click `Download for Windows`:
45
+
46
+ ![Git Download for Windows](/storage/images/cn/api/guide/how-to-start/how-to-start_20240729_170746.png)
47
+
48
+ ### III. Install Node.js
49
+
50
+ Node.js is the runtime software necessary to build TypeScript natively, and you can download it from its [official website](https://nodejs.org/en/download/prebuilt-installer).
51
+
52
+ The official download page is a guided interactive page, so if you don't need it, just follow the instructions below:
53
+
54
+ I want `Current` version of Node.js for `Windows` running `x64`
55
+
56
+ Then click the `Download Node.js` button to download the Node.js installer.
57
+
58
+ ::: warning
59
+
60
+ If you wish to use a customized version of Node.js, make sure it is no lower than `20.5.0`, which is the minimum version required for this project.
61
+
62
+ :::
63
+
64
+ ::: tip
65
+
66
+ You can check the version of Node.js you have installed by typing `node -v` in the console, if the version is lower than `20.5.0`, follow the steps above to install Node.js.
67
+
68
+ :::
69
+
70
+ ### IV. Getting SDK Locally
71
+
72
+ Now you can choose either of the following two ways to get the SDK, you can choose one according to your preference:
73
+
74
+ ::: details Initialize using npx command
75
+
76
+ 1. Before you start, you need to first create a subfolder on your local disc where you will keep all your development materials. For example, you can create a subfolder named `easyeda-extension` under the `D:` disc.
77
+
78
+ ::: warning
79
+
80
+ Please try not to include `spaces` `non-ASCII characters` in the path to avoid surprises in subsequent operations.
81
+
82
+ :::
83
+
84
+ 2. Once created, open the Windows PowerShell tool (right-click on the `Windows Logo Key` and select the `Windows PowerShell (Administrator)` option).
85
+
86
+ 3. Navigate within Windows PowerShell to the folder you just created, in this case the `D:\easyeda-extension` folder, and execute `cd "D:\easyeda-extension"`:
87
+
88
+ ![PowerShell cd](/storage/images/en/api/guide/how-to-start/how-to-start_20240802_154933.png)
89
+
90
+ ::: tip
91
+
92
+ The double quotes `""` here are half-width characters, and they cannot be omitted when the path contains `spaces`.
93
+
94
+ :::
95
+
96
+ 4. Execute the following command:
97
+
98
+ ```shell
99
+ npx github:easyeda/pro-api-sdk my-extension
100
+ ```
101
+
102
+ :::
103
+
104
+ ::: details Initialize using git command
105
+
106
+ 1. Before you start, you need to first create a subfolder on your local disc where you will keep all your development materials. For example, you can create a subfolder named `easyeda-extension` under the `D:` disc.
107
+
108
+ ::: warning
109
+
110
+ Please try not to include `spaces` `non-ASCII characters` in the path to avoid surprises in subsequent operations.
111
+
112
+ :::
113
+
114
+ 2. Once created, open the Windows PowerShell tool (right-click on the `Windows Logo Key` and select the `Windows PowerShell (Administrator)` option).
115
+
116
+ 3. Navigate within Windows PowerShell to the folder you just created, in this case the `D:\easyeda-extension` folder, and execute `cd "D:\easyeda-extension"`:
117
+
118
+ ![PowerShell cd](/storage/images/en/api/guide/how-to-start/how-to-start_20240802_154933.png)
119
+
120
+ ::: tip
121
+
122
+ The double quotes `""` here cannot be omitted when the path contains `spaces`.
123
+
124
+ :::
125
+
126
+ 4. Depending on your network environment, execute one of the following commands:
127
+
128
+ ```shell
129
+ git clone --depth=1 https://github.com/easyeda/pro-api-sdk.git my-extension
130
+ ```
131
+
132
+ :::
133
+
134
+ ### V. Get VS Code Extension
135
+
136
+ 1. First you need to start VS Code and open the folder of the project you pulled in the previous stage inside it (e.g. `D:\easyeda-extension\my-extension`).
137
+
138
+ ![VS Code Open Folder](/storage/images/en/api/guide/how-to-start/how-to-start_20240802_155144.png)
139
+
140
+ 2. Then switch to the Extensions page (shortcut <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>X</kbd>) and search for and install the following apps in the search box at the top:
141
+
142
+ 1. `Code Spell Checker` by Street Side Software
143
+ 2. `ESLint` by Microsoft
144
+ 3. `EditorConfig for VS Code` by EditorConfig
145
+
146
+ ![VS Code Search Extensions](/storage/images/en/api/guide/how-to-start/how-to-start_20240802_155249.png)
147
+
148
+ 3. All extensions are pre-configured within the SDK and saved in their corresponding configuration files, and you don't need to do any additional configuration on them unless you understand what you're doing.
149
+
150
+ ## Build the First EasyEDA Professional Extension
151
+
152
+ ### I. List of Files
153
+
154
+ The SDK comes pre-configured with all the necessary components of the development environment, so you can refer to the following list of files to see what each one does:
155
+
156
+ ```
157
+ ├───.husky Auto Script Directory
158
+ ├───.vscode VS Code Configuration File Directory
159
+ │ ├───extensions.json Recommended Extensions
160
+ │ └───settings.json Extension Configuration
161
+ ├───build Extension Pack Compilation Directory
162
+ │ ├───dist Extension Pack Compilation Result Directory
163
+ │ └───packaged.ts Compile Scripts
164
+ ├───config ESBuild Configuration Directory
165
+ ├───dist Compilation Results Directory
166
+ ├───iframe IFrame Inline Frame Directory
167
+ ├───images Extension Preview Image Directory
168
+ │ ├───banner.png Extension Banner Image
169
+ │ └───logo.png Extension Logo Image
170
+ ├───locales Extended Multilingual Directory
171
+ │ ├───en.json English Language Translation File
172
+ │ └───zh-Hans.json Simplified Chinese Language Translation File
173
+ ├───node_modules NPM Dependency Module Directory
174
+ ├───src Extension's Main Source Code Directory
175
+ ├───.edaignore EDA Ignore File Configuration
176
+ ├───.editorconfig Editor Base Format Configuration
177
+ ├───.eslintrc.js ESLint Automatic Code Constraint Configuration
178
+ ├───.gitattributes Git Attribute Configuration
179
+ ├───.gitignore Git Ignores File Configuration
180
+ ├───.prettierignore Prettier Ignores File Configuration
181
+ ├───.prettierrc.js Prettier Auto Format Configuration
182
+ ├───LICENSE Open Source License
183
+ ├───README.md Project Introduction
184
+ ├───extension.json EasyEDA Professional Extension Configuration
185
+ ├───package.json NPM Package Configuration
186
+ ├───package-lock.json NPM Package Dependency Locking Configuration
187
+ └───tsconfig.json TypeScript Compilation Configuration
188
+ ```
189
+
190
+ ### II. Extension Configuration
191
+
192
+ EasyEDA Professional has a custom configuration file, i.e. `extension.json` file in the root directory of the SDK, the contents of which will be fully read by EasyEDA Professional and will be shown in the display and running process of the extension package, the following is the default contents of this file:
193
+
194
+ <<< @/private/pro-api-sdk/extension.json{2,4-5,7,11 json}
195
+
196
+ Now, we only need to change a few of the key values:
197
+
198
+ | Property | Type | Example | Description |
199
+ | ----------- | -------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
200
+ | name | `string` | `run-api-gateway` | Extension name. It can only contain lowercase English letters `a-z`, digits `0-9`, and hyphens `-`, and must be `5-30` characters long. |
201
+ | displayName | `string` | `Run API Gateway` | Display name. It can be in Chinese. |
202
+ | description | `string` | `Provides WebSocket gateway bridging for AI coding tools` | Description. |
203
+ | publisher | `string` | `JLCEDA` | Developer information. |
204
+ | license | `string` | `Apache-2.0` | Open-source licensing terms. It is recommended to go to [Choose a License](https://choosealicense.com/) to select the appropriate open source license for your project. |
205
+
206
+ ### III. Initialization Environment
207
+
208
+ Initializing the environment and starting the build are very simple single commands, in order to execute these commands you first need to start a VS Code terminal:
209
+
210
+ ![New VS Code Terminal](/storage/images/en/api/guide/how-to-start/how-to-start_20240802_155359.png)
211
+
212
+ The terminal will appear below by default, and you can execute all the next commands from within the terminal. Now, we need to initialize the environment for the SDK project, including installing all the dependent libraries, initializing the runtime hooks, and more things that can be automated, and you'll need to execute the following commands from within the terminal:
213
+
214
+ ```shell
215
+ npm install
216
+ ```
217
+
218
+ ::: tip
219
+
220
+ If you encounter an error like this:
221
+
222
+ ```
223
+ File C:\example.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
224
+ ```
225
+
226
+ You need to run the following command in PowerShell with administrator privileges:
227
+
228
+ ```powershell
229
+ Set-ExecutionPolicy RemoteSigned
230
+ ```
231
+
232
+ This changes the execution policy to allow script execution. It is required to run NPM via Node.js on the device, but be aware that changing the execution policy may affect the security of the system.
233
+
234
+ If you are developing within an organization, you may need to consult your IT department, because the organization may have its own security policies.
235
+
236
+ :::
237
+
238
+ ### IV. Modify the Code File
239
+
240
+ In the default environment provided by the SDK, your entry code file is `/src/index.ts`.
241
+
242
+ If the file has the same suffix, we highly recommend and support writing EasyEDA Pro extensions in TypeScript by default, relying on the type system provided by TypeScript and our [pro-api-types](https://www.npmjs.com/package/@jlceda/pro-api-types) type definition file, you can easily get complete support for type inference and syntax hints.
243
+
244
+ ::: info
245
+
246
+ If you still want to code in native JavaScript, you can rename `/src/index.ts` to `/src/index.js` and remove anything inside that doesn't conform to JavaScript syntax.
247
+
248
+ :::
249
+
250
+ ### V. Build
251
+
252
+ After each code change, you should perform a build to get the latest extension package, and you may need to change the version number within the `extension.json` file before doing the build:
253
+
254
+ | Property | Type | Description |
255
+ | -------- | -------- | ------------------------------------------------ |
256
+ | version | `string` | Semantic version number in `major.minor.patch` format |
257
+
258
+ Then, execute the following command in the terminal to build the extension package:
259
+
260
+ ```shell
261
+ npm run build
262
+ ```
263
+
264
+ The extension packages you build will be generated in the `/build/dist/` directory.
265
+
266
+ ::: tip
267
+
268
+ The build will read the `.edaignore` file in the root directory, which controls what will be excluded from the package at build time, and has the same syntax as `.gitignore`.
269
+
270
+ :::
271
+
272
+ ## Import Extensions to EasyEDA Pro
273
+
274
+ The import operation currently has a different location:
275
+
276
+ ::: details EasyEDA Pro V2
277
+
278
+ **Top Menu Bar** -\> **Settings** -\> **Extensions** -\> **Extension Manager...** -\> **Import Extensions**
279
+
280
+ ![Import Extension](/storage/images/cn/api/guide/how-to-start/how-to-start_20260209_133454.png)
281
+
282
+ Import the `.eext` file you generated in the `/build/dist/` directory during the last build.
283
+
284
+ :::
285
+
286
+ ::: details EasyEDA Pro V3
287
+
288
+ **Top Menu Bar** -\> **Advanced** -\> **Extension Manager...** -\> **Import**
289
+
290
+ ![Import Extension](/storage/images/cn/api/guide/how-to-start/how-to-start_20260209_133418.png)
291
+
292
+ Import the `.eext` file you generated in the `/build/dist/` directory during the last build.
293
+
294
+ :::
295
+
296
+ <script setup>
297
+ import { onMounted } from 'vue'
298
+ onMounted(() => {
299
+ document.getElementById('generatedUuid').innerHTML = crypto.randomUUID().replaceAll('-', '');
300
+ })
301
+ </script>
@@ -0,0 +1,57 @@
1
+ # Multi-language Support
2
+
3
+ ## Multi-language Configuration
4
+
5
+ The extension supports multi-language configuration, you can create a `<IANA Language Tags>.json` file in the `./locales/` folder, you can create a `<IANA language tag>.json` file, which will be automatically associated with the corresponding language and called when appropriate.
6
+
7
+ ::: code-group
8
+
9
+ ```json [zh-Hans.json]
10
+ {
11
+ "Enter": "确定",
12
+ "Cancel": "取消"
13
+ }
14
+ ```
15
+
16
+ ```json [en.json]
17
+ {
18
+ "Enter": "Enter",
19
+ "Cancel": "Cancel"
20
+ }
21
+ ```
22
+
23
+ :::
24
+
25
+ If you need to get all the language labels supported by the current extension, you can call the [SYS_I18n.getAllSupportedLanguages()](../reference/pro-api.sys_i18n.getallsupportedlanguages) method, which will return an array of strings.
26
+
27
+ ::: warning
28
+
29
+ Note that if your extension has two or more languages, it must include at least one of `en` or `zh-Hans` as a fallback language, otherwise you may encounter unexpected display errors.
30
+
31
+ :::
32
+
33
+ ## Use of Multiple Languages within the Code
34
+
35
+ To use a multilingual system to display different text in different language environments, use the [SYS_I18n.text()](../reference/pro-api.sys_i18n.text) method.
36
+
37
+ [SYS_I18n.text()](../reference/pro-api.sys_i18n.text) method has a mandatory argument `tag`, which corresponds to the key name in the multilingual file, and the key value matched by that key name is the final displayed text.
38
+
39
+ You can specify the `namespace` parameter as the `uuid` of other extensions to call the multilingual configuration of other extensions.
40
+
41
+ Currently, EasyEDA Professional only supports a few languages by default, while the extension API supports a lot of additional languages, you can use the `language` parameter to adapt more languages for your extension, but you need to design your own logic and method to switch languages.
42
+
43
+ When translating a language, it is very likely that we will encounter a situation where we need to embed parameters into the text, because the syntax of each language is different and the position of the parameters in the text of the language may vary greatly, you can use a placeholder in the `${1}` format to indicate the parameters that need to be embedded and pass the parameters into the `arg` of the [SYS_I18n.text()](../reference/pro-api.sys_i18n.text) method within `arg`, so that when the specified text is displayed, the corresponding argument will be embedded in the text at the specified location.
44
+
45
+ ::: tip
46
+
47
+ Language priority: current display language > system default language > the first language in the dataset that contains the text tag > text label (tag)
48
+
49
+ In addition to the above steps, you may need to know other [SYS_I18n](../reference/pro-api.sys_i18n) APIs to work more freely with multilingual content.
50
+
51
+ :::
52
+
53
+ ## Translating Fields in extension.json
54
+
55
+ If you need to translate fields in `extension.json`, create a `<IANA language tag>.json` file in the `./locales/extensionJson/` folder.
56
+
57
+ Within that file, each `key` must be a `value` from `extension.json`, and each `value` in the translation file is the translated result.
@@ -0,0 +1,7 @@
1
+ # What is Extension API?
2
+
3
+ EasyEDA Professional Extension API (hereinafter referred to as "Extension API") is a set of JS API interfaces built on the front-end, which is used to develop various custom functions of EasyEDA Professional Editor. In short, the Extension API uses the basic syntax of JavaScript to write source code that highly encapsulates many EasyEDA Pro features and algorithms, together with a comprehensive [SDK](./ancillary-projects/pro-api-sdk), [type constraints](./ancillary-projects/pro-api-types), the development of custom extensions can be completed with very little effort, effectively reducing the mental burden on developers and designers.
4
+
5
+ Next, you can go to the [How to Get Started](./how-to-start) section to learn how to install the environment from scratch and build your own EasyEDA Pro Edition extension.
6
+
7
+ If you are an extension user, see the [Getting and Using Extensions](../user-guide/using-extension) section.
@@ -0,0 +1,20 @@
1
+ # Inline Frame Support
2
+
3
+ In some application scenarios where extensions want to have fully customized windows that are not limited to the popups and controls provided by EasyEDA, we provide a way to build windows using inline frames.
4
+
5
+ To use inline frames, you need to save all files in the extension's `/iframe/` directory and use [SYS_IFrame.openIFrame()](../reference/pro-api.sys_iframe.openiframe) method to load the specified `html` file as the content of the inline frame.
6
+
7
+ ```typescript
8
+ // This example loads the index.html file in the /iframe/ directory with a window of 500px in height and width
9
+ eda.sys_IFrame.openIFrame('/iframe/index.html', 500, 500);
10
+ ```
11
+
12
+ ::: tip
13
+ Files can be loaded and indexed without being stored in the `/iframe/` directory, but it is recommended that the `/iframe/` directory be used as the storage directory for inline frame files for a more intuitive organization of the files.
14
+
15
+ The URI referred to by the `htmlFileName` parameter starts at the root path of the extension package, you can use `/` or start directly with the `iframe/` folder name.
16
+ :::
17
+
18
+ The extension API will automatically read the specified `html` file and other files associated with it, but will not continue to recursively parse it, due to the limitations of our secure resource access rules.
19
+
20
+ To open multiple IFrame windows within a single extension, specify an ID for each IFrame.