qsharp-lang 1.21.1-dev → 1.21.2-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 (346) hide show
  1. package/dist/katas-content.generated.js +3 -3
  2. package/dist/katas-content.generated.md.js +3 -3
  3. package/dist/log.d.ts +1 -1
  4. package/dist/log.js +1 -1
  5. package/dist/workers/common.js +1 -1
  6. package/docs/Microsoft.Quantum.Core/IsRangeEmpty.md +1 -1
  7. package/docs/Microsoft.Quantum.Core/Length.md +1 -1
  8. package/docs/Microsoft.Quantum.Core/RangeEnd.md +1 -1
  9. package/docs/Microsoft.Quantum.Core/RangeStart.md +1 -1
  10. package/docs/Microsoft.Quantum.Core/Repeated.md +1 -1
  11. package/docs/Microsoft.Quantum.Core/index.md +1 -1
  12. package/docs/Std.Arithmetic/AddLE.md +1 -1
  13. package/docs/Std.Arithmetic/ApplyIfEqualL.md +1 -1
  14. package/docs/Std.Arithmetic/ApplyIfEqualLE.md +1 -1
  15. package/docs/Std.Arithmetic/ApplyIfGreaterL.md +1 -1
  16. package/docs/Std.Arithmetic/ApplyIfGreaterLE.md +1 -1
  17. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualL.md +1 -1
  18. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualLE.md +1 -1
  19. package/docs/Std.Arithmetic/ApplyIfLessL.md +1 -1
  20. package/docs/Std.Arithmetic/ApplyIfLessLE.md +1 -1
  21. package/docs/Std.Arithmetic/ApplyIfLessOrEqualL.md +1 -1
  22. package/docs/Std.Arithmetic/ApplyIfLessOrEqualLE.md +1 -1
  23. package/docs/Std.Arithmetic/FourierTDIncByLE.md +1 -1
  24. package/docs/Std.Arithmetic/IncByI.md +1 -1
  25. package/docs/Std.Arithmetic/IncByIUsingIncByLE.md +1 -1
  26. package/docs/Std.Arithmetic/IncByL.md +1 -1
  27. package/docs/Std.Arithmetic/IncByLE.md +1 -1
  28. package/docs/Std.Arithmetic/IncByLEUsingAddLE.md +1 -1
  29. package/docs/Std.Arithmetic/IncByLUsingIncByLE.md +1 -1
  30. package/docs/Std.Arithmetic/LookAheadDKRSAddLE.md +1 -1
  31. package/docs/Std.Arithmetic/MAJ.md +1 -1
  32. package/docs/Std.Arithmetic/ReflectAboutInteger.md +1 -1
  33. package/docs/Std.Arithmetic/RippleCarryCGAddLE.md +1 -1
  34. package/docs/Std.Arithmetic/RippleCarryCGIncByLE.md +1 -1
  35. package/docs/Std.Arithmetic/RippleCarryTTKIncByLE.md +1 -1
  36. package/docs/Std.Arithmetic/index.md +1 -1
  37. package/docs/Std.Arrays/All.md +1 -1
  38. package/docs/Std.Arrays/Any.md +1 -1
  39. package/docs/Std.Arrays/Chunks.md +1 -1
  40. package/docs/Std.Arrays/CircularlyShifted.md +1 -1
  41. package/docs/Std.Arrays/ColumnAt.md +1 -1
  42. package/docs/Std.Arrays/Count.md +1 -1
  43. package/docs/Std.Arrays/Diagonal.md +1 -1
  44. package/docs/Std.Arrays/DrawMany.md +1 -1
  45. package/docs/Std.Arrays/Enumerated.md +1 -1
  46. package/docs/Std.Arrays/Excluding.md +1 -1
  47. package/docs/Std.Arrays/Filtered.md +1 -1
  48. package/docs/Std.Arrays/FlatMapped.md +1 -1
  49. package/docs/Std.Arrays/Flattened.md +1 -1
  50. package/docs/Std.Arrays/Fold.md +1 -1
  51. package/docs/Std.Arrays/ForEach.md +1 -1
  52. package/docs/Std.Arrays/Head.md +1 -1
  53. package/docs/Std.Arrays/HeadAndRest.md +1 -1
  54. package/docs/Std.Arrays/IndexOf.md +1 -1
  55. package/docs/Std.Arrays/IndexRange.md +1 -1
  56. package/docs/Std.Arrays/Interleaved.md +1 -1
  57. package/docs/Std.Arrays/IsEmpty.md +1 -1
  58. package/docs/Std.Arrays/IsRectangularArray.md +1 -1
  59. package/docs/Std.Arrays/IsSorted.md +1 -1
  60. package/docs/Std.Arrays/IsSquareArray.md +1 -1
  61. package/docs/Std.Arrays/Mapped.md +1 -1
  62. package/docs/Std.Arrays/MappedByIndex.md +1 -1
  63. package/docs/Std.Arrays/MappedOverRange.md +1 -1
  64. package/docs/Std.Arrays/Most.md +1 -1
  65. package/docs/Std.Arrays/MostAndTail.md +1 -1
  66. package/docs/Std.Arrays/Padded.md +1 -1
  67. package/docs/Std.Arrays/Partitioned.md +1 -1
  68. package/docs/Std.Arrays/Rest.md +1 -1
  69. package/docs/Std.Arrays/Reversed.md +1 -1
  70. package/docs/Std.Arrays/SequenceI.md +1 -1
  71. package/docs/Std.Arrays/SequenceL.md +1 -1
  72. package/docs/Std.Arrays/Sorted.md +1 -1
  73. package/docs/Std.Arrays/Subarray.md +1 -1
  74. package/docs/Std.Arrays/Swapped.md +1 -1
  75. package/docs/Std.Arrays/Tail.md +1 -1
  76. package/docs/Std.Arrays/Transposed.md +1 -1
  77. package/docs/Std.Arrays/Unzipped.md +1 -1
  78. package/docs/Std.Arrays/Where.md +1 -1
  79. package/docs/Std.Arrays/Windows.md +1 -1
  80. package/docs/Std.Arrays/Zipped.md +1 -1
  81. package/docs/Std.Arrays/index.md +1 -1
  82. package/docs/Std.Canon/ApplyCNOTChain.md +1 -1
  83. package/docs/Std.Canon/ApplyControlledOnBitString.md +1 -1
  84. package/docs/Std.Canon/ApplyControlledOnInt.md +1 -1
  85. package/docs/Std.Canon/ApplyOperationPowerA.md +1 -1
  86. package/docs/Std.Canon/ApplyOperationPowerCA.md +1 -1
  87. package/docs/Std.Canon/ApplyP.md +1 -1
  88. package/docs/Std.Canon/ApplyPauli.md +1 -1
  89. package/docs/Std.Canon/ApplyPauliFromBitString.md +1 -1
  90. package/docs/Std.Canon/ApplyPauliFromInt.md +1 -1
  91. package/docs/Std.Canon/ApplyQFT.md +1 -1
  92. package/docs/Std.Canon/ApplyQPE.md +1 -1
  93. package/docs/Std.Canon/ApplyToEach.md +1 -1
  94. package/docs/Std.Canon/ApplyToEachA.md +1 -1
  95. package/docs/Std.Canon/ApplyToEachC.md +1 -1
  96. package/docs/Std.Canon/ApplyToEachCA.md +1 -1
  97. package/docs/Std.Canon/ApplyXorInPlace.md +1 -1
  98. package/docs/Std.Canon/ApplyXorInPlaceL.md +1 -1
  99. package/docs/Std.Canon/CX.md +1 -1
  100. package/docs/Std.Canon/CY.md +1 -1
  101. package/docs/Std.Canon/CZ.md +1 -1
  102. package/docs/Std.Canon/Fst.md +1 -1
  103. package/docs/Std.Canon/MapPauliAxis.md +1 -1
  104. package/docs/Std.Canon/Relabel.md +1 -1
  105. package/docs/Std.Canon/Snd.md +1 -1
  106. package/docs/Std.Canon/SwapReverseRegister.md +1 -1
  107. package/docs/Std.Canon/index.md +1 -1
  108. package/docs/Std.Convert/BigIntAsBoolArray.md +1 -1
  109. package/docs/Std.Convert/BigIntAsInt.md +1 -1
  110. package/docs/Std.Convert/BoolArrayAsBigInt.md +1 -1
  111. package/docs/Std.Convert/BoolArrayAsInt.md +1 -1
  112. package/docs/Std.Convert/BoolArrayAsResultArray.md +1 -1
  113. package/docs/Std.Convert/BoolAsResult.md +1 -1
  114. package/docs/Std.Convert/ComplexAsComplexPolar.md +1 -1
  115. package/docs/Std.Convert/ComplexPolarAsComplex.md +1 -1
  116. package/docs/Std.Convert/DoubleAsStringWithPrecision.md +1 -1
  117. package/docs/Std.Convert/IntAsBigInt.md +1 -1
  118. package/docs/Std.Convert/IntAsBoolArray.md +1 -1
  119. package/docs/Std.Convert/IntAsDouble.md +1 -1
  120. package/docs/Std.Convert/ResultArrayAsBoolArray.md +1 -1
  121. package/docs/Std.Convert/ResultArrayAsInt.md +1 -1
  122. package/docs/Std.Convert/ResultAsBool.md +1 -1
  123. package/docs/Std.Convert/index.md +1 -1
  124. package/docs/Std.Core/Complex.md +1 -1
  125. package/docs/Std.Core/Length.md +1 -1
  126. package/docs/Std.Core/Repeated.md +1 -1
  127. package/docs/Std.Core/index.md +1 -1
  128. package/docs/Std.Diagnostics/ApplyIdleNoise.md +1 -1
  129. package/docs/Std.Diagnostics/BitFlipNoise.md +1 -1
  130. package/docs/Std.Diagnostics/CheckAllZero.md +1 -1
  131. package/docs/Std.Diagnostics/CheckOperationsAreEqual.md +1 -1
  132. package/docs/Std.Diagnostics/CheckZero.md +1 -1
  133. package/docs/Std.Diagnostics/ConfigurePauliNoise.md +1 -1
  134. package/docs/Std.Diagnostics/ConfigureQubitLoss.md +1 -1
  135. package/docs/Std.Diagnostics/DepolarizingNoise.md +1 -1
  136. package/docs/Std.Diagnostics/DumpMachine.md +1 -1
  137. package/docs/Std.Diagnostics/DumpOperation.md +1 -1
  138. package/docs/Std.Diagnostics/DumpRegister.md +1 -1
  139. package/docs/Std.Diagnostics/Fact.md +1 -1
  140. package/docs/Std.Diagnostics/NoNoise.md +1 -1
  141. package/docs/Std.Diagnostics/PhaseFlipNoise.md +1 -1
  142. package/docs/Std.Diagnostics/StartCountingFunction.md +1 -1
  143. package/docs/Std.Diagnostics/StartCountingOperation.md +1 -1
  144. package/docs/Std.Diagnostics/StartCountingQubits.md +1 -1
  145. package/docs/Std.Diagnostics/StopCountingFunction.md +1 -1
  146. package/docs/Std.Diagnostics/StopCountingOperation.md +1 -1
  147. package/docs/Std.Diagnostics/StopCountingQubits.md +1 -1
  148. package/docs/Std.Diagnostics/index.md +1 -1
  149. package/docs/Std.Intrinsic/AND.md +1 -1
  150. package/docs/Std.Intrinsic/ApplyUnitary.md +1 -1
  151. package/docs/Std.Intrinsic/CCNOT.md +1 -1
  152. package/docs/Std.Intrinsic/CNOT.md +1 -1
  153. package/docs/Std.Intrinsic/Exp.md +1 -1
  154. package/docs/Std.Intrinsic/H.md +1 -1
  155. package/docs/Std.Intrinsic/I.md +1 -1
  156. package/docs/Std.Intrinsic/M.md +1 -1
  157. package/docs/Std.Intrinsic/Measure.md +1 -1
  158. package/docs/Std.Intrinsic/Message.md +1 -1
  159. package/docs/Std.Intrinsic/R.md +1 -1
  160. package/docs/Std.Intrinsic/R1.md +1 -1
  161. package/docs/Std.Intrinsic/R1Frac.md +1 -1
  162. package/docs/Std.Intrinsic/RFrac.md +1 -1
  163. package/docs/Std.Intrinsic/Reset.md +1 -1
  164. package/docs/Std.Intrinsic/ResetAll.md +1 -1
  165. package/docs/Std.Intrinsic/Rx.md +1 -1
  166. package/docs/Std.Intrinsic/Rxx.md +1 -1
  167. package/docs/Std.Intrinsic/Ry.md +1 -1
  168. package/docs/Std.Intrinsic/Ryy.md +1 -1
  169. package/docs/Std.Intrinsic/Rz.md +1 -1
  170. package/docs/Std.Intrinsic/Rzz.md +1 -1
  171. package/docs/Std.Intrinsic/S.md +1 -1
  172. package/docs/Std.Intrinsic/SWAP.md +1 -1
  173. package/docs/Std.Intrinsic/SX.md +1 -1
  174. package/docs/Std.Intrinsic/T.md +1 -1
  175. package/docs/Std.Intrinsic/X.md +1 -1
  176. package/docs/Std.Intrinsic/Y.md +1 -1
  177. package/docs/Std.Intrinsic/Z.md +1 -1
  178. package/docs/Std.Intrinsic/index.md +1 -1
  179. package/docs/Std.Logical/Xor.md +1 -1
  180. package/docs/Std.Logical/index.md +1 -1
  181. package/docs/Std.Math/AbsComplex.md +1 -1
  182. package/docs/Std.Math/AbsComplexPolar.md +1 -1
  183. package/docs/Std.Math/AbsD.md +1 -1
  184. package/docs/Std.Math/AbsI.md +1 -1
  185. package/docs/Std.Math/AbsL.md +1 -1
  186. package/docs/Std.Math/AbsSquaredComplex.md +1 -1
  187. package/docs/Std.Math/AbsSquaredComplexPolar.md +1 -1
  188. package/docs/Std.Math/ApproximateFactorial.md +1 -1
  189. package/docs/Std.Math/ArcCos.md +1 -1
  190. package/docs/Std.Math/ArcCosh.md +1 -1
  191. package/docs/Std.Math/ArcSin.md +1 -1
  192. package/docs/Std.Math/ArcSinh.md +1 -1
  193. package/docs/Std.Math/ArcTan.md +1 -1
  194. package/docs/Std.Math/ArcTan2.md +1 -1
  195. package/docs/Std.Math/ArcTanh.md +1 -1
  196. package/docs/Std.Math/ArgComplex.md +1 -1
  197. package/docs/Std.Math/ArgComplexPolar.md +1 -1
  198. package/docs/Std.Math/Binom.md +1 -1
  199. package/docs/Std.Math/BitSizeI.md +1 -1
  200. package/docs/Std.Math/BitSizeL.md +1 -1
  201. package/docs/Std.Math/Ceiling.md +1 -1
  202. package/docs/Std.Math/Complex.md +1 -1
  203. package/docs/Std.Math/ComplexPolar.md +1 -1
  204. package/docs/Std.Math/ContinuedFractionConvergentI.md +1 -1
  205. package/docs/Std.Math/ContinuedFractionConvergentL.md +1 -1
  206. package/docs/Std.Math/Cos.md +1 -1
  207. package/docs/Std.Math/Cosh.md +1 -1
  208. package/docs/Std.Math/DivRemI.md +1 -1
  209. package/docs/Std.Math/DivRemL.md +1 -1
  210. package/docs/Std.Math/DividedByC.md +1 -1
  211. package/docs/Std.Math/DividedByCP.md +1 -1
  212. package/docs/Std.Math/E.md +1 -1
  213. package/docs/Std.Math/ExpModI.md +1 -1
  214. package/docs/Std.Math/ExpModL.md +1 -1
  215. package/docs/Std.Math/ExtendedGreatestCommonDivisorI.md +1 -1
  216. package/docs/Std.Math/ExtendedGreatestCommonDivisorL.md +1 -1
  217. package/docs/Std.Math/FactorialI.md +1 -1
  218. package/docs/Std.Math/FactorialL.md +1 -1
  219. package/docs/Std.Math/Floor.md +1 -1
  220. package/docs/Std.Math/GreatestCommonDivisorI.md +1 -1
  221. package/docs/Std.Math/GreatestCommonDivisorL.md +1 -1
  222. package/docs/Std.Math/HammingWeightI.md +1 -1
  223. package/docs/Std.Math/InverseModI.md +1 -1
  224. package/docs/Std.Math/InverseModL.md +1 -1
  225. package/docs/Std.Math/IsCoprimeI.md +1 -1
  226. package/docs/Std.Math/IsCoprimeL.md +1 -1
  227. package/docs/Std.Math/IsInfinite.md +1 -1
  228. package/docs/Std.Math/IsNaN.md +1 -1
  229. package/docs/Std.Math/LargestFixedPoint.md +1 -1
  230. package/docs/Std.Math/Lg.md +1 -1
  231. package/docs/Std.Math/Log.md +1 -1
  232. package/docs/Std.Math/Log10.md +1 -1
  233. package/docs/Std.Math/LogFactorialD.md +1 -1
  234. package/docs/Std.Math/LogGammaD.md +1 -1
  235. package/docs/Std.Math/LogOf2.md +1 -1
  236. package/docs/Std.Math/Max.md +1 -1
  237. package/docs/Std.Math/MaxD.md +1 -1
  238. package/docs/Std.Math/MaxI.md +1 -1
  239. package/docs/Std.Math/MaxL.md +1 -1
  240. package/docs/Std.Math/Min.md +1 -1
  241. package/docs/Std.Math/MinD.md +1 -1
  242. package/docs/Std.Math/MinI.md +1 -1
  243. package/docs/Std.Math/MinL.md +1 -1
  244. package/docs/Std.Math/MinusC.md +1 -1
  245. package/docs/Std.Math/MinusCP.md +1 -1
  246. package/docs/Std.Math/ModulusI.md +1 -1
  247. package/docs/Std.Math/ModulusL.md +1 -1
  248. package/docs/Std.Math/NegationC.md +1 -1
  249. package/docs/Std.Math/NegationCP.md +1 -1
  250. package/docs/Std.Math/PI.md +1 -1
  251. package/docs/Std.Math/PNorm.md +1 -1
  252. package/docs/Std.Math/PNormalized.md +1 -1
  253. package/docs/Std.Math/PlusC.md +1 -1
  254. package/docs/Std.Math/PlusCP.md +1 -1
  255. package/docs/Std.Math/PowC.md +1 -1
  256. package/docs/Std.Math/PowCP.md +1 -1
  257. package/docs/Std.Math/RealMod.md +1 -1
  258. package/docs/Std.Math/Round.md +1 -1
  259. package/docs/Std.Math/RoundHalfAwayFromZero.md +1 -1
  260. package/docs/Std.Math/SignD.md +1 -1
  261. package/docs/Std.Math/SignI.md +1 -1
  262. package/docs/Std.Math/SignL.md +1 -1
  263. package/docs/Std.Math/Sin.md +1 -1
  264. package/docs/Std.Math/Sinh.md +1 -1
  265. package/docs/Std.Math/SmallestFixedPoint.md +1 -1
  266. package/docs/Std.Math/Sqrt.md +1 -1
  267. package/docs/Std.Math/SquaredNorm.md +1 -1
  268. package/docs/Std.Math/Tan.md +1 -1
  269. package/docs/Std.Math/Tanh.md +1 -1
  270. package/docs/Std.Math/TimesC.md +1 -1
  271. package/docs/Std.Math/TimesCP.md +1 -1
  272. package/docs/Std.Math/TrailingZeroCountI.md +1 -1
  273. package/docs/Std.Math/TrailingZeroCountL.md +1 -1
  274. package/docs/Std.Math/Truncate.md +1 -1
  275. package/docs/Std.Math/index.md +1 -1
  276. package/docs/Std.Measurement/IsLossResult.md +1 -1
  277. package/docs/Std.Measurement/MResetEachZ.md +1 -1
  278. package/docs/Std.Measurement/MResetX.md +1 -1
  279. package/docs/Std.Measurement/MResetY.md +1 -1
  280. package/docs/Std.Measurement/MResetZ.md +1 -1
  281. package/docs/Std.Measurement/MResetZChecked.md +1 -1
  282. package/docs/Std.Measurement/MeasureAllZ.md +1 -1
  283. package/docs/Std.Measurement/MeasureEachZ.md +1 -1
  284. package/docs/Std.Measurement/MeasureInteger.md +1 -1
  285. package/docs/Std.Measurement/index.md +1 -1
  286. package/docs/Std.Random/DrawRandomBool.md +1 -1
  287. package/docs/Std.Random/DrawRandomDouble.md +1 -1
  288. package/docs/Std.Random/DrawRandomInt.md +1 -1
  289. package/docs/Std.Random/index.md +1 -1
  290. package/docs/Std.Range/IsRangeEmpty.md +1 -1
  291. package/docs/Std.Range/RangeEnd.md +1 -1
  292. package/docs/Std.Range/RangeReverse.md +1 -1
  293. package/docs/Std.Range/RangeStart.md +1 -1
  294. package/docs/Std.Range/RangeStep.md +1 -1
  295. package/docs/Std.Range/index.md +1 -1
  296. package/docs/Std.ResourceEstimation/AccountForEstimates.md +1 -1
  297. package/docs/Std.ResourceEstimation/AuxQubitCount.md +1 -1
  298. package/docs/Std.ResourceEstimation/BeginEstimateCaching.md +1 -1
  299. package/docs/Std.ResourceEstimation/BeginRepeatEstimates.md +1 -1
  300. package/docs/Std.ResourceEstimation/CczCount.md +1 -1
  301. package/docs/Std.ResourceEstimation/EnableMemoryComputeArchitecture.md +34 -0
  302. package/docs/Std.ResourceEstimation/EndEstimateCaching.md +1 -1
  303. package/docs/Std.ResourceEstimation/EndRepeatEstimates.md +1 -1
  304. package/docs/Std.ResourceEstimation/LeastFrequentlyUsed.md +23 -0
  305. package/docs/Std.ResourceEstimation/LeastRecentlyUsed.md +23 -0
  306. package/docs/Std.ResourceEstimation/MeasurementCount.md +1 -1
  307. package/docs/Std.ResourceEstimation/PSSPCLayout.md +1 -1
  308. package/docs/Std.ResourceEstimation/RepeatEstimates.md +1 -1
  309. package/docs/Std.ResourceEstimation/RotationCount.md +1 -1
  310. package/docs/Std.ResourceEstimation/RotationDepth.md +1 -1
  311. package/docs/Std.ResourceEstimation/SingleVariant.md +1 -1
  312. package/docs/Std.ResourceEstimation/TCount.md +1 -1
  313. package/docs/Std.ResourceEstimation/index.md +4 -1
  314. package/docs/Std.StatePreparation/ApproximatelyPreparePureStateCP.md +1 -1
  315. package/docs/Std.StatePreparation/PreparePureStateD.md +1 -1
  316. package/docs/Std.StatePreparation/PrepareUniformSuperposition.md +1 -1
  317. package/docs/Std.StatePreparation/index.md +1 -1
  318. package/docs/Std.TableLookup/Select.md +5 -2
  319. package/docs/Std.TableLookup/index.md +1 -1
  320. package/docs/index.md +1 -1
  321. package/docs/toc.yml +3 -0
  322. package/lib/nodejs/qsc_wasm_bg.wasm +0 -0
  323. package/lib/web/qsc_wasm_bg.wasm +0 -0
  324. package/package.json +5 -2
  325. package/ux/circuit-vis/circuit.ts +3 -3
  326. package/ux/circuit-vis/circuitManipulation.ts +5 -5
  327. package/ux/circuit-vis/contextMenu.ts +4 -4
  328. package/ux/circuit-vis/draggable.ts +38 -38
  329. package/ux/circuit-vis/events.ts +9 -9
  330. package/ux/circuit-vis/formatters/formatUtils.ts +15 -6
  331. package/ux/circuit-vis/formatters/gateFormatter.ts +51 -19
  332. package/ux/circuit-vis/formatters/inputFormatter.ts +5 -5
  333. package/ux/circuit-vis/formatters/registerFormatter.ts +4 -4
  334. package/ux/circuit-vis/gateRenderData.ts +1 -1
  335. package/ux/circuit-vis/index.ts +3 -3
  336. package/ux/circuit-vis/panel.ts +6 -6
  337. package/ux/circuit-vis/process.ts +5 -5
  338. package/ux/circuit-vis/register.ts +1 -1
  339. package/ux/circuit-vis/sqore.ts +16 -14
  340. package/ux/circuit-vis/utils.ts +8 -23
  341. package/ux/circuit.tsx +2 -2
  342. package/ux/data.ts +1 -1
  343. package/ux/histogram.tsx +2 -2
  344. package/ux/qsharp-ux.css +1 -1
  345. package/ux/scatterChart.tsx +1 -1
  346. package/ux/tsconfig.json +5 -2
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { GateRenderData, GateType } from "../gateRenderData";
4
+ import { GateRenderData, GateType } from "../gateRenderData.js";
5
5
  import {
6
6
  minGateWidth,
7
7
  gateHeight,
@@ -12,7 +12,7 @@ import {
12
12
  groupBoxPadding,
13
13
  classicalRegHeight,
14
14
  nestedGroupPadding,
15
- } from "../constants";
15
+ } from "../constants.js";
16
16
  import {
17
17
  createSvgElement,
18
18
  group,
@@ -24,9 +24,9 @@ import {
24
24
  arc,
25
25
  dashedLine,
26
26
  dashedBox,
27
- } from "./formatUtils";
27
+ } from "./formatUtils.js";
28
28
 
