qsharp-lang 1.25.4-dev → 1.25.5-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/docs/Microsoft.Quantum.Core/IsRangeEmpty.md +1 -1
  2. package/docs/Microsoft.Quantum.Core/Length.md +1 -1
  3. package/docs/Microsoft.Quantum.Core/RangeEnd.md +1 -1
  4. package/docs/Microsoft.Quantum.Core/RangeStart.md +1 -1
  5. package/docs/Microsoft.Quantum.Core/Repeated.md +1 -1
  6. package/docs/Microsoft.Quantum.Core/index.md +1 -1
  7. package/docs/Std.Arithmetic/AddLE.md +1 -1
  8. package/docs/Std.Arithmetic/ApplyIfEqualL.md +1 -1
  9. package/docs/Std.Arithmetic/ApplyIfEqualLE.md +1 -1
  10. package/docs/Std.Arithmetic/ApplyIfGreaterL.md +1 -1
  11. package/docs/Std.Arithmetic/ApplyIfGreaterLE.md +1 -1
  12. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualL.md +1 -1
  13. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualLE.md +1 -1
  14. package/docs/Std.Arithmetic/ApplyIfLessL.md +1 -1
  15. package/docs/Std.Arithmetic/ApplyIfLessLE.md +1 -1
  16. package/docs/Std.Arithmetic/ApplyIfLessOrEqualL.md +1 -1
  17. package/docs/Std.Arithmetic/ApplyIfLessOrEqualLE.md +1 -1
  18. package/docs/Std.Arithmetic/FourierTDIncByLE.md +1 -1
  19. package/docs/Std.Arithmetic/IncByI.md +1 -1
  20. package/docs/Std.Arithmetic/IncByIUsingIncByLE.md +1 -1
  21. package/docs/Std.Arithmetic/IncByL.md +1 -1
  22. package/docs/Std.Arithmetic/IncByLE.md +1 -1
  23. package/docs/Std.Arithmetic/IncByLEUsingAddLE.md +1 -1
  24. package/docs/Std.Arithmetic/IncByLUsingIncByLE.md +1 -1
  25. package/docs/Std.Arithmetic/LookAheadDKRSAddLE.md +1 -1
  26. package/docs/Std.Arithmetic/MAJ.md +1 -1
  27. package/docs/Std.Arithmetic/ReflectAboutInteger.md +1 -1
  28. package/docs/Std.Arithmetic/RippleCarryCGAddLE.md +1 -1
  29. package/docs/Std.Arithmetic/RippleCarryCGIncByLE.md +1 -1
  30. package/docs/Std.Arithmetic/RippleCarryTTKIncByLE.md +1 -1
  31. package/docs/Std.Arithmetic/index.md +1 -1
  32. package/docs/Std.Arrays/All.md +1 -1
  33. package/docs/Std.Arrays/Any.md +1 -1
  34. package/docs/Std.Arrays/Chunks.md +1 -1
  35. package/docs/Std.Arrays/CircularlyShifted.md +1 -1
  36. package/docs/Std.Arrays/ColumnAt.md +1 -1
  37. package/docs/Std.Arrays/Count.md +1 -1
  38. package/docs/Std.Arrays/Diagonal.md +1 -1
  39. package/docs/Std.Arrays/DrawMany.md +1 -1
  40. package/docs/Std.Arrays/Enumerated.md +1 -1
  41. package/docs/Std.Arrays/Excluding.md +1 -1
  42. package/docs/Std.Arrays/Filtered.md +1 -1
  43. package/docs/Std.Arrays/FlatMapped.md +1 -1
  44. package/docs/Std.Arrays/Flattened.md +1 -1
  45. package/docs/Std.Arrays/Fold.md +1 -1
  46. package/docs/Std.Arrays/ForEach.md +1 -1
  47. package/docs/Std.Arrays/Head.md +1 -1
  48. package/docs/Std.Arrays/HeadAndRest.md +1 -1
  49. package/docs/Std.Arrays/IndexOf.md +1 -1
  50. package/docs/Std.Arrays/IndexRange.md +1 -1
  51. package/docs/Std.Arrays/Interleaved.md +1 -1
  52. package/docs/Std.Arrays/IsEmpty.md +1 -1
  53. package/docs/Std.Arrays/IsRectangularArray.md +1 -1
  54. package/docs/Std.Arrays/IsSorted.md +1 -1
  55. package/docs/Std.Arrays/IsSquareArray.md +1 -1
  56. package/docs/Std.Arrays/Mapped.md +1 -1
  57. package/docs/Std.Arrays/MappedByIndex.md +1 -1
  58. package/docs/Std.Arrays/MappedOverRange.md +1 -1
  59. package/docs/Std.Arrays/Most.md +1 -1
  60. package/docs/Std.Arrays/MostAndTail.md +1 -1
  61. package/docs/Std.Arrays/Padded.md +1 -1
  62. package/docs/Std.Arrays/Partitioned.md +1 -1
  63. package/docs/Std.Arrays/Rest.md +1 -1
  64. package/docs/Std.Arrays/Reversed.md +1 -1
  65. package/docs/Std.Arrays/SequenceI.md +1 -1
  66. package/docs/Std.Arrays/SequenceL.md +1 -1
  67. package/docs/Std.Arrays/Sorted.md +1 -1
  68. package/docs/Std.Arrays/Subarray.md +1 -1
  69. package/docs/Std.Arrays/Swapped.md +1 -1
  70. package/docs/Std.Arrays/Tail.md +1 -1
  71. package/docs/Std.Arrays/Transposed.md +1 -1
  72. package/docs/Std.Arrays/Unzipped.md +1 -1
  73. package/docs/Std.Arrays/Where.md +1 -1
  74. package/docs/Std.Arrays/Windows.md +1 -1
  75. package/docs/Std.Arrays/Zipped.md +1 -1
  76. package/docs/Std.Arrays/index.md +1 -1
  77. package/docs/Std.Canon/ApplyCNOTChain.md +1 -1
  78. package/docs/Std.Canon/ApplyControlledOnBitString.md +1 -1
  79. package/docs/Std.Canon/ApplyControlledOnInt.md +1 -1
  80. package/docs/Std.Canon/ApplyOperationPowerA.md +1 -1
  81. package/docs/Std.Canon/ApplyOperationPowerCA.md +1 -1
  82. package/docs/Std.Canon/ApplyP.md +1 -1
  83. package/docs/Std.Canon/ApplyPauli.md +1 -1
  84. package/docs/Std.Canon/ApplyPauliFromBitString.md +1 -1
  85. package/docs/Std.Canon/ApplyPauliFromInt.md +1 -1
  86. package/docs/Std.Canon/ApplyQFT.md +1 -1
  87. package/docs/Std.Canon/ApplyQPE.md +1 -1
  88. package/docs/Std.Canon/ApplyToEach.md +1 -1
  89. package/docs/Std.Canon/ApplyToEachA.md +1 -1
  90. package/docs/Std.Canon/ApplyToEachC.md +1 -1
  91. package/docs/Std.Canon/ApplyToEachCA.md +1 -1
  92. package/docs/Std.Canon/ApplyXorInPlace.md +1 -1
  93. package/docs/Std.Canon/ApplyXorInPlaceL.md +1 -1
  94. package/docs/Std.Canon/CX.md +1 -1
  95. package/docs/Std.Canon/CY.md +1 -1
  96. package/docs/Std.Canon/CZ.md +1 -1
  97. package/docs/Std.Canon/Fst.md +1 -1
  98. package/docs/Std.Canon/MapPauliAxis.md +1 -1
  99. package/docs/Std.Canon/Relabel.md +1 -1
  100. package/docs/Std.Canon/Snd.md +1 -1
  101. package/docs/Std.Canon/SwapReverseRegister.md +1 -1
  102. package/docs/Std.Canon/index.md +1 -1
  103. package/docs/Std.Convert/BigIntAsBoolArray.md +1 -1
  104. package/docs/Std.Convert/BigIntAsInt.md +1 -1
  105. package/docs/Std.Convert/BoolArrayAsBigInt.md +1 -1
  106. package/docs/Std.Convert/BoolArrayAsInt.md +1 -1
  107. package/docs/Std.Convert/BoolArrayAsResultArray.md +1 -1
  108. package/docs/Std.Convert/BoolAsResult.md +1 -1
  109. package/docs/Std.Convert/ComplexAsComplexPolar.md +1 -1
  110. package/docs/Std.Convert/ComplexPolarAsComplex.md +1 -1
  111. package/docs/Std.Convert/DoubleAsStringWithPrecision.md +1 -1
  112. package/docs/Std.Convert/IntAsBigInt.md +1 -1
  113. package/docs/Std.Convert/IntAsBoolArray.md +1 -1
  114. package/docs/Std.Convert/IntAsDouble.md +1 -1
  115. package/docs/Std.Convert/ResultArrayAsBoolArray.md +1 -1
  116. package/docs/Std.Convert/ResultArrayAsInt.md +1 -1
  117. package/docs/Std.Convert/ResultAsBool.md +1 -1
  118. package/docs/Std.Convert/index.md +1 -1
  119. package/docs/Std.Core/Complex.md +1 -1
  120. package/docs/Std.Core/Length.md +1 -1
  121. package/docs/Std.Core/Repeated.md +1 -1
  122. package/docs/Std.Core/index.md +1 -1
  123. package/docs/Std.Diagnostics/ApplyIdleNoise.md +1 -1
  124. package/docs/Std.Diagnostics/BitFlipNoise.md +1 -1
  125. package/docs/Std.Diagnostics/CheckAllZero.md +1 -1
  126. package/docs/Std.Diagnostics/CheckOperationsAreEqual.md +1 -1
  127. package/docs/Std.Diagnostics/CheckZero.md +1 -1
  128. package/docs/Std.Diagnostics/ConfigurePauliNoise.md +1 -1
  129. package/docs/Std.Diagnostics/ConfigureQubitLoss.md +1 -1
  130. package/docs/Std.Diagnostics/DepolarizingNoise.md +1 -1
  131. package/docs/Std.Diagnostics/DumpMachine.md +1 -1
  132. package/docs/Std.Diagnostics/DumpOperation.md +1 -1
  133. package/docs/Std.Diagnostics/DumpRegister.md +1 -1
  134. package/docs/Std.Diagnostics/Fact.md +1 -1
  135. package/docs/Std.Diagnostics/NoNoise.md +1 -1
  136. package/docs/Std.Diagnostics/PhaseFlipNoise.md +1 -1
  137. package/docs/Std.Diagnostics/StartCountingFunction.md +1 -1
  138. package/docs/Std.Diagnostics/StartCountingOperation.md +1 -1
  139. package/docs/Std.Diagnostics/StartCountingQubits.md +1 -1
  140. package/docs/Std.Diagnostics/StopCountingFunction.md +1 -1
  141. package/docs/Std.Diagnostics/StopCountingOperation.md +1 -1
  142. package/docs/Std.Diagnostics/StopCountingQubits.md +1 -1
  143. package/docs/Std.Diagnostics/index.md +1 -1
  144. package/docs/Std.Intrinsic/AND.md +1 -1
  145. package/docs/Std.Intrinsic/ApplyUnitary.md +1 -1
  146. package/docs/Std.Intrinsic/CCNOT.md +1 -1
  147. package/docs/Std.Intrinsic/CNOT.md +1 -1
  148. package/docs/Std.Intrinsic/Exp.md +1 -1
  149. package/docs/Std.Intrinsic/H.md +1 -1
  150. package/docs/Std.Intrinsic/I.md +1 -1
  151. package/docs/Std.Intrinsic/M.md +1 -1
  152. package/docs/Std.Intrinsic/Measure.md +1 -1
  153. package/docs/Std.Intrinsic/Message.md +1 -1
  154. package/docs/Std.Intrinsic/R.md +1 -1
  155. package/docs/Std.Intrinsic/R1.md +1 -1
  156. package/docs/Std.Intrinsic/R1Frac.md +1 -1
  157. package/docs/Std.Intrinsic/RFrac.md +1 -1
  158. package/docs/Std.Intrinsic/Reset.md +1 -1
  159. package/docs/Std.Intrinsic/ResetAll.md +1 -1
  160. package/docs/Std.Intrinsic/Rx.md +1 -1
  161. package/docs/Std.Intrinsic/Rxx.md +1 -1
  162. package/docs/Std.Intrinsic/Ry.md +1 -1
  163. package/docs/Std.Intrinsic/Ryy.md +1 -1
  164. package/docs/Std.Intrinsic/Rz.md +1 -1
  165. package/docs/Std.Intrinsic/Rzz.md +1 -1
  166. package/docs/Std.Intrinsic/S.md +1 -1
  167. package/docs/Std.Intrinsic/SWAP.md +1 -1
  168. package/docs/Std.Intrinsic/SX.md +1 -1
  169. package/docs/Std.Intrinsic/T.md +1 -1
  170. package/docs/Std.Intrinsic/X.md +1 -1
  171. package/docs/Std.Intrinsic/Y.md +1 -1
  172. package/docs/Std.Intrinsic/Z.md +1 -1
  173. package/docs/Std.Intrinsic/index.md +1 -1
  174. package/docs/Std.Logical/Xor.md +1 -1
  175. package/docs/Std.Logical/index.md +1 -1
  176. package/docs/Std.Math/AbsComplex.md +1 -1
  177. package/docs/Std.Math/AbsComplexPolar.md +1 -1
  178. package/docs/Std.Math/AbsD.md +1 -1
  179. package/docs/Std.Math/AbsI.md +1 -1
  180. package/docs/Std.Math/AbsL.md +1 -1
  181. package/docs/Std.Math/AbsSquaredComplex.md +1 -1
  182. package/docs/Std.Math/AbsSquaredComplexPolar.md +1 -1
  183. package/docs/Std.Math/ApproximateFactorial.md +1 -1
  184. package/docs/Std.Math/ArcCos.md +1 -1
  185. package/docs/Std.Math/ArcCosh.md +1 -1
  186. package/docs/Std.Math/ArcSin.md +1 -1
  187. package/docs/Std.Math/ArcSinh.md +1 -1
  188. package/docs/Std.Math/ArcTan.md +1 -1
  189. package/docs/Std.Math/ArcTan2.md +1 -1
  190. package/docs/Std.Math/ArcTanh.md +1 -1
  191. package/docs/Std.Math/ArgComplex.md +1 -1
  192. package/docs/Std.Math/ArgComplexPolar.md +1 -1
  193. package/docs/Std.Math/Binom.md +1 -1
  194. package/docs/Std.Math/BitSizeI.md +1 -1
  195. package/docs/Std.Math/BitSizeL.md +1 -1
  196. package/docs/Std.Math/Ceiling.md +1 -1
  197. package/docs/Std.Math/Complex.md +1 -1
  198. package/docs/Std.Math/ComplexPolar.md +1 -1
  199. package/docs/Std.Math/ContinuedFractionConvergentI.md +1 -1
  200. package/docs/Std.Math/ContinuedFractionConvergentL.md +1 -1
  201. package/docs/Std.Math/Cos.md +1 -1
  202. package/docs/Std.Math/Cosh.md +1 -1
  203. package/docs/Std.Math/DivRemI.md +1 -1
  204. package/docs/Std.Math/DivRemL.md +1 -1
  205. package/docs/Std.Math/DividedByC.md +1 -1
  206. package/docs/Std.Math/DividedByCP.md +1 -1
  207. package/docs/Std.Math/E.md +1 -1
  208. package/docs/Std.Math/ExpModI.md +1 -1
  209. package/docs/Std.Math/ExpModL.md +1 -1
  210. package/docs/Std.Math/ExtendedGreatestCommonDivisorI.md +1 -1
  211. package/docs/Std.Math/ExtendedGreatestCommonDivisorL.md +1 -1
  212. package/docs/Std.Math/FactorialI.md +1 -1
  213. package/docs/Std.Math/FactorialL.md +1 -1
  214. package/docs/Std.Math/Floor.md +1 -1
  215. package/docs/Std.Math/GreatestCommonDivisorI.md +1 -1
  216. package/docs/Std.Math/GreatestCommonDivisorL.md +1 -1
  217. package/docs/Std.Math/HammingWeightI.md +1 -1
  218. package/docs/Std.Math/InverseModI.md +1 -1
  219. package/docs/Std.Math/InverseModL.md +1 -1
  220. package/docs/Std.Math/IsCoprimeI.md +1 -1
  221. package/docs/Std.Math/IsCoprimeL.md +1 -1
  222. package/docs/Std.Math/IsInfinite.md +1 -1
  223. package/docs/Std.Math/IsNaN.md +1 -1
  224. package/docs/Std.Math/LargestFixedPoint.md +1 -1
  225. package/docs/Std.Math/Lg.md +1 -1
  226. package/docs/Std.Math/Log.md +1 -1
  227. package/docs/Std.Math/Log10.md +1 -1
  228. package/docs/Std.Math/LogFactorialD.md +1 -1
  229. package/docs/Std.Math/LogGammaD.md +1 -1
  230. package/docs/Std.Math/LogOf2.md +1 -1
  231. package/docs/Std.Math/Max.md +1 -1
  232. package/docs/Std.Math/MaxD.md +1 -1
  233. package/docs/Std.Math/MaxI.md +1 -1
  234. package/docs/Std.Math/MaxL.md +1 -1
  235. package/docs/Std.Math/Min.md +1 -1
  236. package/docs/Std.Math/MinD.md +1 -1
  237. package/docs/Std.Math/MinI.md +1 -1
  238. package/docs/Std.Math/MinL.md +1 -1
  239. package/docs/Std.Math/MinusC.md +1 -1
  240. package/docs/Std.Math/MinusCP.md +1 -1
  241. package/docs/Std.Math/ModulusI.md +1 -1
  242. package/docs/Std.Math/ModulusL.md +1 -1
  243. package/docs/Std.Math/NegationC.md +1 -1
  244. package/docs/Std.Math/NegationCP.md +1 -1
  245. package/docs/Std.Math/PI.md +1 -1
  246. package/docs/Std.Math/PNorm.md +1 -1
  247. package/docs/Std.Math/PNormalized.md +1 -1
  248. package/docs/Std.Math/PlusC.md +1 -1
  249. package/docs/Std.Math/PlusCP.md +1 -1
  250. package/docs/Std.Math/PowC.md +1 -1
  251. package/docs/Std.Math/PowCP.md +1 -1
  252. package/docs/Std.Math/RealMod.md +1 -1
  253. package/docs/Std.Math/Round.md +1 -1
  254. package/docs/Std.Math/RoundHalfAwayFromZero.md +1 -1
  255. package/docs/Std.Math/SignD.md +1 -1
  256. package/docs/Std.Math/SignI.md +1 -1
  257. package/docs/Std.Math/SignL.md +1 -1
  258. package/docs/Std.Math/Sin.md +1 -1
  259. package/docs/Std.Math/Sinh.md +1 -1
  260. package/docs/Std.Math/SmallestFixedPoint.md +1 -1
  261. package/docs/Std.Math/Sqrt.md +1 -1
  262. package/docs/Std.Math/SquaredNorm.md +1 -1
  263. package/docs/Std.Math/Tan.md +1 -1
  264. package/docs/Std.Math/Tanh.md +1 -1
  265. package/docs/Std.Math/TimesC.md +1 -1
  266. package/docs/Std.Math/TimesCP.md +1 -1
  267. package/docs/Std.Math/TrailingZeroCountI.md +1 -1
  268. package/docs/Std.Math/TrailingZeroCountL.md +1 -1
  269. package/docs/Std.Math/Truncate.md +1 -1
  270. package/docs/Std.Math/index.md +1 -1
  271. package/docs/Std.Measurement/IsLossResult.md +1 -1
  272. package/docs/Std.Measurement/MResetEachZ.md +1 -1
  273. package/docs/Std.Measurement/MResetX.md +1 -1
  274. package/docs/Std.Measurement/MResetY.md +1 -1
  275. package/docs/Std.Measurement/MResetZ.md +1 -1
  276. package/docs/Std.Measurement/MResetZChecked.md +1 -1
  277. package/docs/Std.Measurement/MeasureAllZ.md +1 -1
  278. package/docs/Std.Measurement/MeasureEachZ.md +1 -1
  279. package/docs/Std.Measurement/MeasureInteger.md +1 -1
  280. package/docs/Std.Measurement/index.md +1 -1
  281. package/docs/Std.Random/DrawRandomBool.md +1 -1
  282. package/docs/Std.Random/DrawRandomDouble.md +1 -1
  283. package/docs/Std.Random/DrawRandomInt.md +1 -1
  284. package/docs/Std.Random/index.md +1 -1
  285. package/docs/Std.Range/IsRangeEmpty.md +1 -1
  286. package/docs/Std.Range/RangeEnd.md +1 -1
  287. package/docs/Std.Range/RangeReverse.md +1 -1
  288. package/docs/Std.Range/RangeStart.md +1 -1
  289. package/docs/Std.Range/RangeStep.md +1 -1
  290. package/docs/Std.Range/index.md +1 -1
  291. package/docs/Std.ResourceEstimation/AccountForEstimates.md +1 -1
  292. package/docs/Std.ResourceEstimation/AuxQubitCount.md +1 -1
  293. package/docs/Std.ResourceEstimation/BeginEstimateCaching.md +1 -1
  294. package/docs/Std.ResourceEstimation/BeginRepeatEstimates.md +1 -1
  295. package/docs/Std.ResourceEstimation/CczCount.md +1 -1
  296. package/docs/Std.ResourceEstimation/EnableMemoryComputeArchitecture.md +1 -1
  297. package/docs/Std.ResourceEstimation/EndEstimateCaching.md +1 -1
  298. package/docs/Std.ResourceEstimation/EndRepeatEstimates.md +1 -1
  299. package/docs/Std.ResourceEstimation/LeastFrequentlyUsed.md +1 -1
  300. package/docs/Std.ResourceEstimation/LeastRecentlyUsed.md +1 -1
  301. package/docs/Std.ResourceEstimation/MeasurementCount.md +1 -1
  302. package/docs/Std.ResourceEstimation/PSSPCLayout.md +1 -1
  303. package/docs/Std.ResourceEstimation/RepeatEstimates.md +1 -1
  304. package/docs/Std.ResourceEstimation/RotationCount.md +1 -1
  305. package/docs/Std.ResourceEstimation/RotationDepth.md +1 -1
  306. package/docs/Std.ResourceEstimation/SingleVariant.md +1 -1
  307. package/docs/Std.ResourceEstimation/TCount.md +1 -1
  308. package/docs/Std.ResourceEstimation/index.md +1 -1
  309. package/docs/Std.StatePreparation/ApproximatelyPreparePureStateCP.md +1 -1
  310. package/docs/Std.StatePreparation/PreparePureStateD.md +1 -1
  311. package/docs/Std.StatePreparation/PrepareUniformSuperposition.md +1 -1
  312. package/docs/Std.StatePreparation/index.md +1 -1
  313. package/docs/Std.TableLookup/Select.md +1 -1
  314. package/docs/Std.TableLookup/index.md +1 -1
  315. package/docs/index.md +1 -1
  316. package/lib/nodejs/qsc_wasm.cjs +1 -1
  317. package/lib/nodejs/qsc_wasm_bg.wasm +0 -0
  318. package/lib/web/qsc_wasm.js +1 -1
  319. package/lib/web/qsc_wasm_bg.wasm +0 -0
  320. package/package.json +2 -1
  321. package/ux/circuit-vis/angleExpression.ts +133 -0
  322. package/ux/circuit-vis/contextMenu.ts +8 -73
  323. package/ux/circuit-vis/events.ts +41 -1
  324. package/ux/circuit-vis/formatters/inputFormatter.ts +14 -6
  325. package/ux/circuit-vis/index.ts +12 -4
  326. package/ux/circuit-vis/panel.ts +65 -28
  327. package/ux/circuit-vis/sqore.ts +30 -16
  328. package/ux/circuit-vis/state-viz/stateViz.ts +763 -0
  329. package/ux/circuit-vis/state-viz/stateVizController.ts +285 -0
  330. package/ux/circuit-vis/state-viz/worker/index.ts +18 -0
  331. package/ux/circuit-vis/state-viz/worker/stateCompute.ts +260 -0
  332. package/ux/circuit-vis/state-viz/worker/stateVizPrep.ts +152 -0
  333. package/ux/circuit.tsx +15 -26
  334. package/ux/data.ts +5 -3
  335. package/ux/index.ts +2 -0
  336. package/ux/qdk-theme.css +15 -0
  337. package/ux/qsharp-circuit.css +311 -1
