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
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.EndRepeatEstimates
3
3
  title: EndRepeatEstimates operation
4
4
  description: "Q# EndRepeatEstimates operation: Companion operation to `BeginRepeatEstimates`."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -0,0 +1,23 @@
1
+ ---
2
+ uid: Qdk.Std.ResourceEstimation.LeastFrequentlyUsed
3
+ title: LeastFrequentlyUsed function
4
+ description: "Q# LeastFrequentlyUsed function: The LFU (least frequently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`."
5
+ ms.date: 10/31/2025
6
+ qsharp.kind: function
7
+ qsharp.package: __Std__
8
+ qsharp.namespace: Std.ResourceEstimation
9
+ qsharp.name: LeastFrequentlyUsed
10
+ qsharp.summary: "The LFU (least frequently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`."
11
+ ---
12
+
13
+ # LeastFrequentlyUsed function
14
+
15
+ Fully qualified name: Std.ResourceEstimation.LeastFrequentlyUsed
16
+
17
+ ```qsharp
18
+ function LeastFrequentlyUsed() : Int
19
+ ```
20
+
21
+ ## Summary
22
+ The LFU (least frequently used) strategy that can be used as input to
23
+ `EnableMemoryComputeArchitecture`.
@@ -0,0 +1,23 @@
1
+ ---
2
+ uid: Qdk.Std.ResourceEstimation.LeastRecentlyUsed
3
+ title: LeastRecentlyUsed function
4
+ description: "Q# LeastRecentlyUsed function: The LRU (least recently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`."
5
+ ms.date: 10/31/2025
6
+ qsharp.kind: function
7
+ qsharp.package: __Std__
8
+ qsharp.namespace: Std.ResourceEstimation
9
+ qsharp.name: LeastRecentlyUsed
10
+ qsharp.summary: "The LRU (least recently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`."
11
+ ---
12
+
13
+ # LeastRecentlyUsed function
14
+
15
+ Fully qualified name: Std.ResourceEstimation.LeastRecentlyUsed
16
+
17
+ ```qsharp
18
+ function LeastRecentlyUsed() : Int
19
+ ```
20
+
21
+ ## Summary
22
+ The LRU (least recently used) strategy that can be used as input to
23
+ `EnableMemoryComputeArchitecture`.
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.MeasurementCount
3
3
  title: MeasurementCount function
4
4
  description: "Q# MeasurementCount function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number Measurements is equal to the `amount`."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.PSSPCLayout
3
3
  title: PSSPCLayout function
4
4
  description: "Q# PSSPCLayout function: Pass the value returned by the function to the `AccountForEstimates` operation to indicate Parallel Synthesis Sequential Pauli Computation (PSSPC) layout. See https://arxiv.org/pdf/2211.07629.pdf for details."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.RepeatEstimates
3
3
  title: RepeatEstimates operation
4
4
  description: "Q# RepeatEstimates operation: Instructs the resource estimator to assume that the resources from the call of this operation until a call to `Adjoint RepeatEstimates` are accounted for `count` times, without the need to execute the code that many times."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.RotationCount
3
3
  title: RotationCount function
4
4
  description: "Q# RotationCount function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number of rotations is equal to the `amount`."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.RotationDepth
3
3
  title: RotationDepth function
4
4
  description: "Q# RotationDepth function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the rotation depth is equal to the `amount`."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.SingleVariant
3
3
  title: SingleVariant function
4
4
  description: "Q# SingleVariant function: Used to specify that there's only one execution variant in `BeginEstimateCaching` function"
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation.TCount
3
3
  title: TCount function
4
4
  description: "Q# TCount function: Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number of the T gates is equal to the `amount`."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: function
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.ResourceEstimation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.ResourceEstimation-toc
3
3
  title: Std.ResourceEstimation namespace
4
4
  description: Table of contents for the Q# ResourceEstimation namespace
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  ms.topic: landing-page
7
7
  ---
8
8
 
@@ -17,8 +17,11 @@ The Std.ResourceEstimation namespace contains the following items:
17
17
  | [BeginEstimateCaching](xref:Qdk.Std.ResourceEstimation.BeginEstimateCaching) | Informs the resource estimator of the start of the code fragment for which estimates caching can be done. This function is only available when using resource estimator execution target. |