29
- import { mathChars } from "../utils";
29
+ import { mathChars } from "../utils.js";
30
30
 
31
31
  /**
32
32
  * Given an array of operations render data, return the SVG representation.
@@ -62,7 +62,11 @@ const formatGate = (
62
62
  renderData;
63
63
  switch (type) {
64
64
  case GateType.Measure:
65
- return _createGate([_measure(x, controlsY[0])], renderData, nestedDepth);
65
+ return _createGate(
66
+ [_measure(x, controlsY[0], controlsY)],
67
+ renderData,
68
+ nestedDepth,
69
+ );
66
70
  case GateType.Unitary:
67
71
  return _createGate(
68
72
  [_unitary(label, x, targetsY as number[][], width, displayArgs)],
@@ -209,10 +213,11 @@ const _gatePosition = (
209
213
  *
210
214
  * @param x x coord of measurement gate.
211
215
  * @param y y coord of measurement gate.
216
+ * @param wireYs y coords of wires connected to the measurement gate.
212
217
  *
213
218
  * @returns SVG representation of measurement gate.
214
219
  */
215
- const _measure = (x: number, y: number): SVGElement => {
220
+ const _measure = (x: number, y: number, wireYs: number[]): SVGElement => {
216
221
  x -= minGateWidth / 2;
217
222
  const width: number = minGateWidth,
218
223
  height = gateHeight;
@@ -233,6 +238,8 @@ const _measure = (x: number, y: number): SVGElement => {
233
238
  y - height / 2 + 8,
234
239
  );
235
240
  meter.style.pointerEvents = "none";
241
+ mBox.setAttribute("data-wire-ys", JSON.stringify(wireYs));
242
+ mBox.setAttribute("data-width", `${width}`);
236
243
  return group([mBox, mArc, meter]);
237
244
  };
238
245
 
@@ -290,11 +297,20 @@ const _unitary = (
290
297
  );
291
298
 
292
299
  // Render each group as a separate unitary boxes
293
- const unitaryBoxes: SVGElement[] = y.map((group: number[]) => {
294
- const maxY: number = group[group.length - 1],
295
- minY: number = group[0];
300
+ const unitaryBoxes: SVGElement[] = y.map((wireYs: number[]) => {
301
+ const maxY: number = wireYs[wireYs.length - 1];
302
+ const minY: number = wireYs[0];
296
303
  const height: number = maxY - minY + gateHeight;
297
- return _unitaryBox(label, x, minY, width, height, displayArgs, cssClass);
304
+ return _unitaryBox(
305
+ label,
306
+ x,
307
+ minY,
308
+ width,
309
+ height,
310
+ wireYs,
311
+ displayArgs,
312
+ cssClass,
313
+ );
298
314
  });
299
315
 
300
316
  // Draw dashed line between disconnected unitaries
@@ -318,6 +334,7 @@ const _unitary = (
318
334
  * @param y y coord of gate.
319
335
  * @param width Width of gate.
320
336
  * @param height Height of gate.
337
+ * @param wireYs y coords of wires connected to the gate.
321
338
  * @param displayArgs Arguments passed in to gate.
322
339
  * @param cssClass Optional CSS class to apply to the unitary gate for styling.
323
340
  *
@@ -328,15 +345,24 @@ const _unitaryBox = (
328
345
  x: number,
329
346
  y: number,
330
347
  width: number,
331
- height: number = gateHeight,
348
+ height: number,
349
+ wireYs: number[],
332
350
  displayArgs?: string,
333
351
  cssClass?: string,
334
352
  ): SVGElement => {
335
353
  y -= gateHeight / 2;
336
- const uBox: SVGElement = box(x - width / 2, y, width, height);
354
+ const uBox: SVGElement = box(
355
+ x - width / 2,
356
+ y,
357
+ width,
358
+ height,
359
+ cssClass || "gate-unitary",
360
+ );
337
361
  if (cssClass != null) {
338
362
  uBox.setAttribute("class", cssClass);
339
363
  }
364
+ uBox.setAttribute("data-wire-ys", JSON.stringify(wireYs));
365
+ uBox.setAttribute("data-width", `${width}`);
340
366
  const labelY = y + height / 2 - (displayArgs == null ? 0 : 7);
341
367
  const labelText = text(label, x, labelY);
342
368
  _style_gate_text(labelText);
@@ -385,7 +411,7 @@ const _swap = (renderData: GateRenderData, nestedDepth: number): SVGElement => {
385
411
  const _x = (renderData: GateRenderData): SVGElement => {
386
412
  const { x, targetsY } = renderData;
387
413
  const ys = targetsY.flatMap((y) => y as number[]);
388
- return _oplus(x, ys[0]);
414
+ return _oplus(x, ys[0], ys);
389
415
  };
390
416
 
391
417
  /**
@@ -454,7 +480,9 @@ const _controlledGate = (
454
480
  // Get SVG for target gates
455
481
  switch (type) {
456
482
  case GateType.Cnot:
457
- (targetsY as number[]).forEach((y) => targetGateSvgs.push(_oplus(x, y)));
483
+ (targetsY as number[]).forEach((y) =>
484
+ targetGateSvgs.push(_oplus(x, y, [y])),
485
+ );
458
486
  break;
459
487
  case GateType.Swap:
460
488
  (targetsY as number[]).forEach((y) => targetGateSvgs.push(_cross(x, y)));
@@ -473,7 +501,7 @@ const _controlledGate = (
473
501
  }
474
502
  // Get SVGs for control dots
475
503
  const controlledDotsSvg: SVGElement[] = controlsY.map((y) =>
476
- controlDot(x, y),
504
+ controlDot(x, y, [y]),
477
505
  );
478
506
  // Create control lines
479
507
  const maxY: number = Math.max(...controlsY, ...(targetsY as number[]));
@@ -493,15 +521,19 @@ const _controlledGate = (
493
521
  *
494
522
  * @param x x coordinate of gate.
495
523
  * @param y y coordinate of gate.
496
- * @param r radius of circle.
524
+ * @param wireYs y coords of wires connected to the gate.
497
525
  *
498
526
  * @returns SVG representation of $\oplus$ symbol.
499
527
  */
500
- const _oplus = (x: number, y: number, r = 15): SVGElement => {
528
+ const _oplus = (x: number, y: number, wireYs: number[]): SVGElement => {
529
+ const r = 15;
501
530
  const circleBorder: SVGElement = circle(x, y, r);
502
531
  const vertLine: SVGElement = line(x, y - r, x, y + r);
503
532
  const horLine: SVGElement = line(x - r, y, x + r, y);
504
- return group([circleBorder, vertLine, horLine], { class: "oplus" });
533
+ const oplus = group([circleBorder, vertLine, horLine], { class: "oplus" });
534
+ oplus.setAttribute("data-wire-ys", JSON.stringify(wireYs));
535
+ oplus.setAttribute("data-width", `${2 * r}`);
536
+ return oplus;
505
537
  };
506
538
 
507
539
  /**
@@ -520,7 +552,7 @@ const _groupedOperations = (
520
552
  const [x1, y1, x2, y2] = _gatePosition(renderData, nestedDepth);
521
553
 
522
554
  // Draw dashed box around children gates
523
- const box: SVGElement = dashedBox(x1, y1, x2, y2);
555
+ const box: SVGElement = dashedBox(x1, y1, x2, y2, "gate-unitary");
524
556
  const elems: SVGElement[] = [box];
525
557
  if (children != null)
526
558
  elems.push(formatGates(children as GateRenderData[][], nestedDepth + 1));
@@ -1,16 +1,16 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { Qubit } from "../circuit";
5
- import { RegisterType, RegisterMap, RegisterRenderData } from "../register";
4
+ import { Qubit } from "../circuit.js";
5
+ import { RegisterType, RegisterMap, RegisterRenderData } from "../register.js";
6
6
  import {
7
7
  leftPadding,
8
8
  startY,
9
9
  registerHeight,
10
10
  classicalRegHeight,
11
- } from "../constants";
12
- import { group, text } from "./formatUtils";
13
- import { mathChars } from "../utils";
11
+ } from "../constants.js";
12
+ import { group, text } from "./formatUtils.js";
13
+ import { mathChars } from "../utils.js";
14
14
 
15
15
  /**
16
16
  * `formatInputs` takes in an array of Qubits and outputs the SVG string of formatted
@@ -1,10 +1,10 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { RegisterMap } from "../register";
5
- import { regLineStart } from "../constants";
6
- import { GateRenderData, GateType } from "../gateRenderData";
7
- import { group, line } from "./formatUtils";
4
+ import { RegisterMap } from "../register.js";
5
+ import { regLineStart } from "../constants.js";
6
+ import { GateRenderData, GateType } from "../gateRenderData.js";
7
+ import { group, line } from "./formatUtils.js";
8
8
 
9
9
  /**
10
10
  * Generate the SVG representation of the qubit register wires in `registers` and the classical wires
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { DataAttributes } from "./circuit";
4
+ import { DataAttributes } from "./circuit.js";
5
5
 
6
6
  /**
7
7
  * Enum for the various gate operations handled.
@@ -1,8 +1,8 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { Sqore } from "./sqore";
5
- import { CircuitGroup } from "./circuit";
4
+ import { Sqore } from "./sqore.js";
5
+ import { CircuitGroup } from "./circuit.js";
6
6
 
7
7
  /**
8
8
  * Render `circuit` into `container` at the specified layer depth.
@@ -34,4 +34,4 @@ export type {
34
34
  Column,
35
35
  Qubit,
36
36
  Operation,
37
- } from "./circuit";
37
+ } from "./circuit.js";
@@ -1,16 +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";
4
+ import { Ket, Measurement, Operation, Unitary } from "./circuit.js";
5
5
  import {
6
6
  gateHeight,
7
7
  horizontalGap,
8
8
  minGateWidth,
9
9
  verticalGap,
10
- } from "./constants";
11
- import { formatGate } from "./formatters/gateFormatter";
12
- import { GateType, GateRenderData } from "./gateRenderData";
13
- import { getGateWidth } from "./utils";
10
+ } from "./constants.js";
11
+ import { formatGate } from "./formatters/gateFormatter.js";
12
+ import { GateType, GateRenderData } from "./gateRenderData.js";
13
+ import { getGateWidth } from "./utils.js";
14
14
 
15
15
  /**
16
16
  * Create a panel for the circuit visualization.
@@ -19,7 +19,7 @@ import { getGateWidth } from "./utils";
19
19
  const createPanel = (container: HTMLElement): void => {
20
20
  // Find or create the wrapper
21
21
  let wrapper: HTMLElement | null = container.querySelector(".circuit-wrapper");
22
- const circuit = container.querySelector("svg[id]");
22
+ const circuit = container.querySelector("svg.qviz");
23
23
  if (circuit == null) {
24
24
  throw new Error("No circuit found in the container");
25
25
  }
@@ -7,11 +7,11 @@ import {
7
7
  gatePadding,
8
8
  controlBtnOffset,
9
9
  groupBoxPadding,
10
- } from "./constants";
11
- import { ComponentGrid, Operation, ConditionalRender } from "./circuit";
12
- import { GateRenderData, GateType } from "./gateRenderData";
13
- import { Register, RegisterMap } from "./register";
14
- import { getGateWidth } from "./utils";
10
+ } from "./constants.js";
11
+ import { ComponentGrid, Operation, ConditionalRender } from "./circuit.js";
12
+ import { GateRenderData, GateType } from "./gateRenderData.js";
13
+ import { Register, RegisterMap } from "./register.js";
14
+ import { getGateWidth } from "./utils.js";
15
15
 
16
16
  /**
17
17
  * Takes in a component grid and maps the operations to `GateRenderData` objects which
@@ -6,4 +6,4 @@ export {
6
6
  type Register,
7
7
  type RegisterMap,
8
8
  type RegisterRenderData,
9
- } from "../../src/data-structures/register";
9
+ } from "../../src/data-structures/register.js";
@@ -1,10 +1,10 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { formatInputs } from "./formatters/inputFormatter";
5
- import { formatGates } from "./formatters/gateFormatter";
6
- import { formatRegisters } from "./formatters/registerFormatter";
7
- import { processOperations } from "./process";
4
+ import { formatInputs } from "./formatters/inputFormatter.js";
5
+ import { formatGates } from "./formatters/gateFormatter.js";
6
+ import { formatRegisters } from "./formatters/registerFormatter.js";
7
+ import { processOperations } from "./process.js";
8
8
  import {
9
9
  ConditionalRender,
10
10
  Circuit,
@@ -12,13 +12,17 @@ import {
12
12
  ComponentGrid,
13
13
  Operation,
14
14
  Column,
15
- } from "./circuit";
16
- import { GateRenderData, GateType } from "./gateRenderData";
17
- import { createUUID } from "./utils";
18
- import { gateHeight, minGateWidth, minToolboxHeight, svgNS } from "./constants";
19
- import { createDropzones } from "./draggable";
20
- import { enableEvents } from "./events";
21
- import { createPanel, enableRunButton } from "./panel";
15
+ } from "./circuit.js";
16
+ import { GateRenderData, GateType } from "./gateRenderData.js";
17
+ import {
18
+ gateHeight,
19
+ minGateWidth,
20
+ minToolboxHeight,
21
+ svgNS,
22
+ } from "./constants.js";
23
+ import { createDropzones } from "./draggable.js";
24
+ import { enableEvents } from "./events.js";
25
+ import { createPanel, enableRunButton } from "./panel.js";
22
26
 
23
27
  /**
24
28
  * Contains render data for visualization.
@@ -133,7 +137,7 @@ export class Sqore {
133
137
  const composedSqore: ComposedSqore = this.compose(_circuit);
134
138
  const svg: SVGElement = this.generateSvg(composedSqore);
135
139
  this.setViewBox(svg);
136
- const previousSvg = container.querySelector("svg[id]");
140
+ const previousSvg = container.querySelector("svg.qviz");
137
141
  if (previousSvg == null) {
138
142
  container.appendChild(svg);
139
143
  } else {
@@ -231,10 +235,8 @@ export class Sqore {
231
235
  */
232
236
  private generateSvg(composedSqore: ComposedSqore): SVGElement {
233
237
  const { width, height, elements } = composedSqore;
234
- const uuid: string = createUUID();
235
238
 
236
239
  const svg: SVGElement = document.createElementNS(svgNS, "svg");
237
- svg.setAttribute("id", uuid);
238
240
  svg.setAttribute("class", "qviz");
239
241
  svg.setAttribute("width", width.toString());
240
242
  svg.setAttribute("height", height.toString());
@@ -1,15 +1,15 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { GateRenderData, GateType } from "./gateRenderData";
4
+ import { GateRenderData, GateType } from "./gateRenderData.js";
5
5
  import {
6
6
  minGateWidth,
7
7
  labelPadding,
8
8
  labelFontSize,
9
9
  argsFontSize,
10
- } from "./constants";
11
- import { ComponentGrid, Operation } from "./circuit";
12
- import { Register } from "./register";
10
+ } from "./constants.js";
11
+ import { ComponentGrid, Operation } from "./circuit.js";
12
+ import { Register } from "./register.js";
13
13
 
14
14
  /**
15
15
  * Performs a deep equality check between two objects or arrays.
@@ -49,20 +49,6 @@ const deepEqual = (obj1: unknown, obj2: unknown): boolean => {
49
49
  return true;
50
50
  };
51
51
 
52
- /**
53
- * Generate a UUID using `Math.random`.
54
- * Note: this implementation came from https://stackoverflow.com/questions/105034/how-to-create-guid-uuid
55
- * and is not cryptographically secure but works for our use case.
56
- *
57
- * @returns UUID string.
58
- */
59
- const createUUID = (): string =>
60
- "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
61
- const r = (Math.random() * 16) | 0,
62
- v = c == "x" ? r : (r & 0x3) | 0x8;
63
- return v.toString(16);
64
- });
65
-
66
52
  /**
67
53
  * Calculate the width of a gate, given its render data.
68
54
  *
@@ -117,7 +103,7 @@ const _getStringWidth = (
117
103
  /**
118
104
  * Find targets of an operation's children by recursively walking
119
105
  * through all of its children's controls and targets.
120
- * Note that this intensionally ignores the direct targets of the
106
+ * Note that this intentionally ignores the direct targets of the
121
107
  * operation itself.
122
108
  *
123
109
  * Example:
@@ -388,7 +374,7 @@ const getToolboxElems = (container: HTMLElement): SVGGraphicsElement[] => {
388
374
  * @returns An array of SVG graphics elements representing the host elements.
389
375
  */
390
376
  const getHostElems = (container: HTMLElement): SVGGraphicsElement[] => {
391
- const circuitSvg = container.querySelector("svg[id]");
377
+ const circuitSvg = container.querySelector("svg.qviz");
392
378
  return circuitSvg != null
393
379
  ? Array.from(
394
380
  circuitSvg.querySelectorAll<SVGGraphicsElement>(
@@ -405,7 +391,7 @@ const getHostElems = (container: HTMLElement): SVGGraphicsElement[] => {
405
391
  * @returns An array of SVG graphics elements representing the gate elements.
406
392
  */
407
393
  const getGateElems = (container: HTMLElement): SVGGraphicsElement[] => {
408
- const circuitSvg = container.querySelector("svg[id]");
394
+ const circuitSvg = container.querySelector("svg.qviz");
409
395
  return circuitSvg != null
410
396
  ? Array.from(circuitSvg.querySelectorAll<SVGGraphicsElement>(".gate"))
411
397
  : [];
@@ -418,7 +404,7 @@ const getGateElems = (container: HTMLElement): SVGGraphicsElement[] => {
418
404
  * @returns An array of SVGTextElement representing the qubit labels.
419
405
  */
420
406
  const getQubitLabelElems = (container: HTMLElement): SVGTextElement[] => {
421
- const circuitSvg = container.querySelector("svg[id]");
407
+ const circuitSvg = container.querySelector("svg.qviz");
422
408
  if (!circuitSvg) return [];
423
409
  const labelGroup = circuitSvg.querySelector("g.qubit-input-states");
424
410
  if (!labelGroup) return [];
@@ -440,7 +426,6 @@ const mathChars = {
440
426
 
441
427
  export {
442
428
  deepEqual,
443
- createUUID,
444
429
  getGateWidth,
445
430
  getChildTargets,
446
431
  locationStringToIndexes,
package/ux/circuit.tsx CHANGED
@@ -1,11 +1,11 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT License.
3
3
 
4
- import * as qviz from "./circuit-vis";
4
+ import * as qviz from "./circuit-vis/index.js";
5
5
  import { useEffect, useRef, useState } from "preact/hooks";
6
6
  import { CircuitProps } from "./data.js";
7
7
  import { Spinner } from "./spinner.js";
8
- import { toCircuitGroup } from "./circuit-vis/circuit";
8
+ import { toCircuitGroup } from "./circuit-vis/circuit.js";
9
9
 
10
10
  // For perf reasons we set a limit on how many gates/qubits
11
11
  // we attempt to render. This is still a lot higher than a human would
package/ux/data.ts CHANGED
@@ -78,4 +78,4 @@ export type CircuitProps = {
78
78
  runCallback?: () => void;
79
79
  };
80
80
 
81
- export type CircuitGroup = import("./circuit-vis/circuit").CircuitGroup;
81
+ export type CircuitGroup = import("./circuit-vis/circuit.js").CircuitGroup;
package/ux/histogram.tsx CHANGED
@@ -200,7 +200,7 @@ export function Histogram(props: {
200
200
  const svgElem = e.currentTarget as SVGSVGElement;
201
201
 
202
202
  // Below gets the mouse location in the svg element coordinates. This stays
203
- // consistent while the scroll is occuring (i.e. it is the point the mouse
203
+ // consistent while the scroll is occurring (i.e. it is the point the mouse
204
204
  // was at when scrolling started).
205
205
  const mousePoint = new DOMPoint(e.clientX, e.clientY).matrixTransform(
206
206
  svgElem.getScreenCTM()?.inverse(),
@@ -211,7 +211,7 @@ export function Histogram(props: {
211
211
  that location on the screen. That means adjusting the scroll offset.
212
212
 
213
213
  SVG translation is used to pan left and right, but zooming is done manually (making the
214
- bars wider or thinner) to keep the fonts from getting streched, which occurs with scaling.
214
+ bars wider or thinner) to keep the fonts from getting stretched, which occurs with scaling.
215
215
 
216
216
  deltaX and deltaY do not accumulate across events, they are a new delta each time.
217
217
  */
package/ux/qsharp-ux.css CHANGED
@@ -675,7 +675,7 @@ modern-normalize (see https://mattbrictson.com/blog/css-normalize-and-reset for
675
675
  padding: 4px;
676
676
  }
677
677
 
678
- /* This rule adds the little triange pointer at the top */
678
+ /* This rule adds the little triangle pointer at the top */
679
679
  .qs-scatterChart-tooltip::after,
680
680
  .qs-scatterChart-selectedInfo::after {
681
681
  content: "";
@@ -179,7 +179,7 @@ export function ScatterChart(props: {
179
179
  }
180
180
  });
181
181
 
182
- // The mouse events (over, out, and click) bubble, so put the hanlders on the
182
+ // The mouse events (over, out, and click) bubble, so put the handlers on the
183
183
  // SVG element and check the target element in the handler.
184
184
  return (
185
185
  <div style="position: relative">
package/ux/tsconfig.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "module": "CommonJS",
3
+ "outDir": "../dist",
4
+ "declaration": true,
5
+ "sourceMap": true,
6
+ "module": "nodenext",
7
+ "moduleResolution": "nodenext",
4
8
  "target": "ES2020",
5
- "noEmit": true,
6
9
  "lib": ["DOM", "ES2020"],
7
10
  "strict": true /* enable all strict type-checking options */,
8
11
  "jsx": "react-jsx",