@@ -1,7 +1,16 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { Ket, Measurement, Operation, Unitary } from "./circuit.js";
4
+ import {
5
+ Ket,
6
+ Measurement,
7
+ Operation,
8
+ Unitary,
9
+ type Circuit,
10
+ } from "./circuit.js";
11
+ import { ensureStateVisualization } from "./state-viz/stateVizController.js";
12
+ import type { StateColumn } from "./state-viz/stateViz.js";
13
+ import type { PrepareStateVizOptions } from "./state-viz/worker/stateVizPrep.js";
5
14
  import {
6
15
  gateHeight,
7
16
  horizontalGap,
@@ -12,55 +21,80 @@ import { formatGate } from "./formatters/gateFormatter.js";
12
21
  import { GateType, GateRenderData } from "./gateRenderData.js";
13
22
  import { getMinGateWidth } from "./utils.js";
14
23
 
15
- /**
16
- * Create a panel for the circuit visualization.
17
- * @param container HTML element for rendering visualization into
18
- */
19
- const createPanel = (container: HTMLElement): void => {
20
- // Find or create the wrapper
24
+ const getOrCreateCircuitWrapper = (container: HTMLElement) => {
21
25
  let wrapper: HTMLElement | null = container.querySelector(".circuit-wrapper");
22
- const circuit = container.querySelector("svg.qviz");
26
+ const circuit = container.querySelector("svg.qviz") as SVGElement | null;
23
27
  if (circuit == null) {
24
28
  throw new Error("No circuit found in the container");
25
29
  }
26
30
  if (!wrapper) {
27
- wrapper = _elem("div", "");
31
+ wrapper = document.createElement("div");
28
32
  wrapper.className = "circuit-wrapper";
29
- wrapper.style.display = "block";
30
- wrapper.style.overflow = "auto";
31
- wrapper.style.width = "100%";
32
33
  wrapper.appendChild(circuit);
33
34
  container.appendChild(wrapper);
34
35
  } else if (circuit.parentElement !== wrapper) {
35
- // If wrapper exists but SVG is not inside, ensure it's appended
36
36
  wrapper.appendChild(circuit);
37
37
  }
38
38
 
39
- // Remove any previous message
39
+ return { wrapper, circuit };
40
+ };
41
+
42
+ const attachToolboxPanelIfMissing = (
43
+ container: HTMLElement,
44
+ createToolboxPanel: () => HTMLElement,
45
+ ): void => {
46
+ if (container.querySelector(".panel") != null) return;
47
+ container.prepend(createToolboxPanel());
48
+ };
49
+
50
+ const removeEmptyCircuitMessage = (wrapper: HTMLElement): void => {
40
51
  const prevMsg = wrapper.querySelector(".empty-circuit-message");
41
52
  if (prevMsg) prevMsg.remove();
53
+ };
42
54
 
43
- // Check if the circuit is empty by inspecting the .wires group
55
+ const addEmptyCircuitMessageIfEmpty = (
56
+ wrapper: HTMLElement,
57
+ circuit: SVGElement,
58
+ ): void => {
44
59
  const wiresGroup = circuit?.querySelector(".wires");
45
60
  if (!wiresGroup || wiresGroup.children.length === 0) {
46
61
  const emptyMsg = document.createElement("div");
47
62
  emptyMsg.className = "empty-circuit-message";
48
63
  emptyMsg.textContent =
49
64
  "Your circuit is empty. Drag gates from the toolbox to get started!";
50
- emptyMsg.style.padding = "2em";
51
- emptyMsg.style.textAlign = "center";
52
- emptyMsg.style.color = "#888";
53
- emptyMsg.style.fontSize = "1.1em";
54
65
  wrapper.appendChild(emptyMsg);
55
66
  }
67
+ };
56
68
 
57
- if (container.querySelector(".panel") == null) {
58
- const panelElem = _panel();
59
- container.prepend(panelElem);
60
- container.style.display = "flex";
61
- container.style.height = "80vh";
62
- container.style.width = "95vw";
63
- }
69
+ const applyCircuitEditorLayoutClasses = (
70
+ container: HTMLElement,
71
+ wrapper: HTMLElement,
72
+ ): void => {
73
+ container.classList.add("circuit-editor-container");
74
+ wrapper.classList.add("circuit-wrapper");
75
+ };
76
+
77
+ /**
78
+ * Create a panel for the circuit visualization.
79
+ * @param container HTML element for rendering visualization into
80
+ * @param computeStateVizColumnsForCircuitModel Optional callback to compute
81
+ * state visualization columns from a circuit model, which enables state
82
+ * visualization features when provided.
83
+ */
84
+ const createPanel = (
85
+ container: HTMLElement,
86
+ computeStateVizColumnsForCircuitModel?: (
87
+ model: Circuit,
88
+ opts?: PrepareStateVizOptions,
89
+ ) => Promise<StateColumn[]>,
90
+ ): void => {
91
+ const { wrapper, circuit } = getOrCreateCircuitWrapper(container);
92
+ removeEmptyCircuitMessage(wrapper);
93
+ attachToolboxPanelIfMissing(container, _panel);
94
+ addEmptyCircuitMessageIfEmpty(wrapper, circuit);
95
+ applyCircuitEditorLayoutClasses(container, wrapper);
96
+
97
+ ensureStateVisualization(container, computeStateVizColumnsForCircuitModel);
64
98
  };
65
99
 
66
100
  /**
@@ -82,7 +116,6 @@ const enableRunButton = (
82
116
 
83
117
  /**
84
118
  * Function to produce panel element
85
- * @param context Context object to manage extension state
86
119
  * @returns HTML element for panel
87
120
  */
88
121
  const _panel = (): HTMLElement => {
@@ -94,7 +127,6 @@ const _panel = (): HTMLElement => {
94
127
 
95
128
  /**
96
129
  * Function to produce toolbox element
97
- * @param context Context object to manage extension state
98
130
  * @returns HTML element for toolbox
99
131
  */
100
132
  const _createToolbox = (): HTMLElement => {
@@ -129,6 +161,11 @@ const _createToolbox = (): HTMLElement => {
129
161
  const runButtonGroup = _createRunButton(prefixY + gateHeight + 20);
130
162
  svgElem.appendChild(runButtonGroup);
131
163
 
164
+ // Size SVG to content height so the toolbox panel can scroll when window is short
165
+ const totalSvgHeight = prefixY + 2 * gateHeight + 32; // gates + button + padding
166
+ svgElem.setAttribute("height", totalSvgHeight.toString());
167
+ svgElem.setAttribute("width", "100%");
168
+
132
169
  // Generate toolbox panel
133
170
  const toolboxElem = _elem("div", "toolbox-panel");
134
171
  _children(toolboxElem, [_title("Toolbox")]);
@@ -25,6 +25,8 @@ import { createDropzones } from "./draggable.js";
25
25
  import { enableEvents } from "./events.js";
26
26
  import { createPanel, enableRunButton } from "./panel.js";
27
27
  import { getMinMaxRegIdx } from "./utils.js";
28
+ import type { StateColumn } from "./state-viz/stateViz.js";
29
+ import type { PrepareStateVizOptions } from "./state-viz/worker/stateVizPrep.js";
28
30
 
29
31
  /**
30
32
  * Contains render data for visualization.
@@ -46,12 +48,25 @@ type GateRegistry = {
46
48
  [location: string]: Operation;
47
49
  };
48
50
 
51
+ export type EditorHandlers = {
52
+ editCallback: (circuitGroup: CircuitGroup) => void;
53
+ // When provided, enables the Run button in the toolbox.
54
+ runCallback?: () => void;
55
+ // Optional callback to offload state visualization computation.
56
+ // When provided (e.g., by the VS Code webview), the state visualizer can
57
+ // compute state in a Web Worker without relying on globals.
58
+ computeStateVizColumnsForCircuitModel?: (
59
+ model: Circuit,
60
+ opts?: PrepareStateVizOptions,
61
+ ) => Promise<StateColumn[]>;
62
+ };
63
+
49
64
  export type DrawOptions = {
50
65
  renderDepth?: number;
51
- isEditable?: boolean;
52
- editCallback?: (circuitGroup: CircuitGroup) => void;
53
- runCallback?: () => void;
54
66
  renderLocations?: (l: SourceLocation[]) => { title: string; href: string };
67
+ // When provided, enables editing behaviors (dropzones, run button, etc.) and
68
+ // requires the callbacks necessary to support those behaviors.
69
+ editor?: EditorHandlers;
55
70
  };
56
71
 
57
72
  /**
@@ -65,9 +80,7 @@ export class Sqore {
65
80
  * Initializes Sqore object.
66
81
  *
67
82
  * @param circuitGroup Group of circuits to be visualized.
68
- * @param isEditable Whether the circuit is editable.
69
- * @param editCallback Callback function to be called when the circuit is edited.
70
- * @param runCallback Callback function to be called when the circuit is run.
83
+ * @param options Optional rendering/interaction options.
71
84
  */
72
85
  constructor(
73
86
  public circuitGroup: CircuitGroup,
@@ -139,17 +152,16 @@ export class Sqore {
139
152
  }
140
153
  this.addGateClickHandlers(container, _circuit);
141
154
 
142
- if (this.options.isEditable) {
155
+ const editor = this.options.editor;
156
+ const isEditable = editor != null;
157
+ if (isEditable) {
143
158
  createDropzones(container, this);
144
- createPanel(container);
145
- if (this.options.runCallback != undefined) {
146
- const callback = this.options.runCallback;
147
- enableRunButton(container, callback);
159
+ createPanel(container, editor.computeStateVizColumnsForCircuitModel);
160
+ if (editor.runCallback) {
161
+ enableRunButton(container, editor.runCallback);
148
162
  }
149
163
  enableEvents(container, this, () => this.renderCircuit(container));
150
- if (this.options.editCallback != undefined) {
151
- this.options.editCallback(this.minimizeCircuits(this.circuitGroup));
152
- }
164
+ editor.editCallback(this.minimizeCircuits(this.circuitGroup));
153
165
  }
154
166
  }
155
167
 
@@ -241,12 +253,14 @@ export class Sqore {
241
253
  // expanded group borders need to fit between qubit wires.
242
254
  const rowHeights = getRowHeights(qubits, componentGrid);
243
255
 
256
+ const isEditable = this.options.editor != null;
257
+
244
258
  // Draw the qubit labels.
245
259
  // Also calculate other register render data to be used later in the rendering.
246
260
  const { qubitLabels, registers, svgHeight } = formatInputs(
247
261
  qubits,
248
262
  rowHeights,
249
- this.options.isEditable ? undefined : this.options.renderLocations,
263
+ isEditable ? undefined : this.options.renderLocations,
250
264
  );
251
265
 
252
266
  // Calculate the render data for the operations.
@@ -259,7 +273,7 @@ export class Sqore {
259
273
  topY,
260
274
  bottomY,
261
275
  registers,
262
- this.options.isEditable ? undefined : this.options.renderLocations,
276
+ isEditable ? undefined : this.options.renderLocations,
263
277
  );
264
278
 
265
279
  // Draw the operations.