18
18
  | [BeginRepeatEstimates](xref:Qdk.Std.ResourceEstimation.BeginRepeatEstimates) | Instructs the resource estimator to assume that the resources from the call of this operation until a call to `EndRepeatEstimates` are accounted for `count` times, without the need to execute the code that many times. Calls to `BeginRepeatEstimates` and `EndRepeatEstimates` can be nested. A helper operation `RepeatEstimates` allows to call the two functions in a `within` block. |
19
19
  | [CczCount](xref:Qdk.Std.ResourceEstimation.CczCount) | Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number of the CCZ gates is equal to the `amount`. |
20
+ | [EnableMemoryComputeArchitecture](xref:Qdk.Std.ResourceEstimation.EnableMemoryComputeArchitecture) | Instructs the resource estimator to assume a memory/compute architecture, in which computation can only happen on compute qubits. The estimator will automatically move qubits from and back into the memory such that never more than `computeCapacity` qubits are used to compute at any time. |
20
21
  | [EndEstimateCaching](xref:Qdk.Std.ResourceEstimation.EndEstimateCaching) | Instructs the resource estimator to stop estimates caching because the code fragment in consideration is over. This function is only available when using resource estimator execution target. |
21
22
  | [EndRepeatEstimates](xref:Qdk.Std.ResourceEstimation.EndRepeatEstimates) | Companion operation to `BeginRepeatEstimates`. |
