qsharp-lang 1.15.2-dev → 1.15.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/katas-content.generated.js +5 -5
- package/dist/katas-content.generated.md.js +5 -5
- package/dist/samples.generated.js +6 -0
- package/dist/shared/legacyCircuitUpdate.js +1 -0
- package/dist/shared/register.d.ts +5 -5
- package/docs/Microsoft.Quantum.Core/Length.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 +25 -0
- 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/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/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 +2 -1
- package/docs/Std.Convert/BigIntAsBoolArray.md +1 -1
- package/docs/Std.Convert/BigIntAsInt.md +30 -0
- 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 +2 -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/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/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 +8 -5
- package/docs/Std.Math/RoundHalfAwayFromZero.md +27 -0
- 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 +3 -2
- 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/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/EndEstimateCaching.md +1 -1
- package/docs/Std.ResourceEstimation/EndRepeatEstimates.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/docs/toc.yml +3 -0
- package/lib/node/qsc_wasm.cjs +2 -2
- package/lib/node/qsc_wasm.d.cts +3 -6
- package/lib/node/qsc_wasm_bg.wasm +0 -0
- package/lib/web/qsc_wasm.d.ts +3 -6
- package/lib/web/qsc_wasm.js +2 -2
- package/lib/web/qsc_wasm_bg.wasm +0 -0
- package/package.json +1 -1
- package/ux/circuit-vis/circuitManipulation.ts +31 -9
- package/ux/circuit-vis/contextMenu.ts +42 -18
- package/ux/circuit-vis/draggable.ts +3 -3
- package/ux/circuit-vis/events.ts +21 -6
- package/ux/circuit-vis/formatters/formatUtils.ts +3 -3
- package/ux/circuit-vis/formatters/gateFormatter.ts +106 -65
- package/ux/circuit-vis/formatters/inputFormatter.ts +9 -31
- package/ux/circuit-vis/formatters/registerFormatter.ts +4 -4
- package/ux/circuit-vis/{metadata.ts → gateRenderData.ts} +4 -4
- package/ux/circuit-vis/panel.ts +31 -32
- package/ux/circuit-vis/process.ts +114 -106
- package/ux/circuit-vis/register.ts +1 -1
- package/ux/circuit-vis/sqore.ts +14 -10
- package/ux/circuit-vis/utils.ts +56 -4
- package/ux/circuit.tsx +7 -1
- package/ux/qsharp-circuit.css +353 -334
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.BeginRepeatEstimates
|
|
3
3
|
title: BeginRepeatEstimates operation
|
|
4
4
|
description: "Q# BeginRepeatEstimates operation: 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."
|
|
5
|
-
ms.date: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: operation
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.CczCount
|
|
3
3
|
title: CczCount function
|
|
4
4
|
description: "Q# CczCount function: 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`."
|
|
5
|
-
ms.date: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: function
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
uid: Qdk.Std.ResourceEstimation.EndEstimateCaching
|
|
3
3
|
title: EndEstimateCaching function
|
|
4
4
|
description: "Q# EndEstimateCaching function: 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."
|
|
5
|
-
ms.date: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: function
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: operation
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: function
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: function
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: operation
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: function
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: function
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: function
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: function
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: operation
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: operation
|
|
8
8
|
qsharp.package: __Std__
|
|
@@ -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: 04/
|
|
5
|
+
ms.date: 04/30/2025
|
|
6
6
|
ms.topic: managed-reference
|
|
7
7
|
qsharp.kind: operation
|
|
8
8
|
qsharp.package: __Std__
|
package/docs/index.md
CHANGED
|
@@ -4,7 +4,7 @@ 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
5
|
author: {AUTHOR}
|
|
6
6
|
ms.author: {MS_AUTHOR}
|
|
7
|
-
ms.date: 04/
|
|
7
|
+
ms.date: 04/30/2025
|
|
8
8
|
ms.topic: landing-page
|
|
9
9
|
---
|
|
10
10
|
|
package/docs/toc.yml
CHANGED
|
@@ -92,6 +92,7 @@
|
|
|
92
92
|
- {name: ApplyCNOTChain, uid: Qdk.Std.Canon.ApplyCNOTChain}
|
|
93
93
|
- {name: ApplyControlledOnBitString, uid: Qdk.Std.Canon.ApplyControlledOnBitString}
|
|
94
94
|
- {name: ApplyControlledOnInt, uid: Qdk.Std.Canon.ApplyControlledOnInt}
|
|
95
|
+
- {name: ApplyOperationPowerA, uid: Qdk.Std.Canon.ApplyOperationPowerA}
|
|
95
96
|
- {name: ApplyP, uid: Qdk.Std.Canon.ApplyP}
|
|
96
97
|
- {name: ApplyPauli, uid: Qdk.Std.Canon.ApplyPauli}
|
|
97
98
|
- {name: ApplyPauliFromBitString, uid: Qdk.Std.Canon.ApplyPauliFromBitString}
|
|
@@ -115,6 +116,7 @@
|
|
|
115
116
|
- items:
|
|
116
117
|
- {name: Overview, uid: Qdk.Std.Convert-toc}
|
|
117
118
|
- {name: BigIntAsBoolArray, uid: Qdk.Std.Convert.BigIntAsBoolArray}
|
|
119
|
+
- {name: BigIntAsInt, uid: Qdk.Std.Convert.BigIntAsInt}
|
|
118
120
|
- {name: BoolArrayAsBigInt, uid: Qdk.Std.Convert.BoolArrayAsBigInt}
|
|
119
121
|
- {name: BoolArrayAsInt, uid: Qdk.Std.Convert.BoolArrayAsInt}
|
|
120
122
|
- {name: BoolArrayAsResultArray, uid: Qdk.Std.Convert.BoolArrayAsResultArray}
|
|
@@ -276,6 +278,7 @@
|
|
|
276
278
|
- {name: PowCP, uid: Qdk.Std.Math.PowCP}
|
|
277
279
|
- {name: RealMod, uid: Qdk.Std.Math.RealMod}
|
|
278
280
|
- {name: Round, uid: Qdk.Std.Math.Round}
|
|
281
|
+
- {name: RoundHalfAwayFromZero, uid: Qdk.Std.Math.RoundHalfAwayFromZero}
|
|
279
282
|
- {name: SignD, uid: Qdk.Std.Math.SignD}
|
|
280
283
|
- {name: SignI, uid: Qdk.Std.Math.SignI}
|
|
281
284
|
- {name: SignL, uid: Qdk.Std.Math.SignL}
|
package/lib/node/qsc_wasm.cjs
CHANGED
|
@@ -1499,8 +1499,8 @@ module.exports.__wbindgen_cb_drop = function(arg0) {
|
|
|
1499
1499
|
return ret;
|
|
1500
1500
|
};
|
|
1501
1501
|
|
|
1502
|
-
module.exports.
|
|
1503
|
-
const ret = makeMutClosure(arg0, arg1,
|
|
1502
|
+
module.exports.__wbindgen_closure_wrapper955 = function(arg0, arg1, arg2) {
|
|
1503
|
+
const ret = makeMutClosure(arg0, arg1, 387, __wbg_adapter_52);
|
|
1504
1504
|
return addHeapObject(ret);
|
|
1505
1505
|
};
|
|
1506
1506
|
|
package/lib/node/qsc_wasm.d.cts
CHANGED
|
@@ -102,7 +102,7 @@ export interface IWorkspaceConfiguration {
|
|
|
102
102
|
targetProfile?: TargetProfile;
|
|
103
103
|
packageType?: "exe" | "lib";
|
|
104
104
|
languageFeatures?: LanguageFeatures[];
|
|
105
|
-
lints?: { lint: string; level: string }[];
|
|
105
|
+
lints?: ({ lint: string; level: string } | { group: string; level: string })[];
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
export interface ICodeAction {
|
|
@@ -222,7 +222,7 @@ export interface IProgramConfig {
|
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
|
|
226
226
|
export interface IPackageInfo {
|
|
227
227
|
sources: [string, string][];
|
|
228
228
|
languageFeatures: string[];
|
|
@@ -240,10 +240,7 @@ export interface IProjectConfig {
|
|
|
240
240
|
*/
|
|
241
241
|
projectUri: string;
|
|
242
242
|
packageGraphSources: IPackageGraphSources;
|
|
243
|
-
lints: {
|
|
244
|
-
lint: string;
|
|
245
|
-
level: string;
|
|
246
|
-
}[];
|
|
243
|
+
lints: ({ lint: string; level: string } | { group: string; level: string })[];
|
|
247
244
|
errors: string[];
|
|
248
245
|
}
|
|
249
246
|
|
|
Binary file
|
package/lib/web/qsc_wasm.d.ts
CHANGED
|
@@ -102,7 +102,7 @@ export interface IWorkspaceConfiguration {
|
|
|
102
102
|
targetProfile?: TargetProfile;
|
|
103
103
|
packageType?: "exe" | "lib";
|
|
104
104
|
languageFeatures?: LanguageFeatures[];
|
|
105
|
-
lints?: { lint: string; level: string }[];
|
|
105
|
+
lints?: ({ lint: string; level: string } | { group: string; level: string })[];
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
export interface ICodeAction {
|
|
@@ -222,7 +222,7 @@ export interface IProgramConfig {
|
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
|
|
226
226
|
export interface IPackageInfo {
|
|
227
227
|
sources: [string, string][];
|
|
228
228
|
languageFeatures: string[];
|
|
@@ -240,10 +240,7 @@ export interface IProjectConfig {
|
|
|
240
240
|
*/
|
|
241
241
|
projectUri: string;
|
|
242
242
|
packageGraphSources: IPackageGraphSources;
|
|
243
|
-
lints: {
|
|
244
|
-
lint: string;
|
|
245
|
-
level: string;
|
|
246
|
-
}[];
|
|
243
|
+
lints: ({ lint: string; level: string } | { group: string; level: string })[];
|
|
247
244
|
errors: string[];
|
|
248
245
|
}
|
|
249
246
|
|
package/lib/web/qsc_wasm.js
CHANGED
|
@@ -1455,8 +1455,8 @@ function __wbg_get_imports() {
|
|
|
1455
1455
|
const ret = false;
|
|
1456
1456
|
return ret;
|
|
1457
1457
|
};
|
|
1458
|
-
imports.wbg.
|
|
1459
|
-
const ret = makeMutClosure(arg0, arg1,
|
|
1458
|
+
imports.wbg.__wbindgen_closure_wrapper955 = function(arg0, arg1, arg2) {
|
|
1459
|
+
const ret = makeMutClosure(arg0, arg1, 387, __wbg_adapter_52);
|
|
1460
1460
|
return addHeapObject(ret);
|
|
1461
1461
|
};
|
|
1462
1462
|
imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {
|
package/lib/web/qsc_wasm_bg.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -129,27 +129,49 @@ const _moveY = (
|
|
|
129
129
|
movingControl: boolean,
|
|
130
130
|
): void => {
|
|
131
131
|
// Check if the source operation already has a target or control on the target wire
|
|
132
|
-
let
|
|
132
|
+
let targets: Register[];
|
|
133
133
|
switch (sourceOperation.kind) {
|
|
134
134
|
case "unitary":
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
...(sourceOperation.controls || []),
|
|
138
|
-
];
|
|
135
|
+
case "ket":
|
|
136
|
+
targets = sourceOperation.targets;
|
|
139
137
|
break;
|
|
140
138
|
case "measurement":
|
|
141
|
-
|
|
139
|
+
targets = sourceOperation.qubits;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
let controls: Register[];
|
|
144
|
+
switch (sourceOperation.kind) {
|
|
145
|
+
case "unitary":
|
|
146
|
+
controls = sourceOperation.controls || [];
|
|
142
147
|
break;
|
|
148
|
+
case "measurement":
|
|
143
149
|
case "ket":
|
|
144
|
-
|
|
150
|
+
controls = [];
|
|
145
151
|
break;
|
|
146
152
|
}
|
|
147
153
|
|
|
148
|
-
|
|
149
|
-
|
|
154
|
+
let likeRegisters: Register[];
|
|
155
|
+
let unlikeRegisters: Register[];
|
|
156
|
+
if (movingControl) {
|
|
157
|
+
likeRegisters = controls;
|
|
158
|
+
unlikeRegisters = targets;
|
|
159
|
+
} else {
|
|
160
|
+
likeRegisters = targets;
|
|
161
|
+
unlikeRegisters = controls;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// If a similar register already exists, don't move the gate
|
|
165
|
+
if (likeRegisters.find((reg) => reg.qubit === targetWire)) {
|
|
150
166
|
return;
|
|
151
167
|
}
|
|
152
168
|
|
|
169
|
+
// If a different kind of register already exists, swap the control and target
|
|
170
|
+
if (unlikeRegisters.find((reg) => reg.qubit === targetWire)) {
|
|
171
|
+
const index = unlikeRegisters.findIndex((reg) => reg.qubit === targetWire);
|
|
172
|
+
unlikeRegisters[index].qubit = sourceWire;
|
|
173
|
+
}
|
|
174
|
+
|
|
153
175
|
switch (sourceOperation.kind) {
|
|
154
176
|
case "unitary":
|
|
155
177
|
if (movingControl) {
|
|
@@ -238,7 +238,7 @@ const validateExpression = (input: string): boolean => {
|
|
|
238
238
|
// Validate the remaining expression (without parentheses)
|
|
239
239
|
const sign = "[+-]?";
|
|
240
240
|
const number = "((\\d+(\\.\\d*)?))"; // Matches integers and decimals
|
|
241
|
-
const pi = "(?i
|
|
241
|
+
const pi = "(?i:π)"; // Matches π
|
|
242
242
|
const value = `${sign}(${number}|${pi})`; // Matches a signed number or π
|
|
243
243
|
const operator = "[+\\-*/]"; // Matches arithmetic operators
|
|
244
244
|
const expressionRegex = new RegExp(
|
|
@@ -311,6 +311,39 @@ const _createInputPrompt = (
|
|
|
311
311
|
const buttonsContainer = document.createElement("div");
|
|
312
312
|
buttonsContainer.classList.add("prompt-buttons");
|
|
313
313
|
|
|
314
|
+
// Create the OK button
|
|
315
|
+
const okButton = document.createElement("button");
|
|
316
|
+
okButton.classList.add("prompt-button");
|
|
317
|
+
okButton.textContent = "OK";
|
|
318
|
+
|
|
319
|
+
// Function to replace "pi" with "π" (case-insensitive)
|
|
320
|
+
const replacePiWithSymbol = (input: string) => input.replace(/pi/gi, "π");
|
|
321
|
+
|
|
322
|
+
// Function to validate input and toggle the OK button
|
|
323
|
+
const validateAndToggleOkButton = () => {
|
|
324
|
+
const processedInput = replacePiWithSymbol(inputElem.value.trim());
|
|
325
|
+
const isValid = validateInput(processedInput);
|
|
326
|
+
okButton.disabled = !isValid;
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
// Add input event listener for validation
|
|
330
|
+
inputElem.addEventListener("input", validateAndToggleOkButton);
|
|
331
|
+
|
|
332
|
+
// Handle Enter key when input is focused
|
|
333
|
+
inputElem.addEventListener("keydown", (event) => {
|
|
334
|
+
if (event.key === "Enter" && !okButton.disabled) {
|
|
335
|
+
event.preventDefault();
|
|
336
|
+
okButton.click();
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
okButton.disabled = !validateInput(replacePiWithSymbol(defaultValue.trim()));
|
|
341
|
+
okButton.addEventListener("click", () => {
|
|
342
|
+
callback(replacePiWithSymbol(inputElem.value.trim()));
|
|
343
|
+
document.body.removeChild(overlay);
|
|
344
|
+
document.removeEventListener("keydown", handleGlobalKeyDown, true);
|
|
345
|
+
});
|
|
346
|
+
|
|
314
347
|
// Create the π button
|
|
315
348
|
const piButton = document.createElement("button");
|
|
316
349
|
piButton.textContent = "π";
|
|
@@ -325,16 +358,6 @@ const _createInputPrompt = (
|
|
|
325
358
|
validateAndToggleOkButton();
|
|
326
359
|
});
|
|
327
360
|
|
|
328
|
-
// Create the OK button
|
|
329
|
-
const okButton = document.createElement("button");
|
|
330
|
-
okButton.classList.add("prompt-button");
|
|
331
|
-
okButton.textContent = "OK";
|
|
332
|
-
okButton.disabled = !validateInput(defaultValue);
|
|
333
|
-
okButton.addEventListener("click", () => {
|
|
334
|
-
callback(inputElem.value.trim());
|
|
335
|
-
document.body.removeChild(overlay);
|
|
336
|
-
});
|
|
337
|
-
|
|
338
361
|
// Create the Cancel button
|
|
339
362
|
const cancelButton = document.createElement("button");
|
|
340
363
|
cancelButton.classList.add("prompt-button");
|
|
@@ -342,16 +365,17 @@ const _createInputPrompt = (
|
|
|
342
365
|
cancelButton.addEventListener("click", () => {
|
|
343
366
|
callback(null);
|
|
344
367
|
document.body.removeChild(overlay);
|
|
368
|
+
document.removeEventListener("keydown", handleGlobalKeyDown, true);
|
|
345
369
|
});
|
|
346
370
|
|
|
347
|
-
//
|
|
348
|
-
const
|
|
349
|
-
|
|
350
|
-
|
|
371
|
+
// Handle Escape key globally while prompt is open
|
|
372
|
+
const handleGlobalKeyDown = (event: KeyboardEvent) => {
|
|
373
|
+
if (event.key === "Escape") {
|
|
374
|
+
event.preventDefault();
|
|
375
|
+
cancelButton.click();
|
|
376
|
+
}
|
|
351
377
|
};
|
|
352
|
-
|
|
353
|
-
// Add input event listener for validation
|
|
354
|
-
inputElem.addEventListener("input", validateAndToggleOkButton);
|
|
378
|
+
document.addEventListener("keydown", handleGlobalKeyDown, true);
|
|
355
379
|
|
|
356
380
|
// Append buttons to the container
|
|
357
381
|
buttonsContainer.appendChild(piButton);
|
|
@@ -6,7 +6,7 @@ import { ComponentGrid, Operation } from "./circuit";
|
|
|
6
6
|
import { gatePadding, minGateWidth, startX } from "./constants";
|
|
7
7
|
import { box, controlDot } from "./formatters/formatUtils";
|
|
8
8
|
import { formatGate } from "./formatters/gateFormatter";
|
|
9
|
-
import {
|
|
9
|
+
import { toRenderData } from "./panel";
|
|
10
10
|
import { Sqore } from "./sqore";
|
|
11
11
|
import {
|
|
12
12
|
findLocation,
|
|
@@ -60,8 +60,8 @@ const createGhostElement = (
|
|
|
60
60
|
const ghost = isControl
|
|
61
61
|
? controlDot(20, 20)
|
|
62
62
|
: (() => {
|
|
63
|
-
const
|
|
64
|
-
return formatGate(
|
|
63
|
+
const ghostRenderData = toRenderData(selectedOperation, 0, 0);
|
|
64
|
+
return formatGate(ghostRenderData).cloneNode(true) as SVGElement;
|
|
65
65
|
})();
|
|
66
66
|
|
|
67
67
|
// Generate svg element to wrap around ghost element
|
package/ux/circuit-vis/events.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Microsoft Corporation.
|
|
2
2
|
// Licensed under the MIT license.
|
|
3
3
|
|
|
4
|
-
import cloneDeep from "lodash/cloneDeep";
|
|
5
|
-
import isEqual from "lodash/isEqual";
|
|
6
4
|
import { ComponentGrid, Operation, Qubit, Unitary } from "./circuit";
|
|
7
5
|
import { Sqore } from "./sqore";
|
|
8
6
|
import { toolboxGateDictionary } from "./panel";
|
|
@@ -15,6 +13,7 @@ import {
|
|
|
15
13
|
getWireData,
|
|
16
14
|
locationStringToIndexes,
|
|
17
15
|
findParentArray,
|
|
16
|
+
deepEqual,
|
|
18
17
|
} from "./utils";
|
|
19
18
|
import { addContextMenuToHostElem, promptForArguments } from "./contextMenu";
|
|
20
19
|
import {
|
|
@@ -420,7 +419,10 @@ class CircuitEvents {
|
|
|
420
419
|
dropzoneElems.forEach((dropzoneElem) => {
|
|
421
420
|
dropzoneElem.addEventListener("mouseup", async (ev: MouseEvent) => {
|
|
422
421
|
const copying = ev.ctrlKey;
|
|
423
|
-
|
|
422
|
+
// Create a deep copy of the component grid
|
|
423
|
+
const originalGrid = JSON.parse(
|
|
424
|
+
JSON.stringify(this.componentGrid),
|
|
425
|
+
) as ComponentGrid;
|
|
424
426
|
const targetLoc = dropzoneElem.getAttribute("data-dropzone-location");
|
|
425
427
|
const insertNewColumn =
|
|
426
428
|
dropzoneElem.getAttribute("data-dropzone-inter-column") == "true" ||
|
|
@@ -483,7 +485,7 @@ class CircuitEvents {
|
|
|
483
485
|
targetLoc,
|
|
484
486
|
this.selectedWire,
|
|
485
487
|
targetWire,
|
|
486
|
-
|
|
488
|
+
this.movingControl,
|
|
487
489
|
insertNewColumn,
|
|
488
490
|
);
|
|
489
491
|
} else {
|
|
@@ -512,8 +514,7 @@ class CircuitEvents {
|
|
|
512
514
|
this.selectedOperation = null;
|
|
513
515
|
this.movingControl = false;
|
|
514
516
|
|
|
515
|
-
if (
|
|
516
|
-
this.renderFn();
|
|
517
|
+
if (!deepEqual(originalGrid, this.componentGrid)) this.renderFn();
|
|
517
518
|
});
|
|
518
519
|
});
|
|
519
520
|
}
|
|
@@ -789,6 +790,7 @@ const _createConfirmPrompt = (
|
|
|
789
790
|
okButton.addEventListener("click", () => {
|
|
790
791
|
callback(true); // User confirmed
|
|
791
792
|
document.body.removeChild(overlay);
|
|
793
|
+
document.removeEventListener("keydown", handleGlobalKeyDown, true);
|
|
792
794
|
});
|
|
793
795
|
|
|
794
796
|
// Create the Cancel button
|
|
@@ -798,8 +800,21 @@ const _createConfirmPrompt = (
|
|
|
798
800
|
cancelButton.addEventListener("click", () => {
|
|
799
801
|
callback(false); // User canceled
|
|
800
802
|
document.body.removeChild(overlay);
|
|
803
|
+
document.removeEventListener("keydown", handleGlobalKeyDown, true);
|
|
801
804
|
});
|
|
802
805
|
|
|
806
|
+
// Handle Enter and Escape keys globally while prompt is open
|
|
807
|
+
const handleGlobalKeyDown = (event: KeyboardEvent) => {
|
|
808
|
+
if (event.key === "Enter") {
|
|
809
|
+
event.preventDefault();
|
|
810
|
+
okButton.click();
|
|
811
|
+
} else if (event.key === "Escape") {
|
|
812
|
+
event.preventDefault();
|
|
813
|
+
cancelButton.click();
|
|
814
|
+
}
|
|
815
|
+
};
|
|
816
|
+
document.addEventListener("keydown", handleGlobalKeyDown, true);
|
|
817
|
+
|
|
803
818
|
buttonsContainer.appendChild(okButton);
|
|
804
819
|
buttonsContainer.appendChild(cancelButton);
|
|
805
820
|
|
|
@@ -146,12 +146,12 @@ export const text = (
|
|
|
146
146
|
x: number,
|
|
147
147
|
y: number,
|
|
148
148
|
fs: number = labelFontSize,
|
|
149
|
-
):
|
|
150
|
-
const el
|
|
149
|
+
): SVGTextElement => {
|
|
150
|
+
const el = createSvgElement("text", {
|
|
151
151
|
"font-size": fs.toString(),
|
|
152
152
|
x: x.toString(),
|
|
153
153
|
y: y.toString(),
|
|
154
|
-
});
|
|
154
|
+
}) as SVGTextElement;
|
|
155
155
|
el.textContent = text;
|
|
156
156
|
return el;
|
|
157
157
|
};
|