qsharp-lang 1.22.2-dev → 1.22.4-dev

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 (337) hide show
  1. package/dist/compiler/common.d.ts +16 -3
  2. package/dist/compiler/compiler.d.ts +3 -3
  3. package/dist/compiler/compiler.js +2 -2
  4. package/dist/data-structures/circuit.d.ts +8 -0
  5. package/docs/Microsoft.Quantum.Core/IsRangeEmpty.md +1 -1
  6. package/docs/Microsoft.Quantum.Core/Length.md +1 -1
  7. package/docs/Microsoft.Quantum.Core/RangeEnd.md +1 -1
  8. package/docs/Microsoft.Quantum.Core/RangeStart.md +1 -1
  9. package/docs/Microsoft.Quantum.Core/Repeated.md +1 -1
  10. package/docs/Microsoft.Quantum.Core/index.md +1 -1
  11. package/docs/Std.Arithmetic/AddLE.md +1 -1
  12. package/docs/Std.Arithmetic/ApplyIfEqualL.md +1 -1
  13. package/docs/Std.Arithmetic/ApplyIfEqualLE.md +1 -1
  14. package/docs/Std.Arithmetic/ApplyIfGreaterL.md +1 -1
  15. package/docs/Std.Arithmetic/ApplyIfGreaterLE.md +1 -1
  16. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualL.md +1 -1
  17. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualLE.md +1 -1
  18. package/docs/Std.Arithmetic/ApplyIfLessL.md +1 -1
  19. package/docs/Std.Arithmetic/ApplyIfLessLE.md +1 -1
  20. package/docs/Std.Arithmetic/ApplyIfLessOrEqualL.md +1 -1
  21. package/docs/Std.Arithmetic/ApplyIfLessOrEqualLE.md +1 -1
  22. package/docs/Std.Arithmetic/FourierTDIncByLE.md +1 -1
  23. package/docs/Std.Arithmetic/IncByI.md +1 -1
  24. package/docs/Std.Arithmetic/IncByIUsingIncByLE.md +1 -1
  25. package/docs/Std.Arithmetic/IncByL.md +1 -1
  26. package/docs/Std.Arithmetic/IncByLE.md +1 -1
  27. package/docs/Std.Arithmetic/IncByLEUsingAddLE.md +1 -1
  28. package/docs/Std.Arithmetic/IncByLUsingIncByLE.md +1 -1
  29. package/docs/Std.Arithmetic/LookAheadDKRSAddLE.md +1 -1
  30. package/docs/Std.Arithmetic/MAJ.md +1 -1
  31. package/docs/Std.Arithmetic/ReflectAboutInteger.md +1 -1
  32. package/docs/Std.Arithmetic/RippleCarryCGAddLE.md +1 -1
  33. package/docs/Std.Arithmetic/RippleCarryCGIncByLE.md +1 -1
  34. package/docs/Std.Arithmetic/RippleCarryTTKIncByLE.md +1 -1
  35. package/docs/Std.Arithmetic/index.md +1 -1
  36. package/docs/Std.Arrays/All.md +1 -1
  37. package/docs/Std.Arrays/Any.md +1 -1
  38. package/docs/Std.Arrays/Chunks.md +1 -1
  39. package/docs/Std.Arrays/CircularlyShifted.md +1 -1
  40. package/docs/Std.Arrays/ColumnAt.md +1 -1
  41. package/docs/Std.Arrays/Count.md +1 -1
  42. package/docs/Std.Arrays/Diagonal.md +1 -1
  43. package/docs/Std.Arrays/DrawMany.md +1 -1
  44. package/docs/Std.Arrays/Enumerated.md +1 -1
  45. package/docs/Std.Arrays/Excluding.md +1 -1
  46. package/docs/Std.Arrays/Filtered.md +1 -1
  47. package/docs/Std.Arrays/FlatMapped.md +1 -1
  48. package/docs/Std.Arrays/Flattened.md +1 -1
  49. package/docs/Std.Arrays/Fold.md +1 -1
  50. package/docs/Std.Arrays/ForEach.md +1 -1
  51. package/docs/Std.Arrays/Head.md +1 -1
  52. package/docs/Std.Arrays/HeadAndRest.md +1 -1
  53. package/docs/Std.Arrays/IndexOf.md +1 -1
  54. package/docs/Std.Arrays/IndexRange.md +1 -1
  55. package/docs/Std.Arrays/Interleaved.md +1 -1
  56. package/docs/Std.Arrays/IsEmpty.md +1 -1
  57. package/docs/Std.Arrays/IsRectangularArray.md +1 -1
  58. package/docs/Std.Arrays/IsSorted.md +1 -1
  59. package/docs/Std.Arrays/IsSquareArray.md +1 -1
  60. package/docs/Std.Arrays/Mapped.md +1 -1
  61. package/docs/Std.Arrays/MappedByIndex.md +1 -1
  62. package/docs/Std.Arrays/MappedOverRange.md +1 -1
  63. package/docs/Std.Arrays/Most.md +1 -1
  64. package/docs/Std.Arrays/MostAndTail.md +1 -1
  65. package/docs/Std.Arrays/Padded.md +1 -1
  66. package/docs/Std.Arrays/Partitioned.md +1 -1
  67. package/docs/Std.Arrays/Rest.md +1 -1
  68. package/docs/Std.Arrays/Reversed.md +1 -1
  69. package/docs/Std.Arrays/SequenceI.md +1 -1
  70. package/docs/Std.Arrays/SequenceL.md +1 -1
  71. package/docs/Std.Arrays/Sorted.md +1 -1
  72. package/docs/Std.Arrays/Subarray.md +1 -1
  73. package/docs/Std.Arrays/Swapped.md +1 -1
  74. package/docs/Std.Arrays/Tail.md +1 -1
  75. package/docs/Std.Arrays/Transposed.md +1 -1
  76. package/docs/Std.Arrays/Unzipped.md +1 -1
  77. package/docs/Std.Arrays/Where.md +1 -1
  78. package/docs/Std.Arrays/Windows.md +1 -1
  79. package/docs/Std.Arrays/Zipped.md +1 -1
  80. package/docs/Std.Arrays/index.md +1 -1
  81. package/docs/Std.Canon/ApplyCNOTChain.md +1 -1
  82. package/docs/Std.Canon/ApplyControlledOnBitString.md +1 -1
  83. package/docs/Std.Canon/ApplyControlledOnInt.md +1 -1
  84. package/docs/Std.Canon/ApplyOperationPowerA.md +1 -1
  85. package/docs/Std.Canon/ApplyOperationPowerCA.md +1 -1
  86. package/docs/Std.Canon/ApplyP.md +1 -1
  87. package/docs/Std.Canon/ApplyPauli.md +1 -1
  88. package/docs/Std.Canon/ApplyPauliFromBitString.md +1 -1
  89. package/docs/Std.Canon/ApplyPauliFromInt.md +1 -1
  90. package/docs/Std.Canon/ApplyQFT.md +1 -1
  91. package/docs/Std.Canon/ApplyQPE.md +1 -1
  92. package/docs/Std.Canon/ApplyToEach.md +1 -1
  93. package/docs/Std.Canon/ApplyToEachA.md +1 -1
  94. package/docs/Std.Canon/ApplyToEachC.md +1 -1
  95. package/docs/Std.Canon/ApplyToEachCA.md +1 -1
  96. package/docs/Std.Canon/ApplyXorInPlace.md +1 -1
  97. package/docs/Std.Canon/ApplyXorInPlaceL.md +1 -1
  98. package/docs/Std.Canon/CX.md +1 -1
  99. package/docs/Std.Canon/CY.md +1 -1
  100. package/docs/Std.Canon/CZ.md +1 -1
  101. package/docs/Std.Canon/Fst.md +1 -1
  102. package/docs/Std.Canon/MapPauliAxis.md +1 -1
  103. package/docs/Std.Canon/Relabel.md +1 -1
  104. package/docs/Std.Canon/Snd.md +1 -1
  105. package/docs/Std.Canon/SwapReverseRegister.md +1 -1
  106. package/docs/Std.Canon/index.md +1 -1
  107. package/docs/Std.Convert/BigIntAsBoolArray.md +1 -1
  108. package/docs/Std.Convert/BigIntAsInt.md +1 -1
  109. package/docs/Std.Convert/BoolArrayAsBigInt.md +1 -1
  110. package/docs/Std.Convert/BoolArrayAsInt.md +1 -1
  111. package/docs/Std.Convert/BoolArrayAsResultArray.md +1 -1
  112. package/docs/Std.Convert/BoolAsResult.md +1 -1
  113. package/docs/Std.Convert/ComplexAsComplexPolar.md +1 -1
  114. package/docs/Std.Convert/ComplexPolarAsComplex.md +1 -1
  115. package/docs/Std.Convert/DoubleAsStringWithPrecision.md +1 -1
  116. package/docs/Std.Convert/IntAsBigInt.md +1 -1
  117. package/docs/Std.Convert/IntAsBoolArray.md +1 -1
  118. package/docs/Std.Convert/IntAsDouble.md +1 -1
  119. package/docs/Std.Convert/ResultArrayAsBoolArray.md +1 -1
  120. package/docs/Std.Convert/ResultArrayAsInt.md +1 -1
  121. package/docs/Std.Convert/ResultAsBool.md +1 -1
  122. package/docs/Std.Convert/index.md +1 -1
  123. package/docs/Std.Core/Complex.md +1 -1
  124. package/docs/Std.Core/Length.md +1 -1
  125. package/docs/Std.Core/Repeated.md +1 -1
  126. package/docs/Std.Core/index.md +1 -1
  127. package/docs/Std.Diagnostics/ApplyIdleNoise.md +1 -1
  128. package/docs/Std.Diagnostics/BitFlipNoise.md +1 -1
  129. package/docs/Std.Diagnostics/CheckAllZero.md +1 -1
  130. package/docs/Std.Diagnostics/CheckOperationsAreEqual.md +1 -1
  131. package/docs/Std.Diagnostics/CheckZero.md +1 -1
  132. package/docs/Std.Diagnostics/ConfigurePauliNoise.md +1 -1
  133. package/docs/Std.Diagnostics/ConfigureQubitLoss.md +1 -1
  134. package/docs/Std.Diagnostics/DepolarizingNoise.md +1 -1
  135. package/docs/Std.Diagnostics/DumpMachine.md +1 -1
  136. package/docs/Std.Diagnostics/DumpOperation.md +1 -1
  137. package/docs/Std.Diagnostics/DumpRegister.md +1 -1
  138. package/docs/Std.Diagnostics/Fact.md +1 -1
  139. package/docs/Std.Diagnostics/NoNoise.md +1 -1
  140. package/docs/Std.Diagnostics/PhaseFlipNoise.md +1 -1
  141. package/docs/Std.Diagnostics/StartCountingFunction.md +1 -1
  142. package/docs/Std.Diagnostics/StartCountingOperation.md +1 -1
  143. package/docs/Std.Diagnostics/StartCountingQubits.md +1 -1
  144. package/docs/Std.Diagnostics/StopCountingFunction.md +1 -1
  145. package/docs/Std.Diagnostics/StopCountingOperation.md +1 -1
  146. package/docs/Std.Diagnostics/StopCountingQubits.md +1 -1
  147. package/docs/Std.Diagnostics/index.md +1 -1
  148. package/docs/Std.Intrinsic/AND.md +1 -1
  149. package/docs/Std.Intrinsic/ApplyUnitary.md +1 -1
  150. package/docs/Std.Intrinsic/CCNOT.md +1 -1
  151. package/docs/Std.Intrinsic/CNOT.md +1 -1
  152. package/docs/Std.Intrinsic/Exp.md +1 -1
  153. package/docs/Std.Intrinsic/H.md +1 -1
  154. package/docs/Std.Intrinsic/I.md +1 -1
  155. package/docs/Std.Intrinsic/M.md +1 -1
  156. package/docs/Std.Intrinsic/Measure.md +1 -1
  157. package/docs/Std.Intrinsic/Message.md +1 -1
  158. package/docs/Std.Intrinsic/R.md +1 -1
  159. package/docs/Std.Intrinsic/R1.md +1 -1
  160. package/docs/Std.Intrinsic/R1Frac.md +1 -1
  161. package/docs/Std.Intrinsic/RFrac.md +1 -1
  162. package/docs/Std.Intrinsic/Reset.md +1 -1
  163. package/docs/Std.Intrinsic/ResetAll.md +1 -1
  164. package/docs/Std.Intrinsic/Rx.md +1 -1
  165. package/docs/Std.Intrinsic/Rxx.md +1 -1
  166. package/docs/Std.Intrinsic/Ry.md +1 -1
  167. package/docs/Std.Intrinsic/Ryy.md +1 -1
  168. package/docs/Std.Intrinsic/Rz.md +1 -1
  169. package/docs/Std.Intrinsic/Rzz.md +1 -1
  170. package/docs/Std.Intrinsic/S.md +1 -1
  171. package/docs/Std.Intrinsic/SWAP.md +1 -1
  172. package/docs/Std.Intrinsic/SX.md +1 -1
  173. package/docs/Std.Intrinsic/T.md +1 -1
  174. package/docs/Std.Intrinsic/X.md +1 -1
  175. package/docs/Std.Intrinsic/Y.md +1 -1
  176. package/docs/Std.Intrinsic/Z.md +1 -1
  177. package/docs/Std.Intrinsic/index.md +1 -1
  178. package/docs/Std.Logical/Xor.md +1 -1
  179. package/docs/Std.Logical/index.md +1 -1
  180. package/docs/Std.Math/AbsComplex.md +1 -1
  181. package/docs/Std.Math/AbsComplexPolar.md +1 -1
  182. package/docs/Std.Math/AbsD.md +1 -1
  183. package/docs/Std.Math/AbsI.md +1 -1
  184. package/docs/Std.Math/AbsL.md +1 -1
  185. package/docs/Std.Math/AbsSquaredComplex.md +1 -1
  186. package/docs/Std.Math/AbsSquaredComplexPolar.md +1 -1
  187. package/docs/Std.Math/ApproximateFactorial.md +1 -1
  188. package/docs/Std.Math/ArcCos.md +1 -1
  189. package/docs/Std.Math/ArcCosh.md +1 -1
  190. package/docs/Std.Math/ArcSin.md +1 -1
  191. package/docs/Std.Math/ArcSinh.md +1 -1
  192. package/docs/Std.Math/ArcTan.md +1 -1
  193. package/docs/Std.Math/ArcTan2.md +1 -1
  194. package/docs/Std.Math/ArcTanh.md +1 -1
  195. package/docs/Std.Math/ArgComplex.md +1 -1
  196. package/docs/Std.Math/ArgComplexPolar.md +1 -1
  197. package/docs/Std.Math/Binom.md +1 -1
  198. package/docs/Std.Math/BitSizeI.md +1 -1
  199. package/docs/Std.Math/BitSizeL.md +1 -1
  200. package/docs/Std.Math/Ceiling.md +1 -1
  201. package/docs/Std.Math/Complex.md +1 -1
  202. package/docs/Std.Math/ComplexPolar.md +1 -1
  203. package/docs/Std.Math/ContinuedFractionConvergentI.md +1 -1
  204. package/docs/Std.Math/ContinuedFractionConvergentL.md +1 -1
  205. package/docs/Std.Math/Cos.md +1 -1
  206. package/docs/Std.Math/Cosh.md +1 -1
  207. package/docs/Std.Math/DivRemI.md +1 -1
  208. package/docs/Std.Math/DivRemL.md +1 -1
  209. package/docs/Std.Math/DividedByC.md +1 -1
  210. package/docs/Std.Math/DividedByCP.md +1 -1
  211. package/docs/Std.Math/E.md +1 -1
  212. package/docs/Std.Math/ExpModI.md +1 -1
  213. package/docs/Std.Math/ExpModL.md +1 -1
  214. package/docs/Std.Math/ExtendedGreatestCommonDivisorI.md +1 -1
  215. package/docs/Std.Math/ExtendedGreatestCommonDivisorL.md +1 -1
  216. package/docs/Std.Math/FactorialI.md +1 -1
  217. package/docs/Std.Math/FactorialL.md +1 -1
  218. package/docs/Std.Math/Floor.md +1 -1
  219. package/docs/Std.Math/GreatestCommonDivisorI.md +1 -1
  220. package/docs/Std.Math/GreatestCommonDivisorL.md +1 -1
  221. package/docs/Std.Math/HammingWeightI.md +1 -1
  222. package/docs/Std.Math/InverseModI.md +1 -1
  223. package/docs/Std.Math/InverseModL.md +1 -1
  224. package/docs/Std.Math/IsCoprimeI.md +1 -1
  225. package/docs/Std.Math/IsCoprimeL.md +1 -1
  226. package/docs/Std.Math/IsInfinite.md +1 -1
  227. package/docs/Std.Math/IsNaN.md +1 -1
  228. package/docs/Std.Math/LargestFixedPoint.md +1 -1
  229. package/docs/Std.Math/Lg.md +1 -1
  230. package/docs/Std.Math/Log.md +1 -1
  231. package/docs/Std.Math/Log10.md +1 -1
  232. package/docs/Std.Math/LogFactorialD.md +1 -1
  233. package/docs/Std.Math/LogGammaD.md +1 -1
  234. package/docs/Std.Math/LogOf2.md +1 -1
  235. package/docs/Std.Math/Max.md +1 -1
  236. package/docs/Std.Math/MaxD.md +1 -1
  237. package/docs/Std.Math/MaxI.md +1 -1
  238. package/docs/Std.Math/MaxL.md +1 -1
  239. package/docs/Std.Math/Min.md +1 -1
  240. package/docs/Std.Math/MinD.md +1 -1
  241. package/docs/Std.Math/MinI.md +1 -1
  242. package/docs/Std.Math/MinL.md +1 -1
  243. package/docs/Std.Math/MinusC.md +1 -1
  244. package/docs/Std.Math/MinusCP.md +1 -1
  245. package/docs/Std.Math/ModulusI.md +1 -1
  246. package/docs/Std.Math/ModulusL.md +1 -1
  247. package/docs/Std.Math/NegationC.md +1 -1
  248. package/docs/Std.Math/NegationCP.md +1 -1
  249. package/docs/Std.Math/PI.md +1 -1
  250. package/docs/Std.Math/PNorm.md +1 -1
  251. package/docs/Std.Math/PNormalized.md +1 -1
  252. package/docs/Std.Math/PlusC.md +1 -1
  253. package/docs/Std.Math/PlusCP.md +1 -1
  254. package/docs/Std.Math/PowC.md +1 -1
  255. package/docs/Std.Math/PowCP.md +1 -1
  256. package/docs/Std.Math/RealMod.md +1 -1
  257. package/docs/Std.Math/Round.md +1 -1
  258. package/docs/Std.Math/RoundHalfAwayFromZero.md +1 -1
  259. package/docs/Std.Math/SignD.md +1 -1
  260. package/docs/Std.Math/SignI.md +1 -1
  261. package/docs/Std.Math/SignL.md +1 -1
  262. package/docs/Std.Math/Sin.md +1 -1
  263. package/docs/Std.Math/Sinh.md +1 -1
  264. package/docs/Std.Math/SmallestFixedPoint.md +1 -1
  265. package/docs/Std.Math/Sqrt.md +1 -1
  266. package/docs/Std.Math/SquaredNorm.md +1 -1
  267. package/docs/Std.Math/Tan.md +1 -1
  268. package/docs/Std.Math/Tanh.md +1 -1
  269. package/docs/Std.Math/TimesC.md +1 -1
  270. package/docs/Std.Math/TimesCP.md +1 -1
  271. package/docs/Std.Math/TrailingZeroCountI.md +1 -1
  272. package/docs/Std.Math/TrailingZeroCountL.md +1 -1
  273. package/docs/Std.Math/Truncate.md +1 -1
  274. package/docs/Std.Math/index.md +1 -1
  275. package/docs/Std.Measurement/IsLossResult.md +1 -1
  276. package/docs/Std.Measurement/MResetEachZ.md +1 -1
  277. package/docs/Std.Measurement/MResetX.md +1 -1
  278. package/docs/Std.Measurement/MResetY.md +1 -1
  279. package/docs/Std.Measurement/MResetZ.md +1 -1
  280. package/docs/Std.Measurement/MResetZChecked.md +1 -1
  281. package/docs/Std.Measurement/MeasureAllZ.md +1 -1
  282. package/docs/Std.Measurement/MeasureEachZ.md +1 -1
  283. package/docs/Std.Measurement/MeasureInteger.md +1 -1
  284. package/docs/Std.Measurement/index.md +1 -1
  285. package/docs/Std.Random/DrawRandomBool.md +1 -1
  286. package/docs/Std.Random/DrawRandomDouble.md +1 -1
  287. package/docs/Std.Random/DrawRandomInt.md +1 -1
  288. package/docs/Std.Random/index.md +1 -1
  289. package/docs/Std.Range/IsRangeEmpty.md +1 -1
  290. package/docs/Std.Range/RangeEnd.md +1 -1
  291. package/docs/Std.Range/RangeReverse.md +1 -1
  292. package/docs/Std.Range/RangeStart.md +1 -1
  293. package/docs/Std.Range/RangeStep.md +1 -1
  294. package/docs/Std.Range/index.md +1 -1
  295. package/docs/Std.ResourceEstimation/AccountForEstimates.md +1 -1
  296. package/docs/Std.ResourceEstimation/AuxQubitCount.md +1 -1
  297. package/docs/Std.ResourceEstimation/BeginEstimateCaching.md +1 -1
  298. package/docs/Std.ResourceEstimation/BeginRepeatEstimates.md +1 -1
  299. package/docs/Std.ResourceEstimation/CczCount.md +1 -1
  300. package/docs/Std.ResourceEstimation/EnableMemoryComputeArchitecture.md +1 -1
  301. package/docs/Std.ResourceEstimation/EndEstimateCaching.md +1 -1
  302. package/docs/Std.ResourceEstimation/EndRepeatEstimates.md +1 -1
  303. package/docs/Std.ResourceEstimation/LeastFrequentlyUsed.md +1 -1
  304. package/docs/Std.ResourceEstimation/LeastRecentlyUsed.md +1 -1
  305. package/docs/Std.ResourceEstimation/MeasurementCount.md +1 -1
  306. package/docs/Std.ResourceEstimation/PSSPCLayout.md +1 -1
  307. package/docs/Std.ResourceEstimation/RepeatEstimates.md +1 -1
  308. package/docs/Std.ResourceEstimation/RotationCount.md +1 -1
  309. package/docs/Std.ResourceEstimation/RotationDepth.md +1 -1
  310. package/docs/Std.ResourceEstimation/SingleVariant.md +1 -1
  311. package/docs/Std.ResourceEstimation/TCount.md +1 -1
  312. package/docs/Std.ResourceEstimation/index.md +1 -1
  313. package/docs/Std.StatePreparation/ApproximatelyPreparePureStateCP.md +1 -1
  314. package/docs/Std.StatePreparation/PreparePureStateD.md +1 -1
  315. package/docs/Std.StatePreparation/PrepareUniformSuperposition.md +1 -1
  316. package/docs/Std.StatePreparation/index.md +1 -1
  317. package/docs/Std.TableLookup/Select.md +1 -1
  318. package/docs/Std.TableLookup/index.md +1 -1
  319. package/docs/index.md +1 -1
  320. package/lib/nodejs/qsc_wasm.cjs +6 -6
  321. package/lib/nodejs/qsc_wasm.d.cts +7 -1
  322. package/lib/nodejs/qsc_wasm_bg.wasm +0 -0
  323. package/lib/web/qsc_wasm.d.ts +7 -1
  324. package/lib/web/qsc_wasm.js +6 -6
  325. package/lib/web/qsc_wasm_bg.wasm +0 -0
  326. package/package.json +1 -1
  327. package/ux/circuit-vis/circuit.ts +1 -0
  328. package/ux/circuit-vis/formatters/gateFormatter.ts +66 -27
  329. package/ux/circuit-vis/formatters/inputFormatter.ts +28 -5
  330. package/ux/circuit-vis/gateRenderData.ts +2 -0
  331. package/ux/circuit-vis/index.ts +4 -7
  332. package/ux/circuit-vis/process.ts +17 -2
  333. package/ux/circuit-vis/sqore.ts +22 -15
  334. package/ux/circuit.tsx +40 -6
  335. package/ux/histogram.tsx +81 -18
  336. package/ux/qsharp-circuit.css +29 -1
  337. package/ux/qsharp-ux.css +8 -3
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.MeasurementCount
3
3
  title: MeasurementCount function