23
+ | [LeastFrequentlyUsed](xref:Qdk.Std.ResourceEstimation.LeastFrequentlyUsed) | The LFU (least frequently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`. |
24
+ | [LeastRecentlyUsed](xref:Qdk.Std.ResourceEstimation.LeastRecentlyUsed) | The LRU (least recently used) strategy that can be used as input to `EnableMemoryComputeArchitecture`. |
22
25
  | [MeasurementCount](xref:Qdk.Std.ResourceEstimation.MeasurementCount) | Returns a tuple that can be passed to the `AccountForEstimates` operation to specify that the number Measurements is equal to the `amount`. |
23
26
  | [PSSPCLayout](xref:Qdk.Std.ResourceEstimation.PSSPCLayout) | Pass the value returned by the function to the `AccountForEstimates` operation to indicate Parallel Synthesis Sequential Pauli Computation (PSSPC) layout. See https://arxiv.org/pdf/2211.07629.pdf for details. |
24
27
  | [RepeatEstimates](xref:Qdk.Std.ResourceEstimation.RepeatEstimates) | Instructs the resource estimator to assume that the resources from the call of this operation until a call to `Adjoint RepeatEstimates` are accounted for `count` times, without the need to execute the code that many times. |
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.StatePreparation.ApproximatelyPreparePureStateCP
3
3
  title: ApproximatelyPreparePureStateCP operation
4
4
  description: "Q# ApproximatelyPreparePureStateCP operation: Given a set of coefficients and a big-endian quantum register, prepares a state on that register described by the given coefficients, up to a given approximation tolerance."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.StatePreparation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.StatePreparation.PreparePureStateD
3
3
  title: PreparePureStateD operation
4
4
  description: "Q# PreparePureStateD operation: Given a set of coefficients and a big-endian quantum register, prepares a state on that register described by the given coefficients."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.StatePreparation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.StatePreparation.PrepareUniformSuperposition
3
3
  title: PrepareUniformSuperposition operation
4
4
  description: "Q# PrepareUniformSuperposition operation: Prepares a uniform superposition of states that represent integers 0 through `nStates - 1` in a little-endian `qubits` register."
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.StatePreparation
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.StatePreparation-toc
3
3
  title: Std.StatePreparation namespace
4
4
  description: Table of contents for the Q# StatePreparation namespace
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  ms.topic: landing-page
7
7
  ---
8
8
 
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.TableLookup.Select
3
3
  title: Select operation
4
4
  description: "Q# Select operation: Performs table lookup using a SELECT network"
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  qsharp.kind: operation
7
7
  qsharp.package: __Std__
8
8
  qsharp.namespace: Std.TableLookup
@@ -41,7 +41,7 @@ Zero-initialized target register
41
41
  The implementation of the SELECT network is based on unary encoding as
42
42
  presented in [1]. The recursive implementation of that algorithm is
43
43
  presented in [3]. The adjoint variant is optimized using a
44
- measurement-based unlookup operation [3]. The controlled adjoint variant
44
+ measurement-based unlookup operation [4]. The controlled adjoint variant
45
45
  is not optimized using this technique.
46
46
 
47
47
  ## References
@@ -52,3 +52,6 @@ is not optimized using this technique.
52
52
  "Windowed arithmetic"
53
53
  3. [arXiv:2211.01133](https://arxiv.org/abs/2211.01133)
54
54
  "Space-time optimized table lookup"
55
+ 4. [arXiv:2505.15917](https://arxiv.org/abs/2505.15917)
56
+ "How to factor 2048 bit RSA integers with less than a million noisy qubits"
57
+ by Craig Gidney, May 2025.
@@ -2,7 +2,7 @@
2
2
  uid: Qdk.Std.TableLookup-toc
3
3
  title: Std.TableLookup namespace
4
4
  description: Table of contents for the Q# TableLookup namespace
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  ms.topic: landing-page
7
7
  ---
8
8
 
package/docs/index.md CHANGED
@@ -2,7 +2,7 @@
2
2
  uid: Microsoft.Quantum.apiref-toc
3
3
  title: Q# standard libraries for the Azure Quantum Development Kit
4
4
  description: Table of contents for the Q# standard libraries for Azure Quantum Development Kit
5
- ms.date: 10/02/2025
5
+ ms.date: 10/31/2025
6
6
  ms.topic: landing-page
7
7
  ---
8
8
 
package/docs/toc.yml CHANGED
@@ -341,8 +341,11 @@
341
341
  - {name: BeginEstimateCaching, uid: Qdk.Std.ResourceEstimation.BeginEstimateCaching}
342
342
  - {name: BeginRepeatEstimates, uid: Qdk.Std.ResourceEstimation.BeginRepeatEstimates}
343
343
  - {name: CczCount, uid: Qdk.Std.ResourceEstimation.CczCount}
344
+ - {name: EnableMemoryComputeArchitecture, uid: Qdk.Std.ResourceEstimation.EnableMemoryComputeArchitecture}
344
345
  - {name: EndEstimateCaching, uid: Qdk.Std.ResourceEstimation.EndEstimateCaching}
345
346
  - {name: EndRepeatEstimates, uid: Qdk.Std.ResourceEstimation.EndRepeatEstimates}
347
+ - {name: LeastFrequentlyUsed, uid: Qdk.Std.ResourceEstimation.LeastFrequentlyUsed}
348
+ - {name: LeastRecentlyUsed, uid: Qdk.Std.ResourceEstimation.LeastRecentlyUsed}
346
349
  - {name: MeasurementCount, uid: Qdk.Std.ResourceEstimation.MeasurementCount}
347
350
  - {name: PSSPCLayout, uid: Qdk.Std.ResourceEstimation.PSSPCLayout}
348
351
  - {name: RepeatEstimates, uid: Qdk.Std.ResourceEstimation.RepeatEstimates}
Binary file
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "qsharp-lang",
3
3
  "description": "qsharp language package for quantum development",
4
- "version": "1.21.1-dev",
4
+ "version": "1.21.2-dev",
5
5
  "license": "MIT",
6
6
  "engines": {
7
7
  "node": ">=16.17.0"
@@ -25,17 +25,20 @@
25
25
  "./ux": "./ux/index.ts"
26
26
  },
27
27
  "scripts": {
28
- "build": "npm run docs && npm run generate && npm run build:tsc",
28
+ "build": "npm run docs && npm run generate && npm run build:tsc && npm run build:ux",
29
29
  "generate": "node generate_katas_content.js && node generate_samples_content.js",
30
30
  "generate:force": "node generate_katas_content.js --force && node generate_samples_content.js",
31
31
  "docs": "node generate_docs.js",
32
32
  "build:tsc": "node ../../../node_modules/typescript/bin/tsc -p ./src/tsconfig.json",
33
+ "build:ux": "node ../../../node_modules/typescript/bin/tsc -p ./ux/tsconfig.json",
33
34
  "tsc:watch": "node ../../../node_modules/typescript/bin/tsc -p ./src/tsconfig.json --watch --preserveWatchOutput",
34
35
  "test": "node --test"
35
36
  },
36
37
  "type": "module",
37
38
  "files": [
38
39
  "dist",
40
+ "!dist/ux",
41
+ "!dist/src",
39
42
  "docs",
40
43
  "lib",
41
44
  "ux"
@@ -15,7 +15,7 @@ export {
15
15
  type Unitary,
16
16
  type Parameter,
17
17
  type Qubit,
18
- } from "../../src/data-structures/circuit";
18
+ } from "../../src/data-structures/circuit.js";
19
19
 
20
- export { CURRENT_VERSION } from "../../src/data-structures/circuit";
21
- export { toCircuitGroup } from "../../src/data-structures/legacyCircuitUpdate";
20
+ export { CURRENT_VERSION } from "../../src/data-structures/circuit.js";
21
+ export { toCircuitGroup } from "../../src/data-structures/legacyCircuitUpdate.js";
@@ -1,17 +1,17 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { getOperationRegisters } from "../../src/utils";
5
- import { Column, ComponentGrid, Operation, Unitary } from "./circuit";
6
- import { CircuitEvents } from "./events";
7
- import { Register } from "./register";
4
+ import { getOperationRegisters } from "../../src/utils.js";
5
+ import { Column, ComponentGrid, Operation, Unitary } from "./circuit.js";
6
+ import { CircuitEvents } from "./events.js";
7
+ import { Register } from "./register.js";
8
8
  import {
9
9
  findOperation,
10
10
  findParentArray,
11
11
  findParentOperation,
12
12
  getChildTargets,
13
13
  locationStringToIndexes,
14
- } from "./utils";
14
+ } from "./utils.js";
15
15
 
16
16
  /**
17
17
  * Move an operation in the circuit.
@@ -1,10 +1,10 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { Parameter } from "./circuit";
5
- import { removeControl, removeOperation } from "./circuitManipulation";
6
- import { CircuitEvents } from "./events";
7
- import { findGateElem, findOperation } from "./utils";
4
+ import { Parameter } from "./circuit.js";
5
+ import { removeControl, removeOperation } from "./circuitManipulation.js";
6
+ import { CircuitEvents } from "./events.js";
7
+ import { findGateElem, findOperation } from "./utils.js";
8
8
 
9
9
  /**
10
10
  * Adds a context menu to a host element in the circuit visualization.
@@ -1,19 +1,19 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { ComponentGrid, Operation } from "./circuit";
4
+ import { ComponentGrid, Operation } from "./circuit.js";
5
5
  import {
6
6
  gatePadding,
7
7
  minGateWidth,
8
8
  registerHeight,
9
9
  regLineStart,
10
10
  startX,
11
- } from "./constants";
12
- import { box, controlDot, line } from "./formatters/formatUtils";
13
- import { formatGate } from "./formatters/gateFormatter";
14
- import { qubitInput } from "./formatters/inputFormatter";
15
- import { toRenderData } from "./panel";
16
- import { Sqore } from "./sqore";
11
+ } from "./constants.js";
12
+ import { box, controlDot, line } from "./formatters/formatUtils.js";
13
+ import { formatGate } from "./formatters/gateFormatter.js";
14
+ import { qubitInput } from "./formatters/inputFormatter.js";
15
+ import { toRenderData } from "./panel.js";
16
+ import { Sqore } from "./sqore.js";
17
17
  import {
18
18
  findLocation,
19
19
  getHostElems,
@@ -21,13 +21,12 @@ import {
21
21
  getToolboxElems,
22
22
  getWireData,
23
23
  locationStringToIndexes,
24
- } from "./utils";
24
+ } from "./utils.js";
25
25
 
26
26
  interface Context {
27
27
  container: HTMLElement;
28
28
  svg: SVGElement;
29
29
  operationGrid: ComponentGrid;
30
- wireData: number[];
31
30
  }
32
31
 
33
32
  /**
@@ -37,15 +36,14 @@ interface Context {
37
36
  * @param sqore Sqore object
38
37
  */
39
38
  const createDropzones = (container: HTMLElement, sqore: Sqore): void => {
40
- const svg = container.querySelector("svg[id]") as SVGElement;
39
+ const svg = container.querySelector("svg.qviz") as SVGElement;
41
40
 
42
41
  const context: Context = {
43
42
  container,
44
43
  svg,
45
44
  operationGrid: sqore.circuit.componentGrid,
46
- wireData: getWireData(container),
47
45
  };
48
- _addStyles(container, getWireData(container));
46
+ _addStyles(container);
49
47
  _addDataWires(container);
50
48
  svg.appendChild(_ghostQubitLayer(context));
51
49
  svg.appendChild(_dropzoneLayer(context));
@@ -66,7 +64,7 @@ const createGateGhost = (
66
64
  isControl: boolean,
67
65
  ) => {
68
66
  const ghost = isControl
69
- ? controlDot(20, 20)
67
+ ? controlDot(20, 20, [])
70
68
  : (() => {
71
69
  const ghostRenderData = toRenderData(selectedOperation, 0, 0);
72
70
  return formatGate(ghostRenderData).cloneNode(true) as SVGElement;
@@ -233,19 +231,14 @@ const removeAllWireDropzones = (circuitSvg: SVGElement) => {
233
231
  const _addDataWires = (container: HTMLElement) => {
234
232
  const elems = getHostElems(container);
235
233
  elems.forEach((elem) => {
236
- const { cY } = _center(elem);
237
- // i.e. cY = 40, wireData returns [40, 100, 140, 180]
234
+ const wireYs = _wireYs(elem);
235
+ // i.e. wireYs = [40], wireData returns [40, 100, 140, 180]
238
236
  // dataWire will return 0, which is the index of 40 in wireData
239
- const dataWire = getWireData(container).findIndex((y) => y === cY);
237
+ const dataWire = getWireData(container).findIndex((y) =>
238
+ wireYs.includes(y),
239
+ );
240
240
  if (dataWire !== -1) {
241
241
  elem.setAttribute("data-wire", `${dataWire}`);
242
- } else {
243
- const { y, height } = elem.getBBox();
244
- const wireData = getWireData(container);
245
- const groupDataWire = wireData.findIndex(
246
- (wireY) => wireY > y && wireY < y + height,
247
- );
248
- elem.setAttribute("data-wire", `${groupDataWire}`);
249
242
  }
250
243
  });
251
244
  };
@@ -255,18 +248,28 @@ const _addDataWires = (container: HTMLElement) => {
255
248
  * i.e. Gate 'Foo' spans on wire 0 (y=40), 1 (y=100), and 2 (y=140)
256
249
  * Function returns [40, 100, 140]
257
250
  */
258
- const _wireYs = (elem: SVGGraphicsElement, wireData: number[]): number[] => {
259
- const { y, height } = elem.getBBox();
260
- return wireData.filter((wireY) => wireY > y && wireY < y + height);
251
+ const _wireYs = (elem: SVGGraphicsElement): number[] => {
252
+ const wireYsAttr = elem.getAttribute("data-wire-ys");
253
+ if (wireYsAttr) {
254
+ try {
255
+ const wireYs = JSON.parse(wireYsAttr);
256
+ if (Array.isArray(wireYs) && wireYs.every((y) => typeof y === "number")) {
257
+ return wireYs;
258
+ }
259
+ } catch {
260
+ console.warn(`Invalid data-wire-ys attribute: ${wireYsAttr}`);
261
+ }
262
+ }
263
+ return [];
261
264
  };
262
265
 
263
266
  /**
264
267
  * Add custom styles specific to this module
265
268
  */
266
- const _addStyles = (container: HTMLElement, wireData: number[]): void => {
269
+ const _addStyles = (container: HTMLElement): void => {
267
270
  const elems = getHostElems(container);
268
271
  elems.forEach((elem) => {
269
- if (_wireYs(elem, wireData).length < 2) elem.style.cursor = "grab";
272
+ if (_wireYs(elem).length < 2) elem.style.cursor = "grab";
270
273
  });
271
274
 
272
275
  const toolBoxElems = getToolboxElems(container);
@@ -275,14 +278,6 @@ const _addStyles = (container: HTMLElement, wireData: number[]): void => {
275
278
  });
276
279
  };
277
280
 
278
- /**
279
- * Find center point of element
280
- */
281
- const _center = (elem: SVGGraphicsElement): { cX: number; cY: number } => {
282
- const { x, y, width, height } = elem.getBBox();
283
- return { cX: x + width / 2, cY: y + height / 2 };
284
- };
285
-
286
281
  /**
287
282
  * Create layer with ghost qubit wire and label
288
283
  */
@@ -427,15 +422,20 @@ const getColumnOffsetsAndWidths = (
427
422
  // Compute column widths
428
423
  const colWidths = elems.reduce(
429
424
  (acc, elem) => {
425
+ const widthAttr = elem.getAttribute("data-width");
426
+ if (!widthAttr) return acc;
427
+ const elemWidth: number = Number(widthAttr);
428
+ if (isNaN(elemWidth) || elemWidth <= 0) return acc;
429
+
430
430
  const location = findLocation(elem);
431
431
  if (!location) return acc;
432
432
  const indexes = locationStringToIndexes(location);
433
433
  if (indexes.length != 1) return acc;
434
434
  const [colIndex] = indexes[0];
435
435
  if (!acc[colIndex]) {
436
- acc[colIndex] = Math.max(minGateWidth, elem.getBBox().width);
436
+ acc[colIndex] = Math.max(minGateWidth, elemWidth);
437
437
  } else {
438
- acc[colIndex] = Math.max(acc[colIndex], elem.getBBox().width);
438
+ acc[colIndex] = Math.max(acc[colIndex], elemWidth);
439
439
  }
440
440
  return acc;
441
441
  },
@@ -1,9 +1,9 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { ComponentGrid, Operation, Qubit, Unitary } from "./circuit";
5
- import { Sqore } from "./sqore";
6
- import { toolboxGateDictionary } from "./panel";
4
+ import { ComponentGrid, Operation, Qubit, Unitary } from "./circuit.js";
5
+ import { Sqore } from "./sqore.js";
6
+ import { toolboxGateDictionary } from "./panel.js";
7
7
  import {
8
8
  getGateLocationString,
9
9
  findOperation,
@@ -16,8 +16,8 @@ import {
16
16
  deepEqual,
17
17
  getQubitLabelElems,
18
18
  getMinMaxRegIdx,
19
- } from "./utils";
20
- import { addContextMenuToHostElem, promptForArguments } from "./contextMenu";
19
+ } from "./utils.js";
20
+ import { addContextMenuToHostElem, promptForArguments } from "./contextMenu.js";
21
21
  import {
22
22
  removeTrailingUnusedQubits,
23
23
  addControl,
@@ -27,7 +27,7 @@ import {
27
27
  removeControl,
28
28
  removeOperation,
29
29
  resolveOverlappingOperations,
30
- } from "./circuitManipulation";
30
+ } from "./circuitManipulation.js";
31
31
  import {
32
32
  createGateGhost,
33
33
  createQubitLabelGhost,
@@ -35,8 +35,8 @@ import {
35
35
  getColumnOffsetsAndWidths,
36
36
  makeDropzoneBox,
37
37
  removeAllWireDropzones,
38
- } from "./draggable";
39
- import { getOperationRegisters } from "../../src/utils";
38
+ } from "./draggable.js";
39
+ import { getOperationRegisters } from "../../src/utils.js";
40
40
 
41
41
  let events: CircuitEvents | null = null;
42
42
 
@@ -82,7 +82,7 @@ class CircuitEvents {
82
82
  ) {
83
83
  this.renderFn = useRefresh;
84
84
 
85
- this.circuitSvg = container.querySelector("svg[id]") as SVGElement;
85
+ this.circuitSvg = container.querySelector("svg.qviz") as SVGElement;
86
86
  this.dropzoneLayer = container.querySelector(
87
87
  ".dropzone-layer",
88
88
  ) as SVGGElement;
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
2
  // Licensed under the MIT license.
3
3
 
4
- import { labelFontSize, svgNS } from "../constants";
4
+ import { labelFontSize, svgNS } from "../constants.js";
5
5
 
6
6
  // Helper functions for basic SVG components
7
7
 
@@ -98,12 +98,21 @@ export const circle = (
98
98
  *
99
99
  * @param x x coord of circle.
100
100
  * @param y y coord of circle.
101
- * @param radius Radius of circle.
101
+ * @param wireYs y coords of wire(s) connected to the control dot.
102
102
  *
103
103
  * @returns SVG element for control dot.
104
104
  */
105
- export const controlDot = (x: number, y: number, radius = 5): SVGElement =>
106
- circle(x, y, radius, "control-dot");
105
+ export const controlDot = (
106
+ x: number,
107
+ y: number,
108
+ wireYs: number[],
109
+ ): SVGElement => {
110
+ const radius = 5;
111
+ const dot = circle(x, y, radius, "control-dot");
112
+ dot.setAttribute("data-wire-ys", JSON.stringify(wireYs));
113
+ dot.setAttribute("data-width", `${2 * radius}`);
114
+ return dot;
115
+ };
107
116
 
108
117
  /**
109
118
  * Generate the SVG representation of a unitary box that represents an arbitrary unitary operation.
@@ -121,7 +130,7 @@ export const box = (
121
130
  y: number,
122
131
  width: number,
123
132
  height: number,
124
- className = "gate-unitary",
133
+ className: string,
125
134
  ): SVGElement =>
126
135
  createSvgElement("rect", {
127
136
  class: className,
@@ -211,7 +220,7 @@ export const dashedBox = (
211
220
  y: number,
212
221
  width: number,
213
222
  height: number,
214
- className?: string,
223
+ className: string,
215
224
  ): SVGElement => {
216
225
  const el: SVGElement = box(x, y, width, height, className);
217
226
  el.setAttribute("fill-opacity", "0");