qsharp-lang 1.22.4-dev → 1.22.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 (335) hide show
  1. package/dist/data-structures/circuit.d.ts +6 -1
  2. package/docs/Microsoft.Quantum.Core/IsRangeEmpty.md +1 -1
  3. package/docs/Microsoft.Quantum.Core/Length.md +1 -1
  4. package/docs/Microsoft.Quantum.Core/RangeEnd.md +1 -1
  5. package/docs/Microsoft.Quantum.Core/RangeStart.md +1 -1
  6. package/docs/Microsoft.Quantum.Core/Repeated.md +1 -1
  7. package/docs/Microsoft.Quantum.Core/index.md +1 -1
  8. package/docs/Std.Arithmetic/AddLE.md +1 -1
  9. package/docs/Std.Arithmetic/ApplyIfEqualL.md +1 -1
  10. package/docs/Std.Arithmetic/ApplyIfEqualLE.md +1 -1
  11. package/docs/Std.Arithmetic/ApplyIfGreaterL.md +1 -1
  12. package/docs/Std.Arithmetic/ApplyIfGreaterLE.md +1 -1
  13. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualL.md +1 -1
  14. package/docs/Std.Arithmetic/ApplyIfGreaterOrEqualLE.md +1 -1
  15. package/docs/Std.Arithmetic/ApplyIfLessL.md +1 -1
  16. package/docs/Std.Arithmetic/ApplyIfLessLE.md +1 -1
  17. package/docs/Std.Arithmetic/ApplyIfLessOrEqualL.md +1 -1
  18. package/docs/Std.Arithmetic/ApplyIfLessOrEqualLE.md +1 -1
  19. package/docs/Std.Arithmetic/FourierTDIncByLE.md +1 -1
  20. package/docs/Std.Arithmetic/IncByI.md +1 -1
  21. package/docs/Std.Arithmetic/IncByIUsingIncByLE.md +1 -1
  22. package/docs/Std.Arithmetic/IncByL.md +1 -1
  23. package/docs/Std.Arithmetic/IncByLE.md +1 -1
  24. package/docs/Std.Arithmetic/IncByLEUsingAddLE.md +1 -1
  25. package/docs/Std.Arithmetic/IncByLUsingIncByLE.md +1 -1
  26. package/docs/Std.Arithmetic/LookAheadDKRSAddLE.md +1 -1
  27. package/docs/Std.Arithmetic/MAJ.md +1 -1
  28. package/docs/Std.Arithmetic/ReflectAboutInteger.md +1 -1
  29. package/docs/Std.Arithmetic/RippleCarryCGAddLE.md +1 -1
  30. package/docs/Std.Arithmetic/RippleCarryCGIncByLE.md +1 -1
  31. package/docs/Std.Arithmetic/RippleCarryTTKIncByLE.md +1 -1
  32. package/docs/Std.Arithmetic/index.md +1 -1
  33. package/docs/Std.Arrays/All.md +1 -1
  34. package/docs/Std.Arrays/Any.md +1 -1
  35. package/docs/Std.Arrays/Chunks.md +1 -1
  36. package/docs/Std.Arrays/CircularlyShifted.md +1 -1
  37. package/docs/Std.Arrays/ColumnAt.md +1 -1
  38. package/docs/Std.Arrays/Count.md +1 -1
  39. package/docs/Std.Arrays/Diagonal.md +1 -1
  40. package/docs/Std.Arrays/DrawMany.md +1 -1
  41. package/docs/Std.Arrays/Enumerated.md +1 -1
  42. package/docs/Std.Arrays/Excluding.md +1 -1
  43. package/docs/Std.Arrays/Filtered.md +1 -1
  44. package/docs/Std.Arrays/FlatMapped.md +1 -1
  45. package/docs/Std.Arrays/Flattened.md +1 -1
  46. package/docs/Std.Arrays/Fold.md +1 -1
  47. package/docs/Std.Arrays/ForEach.md +1 -1
  48. package/docs/Std.Arrays/Head.md +1 -1
  49. package/docs/Std.Arrays/HeadAndRest.md +1 -1
  50. package/docs/Std.Arrays/IndexOf.md +1 -1
  51. package/docs/Std.Arrays/IndexRange.md +1 -1
  52. package/docs/Std.Arrays/Interleaved.md +1 -1
  53. package/docs/Std.Arrays/IsEmpty.md +1 -1
  54. package/docs/Std.Arrays/IsRectangularArray.md +1 -1
  55. package/docs/Std.Arrays/IsSorted.md +1 -1
  56. package/docs/Std.Arrays/IsSquareArray.md +1 -1
  57. package/docs/Std.Arrays/Mapped.md +1 -1
  58. package/docs/Std.Arrays/MappedByIndex.md +1 -1
  59. package/docs/Std.Arrays/MappedOverRange.md +1 -1
  60. package/docs/Std.Arrays/Most.md +1 -1
  61. package/docs/Std.Arrays/MostAndTail.md +1 -1
  62. package/docs/Std.Arrays/Padded.md +1 -1
  63. package/docs/Std.Arrays/Partitioned.md +1 -1
  64. package/docs/Std.Arrays/Rest.md +1 -1
  65. package/docs/Std.Arrays/Reversed.md +1 -1
  66. package/docs/Std.Arrays/SequenceI.md +1 -1
  67. package/docs/Std.Arrays/SequenceL.md +1 -1
  68. package/docs/Std.Arrays/Sorted.md +1 -1
  69. package/docs/Std.Arrays/Subarray.md +1 -1
  70. package/docs/Std.Arrays/Swapped.md +1 -1
  71. package/docs/Std.Arrays/Tail.md +1 -1
  72. package/docs/Std.Arrays/Transposed.md +1 -1
  73. package/docs/Std.Arrays/Unzipped.md +1 -1
  74. package/docs/Std.Arrays/Where.md +1 -1
  75. package/docs/Std.Arrays/Windows.md +1 -1
  76. package/docs/Std.Arrays/Zipped.md +1 -1
  77. package/docs/Std.Arrays/index.md +1 -1
  78. package/docs/Std.Canon/ApplyCNOTChain.md +1 -1
  79. package/docs/Std.Canon/ApplyControlledOnBitString.md +1 -1
  80. package/docs/Std.Canon/ApplyControlledOnInt.md +1 -1
  81. package/docs/Std.Canon/ApplyOperationPowerA.md +1 -1
  82. package/docs/Std.Canon/ApplyOperationPowerCA.md +1 -1
  83. package/docs/Std.Canon/ApplyP.md +1 -1
  84. package/docs/Std.Canon/ApplyPauli.md +1 -1
  85. package/docs/Std.Canon/ApplyPauliFromBitString.md +1 -1
  86. package/docs/Std.Canon/ApplyPauliFromInt.md +1 -1
  87. package/docs/Std.Canon/ApplyQFT.md +1 -1
  88. package/docs/Std.Canon/ApplyQPE.md +1 -1
  89. package/docs/Std.Canon/ApplyToEach.md +1 -1
  90. package/docs/Std.Canon/ApplyToEachA.md +1 -1
  91. package/docs/Std.Canon/ApplyToEachC.md +1 -1
  92. package/docs/Std.Canon/ApplyToEachCA.md +1 -1
  93. package/docs/Std.Canon/ApplyXorInPlace.md +1 -1
  94. package/docs/Std.Canon/ApplyXorInPlaceL.md +1 -1
  95. package/docs/Std.Canon/CX.md +1 -1
  96. package/docs/Std.Canon/CY.md +1 -1
  97. package/docs/Std.Canon/CZ.md +1 -1
  98. package/docs/Std.Canon/Fst.md +1 -1
  99. package/docs/Std.Canon/MapPauliAxis.md +1 -1
  100. package/docs/Std.Canon/Relabel.md +1 -1
  101. package/docs/Std.Canon/Snd.md +1 -1
  102. package/docs/Std.Canon/SwapReverseRegister.md +1 -1
  103. package/docs/Std.Canon/index.md +1 -1
  104. package/docs/Std.Convert/BigIntAsBoolArray.md +1 -1
  105. package/docs/Std.Convert/BigIntAsInt.md +1 -1
  106. package/docs/Std.Convert/BoolArrayAsBigInt.md +1 -1
  107. package/docs/Std.Convert/BoolArrayAsInt.md +1 -1
  108. package/docs/Std.Convert/BoolArrayAsResultArray.md +1 -1
  109. package/docs/Std.Convert/BoolAsResult.md +1 -1
  110. package/docs/Std.Convert/ComplexAsComplexPolar.md +1 -1
  111. package/docs/Std.Convert/ComplexPolarAsComplex.md +1 -1
  112. package/docs/Std.Convert/DoubleAsStringWithPrecision.md +1 -1
  113. package/docs/Std.Convert/IntAsBigInt.md +1 -1
  114. package/docs/Std.Convert/IntAsBoolArray.md +1 -1
  115. package/docs/Std.Convert/IntAsDouble.md +1 -1
  116. package/docs/Std.Convert/ResultArrayAsBoolArray.md +1 -1
  117. package/docs/Std.Convert/ResultArrayAsInt.md +1 -1
  118. package/docs/Std.Convert/ResultAsBool.md +1 -1
  119. package/docs/Std.Convert/index.md +1 -1
  120. package/docs/Std.Core/Complex.md +1 -1
  121. package/docs/Std.Core/Length.md +1 -1
  122. package/docs/Std.Core/Repeated.md +1 -1
  123. package/docs/Std.Core/index.md +1 -1
  124. package/docs/Std.Diagnostics/ApplyIdleNoise.md +1 -1
  125. package/docs/Std.Diagnostics/BitFlipNoise.md +1 -1
  126. package/docs/Std.Diagnostics/CheckAllZero.md +1 -1
  127. package/docs/Std.Diagnostics/CheckOperationsAreEqual.md +1 -1
  128. package/docs/Std.Diagnostics/CheckZero.md +1 -1
  129. package/docs/Std.Diagnostics/ConfigurePauliNoise.md +1 -1
  130. package/docs/Std.Diagnostics/ConfigureQubitLoss.md +1 -1
  131. package/docs/Std.Diagnostics/DepolarizingNoise.md +1 -1
  132. package/docs/Std.Diagnostics/DumpMachine.md +1 -1
  133. package/docs/Std.Diagnostics/DumpOperation.md +1 -1
  134. package/docs/Std.Diagnostics/DumpRegister.md +1 -1
  135. package/docs/Std.Diagnostics/Fact.md +1 -1
  136. package/docs/Std.Diagnostics/NoNoise.md +1 -1
  137. package/docs/Std.Diagnostics/PhaseFlipNoise.md +1 -1
  138. package/docs/Std.Diagnostics/StartCountingFunction.md +1 -1
  139. package/docs/Std.Diagnostics/StartCountingOperation.md +1 -1
  140. package/docs/Std.Diagnostics/StartCountingQubits.md +1 -1
  141. package/docs/Std.Diagnostics/StopCountingFunction.md +1 -1
  142. package/docs/Std.Diagnostics/StopCountingOperation.md +1 -1
  143. package/docs/Std.Diagnostics/StopCountingQubits.md +1 -1
  144. package/docs/Std.Diagnostics/index.md +1 -1
  145. package/docs/Std.Intrinsic/AND.md +1 -1
  146. package/docs/Std.Intrinsic/ApplyUnitary.md +1 -1
  147. package/docs/Std.Intrinsic/CCNOT.md +1 -1
  148. package/docs/Std.Intrinsic/CNOT.md +1 -1
  149. package/docs/Std.Intrinsic/Exp.md +1 -1
  150. package/docs/Std.Intrinsic/H.md +1 -1
  151. package/docs/Std.Intrinsic/I.md +1 -1
  152. package/docs/Std.Intrinsic/M.md +1 -1
  153. package/docs/Std.Intrinsic/Measure.md +1 -1
  154. package/docs/Std.Intrinsic/Message.md +1 -1
  155. package/docs/Std.Intrinsic/R.md +1 -1
  156. package/docs/Std.Intrinsic/R1.md +1 -1
  157. package/docs/Std.Intrinsic/R1Frac.md +1 -1
  158. package/docs/Std.Intrinsic/RFrac.md +1 -1
  159. package/docs/Std.Intrinsic/Reset.md +1 -1
  160. package/docs/Std.Intrinsic/ResetAll.md +1 -1
  161. package/docs/Std.Intrinsic/Rx.md +1 -1
  162. package/docs/Std.Intrinsic/Rxx.md +1 -1
  163. package/docs/Std.Intrinsic/Ry.md +1 -1
  164. package/docs/Std.Intrinsic/Ryy.md +1 -1
  165. package/docs/Std.Intrinsic/Rz.md +1 -1
  166. package/docs/Std.Intrinsic/Rzz.md +1 -1
  167. package/docs/Std.Intrinsic/S.md +1 -1
  168. package/docs/Std.Intrinsic/SWAP.md +1 -1
  169. package/docs/Std.Intrinsic/SX.md +1 -1
  170. package/docs/Std.Intrinsic/T.md +1 -1
  171. package/docs/Std.Intrinsic/X.md +1 -1
  172. package/docs/Std.Intrinsic/Y.md +1 -1
  173. package/docs/Std.Intrinsic/Z.md +1 -1
  174. package/docs/Std.Intrinsic/index.md +1 -1
  175. package/docs/Std.Logical/Xor.md +1 -1
  176. package/docs/Std.Logical/index.md +1 -1
  177. package/docs/Std.Math/AbsComplex.md +1 -1
  178. package/docs/Std.Math/AbsComplexPolar.md +1 -1
  179. package/docs/Std.Math/AbsD.md +1 -1
  180. package/docs/Std.Math/AbsI.md +1 -1
  181. package/docs/Std.Math/AbsL.md +1 -1
  182. package/docs/Std.Math/AbsSquaredComplex.md +1 -1
  183. package/docs/Std.Math/AbsSquaredComplexPolar.md +1 -1
  184. package/docs/Std.Math/ApproximateFactorial.md +1 -1
  185. package/docs/Std.Math/ArcCos.md +1 -1
  186. package/docs/Std.Math/ArcCosh.md +1 -1
  187. package/docs/Std.Math/ArcSin.md +1 -1
  188. package/docs/Std.Math/ArcSinh.md +1 -1
  189. package/docs/Std.Math/ArcTan.md +1 -1
  190. package/docs/Std.Math/ArcTan2.md +1 -1
  191. package/docs/Std.Math/ArcTanh.md +1 -1
  192. package/docs/Std.Math/ArgComplex.md +1 -1
  193. package/docs/Std.Math/ArgComplexPolar.md +1 -1
  194. package/docs/Std.Math/Binom.md +1 -1
  195. package/docs/Std.Math/BitSizeI.md +1 -1
  196. package/docs/Std.Math/BitSizeL.md +1 -1
  197. package/docs/Std.Math/Ceiling.md +1 -1
  198. package/docs/Std.Math/Complex.md +1 -1
  199. package/docs/Std.Math/ComplexPolar.md +1 -1
  200. package/docs/Std.Math/ContinuedFractionConvergentI.md +1 -1
  201. package/docs/Std.Math/ContinuedFractionConvergentL.md +1 -1
  202. package/docs/Std.Math/Cos.md +1 -1
  203. package/docs/Std.Math/Cosh.md +1 -1
  204. package/docs/Std.Math/DivRemI.md +1 -1
  205. package/docs/Std.Math/DivRemL.md +1 -1
  206. package/docs/Std.Math/DividedByC.md +1 -1
  207. package/docs/Std.Math/DividedByCP.md +1 -1
  208. package/docs/Std.Math/E.md +1 -1
  209. package/docs/Std.Math/ExpModI.md +1 -1
  210. package/docs/Std.Math/ExpModL.md +1 -1
  211. package/docs/Std.Math/ExtendedGreatestCommonDivisorI.md +1 -1
  212. package/docs/Std.Math/ExtendedGreatestCommonDivisorL.md +1 -1
  213. package/docs/Std.Math/FactorialI.md +1 -1
  214. package/docs/Std.Math/FactorialL.md +1 -1
  215. package/docs/Std.Math/Floor.md +1 -1
  216. package/docs/Std.Math/GreatestCommonDivisorI.md +1 -1
  217. package/docs/Std.Math/GreatestCommonDivisorL.md +1 -1
  218. package/docs/Std.Math/HammingWeightI.md +1 -1
  219. package/docs/Std.Math/InverseModI.md +1 -1
  220. package/docs/Std.Math/InverseModL.md +1 -1
  221. package/docs/Std.Math/IsCoprimeI.md +1 -1
  222. package/docs/Std.Math/IsCoprimeL.md +1 -1
  223. package/docs/Std.Math/IsInfinite.md +1 -1
  224. package/docs/Std.Math/IsNaN.md +1 -1
  225. package/docs/Std.Math/LargestFixedPoint.md +1 -1
  226. package/docs/Std.Math/Lg.md +1 -1
  227. package/docs/Std.Math/Log.md +1 -1
  228. package/docs/Std.Math/Log10.md +1 -1
  229. package/docs/Std.Math/LogFactorialD.md +1 -1
  230. package/docs/Std.Math/LogGammaD.md +1 -1
  231. package/docs/Std.Math/LogOf2.md +1 -1
  232. package/docs/Std.Math/Max.md +1 -1
  233. package/docs/Std.Math/MaxD.md +1 -1
  234. package/docs/Std.Math/MaxI.md +1 -1
  235. package/docs/Std.Math/MaxL.md +1 -1
  236. package/docs/Std.Math/Min.md +1 -1
  237. package/docs/Std.Math/MinD.md +1 -1
  238. package/docs/Std.Math/MinI.md +1 -1
  239. package/docs/Std.Math/MinL.md +1 -1
  240. package/docs/Std.Math/MinusC.md +1 -1
  241. package/docs/Std.Math/MinusCP.md +1 -1
  242. package/docs/Std.Math/ModulusI.md +1 -1
  243. package/docs/Std.Math/ModulusL.md +1 -1
  244. package/docs/Std.Math/NegationC.md +1 -1
  245. package/docs/Std.Math/NegationCP.md +1 -1
  246. package/docs/Std.Math/PI.md +1 -1
  247. package/docs/Std.Math/PNorm.md +1 -1
  248. package/docs/Std.Math/PNormalized.md +1 -1
  249. package/docs/Std.Math/PlusC.md +1 -1
  250. package/docs/Std.Math/PlusCP.md +1 -1
  251. package/docs/Std.Math/PowC.md +1 -1
  252. package/docs/Std.Math/PowCP.md +1 -1
  253. package/docs/Std.Math/RealMod.md +1 -1
  254. package/docs/Std.Math/Round.md +1 -1
  255. package/docs/Std.Math/RoundHalfAwayFromZero.md +1 -1
  256. package/docs/Std.Math/SignD.md +1 -1
  257. package/docs/Std.Math/SignI.md +1 -1
  258. package/docs/Std.Math/SignL.md +1 -1
  259. package/docs/Std.Math/Sin.md +1 -1
  260. package/docs/Std.Math/Sinh.md +1 -1
  261. package/docs/Std.Math/SmallestFixedPoint.md +1 -1
  262. package/docs/Std.Math/Sqrt.md +1 -1
  263. package/docs/Std.Math/SquaredNorm.md +1 -1
  264. package/docs/Std.Math/Tan.md +1 -1
  265. package/docs/Std.Math/Tanh.md +1 -1
  266. package/docs/Std.Math/TimesC.md +1 -1
  267. package/docs/Std.Math/TimesCP.md +1 -1
  268. package/docs/Std.Math/TrailingZeroCountI.md +1 -1
  269. package/docs/Std.Math/TrailingZeroCountL.md +1 -1
  270. package/docs/Std.Math/Truncate.md +1 -1
  271. package/docs/Std.Math/index.md +1 -1
  272. package/docs/Std.Measurement/IsLossResult.md +1 -1
  273. package/docs/Std.Measurement/MResetEachZ.md +1 -1
  274. package/docs/Std.Measurement/MResetX.md +1 -1
  275. package/docs/Std.Measurement/MResetY.md +1 -1
  276. package/docs/Std.Measurement/MResetZ.md +1 -1
  277. package/docs/Std.Measurement/MResetZChecked.md +1 -1
  278. package/docs/Std.Measurement/MeasureAllZ.md +1 -1
  279. package/docs/Std.Measurement/MeasureEachZ.md +1 -1
  280. package/docs/Std.Measurement/MeasureInteger.md +1 -1
  281. package/docs/Std.Measurement/index.md +1 -1
  282. package/docs/Std.Random/DrawRandomBool.md +1 -1
  283. package/docs/Std.Random/DrawRandomDouble.md +1 -1
  284. package/docs/Std.Random/DrawRandomInt.md +1 -1
  285. package/docs/Std.Random/index.md +1 -1
  286. package/docs/Std.Range/IsRangeEmpty.md +1 -1
  287. package/docs/Std.Range/RangeEnd.md +1 -1
  288. package/docs/Std.Range/RangeReverse.md +1 -1
  289. package/docs/Std.Range/RangeStart.md +1 -1
  290. package/docs/Std.Range/RangeStep.md +1 -1
  291. package/docs/Std.Range/index.md +1 -1
  292. package/docs/Std.ResourceEstimation/AccountForEstimates.md +1 -1
  293. package/docs/Std.ResourceEstimation/AuxQubitCount.md +1 -1
  294. package/docs/Std.ResourceEstimation/BeginEstimateCaching.md +1 -1
  295. package/docs/Std.ResourceEstimation/BeginRepeatEstimates.md +1 -1
  296. package/docs/Std.ResourceEstimation/CczCount.md +1 -1
  297. package/docs/Std.ResourceEstimation/EnableMemoryComputeArchitecture.md +1 -1
  298. package/docs/Std.ResourceEstimation/EndEstimateCaching.md +1 -1
  299. package/docs/Std.ResourceEstimation/EndRepeatEstimates.md +1 -1
  300. package/docs/Std.ResourceEstimation/LeastFrequentlyUsed.md +1 -1
  301. package/docs/Std.ResourceEstimation/LeastRecentlyUsed.md +1 -1
  302. package/docs/Std.ResourceEstimation/MeasurementCount.md +1 -1
  303. package/docs/Std.ResourceEstimation/PSSPCLayout.md +1 -1
  304. package/docs/Std.ResourceEstimation/RepeatEstimates.md +1 -1
  305. package/docs/Std.ResourceEstimation/RotationCount.md +1 -1
  306. package/docs/Std.ResourceEstimation/RotationDepth.md +1 -1
  307. package/docs/Std.ResourceEstimation/SingleVariant.md +1 -1
  308. package/docs/Std.ResourceEstimation/TCount.md +1 -1
  309. package/docs/Std.ResourceEstimation/index.md +1 -1
  310. package/docs/Std.StatePreparation/ApproximatelyPreparePureStateCP.md +1 -1
  311. package/docs/Std.StatePreparation/PreparePureStateD.md +1 -1
  312. package/docs/Std.StatePreparation/PrepareUniformSuperposition.md +1 -1
  313. package/docs/Std.StatePreparation/index.md +1 -1
  314. package/docs/Std.TableLookup/Select.md +1 -1
  315. package/docs/Std.TableLookup/index.md +1 -1
  316. package/docs/index.md +1 -1
  317. package/lib/nodejs/qsc_wasm.cjs +81 -81
  318. package/lib/nodejs/qsc_wasm.d.cts +2 -1
  319. package/lib/nodejs/qsc_wasm_bg.wasm +0 -0
  320. package/lib/web/qsc_wasm.d.ts +2 -1
  321. package/lib/web/qsc_wasm.js +74 -74
  322. package/lib/web/qsc_wasm_bg.wasm +0 -0
  323. package/package.json +1 -1
  324. package/ux/atoms/controls.ts +216 -0
  325. package/ux/atoms/index.css +226 -0
  326. package/ux/atoms/index.ts +192 -0
  327. package/ux/atoms/layout.ts +730 -0
  328. package/ux/atoms/utils.ts +32 -0
  329. package/ux/chem/index.tsx +191 -0
  330. package/ux/chem/style.css +83 -0
  331. package/ux/circuit-vis/events.ts +1 -5
  332. package/ux/circuit-vis/formatters/gateFormatter.ts +1 -1
  333. package/ux/circuit-vis/process.ts +13 -5
  334. package/ux/circuit-vis/sqore.ts +10 -8
  335. package/ux/index.ts +2 -0