4
4
  description: "Q# MeasurementCount function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number Measurements is equal to the `amount`."
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.PSSPCLayout
3
3
  title: PSSPCLayout function
4
4
  description: "Q# PSSPCLayout function: Pass the value returned by the function to the `AccountForEstimates` operation to indicate Parallel Synthesis Sequential Pauli Computation (PSSPC) layout. See https://arxiv.org/pdf/2211.07629.pdf for details."
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.RepeatEstimates
3
3
  title: RepeatEstimates operation
4
4
  description: "Q# RepeatEstimates operation: Instructs the resource estimator to assume that the resources from the call of this operation until a call to `Adjoint RepeatEstimates` are accounted for `count` times, without the need to execute the code that many times."
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.RotationCount
3
3
  title: RotationCount function
4
4
  description: "Q# RotationCount function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number of rotations is equal to the `amount`."
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.RotationDepth
3
3
  title: RotationDepth function
4
4
  description: "Q# RotationDepth function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the rotation depth is equal to the `amount`."
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.SingleVariant
3
3
  title: SingleVariant function
4
4
  description: "Q# SingleVariant function: Used to specify that there's only one execution variant in `BeginEstimateCaching` function"
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.TCount
3
3
  title: TCount function
4
4
  description: "Q# TCount function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number of the T gates is equal to the `amount`."
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation-toc
3
3
  title: Std.ResourceEstimation namespace
