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