qsharp-lang 1.25.4-dev → 1.25.7-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/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 +1 -1
- package/lib/nodejs/qsc_wasm_bg.wasm +0 -0
- package/lib/web/qsc_wasm.js +1 -1
- package/lib/web/qsc_wasm_bg.wasm +0 -0
- package/package.json +2 -1
- package/ux/circuit-vis/angleExpression.ts +133 -0
- package/ux/circuit-vis/contextMenu.ts +8 -73
- package/ux/circuit-vis/events.ts +41 -1
- package/ux/circuit-vis/formatters/inputFormatter.ts +14 -6
- package/ux/circuit-vis/index.ts +12 -4
- package/ux/circuit-vis/panel.ts +65 -28
- package/ux/circuit-vis/sqore.ts +30 -16
- package/ux/circuit-vis/state-viz/stateViz.ts +748 -0
- package/ux/circuit-vis/state-viz/stateVizController.ts +285 -0
- package/ux/circuit-vis/state-viz/worker/index.ts +18 -0
- package/ux/circuit-vis/state-viz/worker/stateCompute.ts +260 -0
- package/ux/circuit-vis/state-viz/worker/stateVizPrep.ts +152 -0
- package/ux/circuit.tsx +15 -26
- package/ux/data.ts +5 -3
- package/ux/index.ts +2 -0
- package/ux/qdk-theme.css +15 -0
- package/ux/qsharp-circuit.css +310 -1
|
@@ -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: 02/
|
|
5
|
+
ms.date: 02/20/2026
|
|
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: 02/
|
|
5
|
+
ms.date: 02/20/2026
|
|
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: 02/
|
|
5
|
+
ms.date: 02/20/2026
|
|
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: 02/
|
|
5
|
+
ms.date: 02/20/2026
|
|
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 Microsoft Quantum Development Kit
|
|
4
4
|
description: Table of contents for the Q# standard libraries for Microsoft Quantum Development Kit
|
|
5
|
-
ms.date: 02/
|
|
5
|
+
ms.date: 02/20/2026
|
|
6
6
|
ms.topic: landing-page
|
|
7
7
|
---
|
|
8
8
|
|
package/lib/nodejs/qsc_wasm.cjs
CHANGED
|
@@ -1570,7 +1570,7 @@ module.exports.__wbindgen_cb_drop = function(arg0) {
|
|
|
1570
1570
|
return ret;
|
|
1571
1571
|
};
|
|
1572
1572
|
|
|
1573
|
-
module.exports.
|
|
1573
|
+
module.exports.__wbindgen_closure_wrapper6582 = function(arg0, arg1, arg2) {
|
|
1574
1574
|
const ret = makeMutClosure(arg0, arg1, 2071, __wbg_adapter_52);
|
|
1575
1575
|
return addHeapObject(ret);
|
|
1576
1576
|
};
|
|
Binary file
|
package/lib/web/qsc_wasm.js
CHANGED
|
@@ -1525,7 +1525,7 @@ function __wbg_get_imports() {
|
|
|
1525
1525
|
const ret = false;
|
|
1526
1526
|
return ret;
|
|
1527
1527
|
};
|
|
1528
|
-
imports.wbg.
|
|
1528
|
+
imports.wbg.__wbindgen_closure_wrapper6582 = function(arg0, arg1, arg2) {
|
|
1529
1529
|
const ret = makeMutClosure(arg0, arg1, 2071, __wbg_adapter_52);
|
|
1530
1530
|
return addHeapObject(ret);
|
|
1531
1531
|
};
|
package/lib/web/qsc_wasm_bg.wasm
CHANGED
|
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.25.
|
|
4
|
+
"version": "1.25.7-dev",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=16.17.0"
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"./debug-service-worker": "./dist/debug-service/worker-browser.js",
|
|
23
23
|
"./katas": "./dist/katas.js",
|
|
24
24
|
"./katas-md": "./dist/katas-md.js",
|
|
25
|
+
"./state-viz": "./ux/circuit-vis/state-viz/worker/index.ts",
|
|
25
26
|
"./ux": "./ux/index.ts",
|
|
26
27
|
"./qdk-theme.css": "./ux/qdk-theme.css"
|
|
27
28
|
},
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT license.
|
|
3
|
+
|
|
4
|
+
// Normalizes "pi" (any case) to "π" and trims whitespace for
|
|
5
|
+
// consistent storage and display.
|
|
6
|
+
export function normalizeAngleExpression(expr: string): string {
|
|
7
|
+
return expr.trim().replace(/pi/gi, "π");
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// Evaluate a simple arithmetic expression supporting numbers, + - * /, parentheses, and π.
|
|
11
|
+
// Returns `undefined` for invalid inputs.
|
|
12
|
+
export function evaluateAngleExpression(expr: string): number | undefined {
|
|
13
|
+
if (!expr) return undefined;
|
|
14
|
+
const src = normalizeAngleExpression(expr);
|
|
15
|
+
if (!src) return undefined;
|
|
16
|
+
|
|
17
|
+
// Tokenizer
|
|
18
|
+
type Tok = { type: "num" | "pi" | "op" | "lpar" | "rpar"; value?: string };
|
|
19
|
+
const toks: Tok[] = [];
|
|
20
|
+
let i = 0;
|
|
21
|
+
while (i < src.length) {
|
|
22
|
+
const ch = src[i];
|
|
23
|
+
if (ch === " " || ch === "\t" || ch === "\n") {
|
|
24
|
+
i++;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (ch === "(" || ch === ")") {
|
|
28
|
+
toks.push({ type: ch === "(" ? "lpar" : "rpar" });
|
|
29
|
+
i++;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (ch === "+" || ch === "-" || ch === "*" || ch === "/") {
|
|
33
|
+
toks.push({ type: "op", value: ch });
|
|
34
|
+
i++;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (ch === "π") {
|
|
38
|
+
toks.push({ type: "pi" });
|
|
39
|
+
i++;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
// number: digits with optional decimal part; no leading dot
|
|
43
|
+
if (ch === "." || /\d/.test(ch)) {
|
|
44
|
+
let j = i + 1;
|
|
45
|
+
while (j < src.length && /[0-9.]/.test(src[j])) j++;
|
|
46
|
+
const numStr = src.slice(i, j);
|
|
47
|
+
const valid = /^(?:\d+(?:\.\d*)?)$/.test(numStr);
|
|
48
|
+
if (!valid) return undefined;
|
|
49
|
+
toks.push({ type: "num", value: numStr });
|
|
50
|
+
i = j;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
// Unknown character
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Recursive descent parser
|
|
58
|
+
let k = 0;
|
|
59
|
+
const peek = () => toks[k];
|
|
60
|
+
const consume = () => toks[k++];
|
|
61
|
+
|
|
62
|
+
const parseExpr = (): number | undefined => {
|
|
63
|
+
let lhs = parseTerm();
|
|
64
|
+
if (lhs === undefined) return undefined;
|
|
65
|
+
while (
|
|
66
|
+
peek() &&
|
|
67
|
+
peek().type === "op" &&
|
|
68
|
+
(peek().value === "+" || peek().value === "-")
|
|
69
|
+
) {
|
|
70
|
+
const op = consume().value!;
|
|
71
|
+
const rhs = parseTerm();
|
|
72
|
+
if (rhs === undefined) return undefined;
|
|
73
|
+
lhs = op === "+" ? lhs + rhs : lhs - rhs;
|
|
74
|
+
}
|
|
75
|
+
return lhs;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const parseTerm = (): number | undefined => {
|
|
79
|
+
let lhs = parseFactor();
|
|
80
|
+
if (lhs === undefined) return undefined;
|
|
81
|
+
while (
|
|
82
|
+
peek() &&
|
|
83
|
+
peek().type === "op" &&
|
|
84
|
+
(peek().value === "*" || peek().value === "/")
|
|
85
|
+
) {
|
|
86
|
+
const op = consume().value!;
|
|
87
|
+
const rhs = parseFactor();
|
|
88
|
+
if (rhs === undefined) return undefined;
|
|
89
|
+
lhs = op === "*" ? lhs * rhs : lhs / rhs;
|
|
90
|
+
}
|
|
91
|
+
return lhs;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const parseFactor = (): number | undefined => {
|
|
95
|
+
let sign = 1;
|
|
96
|
+
if (
|
|
97
|
+
peek() &&
|
|
98
|
+
peek().type === "op" &&
|
|
99
|
+
(peek().value === "+" || peek().value === "-")
|
|
100
|
+
) {
|
|
101
|
+
sign = consume().value! === "-" ? -1 : 1;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const t = peek();
|
|
105
|
+
if (!t) return undefined;
|
|
106
|
+
if (t.type === "num") {
|
|
107
|
+
consume();
|
|
108
|
+
return sign * parseFloat(t.value!);
|
|
109
|
+
}
|
|
110
|
+
if (t.type === "pi") {
|
|
111
|
+
consume();
|
|
112
|
+
return sign * Math.PI;
|
|
113
|
+
}
|
|
114
|
+
if (t.type === "lpar") {
|
|
115
|
+
consume();
|
|
116
|
+
const v = parseExpr();
|
|
117
|
+
if (peek() && peek().type === "rpar") consume();
|
|
118
|
+
else return undefined;
|
|
119
|
+
if (v === undefined) return undefined;
|
|
120
|
+
return sign * v;
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
const result = parseExpr();
|
|
126
|
+
if (result === undefined || k !== toks.length || !isFinite(result))
|
|
127
|
+
return undefined;
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function isValidAngleExpression(expr: string): boolean {
|
|
132
|
+
return evaluateAngleExpression(expr) !== undefined;
|
|
133
|
+
}
|
|
@@ -5,6 +5,10 @@ import { Parameter } from "./circuit.js";
|
|
|
5
5
|
import { removeControl, removeOperation } from "./circuitManipulation.js";
|
|
6
6
|
import { CircuitEvents } from "./events.js";
|
|
7
7
|
import { findGateElem, findOperation } from "./utils.js";
|
|
8
|
+
import {
|
|
9
|
+
isValidAngleExpression,
|
|
10
|
+
normalizeAngleExpression,
|
|
11
|
+
} from "./angleExpression.js";
|
|
8
12
|
|
|
9
13
|
/**
|
|
10
14
|
* Adds a context menu to a host element in the circuit visualization.
|
|
@@ -176,7 +180,7 @@ const promptForArguments = (
|
|
|
176
180
|
}
|
|
177
181
|
},
|
|
178
182
|
defaultValue,
|
|
179
|
-
|
|
183
|
+
isValidAngleExpression,
|
|
180
184
|
'Examples: "2.0 * π" or "π / 2.0"',
|
|
181
185
|
);
|
|
182
186
|
};
|
|
@@ -185,72 +189,6 @@ const promptForArguments = (
|
|
|
185
189
|
});
|
|
186
190
|
};
|
|
187
191
|
|
|
188
|
-
/**
|
|
189
|
-
* Validate a mathematical expression.
|
|
190
|
-
* @param input - The input string to validate.
|
|
191
|
-
* @returns True if the expression is valid, false otherwise.
|
|
192
|
-
*/
|
|
193
|
-
const validateExpression = (input: string): boolean => {
|
|
194
|
-
// Removes outermost parentheses
|
|
195
|
-
const removeParentheses = (expr: string): string => {
|
|
196
|
-
while (expr.startsWith("(") && expr.endsWith(")")) {
|
|
197
|
-
expr = expr.slice(1, -1).trim(); // Remove outermost parentheses
|
|
198
|
-
}
|
|
199
|
-
return expr;
|
|
200
|
-
};
|
|
201
|
-
|
|
202
|
-
// Validates parentheses balance and nesting
|
|
203
|
-
const validateParentheses = (expr: string): boolean => {
|
|
204
|
-
const stack: string[] = [];
|
|
205
|
-
for (const char of expr) {
|
|
206
|
-
if (char === "(") {
|
|
207
|
-
stack.push(char);
|
|
208
|
-
} else if (char === ")") {
|
|
209
|
-
if (stack.length === 0) {
|
|
210
|
-
return false; // Unmatched closing parenthesis
|
|
211
|
-
}
|
|
212
|
-
stack.pop();
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
return stack.length === 0; // Ensure no unmatched opening parentheses
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
// Validate the expression recursively
|
|
219
|
-
const validate = (expr: string): boolean => {
|
|
220
|
-
expr = expr.trim();
|
|
221
|
-
|
|
222
|
-
// Remove outermost parentheses
|
|
223
|
-
expr = removeParentheses(expr);
|
|
224
|
-
|
|
225
|
-
// Find and validate all sub-expressions within parentheses
|
|
226
|
-
const parenthesesRegex = /\(([^()]+)\)/g;
|
|
227
|
-
let match;
|
|
228
|
-
while ((match = parenthesesRegex.exec(expr)) !== null) {
|
|
229
|
-
const innerExpr = match[1];
|
|
230
|
-
if (!validate(innerExpr)) {
|
|
231
|
-
return false; // Invalid sub-expression
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// Replace the validated sub-expression with a placeholder that we know is valid
|
|
235
|
-
expr = expr.replace(match[0], "π");
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// Validate the remaining expression (without parentheses)
|
|
239
|
-
const sign = "[+-]?";
|
|
240
|
-
const number = "((\\d+(\\.\\d*)?))"; // Matches integers and decimals
|
|
241
|
-
const pi = "(?i:π)"; // Matches π
|
|
242
|
-
const value = `${sign}(${number}|${pi})`; // Matches a signed number or π
|
|
243
|
-
const operator = "[+\\-*/]"; // Matches arithmetic operators
|
|
244
|
-
const expressionRegex = new RegExp(
|
|
245
|
-
`^${value}(\\s*${operator}\\s*${value})*$`,
|
|
246
|
-
);
|
|
247
|
-
|
|
248
|
-
return expressionRegex.test(expr);
|
|
249
|
-
};
|
|
250
|
-
|
|
251
|
-
return validateParentheses(input) && validate(input);
|
|
252
|
-
};
|
|
253
|
-
|
|
254
192
|
/**
|
|
255
193
|
* Create a context menu item
|
|
256
194
|
* @param text - The text to display in the menu item
|
|
@@ -316,12 +254,9 @@ const _createInputPrompt = (
|
|
|
316
254
|
okButton.classList.add("prompt-button");
|
|
317
255
|
okButton.textContent = "OK";
|
|
318
256
|
|
|
319
|
-
// Function to replace "pi" with "π" (case-insensitive)
|
|
320
|
-
const replacePiWithSymbol = (input: string) => input.replace(/pi/gi, "π");
|
|
321
|
-
|
|
322
257
|
// Function to validate input and toggle the OK button
|
|
323
258
|
const validateAndToggleOkButton = () => {
|
|
324
|
-
const processedInput =
|
|
259
|
+
const processedInput = normalizeAngleExpression(inputElem.value);
|
|
325
260
|
const isValid = validateInput(processedInput);
|
|
326
261
|
okButton.disabled = !isValid;
|
|
327
262
|
};
|
|
@@ -337,9 +272,9 @@ const _createInputPrompt = (
|
|
|
337
272
|
}
|
|
338
273
|
});
|
|
339
274
|
|
|
340
|
-
okButton.disabled = !validateInput(
|
|
275
|
+
okButton.disabled = !validateInput(normalizeAngleExpression(defaultValue));
|
|
341
276
|
okButton.addEventListener("click", () => {
|
|
342
|
-
callback(
|
|
277
|
+
callback(normalizeAngleExpression(inputElem.value));
|
|
343
278
|
document.body.removeChild(overlay);
|
|
344
279
|
document.removeEventListener("keydown", handleGlobalKeyDown, true);
|
|
345
280
|
});
|
package/ux/circuit-vis/events.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
Circuit,
|
|
6
|
+
ComponentGrid,
|
|
7
|
+
Operation,
|
|
8
|
+
Qubit,
|
|
9
|
+
Unitary,
|
|
10
|
+
} from "./circuit.js";
|
|
5
11
|
import { Sqore } from "./sqore.js";
|
|
6
12
|
import { toolboxGateDictionary } from "./panel.js";
|
|
7
13
|
import {
|
|
@@ -39,6 +45,7 @@ import {
|
|
|
39
45
|
import { getOperationRegisters } from "../../src/utils.js";
|
|
40
46
|
|
|
41
47
|
let events: CircuitEvents | null = null;
|
|
48
|
+
let currentCircuitSvg: SVGElement | null = null;
|
|
42
49
|
|
|
43
50
|
/**
|
|
44
51
|
* Creates and attaches the events that allow editing of the circuit.
|
|
@@ -55,6 +62,26 @@ const enableEvents = (
|
|
|
55
62
|
events.dispose();
|
|
56
63
|
}
|
|
57
64
|
events = new CircuitEvents(container, sqore, useRefresh);
|
|
65
|
+
|
|
66
|
+
// Track which rendered SVG the current `events` instance is associated with.
|
|
67
|
+
// This lets other modules avoid reading a stale model during a re-render where
|
|
68
|
+
// the SVG has been replaced but `enableEvents` hasn't run yet.
|
|
69
|
+
currentCircuitSvg = container.querySelector("svg.qviz") as SVGElement | null;
|
|
70
|
+
|
|
71
|
+
// Signal that the circuit model (events + model snapshot) is now ready.
|
|
72
|
+
// The state visualization uses this to re-render without relying on polling.
|
|
73
|
+
try {
|
|
74
|
+
const CustomEventCtor = (globalThis as any).CustomEvent as
|
|
75
|
+
| (new (type: string, init?: CustomEventInit) => CustomEvent)
|
|
76
|
+
| undefined;
|
|
77
|
+
if (CustomEventCtor && typeof container.dispatchEvent === "function") {
|
|
78
|
+
container.dispatchEvent(
|
|
79
|
+
new CustomEventCtor("qsharp:circuit:modelReady", { bubbles: true }),
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
} catch {
|
|
83
|
+
// ignore
|
|
84
|
+
}
|
|
58
85
|
};
|
|
59
86
|
|
|
60
87
|
class CircuitEvents {
|
|
@@ -1062,3 +1089,16 @@ const _createConfirmPrompt = (
|
|
|
1062
1089
|
};
|
|
1063
1090
|
|
|
1064
1091
|
export { enableEvents, CircuitEvents };
|
|
1092
|
+
|
|
1093
|
+
// Provide access to the current circuit model, but only if it matches the
|
|
1094
|
+
// currently-rendered SVG element. This prevents state visualization from
|
|
1095
|
+
// computing against the previous render's model during a re-render.
|
|
1096
|
+
export function getCurrentCircuitModel(
|
|
1097
|
+
expectedSvg?: SVGElement | null,
|
|
1098
|
+
): Circuit | null {
|
|
1099
|
+
if (events == null) return null;
|
|
1100
|
+
if (expectedSvg && currentCircuitSvg && expectedSvg !== currentCircuitSvg) {
|
|
1101
|
+
return null;
|
|
1102
|
+
}
|
|
1103
|
+
return { qubits: events.qubits, componentGrid: events.componentGrid };
|
|
1104
|
+
}
|
|
@@ -45,6 +45,7 @@ const formatInputs = (
|
|
|
45
45
|
// ╎╎ ┌─┐ ╎╎
|
|
46
46
|
// ───┼┼─│X│─┼┼──
|
|
47
47
|
// ╎╎ └╥┘ ╎╎
|
|
48
|
+
// ╎╎ ║ ╎╎
|
|
48
49
|
// ╎╎ ╚══╪╪══
|
|
49
50
|
// ╎╎ ╎╎
|
|
50
51
|
// ╎└╌╌╌╌╌┘╎
|
|
@@ -63,6 +64,7 @@ const formatInputs = (
|
|
|
63
64
|
// ╎╎ ┌─┐ ╎╎
|
|
64
65
|
// ───┼┼─│X│─┼┼──
|
|
65
66
|
// ╎╎ └╥┘ ╎╎
|
|
67
|
+
// ╎╎ ║ ╎╎
|
|
66
68
|
// ╎╎ ╚══╪╪══
|
|
67
69
|
// ╎╎ ╎╎
|
|
68
70
|
// ╎└╌╌╌╌╌┘╎
|
|
@@ -76,6 +78,7 @@ const formatInputs = (
|
|
|
76
78
|
// ╎╎ ┌─┐ ╎╎
|
|
77
79
|
// currY -> ───┼┼─│X│─┼┼──
|
|
78
80
|
// ╎╎ └╥┘ ╎╎
|
|
81
|
+
// ╎╎ ║ ╎╎
|
|
79
82
|
// ╎╎ ╚══╪╪══
|
|
80
83
|
// ╎╎ ╎╎
|
|
81
84
|
// ╎└╌╌╌╌╌┘╎
|
|
@@ -95,14 +98,15 @@ const formatInputs = (
|
|
|
95
98
|
y: currY,
|
|
96
99
|
};
|
|
97
100
|
|
|
98
|
-
currY += gateHeight / 2;
|
|
101
|
+
currY += gatePadding + gateHeight / 2;
|
|
99
102
|
|
|
100
103
|
// ┌╌╌╌╌╌╌╌┐
|
|
101
104
|
// ╎┌╌╌╌╌╌┐╎
|
|
102
105
|
// ╎╎ ╎╎
|
|
103
106
|
// ╎╎ ┌─┐ ╎╎
|
|
104
107
|
// ───┼┼─│X│─┼┼──
|
|
105
|
-
//
|
|
108
|
+
// ╎╎ └╥┘ ╎╎
|
|
109
|
+
// currY -> ╎╎ ║ ╎╎
|
|
106
110
|
// ╎╎ ╚══╪╪══
|
|
107
111
|
// ╎╎ ╎╎
|
|
108
112
|
// ╎└╌╌╌╌╌┘╎
|
|
@@ -111,8 +115,8 @@ const formatInputs = (
|
|
|
111
115
|
// Increment current height by classical register height for attached classical registers
|
|
112
116
|
|
|
113
117
|
// Add classical wires
|
|
114
|
-
registers[id].children = Array.from(Array(numResults), () => {
|
|
115
|
-
currY +=
|
|
118
|
+
registers[id].children = Array.from(Array(numResults ?? 0), () => {
|
|
119
|
+
currY += gateHeight / 2 + gatePadding;
|
|
116
120
|
|
|
117
121
|
// ┌╌╌╌╌╌╌╌┐
|
|
118
122
|
// ╎┌╌╌╌╌╌┐╎
|
|
@@ -120,6 +124,7 @@ const formatInputs = (
|
|
|
120
124
|
// ╎╎ ┌─┐ ╎╎
|
|
121
125
|
// ───┼┼─│X│─┼┼──
|
|
122
126
|
// ╎╎ └╥┘ ╎╎
|
|
127
|
+
// ╎╎ ║ ╎╎
|
|
123
128
|
// currY -> ╎╎ ╚══╪╪══
|
|
124
129
|
// ╎╎ ╎╎
|
|
125
130
|
// ╎└╌╌╌╌╌┘╎
|
|
@@ -129,17 +134,19 @@ const formatInputs = (
|
|
|
129
134
|
type: RegisterType.Classical,
|
|
130
135
|
y: currY,
|
|
131
136
|
};
|
|
137
|
+
|
|
138
|
+
currY += gateHeight / 2 + gatePadding;
|
|
139
|
+
|
|
132
140
|
return clsReg;
|
|
133
141
|
});
|
|
134
142
|
|
|
135
|
-
currY += gatePadding + gateHeight / 2;
|
|
136
|
-
|
|
137
143
|
// ┌╌╌╌╌╌╌╌┐
|
|
138
144
|
// ╎┌╌╌╌╌╌┐╎
|
|
139
145
|
// ╎╎ ╎╎
|
|
140
146
|
// ╎╎ ┌─┐ ╎╎
|
|
141
147
|
// ───┼┼─│X│─┼┼──
|
|
142
148
|
// ╎╎ └╥┘ ╎╎
|
|
149
|
+
// ╎╎ ║ ╎╎
|
|
143
150
|
// ╎╎ ╚══╪╪══
|
|
144
151
|
// currY -> ╎╎ ╎╎
|
|
145
152
|
// ╎└╌╌╌╌╌┘╎
|
|
@@ -155,6 +162,7 @@ const formatInputs = (
|
|
|
155
162
|
// ╎╎ └╥┘ ╎╎
|
|
156
163
|
// ╎╎ ║ ╎╎
|
|
157
164
|
// ╎╎ ╚══╪╪══
|
|
165
|
+
// ╎╎ ╎╎
|
|
158
166
|
// ╎└╌╌╌╌╌┘╎
|
|
159
167
|
// └╌╌╌╌╌╌╌┘
|
|
160
168
|
// currY ->
|
package/ux/circuit-vis/index.ts
CHANGED
|
@@ -9,10 +9,16 @@ import { CircuitGroup } from "./circuit.js";
|
|
|
9
9
|
*
|
|
10
10
|
* @param circuitGroup Group of circuits to be visualized.
|
|
11
11
|
* @param container HTML element for rendering visualization into.
|
|
12
|
-
* @param
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* @param options Rendering/interaction options.
|
|
13
|
+
* - `renderDepth`: Initial layer depth at which to render gates.
|
|
14
|
+
* - `renderLocations`: Callback to generate links for source locations.
|
|
15
|
+
* - `editor`: When provided, enables editing behaviors and requires:
|
|
16
|
+
* - `editCallback`: Called when the circuit is edited.
|
|
17
|
+
* - `runCallback` (optional): When provided, enables the Run button.
|
|
18
|
+
* - `computeStateVizColumnsForCircuitModel` (optional): When provided,
|
|
19
|
+
* delegates async state visualization computation to the host, which
|
|
20
|
+
* is necessary for large circuits and/or when using a Web Worker (e.g. in VS Code).
|
|
21
|
+
* When omitted, state visualization will be computed on the main thread.
|
|
16
22
|
*/
|
|
17
23
|
export const draw = (
|
|
18
24
|
circuitGroup: CircuitGroup,
|
|
@@ -23,6 +29,8 @@ export const draw = (
|
|
|
23
29
|
sqore.draw(container);
|
|
24
30
|
};
|
|
25
31
|
|
|
32
|
+
export type { DrawOptions, EditorHandlers } from "./sqore.js";
|
|
33
|
+
|
|
26
34
|
// Export types
|
|
27
35
|
export type {
|
|
28
36
|
CircuitGroup,
|