4
4
  description: Table of contents for the Q# ResourceEstimation namespace
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  ms.topic: landing-page
7
7
  ---
8
8
 
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.StatePreparation.ApproximatelyPreparePureStateCP
3
3
  title: ApproximatelyPreparePureStateCP operation
4
4
  description: "Q# ApproximatelyPreparePureStateCP operation: Given a set of coefficients and a big-endian quantum register, prepares a state on that register described by the given coefficients, up to a given approximation tolerance."
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.StatePreparation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.StatePreparation.PreparePureStateD
3
3
  title: PreparePureStateD operation
4
4
  description: "Q# PreparePureStateD operation: Given a set of coefficients and a big-endian quantum register, prepares a state on that register described by the given coefficients."
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.StatePreparation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.StatePreparation.PrepareUniformSuperposition
3
3
  title: PrepareUniformSuperposition operation
4
4
  description: "Q# PrepareUniformSuperposition operation: Prepares a uniform superposition of states that represent integers 0 through `nStates - 1` in a little-endian `qubits` register."
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.StatePreparation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.StatePreparation-toc
3
3
  title: Std.StatePreparation namespace
4
4
  description: Table of contents for the Q# StatePreparation namespace
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  ms.topic: landing-page
7
7
  ---
8
8
 
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.TableLookup.Select
3
3
  title: Select operation