@@ -0,0 +1,226 @@
1
+ /* Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License. */
3
+
4
+ /* Default colors, or theme set explicitly to light */
5
+ /* data-vscode-theme-kind="vscode-dark" or "vscode-light" or "vscode-high-contrast" or "vscode-high-contrast-light" */
6
+ :root,
7
+ [data-theme="light"],
8
+ [data-vscode-theme-kind="vscode-light"],
9
+ [data-vscode-theme-kind="vscode-high-contrast-light"] {
10
+ --qs-atoms-primay-color: #222;
11
+ --qs-atoms-background-color: #eee;
12
+ --qs-atoms-qubitbox: #bbd;
13
+ --qs-atoms-qubit: #123;
14
+ --qs-atoms-label: #aaa;
15
+ --qs-atoms-gate: #66d;
16
+ --qs-atoms-gate-cz: #ec4;
17
+ --qs-atoms-gate-mz: #822;
18
+ --qs-atoms-gate-reset: #282;
19
+ }
20
+ /* User has set OS preference for dark (explict theme will override) */
21
+ @media (prefers-color-scheme: dark) {
22
+ :root {
23
+ --qs-atoms-primay-color: #eee;
24
+ --qs-atoms-background-color: #222;
25
+ --qs-atoms-qubitbox: #446;
26
+ --qs-atoms-qubit: #9df;
27
+ --qs-atoms-label: #666;
28
+ --qs-atoms-gate: #ccf;
29
+ --qs-atoms-gate-cz: #b91;
30
+ --qs-atoms-gate-mz: #e88;
31
+ --qs-atoms-gate-reset: #8e8;
32
+ }
33
+ }
34
+ /* Explicit dark theme set (should match above dark preference values) */
35
+ [data-theme="dark"],
36
+ [data-vscode-theme-kind="vscode-dark"],
37
+ [data-vscode-theme-kind="vscode-high-contrast"] {
38
+ --qs-atoms-primay-color: #eee;
39
+ --qs-atoms-background-color: #222;
40
+ --qs-atoms-qubitbox: #446;
41
+ --qs-atoms-qubit: #9df;
42
+ --qs-atoms-label: #666;
43
+ --qs-atoms-gate: #ccf;
44
+ --qs-atoms-gate-cz: #b91;
45
+ --qs-atoms-gate-mz: #e88;
46
+ --qs-atoms-gate-reset: #8e8;
47
+ }
48
+
49
+ .qs-atoms-app {
50
+ background-color: var(--qs-atoms-background-color);
51
+ color: var(--qs-atoms-primay-color);
52
+ font-family: system-ui, "Segoe UI", Roboto, sans-serif;
53
+ box-sizing: border-box;
54
+ width: 600px;
55
+ border: 1px solid gray;
56
+ border-radius: 8px;
57
+ margin: auto;
58
+ margin-top: 24px;
59
+ padding: 16px;
60
+ display: flex;
61
+ flex-direction: column;
62
+ }
63
+
64
+ .qs-atoms-app:focus {
65
+ outline: none;
66
+ }
67
+
68
+ .qs-atoms-toolstrip {
69
+ display: flex;
70
+ align-items: center;
71
+ justify-content: space-between;
72
+ }
73
+
74
+ .qs-atoms-toolbar {
75
+ height: 28px;
76
+ user-select: none;
77
+ }
78
+
79
+ .qs-atoms-icon > circle {
80
+ stroke: var(--qs-atoms-primay-color);
81
+ stroke-width: 6;
82
+ fill: transparent;
83
+ cursor: pointer;
84
+ }
85
+
86
+ .qs-atoms-icon > .qs-atoms-info-dot {
87
+ fill: var(--qs-atoms-primay-color);
88
+ stroke: none;
89
+ pointer-events: none;
90
+ }
91
+
92
+ .qs-atoms-icon > circle:hover {
93
+ stroke-width: 10;
94
+ }
95
+
96
+ .qs-atoms-icon > path {
97
+ stroke: none;
98
+ fill: var(--qs-atoms-primay-color);
99
+ pointer-events: none;
100
+ }
101
+
102
+ .qs-atoms-icon > .qs-atoms-icon-line {
103
+ fill: none;
104
+ stroke-width: 16;
105
+ stroke: var(--qs-atoms-primay-color);
106
+ stroke-linecap: round;
107
+ stroke-linejoin: round;
108
+ }
109
+
110
+ .qs-atoms-slider:focus {
111
+ outline: none;
112
+ }
113
+
114
+ .qs-atoms-step {
115
+ text-align: end;
116
+ margin-right: 20px;
117
+ user-select: none;
118
+ -webkit-user-select: none;
119
+ }
120
+
121
+ .qs-atoms-bigsmall {
122
+ margin-left: auto;
123
+ }
124
+
125
+ .qs-atoms-zones {
126
+ margin: 8px auto;
127
+ }
128
+
129
+ .qs-atoms-zone-text {
130
+ font-size: 8px;
131
+ font-family: system-ui;
132
+ fill: gray;
133
+ stroke-width: 0;
134
+ user-select: none;
135
+ -webkit-user-select: none;
136
+ }
137
+
138
+ .qs-atoms-label {
139
+ font-size: 6px;
140
+ font-family: system-ui;
141
+ fill: var(--qs-atoms-label);
142
+ stroke-width: 0;
143
+ user-select: none;
144
+ -webkit-user-select: none;
145
+ text-anchor: middle;
146
+ dominant-baseline: central;
147
+ width: 20px;
148
+ }
149
+
150
+ .qs-atoms-zonebox {
151
+ stroke: var(--qs-atoms-background-color);
152
+ stroke-width: 0.75;
153
+ fill: var(--qs-atoms-qubitbox);
154
+ }
155
+
156
+ .qs-atoms-qubit {
157
+ stroke: none;
158
+ fill: var(--qs-atoms-qubit);
159
+ }
160
+
161
+ .qs-atoms-qubit-trail-start {
162
+ stroke: gray;
163
+ stroke-width: 1px;
164
+ fill: var(--qs-atoms-qubitbox);
165
+ r: 3px;
166
+ }
167
+
168
+ .qs-atoms-qubit-trail {
169
+ stroke: gray;
170
+ stroke-width: 1px;
171
+ fill: none;
172
+ stroke-dasharray: 1, 1;
173
+ }
174
+
175
+ .qs-atoms-qubit-highlight {
176
+ stroke: orange;
177
+ stroke-width: 1px;
178
+ }
179
+
180
+ .qs-atoms-gate {
181
+ fill: var(--qs-atoms-gate);
182
+ stroke-width: 0;
183
+ }
184
+
185
+ .qs-atoms-gate-cz {
186
+ fill: var(--qs-atoms-gate-cz);
187
+ }
188
+ .qs-atoms-gate-mz {
189
+ fill: var(--qs-atoms-gate-mz);
190
+ }
191
+
192
+ .qs-atoms-gate-reset {
193
+ fill: var(--qs-atoms-gate-reset);
194
+ }
195
+
196
+ .qs-atoms-gate-text {
197
+ stroke-width: 0;
198
+ fill: var(--qs-atoms-background-color);
199
+ font-size: 5px;
200
+ font-family: Verdana, Geneva, Tahoma, sans-serif;
201
+ text-anchor: middle;
202
+ dominant-baseline: central;
203
+ }
204
+
205
+ .qs-atoms-gate-text-small {
206
+ font-size: 4px;
207
+ }
208
+
209
+ .qs-atoms-info-box {
210
+ position: absolute;
211
+ display: none;
212
+ left: 40px;
213
+ top: 50px;
214
+ border: 1px solid gray;
215
+ border-radius: 8px;
216
+ background-color: var(--qs-atoms-background-color);
217
+ color: var(--qs-atoms-primay-color);
218
+ padding: 16px;
219
+ width: 250px;
220
+ }
221
+
222
+ .qs-atoms-info-box-grid {
223
+ display: grid;
224
+ grid-template-columns: 50px 200px;
225
+ padding: 8px;
226
+ }
@@ -0,0 +1,192 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ import {
5
+ createPlayerControls,
6
+ createScrubberControls,
7
+ createZoomControls,
8
+ } from "./controls.js";
9
+ import "./index.css";
10
+ import { Layout, type ZoneLayout, type TraceData } from "./layout.js";
11
+ import { addChildWithClass } from "./utils.js";
12
+
13
+ export type { TraceData, ZoneLayout };
14
+
15
+ export function Atoms(
16
+ container: HTMLElement,
17
+ zoneLayout: ZoneLayout,
18
+ trace: TraceData,
19
+ ) {
20
+ // On first load, Python might still be syncing the underlying model, so just bail if required data is missing
21
+ if (!zoneLayout.zones?.length || !trace.steps?.length) return;
22
+
23
+ container.classList.add("qs-atoms-app");
24
+ const toolstrip = addChildWithClass(container, "div", "qs-atoms-toolstrip");
25
+
26
+ const zoomControls = createZoomControls();
27
+ const playerControls = createPlayerControls();
28
+ const scrubberControls = createScrubberControls();
29
+ scrubberControls.setRange(trace.steps.length);
30
+
31
+ toolstrip.appendChild(zoomControls);
32
+ toolstrip.appendChild(scrubberControls.element);
33
+ toolstrip.appendChild(playerControls);
34
+
35
+ // Render the layout
36
+ const zones = addChildWithClass(container, "div", "qs-atoms-zones");
37
+ const layout = new Layout(zoneLayout, trace);
38
+ zones.appendChild(layout.container);
39
+
40
+ scrubberControls.setNavHandler((step: number) => layout.gotoStep(step));
41
+
42
+ function setAppWidth() {
43
+ const newWidth = layout.width * layout.scale + 32;
44
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
45
+ newWidth > 600
46
+ ? (container.style.width = `${newWidth}px`)
47
+ : (container.style.width = "600px");
48
+ }
49
+
50
+ function onZoomIn() {
51
+ layout.zoomIn();
52
+ setAppWidth();
53
+ }
54
+
55
+ function onZoomOut() {
56
+ layout.zoomOut();
57
+ setAppWidth();
58
+ }
59
+
60
+ // Wire up the controls
61
+ container.tabIndex = 0;
62
+ container.addEventListener("keydown", (e) => {
63
+ switch (e.key) {
64
+ case "ArrowRight":
65
+ e.preventDefault();
66
+ e.stopPropagation();
67
+ scrubberControls.next();
68
+ break;
69
+ case "ArrowLeft":
70
+ e.preventDefault();
71
+ e.stopPropagation();
72
+ scrubberControls.prev();
73
+ break;
74
+ case "ArrowUp":
75
+ e.preventDefault();
76
+ e.stopPropagation();
77
+ onZoomIn();
78
+ break;
79
+ case "ArrowDown":
80
+ e.preventDefault();
81
+ e.stopPropagation();
82
+ onZoomOut();
83
+ break;
84
+ case "f":
85
+ e.preventDefault();
86
+ e.stopPropagation();
87
+ layout.faster();
88
+ break;
89
+ case "s":
90
+ e.preventDefault();
91
+ e.stopPropagation();
92
+ layout.slower();
93
+ break;
94
+ case "p":
95
+ e.preventDefault();
96
+ e.stopPropagation();
97
+ onPlayPause();
98
+ break;
99
+ case "t":
100
+ e.preventDefault();
101
+ e.stopPropagation();
102
+ layout.cycleAnimation();
103
+ break;
104
+ }
105
+ });
106
+
107
+ const info = container.querySelector(
108
+ "[data-control='info']",
109
+ ) as SVGCircleElement;
110
+ const next = container.querySelector(
111
+ "[data-control='next']",
112
+ ) as SVGCircleElement;
113
+ const prev = container.querySelector(
114
+ "[data-control='prev']",
115
+ ) as SVGCircleElement;
116
+ const play = container.querySelector(
117
+ "[data-control='play']",
118
+ ) as SVGCircleElement;
119
+ const pause = container.querySelector(
120
+ "[data-control='pause']",
121
+ ) as SVGCircleElement;
122
+ const zoomIn = container.querySelector(
123
+ "[data-control='zoom-in']",
124
+ ) as SVGCircleElement;
125
+ const zoomOut = container.querySelector(
126
+ "[data-control='zoom-out']",
127
+ ) as SVGCircleElement;
128
+
129
+ let playTimer: any; // Different platforms have different types for setTimeout
130
+ function onPlayPause() {
131
+ // If it was playing, pause it
132
+ if (playTimer) {
133
+ pause.parentElement!.style.display = "none";
134
+ play.parentElement!.style.display = "inline";
135
+ clearTimeout(playTimer);
136
+ playTimer = undefined;
137
+ return;
138
+ }
139
+
140
+ // Else start playing
141
+ play.parentElement!.style.display = "none";
142
+ pause.parentElement!.style.display = "inline";
143
+
144
+ if (scrubberControls.isAtEnd()) scrubberControls.reset();
145
+
146
+ function onTimeout() {
147
+ if (scrubberControls.isAtEnd()) {
148
+ pause.parentElement!.style.display = "none";
149
+ play.parentElement!.style.display = "inline";
150
+ playTimer = undefined;
151
+ } else {
152
+ scrubberControls.next();
153
+ playTimer = setTimeout(onTimeout, layout.stepInterval);
154
+ }
155
+ }
156
+ playTimer = setTimeout(onTimeout, 0);
157
+ }
158
+
159
+ const infoBox = document.createElement("div");
160
+ infoBox.innerHTML = `
161
+ <b>Keyboard shortcuts</b>
162
+ <div class="qs-atoms-info-box-grid">
163
+ <div>Left</div><div>Step back</div>
164
+ <div>Right</div><div>Step forward</div>
165
+ <div>Up</div><div>Zoom in</div>
166
+ <div>Down</div><div>Zoom out</div>
167
+ <div>P</div><div>Play / Pause </div>
168
+ <div>F</div><div>Faster animation</div>
169
+ <div>S</div><div>Slower animation</div>
170
+ <div>T</div><div>Toggle animation type</div>
171
+ </div>
172
+ `;
173
+ infoBox.classList.add("qs-atoms-info-box");
174
+ container.appendChild(infoBox);
175
+
176
+ info.addEventListener("mouseover", () => {
177
+ infoBox.style.display = "block";
178
+ });
179
+ info.addEventListener("mouseout", () => {
180
+ infoBox.style.display = "none";
181
+ });
182
+
183
+ next.addEventListener("click", () => scrubberControls.next());
184
+ prev.addEventListener("click", () => scrubberControls.prev());
185
+ zoomIn.addEventListener("click", onZoomIn);
186
+ zoomOut.addEventListener("click", onZoomOut);
187
+
188
+ play.addEventListener("click", onPlayPause);
189
+ pause.addEventListener("click", onPlayPause);
190
+
191
+ setTimeout(onZoomOut, 16);
192
+ }