4
4
  description: "Q# Select operation: Performs table lookup using a SELECT network"
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.TableLookup
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.TableLookup-toc
3
3
  title: Std.TableLookup namespace
4
4
  description: Table of contents for the Q# TableLookup namespace
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  ms.topic: landing-page
7
7
  ---
8
8
 
package/docs/index.md CHANGED
@@ -2,7 +2,7 @@
2
2
  uid: Microsoft.Quantum.apiref-toc
3
3
  title: Q# standard libraries for the Azure Quantum Development Kit
4
4
  description: Table of contents for the Q# standard libraries for Azure Quantum Development Kit
5
- ms.date: 11/11/2025
5
+ ms.date: 11/25/2025
6
6
  ms.topic: landing-page
7
7
  ---
8
8
 
@@ -378,14 +378,14 @@ module.exports.get_estimates = function(program, expr, params) {
378
378
 
379
379
  /**
380
380
  * @param {IProgramConfig} program
381
- * @param {boolean} simulate
382
- * @param {IOperationInfo | null} [operation]
381
+ * @param {IOperationInfo | null | undefined} operation
382
+ * @param {ICircuitConfig} config
383
383
  * @returns {any}
384
384
  */
385
- module.exports.get_circuit = function(program, simulate, operation) {
385
+ module.exports.get_circuit = function(program, operation, config) {
386
386
  try {
387
387
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
388
- wasm.get_circuit(retptr, addHeapObject(program), simulate, isLikeNone(operation) ? 0 : addHeapObject(operation));
388
+ wasm.get_circuit(retptr, addHeapObject(program), isLikeNone(operation) ? 0 : addHeapObject(operation), addHeapObject(config));
389
389
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
390
390
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
391
391
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
@@ -1570,8 +1570,8 @@ module.exports.__wbindgen_cb_drop = function(arg0) {
1570
1570
  return ret;
1571
1571
  };
1572
1572
 
1573
- module.exports.__wbindgen_closure_wrapper1006 = function(arg0, arg1, arg2) {
1574
- const ret = makeMutClosure(arg0, arg1, 384, __wbg_adapter_52);
1573
+ module.exports.__wbindgen_closure_wrapper986 = function(arg0, arg1, arg2) {
1574
+ const ret = makeMutClosure(arg0, arg1, 333, __wbg_adapter_52);
1575
1575
  return addHeapObject(ret);
1576
1576
  };
1577
1577
 
@@ -5,7 +5,7 @@ export function setLogLevel(level: number): void;
5
5
  export function git_hash(): string;
6
6
  export function get_qir(program: IProgramConfig): string;
7
7
  export function get_estimates(program: IProgramConfig, expr: string, params: string): string;
8
- export function get_circuit(program: IProgramConfig, simulate: boolean, operation?: IOperationInfo | null): any;
8
+ export function get_circuit(program: IProgramConfig, operation: IOperationInfo | null | undefined, config: ICircuitConfig): any;
9
9
  export function get_library_source_content(name: string): string | undefined;
10
10
  export function get_ast(code: string, language_features: string[]): string;
11
11
  export function get_hir(code: string, language_features: string[]): string;
@@ -266,6 +266,12 @@ export interface ITestDescriptor {
266
266
  friendlyName: string;
267
267
  }
268
268
 
269
+ export interface ICircuitConfig {
270
+ maxOperations: number;
271
+ generationMethod: "simulate" | "classicalEval" ;
272
+ sourceLocations: boolean;
273
+ }
274
+
269
275
  export interface IDocFile {
270
276
  filename: string;
271
277
  metadata: string;
Binary file
@@ -5,7 +5,7 @@ export function setLogLevel(level: number): void;
5
5
  export function git_hash(): string;
6
6
  export function get_qir(program: IProgramConfig): string;
7
7
  export function get_estimates(program: IProgramConfig, expr: string, params: string): string;
8
- export function get_circuit(program: IProgramConfig, simulate: boolean, operation?: IOperationInfo | null): any;
8
+ export function get_circuit(program: IProgramConfig, operation: IOperationInfo | null | undefined, config: ICircuitConfig): any;
9
9
  export function get_library_source_content(name: string): string | undefined;
10
10
  export function get_ast(code: string, language_features: string[]): string;
11
11
  export function get_hir(code: string, language_features: string[]): string;
@@ -266,6 +266,12 @@ export interface ITestDescriptor {
266
266
  friendlyName: string;
267
267
  }
268
268
 
269
+ export interface ICircuitConfig {
270
+ maxOperations: number;
271
+ generationMethod: "simulate" | "classicalEval" ;
272
+ sourceLocations: boolean;
273
+ }
274
+
269
275
  export interface IDocFile {
270
276
  filename: string;
271
277
  metadata: string;
@@ -374,14 +374,14 @@ export function get_estimates(program, expr, params) {
374
374
 
375
375
  /**
376
376
  * @param {IProgramConfig} program
377
- * @param {boolean} simulate
378
- * @param {IOperationInfo | null} [operation]
377
+ * @param {IOperationInfo | null | undefined} operation
378
+ * @param {ICircuitConfig} config
379
379
  * @returns {any}
380
380
  */
381
- export function get_circuit(program, simulate, operation) {
381
+ export function get_circuit(program, operation, config) {
382
382
  try {
383
383
  const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
384
- wasm.get_circuit(retptr, addHeapObject(program), simulate, isLikeNone(operation) ? 0 : addHeapObject(operation));
384
+ wasm.get_circuit(retptr, addHeapObject(program), isLikeNone(operation) ? 0 : addHeapObject(operation), addHeapObject(config));
385
385
  var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);
386
386
  var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);
387
387
  var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);
@@ -1525,8 +1525,8 @@ function __wbg_get_imports() {
1525
1525
  const ret = false;
1526
1526
  return ret;
1527
1527
  };
1528
- imports.wbg.__wbindgen_closure_wrapper1006 = function(arg0, arg1, arg2) {
1529
- const ret = makeMutClosure(arg0, arg1, 384, __wbg_adapter_52);
1528
+ imports.wbg.__wbindgen_closure_wrapper986 = function(arg0, arg1, arg2) {
1529
+ const ret = makeMutClosure(arg0, arg1, 333, __wbg_adapter_52);
1530
1530
  return addHeapObject(ret);
1531
1531
  };
1532
1532
  imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "qsharp-lang",
3
3
  "description": "qsharp language package for quantum development",
4
- "version": "1.22.2-dev",
4
+ "version": "1.22.4-dev",
5
5
  "license": "MIT",
6
6
  "engines": {
7
7
  "node": ">=16.17.0"
@@ -15,6 +15,7 @@ export {
15
15
  type Unitary,
16
16
  type Parameter,
17
17
  type Qubit,
18
+ type SourceLocation,
18
19
  } from "../../src/data-structures/circuit.js";
19
20
 
20
21
  export { CURRENT_VERSION } from "../../src/data-structures/circuit.js";
@@ -119,7 +119,27 @@ const _createGate = (
119
119
 
120
120
  const zoomBtn: SVGElement | null = _zoomButton(renderData, nestedDepth);
121
121
  if (zoomBtn != null) svgElems = svgElems.concat([zoomBtn]);
122
- return group(svgElems, attributes);
122
+
123
+ const gateElem = group(svgElems, attributes);
124
+
125
+ // If there's a source location, wrap the gate in an SVG <a> element to make it clickable
126
+ if (renderData.link) {
127
+ const linkElem = createSvgElement("a", {
128
+ href: renderData.link.href,
129
+ class: "qs-circuit-source-link",
130
+ });
131
+
132
+ // Add title as a child <title> element for accessibility and hover tooltip
133
+ const titleElem = createSvgElement("title");
134
+ titleElem.textContent = renderData.link.title;
135
+ linkElem.appendChild(titleElem);
136
+
137
+ // Add the gate as a child of the link
138
+ linkElem.appendChild(gateElem);
139
+ return linkElem;
140
+ }
141
+
142
+ return gateElem;
123
143
  };
124
144
 
125
145
  /**
@@ -137,14 +157,17 @@ const _zoomButton = (
137
157
  ): SVGElement | null => {
138
158
  if (renderData == undefined) return null;
139
159
 
140
- const [x1, y1] = _gatePosition(renderData, nestedDepth);
160
+ const [gateBoundingBoxX, gateBoundingBoxY] = _gateBoundingBox(
161
+ renderData,
162
+ nestedDepth,
163
+ );
141
164
  let { dataAttributes } = renderData;
142
165
  dataAttributes = dataAttributes || {};
143
166
 
144
167
  const expanded = "expanded" in dataAttributes;
145
168
 
146
- const x = x1 + 2;
147
- const y = y1 + 2;
169
+ const x = gateBoundingBoxX + 2;
170
+ const y = gateBoundingBoxY + 2;
148
171
  const circleBorder: SVGElement = circle(x, y, 10);
149
172
 
150
173
  if (expanded) {
@@ -167,45 +190,51 @@ const _zoomButton = (
167
190
  };
168
191
 
169
192
  /**
170
- * Calculate position of gate.
193
+ * Calculate the bounding box for a given operation, which
194
+ * may itself be a group of operations.
171
195
  *
172
196
  * @param renderData Operation render data.
173
197
  * @param nestedDepth Depth of nested operations.
174
198
  *
175
- * @returns Coordinates of gate: [x1, y1, x2, y2].
199
+ * @returns [x, y, width, height]
176
200
  */
177
- const _gatePosition = (
201
+ const _gateBoundingBox = (
178
202
  renderData: GateRenderData,
179
203
  nestedDepth: number,
180
204
  ): [number, number, number, number] => {
181
- const { x, width, type, targetsY } = renderData;
205
+ const {
206
+ x: xFromRenderData,
207
+ width: widthFromRenderData,
208
+ type,
209
+ targetsY,
210
+ } = renderData;
182
211
 
183
212
  const ys = targetsY?.flatMap((y) => y as number[]) || [];
184
213
  const maxY = Math.max(...ys);
185
214
  const minY = Math.min(...ys);
186
215
 
187
- let x1: number, y1: number, x2: number, y2: number;
216
+ let x: number, y: number, width: number, height: number;
188
217
 
189
218
  switch (type) {
190
219
  case GateType.Group: {
191
220
  const padding = groupBoxPadding - nestedDepth * nestedGroupPadding;
192
221
 
193
- x1 = x - 2 * padding;
194
- y1 = minY - gateHeight / 2 - padding;
195
- x2 = width + 2 * padding;
196
- y2 = maxY + +gateHeight / 2 + padding - (minY - gateHeight / 2 - padding);
222
+ x = xFromRenderData - 2 * padding;
223
+ y = minY - gateHeight / 2 - padding;
224
+ width = widthFromRenderData + 2 * padding;
225
+ height = maxY - minY + gateHeight + 2 * padding;
197
226
 
198
- return [x1, y1, x2, y2];
227
+ return [x, y, width, height];
199
228
  }
200
229
 
201
230
  default:
202
- x1 = x - width / 2;
203
- y1 = minY - gateHeight / 2;
204
- x2 = x + width;
205
- y2 = maxY + gateHeight / 2;
231
+ x = xFromRenderData - widthFromRenderData / 2;
232
+ y = minY - gateHeight / 2;
233
+ width = widthFromRenderData;
234
+ height = maxY - minY + gateHeight;
206
235
  }
207
236
 
208
- return [x1, y1, x2, y2];
237
+ return [x, y, width, height];
209
238
  };
210
239
 
211
240
  /**
@@ -236,6 +265,7 @@ const _measure = (x: number, y: number, wireYs: number[]): SVGElement => {
236
265
  y + 8,
237
266
  x + width - 8,
238
267
  y - height / 2 + 8,
268
+ "qs-line-measure",
239
269
  );
240
270
  meter.style.pointerEvents = "none";
241
271
  mBox.setAttribute("data-wire-ys", JSON.stringify(wireYs));
@@ -376,6 +406,7 @@ const _unitaryBox = (
376
406
  argButton.setAttribute("class", "arg-button");
377
407
  elems.push(argButton);
378
408
  }
409
+
379
410
  return group(elems);
380
411
  };
381
412
 
@@ -388,15 +419,23 @@ const _unitaryBox = (
388
419
  * @returns SVG representation of SWAP gate.
389
420
  */
390
421
  const _swap = (renderData: GateRenderData, nestedDepth: number): SVGElement => {
391
- const { x, targetsY } = renderData;
422
+ const { x: centerX, targetsY } = renderData;
392
423
 
393
424
  // Get SVGs of crosses
394
- const [x1, y1, x2, y2] = _gatePosition(renderData, nestedDepth);
425
+ const [boundingBoxX, boundingBoxY, width, height] = _gateBoundingBox(
426
+ renderData,
427
+ nestedDepth,
428
+ );
395
429
  const ys = targetsY?.flatMap((y) => y as number[]) || [];
396
-
397
- const bg: SVGElement = box(x1, y1, x2, y2, "gate-swap");
398
- const crosses: SVGElement[] = ys.map((y) => _cross(x, y));
399
- const vertLine: SVGElement = line(x, ys[0], x, ys[1]);
430
+ const bg: SVGElement = box(
431
+ boundingBoxX,
432
+ boundingBoxY,
433
+ width,
434
+ height,
435
+ "gate-swap",
436
+ );
437
+ const crosses: SVGElement[] = ys.map((y) => _cross(centerX, y));
438
+ const vertLine: SVGElement = line(centerX, ys[0], centerX, ys[1]);
400
439
  vertLine.style.pointerEvents = "none";
401
440
  return group([bg, ...crosses, vertLine]);
402
441
  };
@@ -549,10 +588,10 @@ const _groupedOperations = (
549
588
  nestedDepth: number,
550
589
  ): SVGElement => {
551
590
  const { children } = renderData;
552
- const [x1, y1, x2, y2] = _gatePosition(renderData, nestedDepth);
591
+ const [x, y, w, h] = _gateBoundingBox(renderData, nestedDepth);
553
592
 
554
593
  // Draw dashed box around children gates
555
- const box: SVGElement = dashedBox(x1, y1, x2, y2, "gate-unitary");
594
+ const box: SVGElement = dashedBox(x, y, w, h, "gate-unitary");
556
595
  const elems: SVGElement[] = [box];
557
596
  if (children != null)
558
597
  elems.push(formatGates(children as GateRenderData[][], nestedDepth + 1));
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { Qubit } from "../circuit.js";
4
+ import { Qubit, SourceLocation } from "../circuit.js";
5
5
  import { RegisterType, RegisterMap, RegisterRenderData } from "../register.js";
6
6
  import {
7
7
  leftPadding,
@@ -9,7 +9,7 @@ import {
9
9
  registerHeight,
10
10
  classicalRegHeight,
11
11
  } from "../constants.js";
12
- import { group, text } from "./formatUtils.js";
12
+ import { createSvgElement, group, text } from "./formatUtils.js";
13
13
  import { mathChars } from "../utils.js";
14
14
 
15
15
  /**
@@ -23,14 +23,20 @@ import { mathChars } from "../utils.js";
23
23
  */
24
24
  const formatInputs = (
25
25
  qubits: Qubit[],
26
+ renderLocations?: (s: SourceLocation[]) => { title: string; href: string },
26
27
  ): { qubitWires: SVGElement; registers: RegisterMap; svgHeight: number } => {
27
28
  const qubitWires: SVGElement[] = [];
28
29
  const registers: RegisterMap = {};
29
30
 
30
31
  let currY: number = startY;
31
- qubits.forEach(({ id, numResults }, wireIndex) => {
32
+ qubits.forEach(({ id, numResults, declarations }, wireIndex) => {
33
+ const link: { link?: { href: string; title: string } } = {};
34
+ if (renderLocations && declarations && declarations.length > 0) {
35
+ link.link = renderLocations(declarations);
36
+ }
37
+
32
38
  // Add qubit wire to list of qubit wires
33
- qubitWires.push(qubitInput(currY, wireIndex, id.toString()));
39
+ qubitWires.push(qubitInput(currY, wireIndex, id.toString(), link.link));
34
40
 
35
41
  // Create qubit register
36
42
  registers[id] = { type: RegisterType.Qubit, y: currY };
@@ -73,6 +79,7 @@ const qubitInput = (
73
79
  y: number,
74
80
  wireIndex: number,
75
81
  subscript?: string,
82
+ link?: { href: string; title: string },
76
83
  ): SVGElement => {
77
84
  const el: SVGElement = text("", leftPadding, y, 16);
78
85
 
@@ -85,7 +92,23 @@ const qubitInput = (
85
92
  el.setAttribute("text-anchor", "start");
86
93
  el.setAttribute("dominant-baseline", "middle");
87
94
  el.setAttribute("data-wire", wireIndex.toString());
88
- el.classList.add("qs-maintext");
95
+ el.classList.add("qs-maintext", "qs-qubit-label");
96
+
97
+ if (link) {
98
+ const linkElem = createSvgElement("a", {
99
+ href: link.href,
100
+ class: "qs-circuit-source-link",
101
+ });
102
+
103
+ // Add title as a child <title> element for accessibility and hover tooltip
104
+ const titleElem = createSvgElement("title");
105
+ titleElem.textContent = link.title;
106
+ linkElem.appendChild(titleElem);
107
+
108
+ // Add the gate as a child of the link
109
+ linkElem.appendChild(el);
110
+ return linkElem;
111
+ }
89
112
  return el;
90
113
  };
91
114
 
@@ -55,4 +55,6 @@ export interface GateRenderData {
55
55
  children?: GateRenderData[][] | GateRenderData[][][];
56
56
  /** Custom data attributes to attach to gate element. */
57
57
  dataAttributes?: DataAttributes;
58
+ /** Link href and title for clickable gate. */
59
+ link?: { href: string; title: string };
58
60
  }
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { Sqore } from "./sqore.js";
4
+ import { DrawOptions, Sqore } from "./sqore.js";
5
5
  import { CircuitGroup } from "./circuit.js";
6
6
 
7
7
  /**
@@ -17,13 +17,10 @@ import { CircuitGroup } from "./circuit.js";
17
17
  export const draw = (
18
18
  circuitGroup: CircuitGroup,
19
19
  container: HTMLElement,
20
- renderDepth = 0,
21
- isEditable = false,
22
- editCallback?: (circuitGroup: CircuitGroup) => void,
23
- runCallback?: () => void,
20
+ options: DrawOptions = {},
24
21
  ): void => {
25
- const sqore = new Sqore(circuitGroup, isEditable, editCallback, runCallback);
26
- sqore.draw(container, renderDepth);
22
+ const sqore = new Sqore(circuitGroup, options);
23
+ sqore.draw(container);
27
24
  };
28
25
 
29
26
  // Export types
@@ -8,7 +8,12 @@ import {
8
8
  controlBtnOffset,
9
9
  groupBoxPadding,
10
10
  } from "./constants.js";
11
- import { ComponentGrid, Operation, ConditionalRender } from "./circuit.js";
11
+ import {
12
+ ComponentGrid,
13
+ Operation,
14
+ ConditionalRender,
15
+ SourceLocation,
16
+ } from "./circuit.js";
12
17
  import { GateRenderData, GateType } from "./gateRenderData.js";
13
18
  import { Register, RegisterMap } from "./register.js";
14
19
  import { getGateWidth } from "./utils.js";
@@ -26,6 +31,7 @@ import { getGateWidth } from "./utils.js";
26
31
  const processOperations = (
27
32
  componentGrid: ComponentGrid,
28
33
  registers: RegisterMap,
34
+ renderLocations?: (s: SourceLocation[]) => { title: string; href: string },
29
35
  ): { renderDataArray: GateRenderData[][]; svgWidth: number } => {
30
36
  if (componentGrid.length === 0)
31
37
  return { renderDataArray: [], svgWidth: startX + gatePadding * 2 };
@@ -40,7 +46,11 @@ const processOperations = (
40
46
  const renderDataArray: GateRenderData[][] = componentGrid.map(
41
47
  (col, colIndex) =>
42
48
  col.components.map((op) => {
43
- const renderData: GateRenderData = _opToRenderData(op, registers);
49
+ const renderData: GateRenderData = _opToRenderData(
50
+ op,
51
+ registers,
52
+ renderLocations,
53
+ );
44
54
 
45
55
  if (
46
56
  op != null &&
@@ -141,6 +151,7 @@ const _getClassicalRegStart = (
141
151
  const _opToRenderData = (
142
152
  op: Operation | null,
143
153
  registers: RegisterMap,
154
+ renderLocations?: (s: SourceLocation[]) => { title: string; href: string },
144
155
  ): GateRenderData => {
145
156
  const renderData: GateRenderData = {
146
157
  type: GateType.Invalid,
@@ -274,6 +285,10 @@ const _opToRenderData = (
274
285
  // Set gate width
275
286
  renderData.width = getGateWidth(renderData);
276
287
 
288
+ if (op.source && renderLocations) {
289
+ renderData.link = renderLocations([op.source]);
290
+ }
291
+
277
292
  // Extend existing data attributes with user-provided data attributes
278
293
  if (dataAttributes != null)
279
294
  renderData.dataAttributes = {