qsharp-lang 1.6.1-dev → 1.6.2-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/dist/browser.d.ts +4 -8
  2. package/dist/browser.js +4 -4
  3. package/dist/compiler/compiler.d.ts +20 -37
  4. package/dist/compiler/compiler.js +30 -50
  5. package/dist/debug-service/debug-service.d.ts +3 -3
  6. package/dist/debug-service/debug-service.js +4 -3
  7. package/dist/katas-content.generated.js +28 -8
  8. package/dist/katas-content.generated.md.js +28 -8
  9. package/dist/language-service/language-service.d.ts +3 -4
  10. package/dist/language-service/language-service.js +8 -3
  11. package/dist/main.d.ts +3 -6
  12. package/dist/main.js +4 -4
  13. package/docs/Microsoft.Quantum.Arrays/All.md +1 -1
  14. package/docs/Microsoft.Quantum.Arrays/Any.md +1 -1
  15. package/docs/Microsoft.Quantum.Arrays/Chunks.md +1 -1
  16. package/docs/Microsoft.Quantum.Arrays/CircularlyShifted.md +1 -1
  17. package/docs/Microsoft.Quantum.Arrays/ColumnAt.md +1 -1
  18. package/docs/Microsoft.Quantum.Arrays/Count.md +1 -1
  19. package/docs/Microsoft.Quantum.Arrays/Diagonal.md +1 -1
  20. package/docs/Microsoft.Quantum.Arrays/DrawMany.md +1 -1
  21. package/docs/Microsoft.Quantum.Arrays/Enumerated.md +1 -1
  22. package/docs/Microsoft.Quantum.Arrays/Excluding.md +1 -1
  23. package/docs/Microsoft.Quantum.Arrays/Filtered.md +1 -1
  24. package/docs/Microsoft.Quantum.Arrays/FlatMapped.md +1 -1
  25. package/docs/Microsoft.Quantum.Arrays/Flattened.md +1 -1
  26. package/docs/Microsoft.Quantum.Arrays/Fold.md +1 -1
  27. package/docs/Microsoft.Quantum.Arrays/ForEach.md +1 -1
  28. package/docs/Microsoft.Quantum.Arrays/Head.md +1 -1
  29. package/docs/Microsoft.Quantum.Arrays/HeadAndRest.md +1 -1
  30. package/docs/Microsoft.Quantum.Arrays/IndexOf.md +1 -1
  31. package/docs/Microsoft.Quantum.Arrays/IndexRange.md +1 -1
  32. package/docs/Microsoft.Quantum.Arrays/Interleaved.md +1 -1
  33. package/docs/Microsoft.Quantum.Arrays/IsEmpty.md +1 -1
  34. package/docs/Microsoft.Quantum.Arrays/IsRectangularArray.md +1 -1
  35. package/docs/Microsoft.Quantum.Arrays/IsSorted.md +1 -1
  36. package/docs/Microsoft.Quantum.Arrays/IsSquareArray.md +1 -1
  37. package/docs/Microsoft.Quantum.Arrays/Mapped.md +1 -1
  38. package/docs/Microsoft.Quantum.Arrays/MappedByIndex.md +1 -1
  39. package/docs/Microsoft.Quantum.Arrays/MappedOverRange.md +1 -1
  40. package/docs/Microsoft.Quantum.Arrays/Most.md +1 -1
  41. package/docs/Microsoft.Quantum.Arrays/MostAndTail.md +1 -1
  42. package/docs/Microsoft.Quantum.Arrays/Padded.md +1 -1
  43. package/docs/Microsoft.Quantum.Arrays/Partitioned.md +1 -1
  44. package/docs/Microsoft.Quantum.Arrays/Rest.md +1 -1
  45. package/docs/Microsoft.Quantum.Arrays/Reversed.md +1 -1
  46. package/docs/Microsoft.Quantum.Arrays/SequenceI.md +1 -1
  47. package/docs/Microsoft.Quantum.Arrays/SequenceL.md +1 -1
  48. package/docs/Microsoft.Quantum.Arrays/Sorted.md +1 -1
  49. package/docs/Microsoft.Quantum.Arrays/Subarray.md +1 -1
  50. package/docs/Microsoft.Quantum.Arrays/Swapped.md +1 -1
  51. package/docs/Microsoft.Quantum.Arrays/Tail.md +1 -1
  52. package/docs/Microsoft.Quantum.Arrays/Transposed.md +1 -1
  53. package/docs/Microsoft.Quantum.Arrays/Unzipped.md +1 -1
  54. package/docs/Microsoft.Quantum.Arrays/Where.md +1 -1
  55. package/docs/Microsoft.Quantum.Arrays/Windows.md +1 -1
  56. package/docs/Microsoft.Quantum.Arrays/Zipped.md +1 -1
  57. package/docs/Microsoft.Quantum.Canon/ApplyCNOTChain.md +1 -1
  58. package/docs/Microsoft.Quantum.Canon/ApplyControlledOnBitString.md +1 -1
  59. package/docs/Microsoft.Quantum.Canon/ApplyControlledOnInt.md +1 -1
  60. package/docs/Microsoft.Quantum.Canon/ApplyP.md +1 -1
  61. package/docs/Microsoft.Quantum.Canon/ApplyPauli.md +1 -1
  62. package/docs/Microsoft.Quantum.Canon/ApplyPauliFromBitString.md +1 -1
  63. package/docs/Microsoft.Quantum.Canon/ApplyPauliFromInt.md +1 -1
  64. package/docs/Microsoft.Quantum.Canon/ApplyQFT.md +1 -1
  65. package/docs/Microsoft.Quantum.Canon/ApplyToEach.md +1 -1
  66. package/docs/Microsoft.Quantum.Canon/ApplyToEachA.md +1 -1
  67. package/docs/Microsoft.Quantum.Canon/ApplyToEachC.md +1 -1
  68. package/docs/Microsoft.Quantum.Canon/ApplyToEachCA.md +1 -1
  69. package/docs/Microsoft.Quantum.Canon/ApplyXorInPlace.md +1 -1
  70. package/docs/Microsoft.Quantum.Canon/ApplyXorInPlaceL.md +1 -1
  71. package/docs/Microsoft.Quantum.Canon/CX.md +1 -1
  72. package/docs/Microsoft.Quantum.Canon/CY.md +1 -1
  73. package/docs/Microsoft.Quantum.Canon/CZ.md +1 -1
  74. package/docs/Microsoft.Quantum.Canon/Fst.md +1 -1
  75. package/docs/Microsoft.Quantum.Canon/Snd.md +1 -1
  76. package/docs/Microsoft.Quantum.Canon/SwapReverseRegister.md +1 -1
  77. package/docs/Microsoft.Quantum.Convert/BigIntAsBoolArray.md +1 -1
  78. package/docs/Microsoft.Quantum.Convert/BoolArrayAsBigInt.md +1 -1
  79. package/docs/Microsoft.Quantum.Convert/BoolArrayAsInt.md +1 -1
  80. package/docs/Microsoft.Quantum.Convert/BoolArrayAsResultArray.md +1 -1
  81. package/docs/Microsoft.Quantum.Convert/BoolAsResult.md +1 -1
  82. package/docs/Microsoft.Quantum.Convert/ComplexAsComplexPolar.md +1 -1
  83. package/docs/Microsoft.Quantum.Convert/ComplexPolarAsComplex.md +1 -1
  84. package/docs/Microsoft.Quantum.Convert/IntAsBigInt.md +1 -1
  85. package/docs/Microsoft.Quantum.Convert/IntAsBoolArray.md +1 -1
  86. package/docs/Microsoft.Quantum.Convert/IntAsDouble.md +1 -1
  87. package/docs/Microsoft.Quantum.Convert/ResultArrayAsBoolArray.md +1 -1
  88. package/docs/Microsoft.Quantum.Convert/ResultArrayAsInt.md +1 -1
  89. package/docs/Microsoft.Quantum.Convert/ResultAsBool.md +1 -1
  90. package/docs/Microsoft.Quantum.Core/IsRangeEmpty.md +1 -1
  91. package/docs/Microsoft.Quantum.Core/Length.md +1 -1
  92. package/docs/Microsoft.Quantum.Core/RangeEnd.md +1 -1
  93. package/docs/Microsoft.Quantum.Core/RangeReverse.md +1 -1
  94. package/docs/Microsoft.Quantum.Core/RangeStart.md +1 -1
  95. package/docs/Microsoft.Quantum.Core/RangeStep.md +1 -1
  96. package/docs/Microsoft.Quantum.Core/Repeated.md +1 -1
  97. package/docs/Microsoft.Quantum.Diagnostics/DumpMachine.md +1 -1
  98. package/docs/Microsoft.Quantum.Diagnostics/DumpRegister.md +1 -1
  99. package/docs/Microsoft.Quantum.Diagnostics/Fact.md +1 -1
  100. package/docs/Microsoft.Quantum.Intrinsic/AND.md +1 -1
  101. package/docs/Microsoft.Quantum.Intrinsic/CCNOT.md +1 -1
  102. package/docs/Microsoft.Quantum.Intrinsic/CNOT.md +1 -1
  103. package/docs/Microsoft.Quantum.Intrinsic/Exp.md +1 -1
  104. package/docs/Microsoft.Quantum.Intrinsic/H.md +1 -1
  105. package/docs/Microsoft.Quantum.Intrinsic/I.md +1 -1
  106. package/docs/Microsoft.Quantum.Intrinsic/M.md +1 -1
  107. package/docs/Microsoft.Quantum.Intrinsic/Measure.md +1 -1
  108. package/docs/Microsoft.Quantum.Intrinsic/Message.md +1 -1
  109. package/docs/Microsoft.Quantum.Intrinsic/R.md +1 -1
  110. package/docs/Microsoft.Quantum.Intrinsic/R1.md +1 -1
  111. package/docs/Microsoft.Quantum.Intrinsic/R1Frac.md +1 -1
  112. package/docs/Microsoft.Quantum.Intrinsic/RFrac.md +1 -1
  113. package/docs/Microsoft.Quantum.Intrinsic/Reset.md +1 -1
  114. package/docs/Microsoft.Quantum.Intrinsic/ResetAll.md +1 -1
  115. package/docs/Microsoft.Quantum.Intrinsic/Rx.md +1 -1
  116. package/docs/Microsoft.Quantum.Intrinsic/Rxx.md +1 -1
  117. package/docs/Microsoft.Quantum.Intrinsic/Ry.md +1 -1
  118. package/docs/Microsoft.Quantum.Intrinsic/Ryy.md +1 -1
  119. package/docs/Microsoft.Quantum.Intrinsic/Rz.md +1 -1
  120. package/docs/Microsoft.Quantum.Intrinsic/Rzz.md +1 -1
  121. package/docs/Microsoft.Quantum.Intrinsic/S.md +1 -1
  122. package/docs/Microsoft.Quantum.Intrinsic/SWAP.md +1 -1
  123. package/docs/Microsoft.Quantum.Intrinsic/T.md +1 -1
  124. package/docs/Microsoft.Quantum.Intrinsic/X.md +1 -1
  125. package/docs/Microsoft.Quantum.Intrinsic/Y.md +1 -1
  126. package/docs/Microsoft.Quantum.Intrinsic/Z.md +1 -1
  127. package/docs/Microsoft.Quantum.Logical/Xor.md +1 -1
  128. package/docs/Microsoft.Quantum.Math/AbsComplex.md +1 -1
  129. package/docs/Microsoft.Quantum.Math/AbsComplexPolar.md +1 -1
  130. package/docs/Microsoft.Quantum.Math/AbsD.md +1 -1
  131. package/docs/Microsoft.Quantum.Math/AbsI.md +1 -1
  132. package/docs/Microsoft.Quantum.Math/AbsL.md +1 -1
  133. package/docs/Microsoft.Quantum.Math/AbsSquaredComplex.md +1 -1
  134. package/docs/Microsoft.Quantum.Math/AbsSquaredComplexPolar.md +1 -1
  135. package/docs/Microsoft.Quantum.Math/ApproximateFactorial.md +1 -1
  136. package/docs/Microsoft.Quantum.Math/ArcCos.md +1 -1
  137. package/docs/Microsoft.Quantum.Math/ArcCosh.md +1 -1
  138. package/docs/Microsoft.Quantum.Math/ArcSin.md +1 -1
  139. package/docs/Microsoft.Quantum.Math/ArcSinh.md +1 -1
  140. package/docs/Microsoft.Quantum.Math/ArcTan.md +1 -1
  141. package/docs/Microsoft.Quantum.Math/ArcTan2.md +1 -1
  142. package/docs/Microsoft.Quantum.Math/ArcTanh.md +1 -1
  143. package/docs/Microsoft.Quantum.Math/ArgComplex.md +1 -1
  144. package/docs/Microsoft.Quantum.Math/ArgComplexPolar.md +1 -1
  145. package/docs/Microsoft.Quantum.Math/Binom.md +1 -1
  146. package/docs/Microsoft.Quantum.Math/BitSizeI.md +1 -1
  147. package/docs/Microsoft.Quantum.Math/BitSizeL.md +1 -1
  148. package/docs/Microsoft.Quantum.Math/Ceiling.md +1 -1
  149. package/docs/Microsoft.Quantum.Math/Complex.md +1 -1
  150. package/docs/Microsoft.Quantum.Math/ComplexPolar.md +1 -1
  151. package/docs/Microsoft.Quantum.Math/ContinuedFractionConvergentI.md +1 -1
  152. package/docs/Microsoft.Quantum.Math/ContinuedFractionConvergentL.md +1 -1
  153. package/docs/Microsoft.Quantum.Math/Cos.md +1 -1
  154. package/docs/Microsoft.Quantum.Math/Cosh.md +1 -1
  155. package/docs/Microsoft.Quantum.Math/DivRemI.md +1 -1
  156. package/docs/Microsoft.Quantum.Math/DivRemL.md +1 -1
  157. package/docs/Microsoft.Quantum.Math/DividedByC.md +1 -1
  158. package/docs/Microsoft.Quantum.Math/DividedByCP.md +1 -1
  159. package/docs/Microsoft.Quantum.Math/E.md +1 -1
  160. package/docs/Microsoft.Quantum.Math/ExpModI.md +1 -1
  161. package/docs/Microsoft.Quantum.Math/ExpModL.md +1 -1
  162. package/docs/Microsoft.Quantum.Math/ExtendedGreatestCommonDivisorI.md +1 -1
  163. package/docs/Microsoft.Quantum.Math/ExtendedGreatestCommonDivisorL.md +1 -1
  164. package/docs/Microsoft.Quantum.Math/FactorialI.md +1 -1
  165. package/docs/Microsoft.Quantum.Math/FactorialL.md +1 -1
  166. package/docs/Microsoft.Quantum.Math/Floor.md +1 -1
  167. package/docs/Microsoft.Quantum.Math/GreatestCommonDivisorI.md +1 -1
  168. package/docs/Microsoft.Quantum.Math/GreatestCommonDivisorL.md +1 -1
  169. package/docs/Microsoft.Quantum.Math/HammingWeightI.md +1 -1
  170. package/docs/Microsoft.Quantum.Math/InverseModI.md +1 -1
  171. package/docs/Microsoft.Quantum.Math/InverseModL.md +1 -1
  172. package/docs/Microsoft.Quantum.Math/IsCoprimeI.md +1 -1
  173. package/docs/Microsoft.Quantum.Math/IsCoprimeL.md +1 -1
  174. package/docs/Microsoft.Quantum.Math/IsInfinite.md +1 -1
  175. package/docs/Microsoft.Quantum.Math/IsNaN.md +1 -1
  176. package/docs/Microsoft.Quantum.Math/LargestFixedPoint.md +1 -1
  177. package/docs/Microsoft.Quantum.Math/Lg.md +1 -1
  178. package/docs/Microsoft.Quantum.Math/Log.md +1 -1
  179. package/docs/Microsoft.Quantum.Math/Log10.md +1 -1
  180. package/docs/Microsoft.Quantum.Math/LogFactorialD.md +1 -1
  181. package/docs/Microsoft.Quantum.Math/LogGammaD.md +1 -1
  182. package/docs/Microsoft.Quantum.Math/LogOf2.md +1 -1
  183. package/docs/Microsoft.Quantum.Math/Max.md +1 -1
  184. package/docs/Microsoft.Quantum.Math/MaxD.md +1 -1
  185. package/docs/Microsoft.Quantum.Math/MaxI.md +1 -1
  186. package/docs/Microsoft.Quantum.Math/MaxL.md +1 -1
  187. package/docs/Microsoft.Quantum.Math/Min.md +1 -1
  188. package/docs/Microsoft.Quantum.Math/MinD.md +1 -1
  189. package/docs/Microsoft.Quantum.Math/MinI.md +1 -1
  190. package/docs/Microsoft.Quantum.Math/MinL.md +1 -1
  191. package/docs/Microsoft.Quantum.Math/MinusC.md +1 -1
  192. package/docs/Microsoft.Quantum.Math/MinusCP.md +1 -1
  193. package/docs/Microsoft.Quantum.Math/ModulusI.md +1 -1
  194. package/docs/Microsoft.Quantum.Math/ModulusL.md +1 -1
  195. package/docs/Microsoft.Quantum.Math/NegationC.md +1 -1
  196. package/docs/Microsoft.Quantum.Math/NegationCP.md +1 -1
  197. package/docs/Microsoft.Quantum.Math/PI.md +1 -1
  198. package/docs/Microsoft.Quantum.Math/PNorm.md +1 -1
  199. package/docs/Microsoft.Quantum.Math/PNormalized.md +1 -1
  200. package/docs/Microsoft.Quantum.Math/PlusC.md +1 -1
  201. package/docs/Microsoft.Quantum.Math/PlusCP.md +1 -1
  202. package/docs/Microsoft.Quantum.Math/PowC.md +1 -1
  203. package/docs/Microsoft.Quantum.Math/PowCP.md +1 -1
  204. package/docs/Microsoft.Quantum.Math/RealMod.md +1 -1
  205. package/docs/Microsoft.Quantum.Math/Round.md +1 -1
  206. package/docs/Microsoft.Quantum.Math/SignD.md +1 -1
  207. package/docs/Microsoft.Quantum.Math/SignI.md +1 -1
  208. package/docs/Microsoft.Quantum.Math/SignL.md +1 -1
  209. package/docs/Microsoft.Quantum.Math/Sin.md +1 -1
  210. package/docs/Microsoft.Quantum.Math/Sinh.md +1 -1
  211. package/docs/Microsoft.Quantum.Math/SmallestFixedPoint.md +1 -1
  212. package/docs/Microsoft.Quantum.Math/Sqrt.md +1 -1
  213. package/docs/Microsoft.Quantum.Math/SquaredNorm.md +1 -1
  214. package/docs/Microsoft.Quantum.Math/Tan.md +1 -1
  215. package/docs/Microsoft.Quantum.Math/Tanh.md +1 -1
  216. package/docs/Microsoft.Quantum.Math/TimesC.md +1 -1
  217. package/docs/Microsoft.Quantum.Math/TimesCP.md +1 -1
  218. package/docs/Microsoft.Quantum.Math/TrailingZeroCountI.md +1 -1
  219. package/docs/Microsoft.Quantum.Math/TrailingZeroCountL.md +1 -1
  220. package/docs/Microsoft.Quantum.Math/Truncate.md +1 -1
  221. package/docs/Microsoft.Quantum.Measurement/MResetEachZ.md +1 -1
  222. package/docs/Microsoft.Quantum.Measurement/MResetX.md +1 -1
  223. package/docs/Microsoft.Quantum.Measurement/MResetY.md +1 -1
  224. package/docs/Microsoft.Quantum.Measurement/MResetZ.md +1 -1
  225. package/docs/Microsoft.Quantum.Measurement/MeasureAllZ.md +1 -1
  226. package/docs/Microsoft.Quantum.Measurement/MeasureEachZ.md +1 -1
  227. package/docs/Microsoft.Quantum.Measurement/MeasureInteger.md +1 -1
  228. package/docs/Microsoft.Quantum.ResourceEstimation/AccountForEstimates.md +1 -1
  229. package/docs/Microsoft.Quantum.ResourceEstimation/AuxQubitCount.md +1 -1
  230. package/docs/Microsoft.Quantum.ResourceEstimation/BeginEstimateCaching.md +1 -1
  231. package/docs/Microsoft.Quantum.ResourceEstimation/BeginRepeatEstimates.md +1 -1
  232. package/docs/Microsoft.Quantum.ResourceEstimation/CczCount.md +1 -1
  233. package/docs/Microsoft.Quantum.ResourceEstimation/EndEstimateCaching.md +1 -1
  234. package/docs/Microsoft.Quantum.ResourceEstimation/EndRepeatEstimates.md +1 -1
  235. package/docs/Microsoft.Quantum.ResourceEstimation/MeasurementCount.md +1 -1
  236. package/docs/Microsoft.Quantum.ResourceEstimation/PSSPCLayout.md +1 -1
  237. package/docs/Microsoft.Quantum.ResourceEstimation/RepeatEstimates.md +1 -1
  238. package/docs/Microsoft.Quantum.ResourceEstimation/RotationCount.md +1 -1
  239. package/docs/Microsoft.Quantum.ResourceEstimation/RotationDepth.md +1 -1
  240. package/docs/Microsoft.Quantum.ResourceEstimation/SingleVariant.md +1 -1
  241. package/docs/Microsoft.Quantum.ResourceEstimation/TCount.md +1 -1
  242. package/docs/Microsoft.Quantum.Unstable.Arithmetic/AddLE.md +1 -1
  243. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfEqualL.md +1 -1
  244. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfEqualLE.md +1 -1
  245. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterL.md +1 -1
  246. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterLE.md +1 -1
  247. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterOrEqualL.md +1 -1
  248. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfGreaterOrEqualLE.md +1 -1
  249. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessL.md +1 -1
  250. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessLE.md +1 -1
  251. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessOrEqualL.md +1 -1
  252. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ApplyIfLessOrEqualLE.md +1 -1
  253. package/docs/Microsoft.Quantum.Unstable.Arithmetic/FourierTDIncByLE.md +1 -1
  254. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByI.md +1 -1
  255. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByIUsingIncByLE.md +1 -1
  256. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByL.md +1 -1
  257. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByLE.md +1 -1
  258. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByLEUsingAddLE.md +1 -1
  259. package/docs/Microsoft.Quantum.Unstable.Arithmetic/IncByLUsingIncByLE.md +1 -1
  260. package/docs/Microsoft.Quantum.Unstable.Arithmetic/LookAheadDKRSAddLE.md +1 -1
  261. package/docs/Microsoft.Quantum.Unstable.Arithmetic/MAJ.md +1 -1
  262. package/docs/Microsoft.Quantum.Unstable.Arithmetic/ReflectAboutInteger.md +1 -1
  263. package/docs/Microsoft.Quantum.Unstable.Arithmetic/RippleCarryCGAddLE.md +1 -1
  264. package/docs/Microsoft.Quantum.Unstable.Arithmetic/RippleCarryCGIncByLE.md +1 -1
  265. package/docs/Microsoft.Quantum.Unstable.Arithmetic/RippleCarryTTKIncByLE.md +1 -1
  266. package/docs/Microsoft.Quantum.Unstable.StatePreparation/ApproximatelyPreparePureStateCP.md +1 -1
  267. package/docs/Microsoft.Quantum.Unstable.StatePreparation/PreparePureStateD.md +1 -1
  268. package/docs/Microsoft.Quantum.Unstable.TableLookup/Select.md +1 -1
  269. package/lib/node/qsc_wasm.cjs +133 -152
  270. package/lib/node/qsc_wasm.d.cts +62 -36
  271. package/lib/node/qsc_wasm_bg.wasm +0 -0
  272. package/lib/web/qsc_wasm.d.ts +71 -45
  273. package/lib/web/qsc_wasm.js +126 -150
  274. package/lib/web/qsc_wasm_bg.wasm +0 -0
  275. package/package.json +1 -1
  276. package/ux/estimatesOverview.tsx +2 -0
  277. package/ux/estimatesPanel.tsx +2 -0
  278. package/ux/qsharp-ux.css +30 -5
  279. package/ux/saveImage.tsx +107 -0
  280. package/ux/saveImageUtil.tsx +72 -0
  281. package/ux/scatterChart.tsx +31 -0
@@ -0,0 +1,107 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ // Writes resource estimator output to PNG file
5
+
6
+ import {
7
+ getImageSize,
8
+ createImage,
9
+ nodeToDataURI,
10
+ toArray,
11
+ } from "./saveImageUtil.js";
12
+
13
+ async function cloneSingleNode<T extends HTMLElement>(
14
+ node: T,
15
+ ): Promise<HTMLElement> {
16
+ return node.cloneNode(false) as T;
17
+ }
18
+
19
+ async function cloneChildren<T extends HTMLElement>(
20
+ nativeNode: T,
21
+ clonedNode: T,
22
+ ): Promise<T> {
23
+ let children: T[] = [];
24
+ children = toArray<T>((nativeNode.shadowRoot ?? nativeNode).childNodes);
25
+
26
+ // Depth-first traversal of DOM objects
27
+ await children.reduce(
28
+ (deferred, child) =>
29
+ deferred
30
+ .then(() => cloneNode(child))
31
+ .then((clonedChild: HTMLElement | null) => {
32
+ if (clonedChild) {
33
+ clonedNode.appendChild(clonedChild);
34
+ }
35
+ }),
36
+ Promise.resolve(),
37
+ );
38
+
39
+ return clonedNode;
40
+ }
41
+
42
+ function cloneCSSStyle<T extends HTMLElement>(nativeNode: T, clonedNode: T) {
43
+ const targetStyle = clonedNode.style;
44
+ if (!targetStyle) {
45
+ return;
46
+ }
47
+
48
+ const sourceStyle = window.getComputedStyle(nativeNode);
49
+ toArray<string>(sourceStyle).forEach((name) => {
50
+ const value = sourceStyle.getPropertyValue(name);
51
+ targetStyle.setProperty(name, value, sourceStyle.getPropertyPriority(name));
52
+ });
53
+ }
54
+
55
+ function decorate<T extends HTMLElement>(nativeNode: T, clonedNode: T): T {
56
+ cloneCSSStyle(nativeNode, clonedNode);
57
+ return clonedNode;
58
+ }
59
+
60
+ async function cloneNode<T extends HTMLElement>(node: T): Promise<T | null> {
61
+ return Promise.resolve(node)
62
+ .then((clonedNode) => cloneSingleNode(clonedNode) as Promise<T>)
63
+ .then((clonedNode) => cloneChildren(node, clonedNode))
64
+ .then((clonedNode) => decorate(node, clonedNode));
65
+ }
66
+
67
+ async function saveToPng<T extends HTMLElement>(
68
+ node: T,
69
+ backgroundColor: string,
70
+ ): Promise<string> {
71
+ const { width, height } = getImageSize(node);
72
+ const clonedNode = (await cloneNode(node)) as HTMLElement;
73
+ const uri = await nodeToDataURI(clonedNode, width, height);
74
+ const img = await createImage(uri);
75
+
76
+ const ratio = window.devicePixelRatio || 1;
77
+ const canvas = document.createElement("canvas");
78
+ canvas.width = width * ratio;
79
+ canvas.height = height * ratio;
80
+
81
+ const context = canvas.getContext("2d")!;
82
+ context.fillStyle = backgroundColor;
83
+ context.fillRect(0, 0, canvas.width, canvas.height);
84
+
85
+ context.drawImage(img, 0, 0, canvas.width, canvas.height);
86
+ return canvas.toDataURL();
87
+ }
88
+
89
+ export async function saveToImage<T extends HTMLElement>(
90
+ element: T,
91
+ filename = "image.png",
92
+ ) {
93
+ const backgroundColor =
94
+ getComputedStyle(element).getPropertyValue("--main-background");
95
+ const data = await saveToPng(element, backgroundColor);
96
+ const link = document.createElement("a");
97
+ if (typeof link.download === "string") {
98
+ link.href = data;
99
+ link.download = filename;
100
+
101
+ document.body.appendChild(link);
102
+ link.click();
103
+ document.body.removeChild(link);
104
+ } else {
105
+ window.open(data);
106
+ }
107
+ }
@@ -0,0 +1,72 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ export function toArray<T>(arrayLike: any): T[] {
5
+ const arr: T[] = [];
6
+ for (let i = 0, l = arrayLike.length; i < l; i++) {
7
+ arr.push(arrayLike[i]);
8
+ }
9
+
10
+ return arr;
11
+ }
12
+
13
+ function px<T extends HTMLElement>(node: T, styleProperty: string) {
14
+ const win = node.ownerDocument.defaultView || window;
15
+ const val = win.getComputedStyle(node).getPropertyValue(styleProperty);
16
+ return val ? parseFloat(val.replace("px", "")) : 0;
17
+ }
18
+
19
+ export function getImageSize<T extends HTMLElement>(node: T) {
20
+ const leftBorder = px(node, "border-left-width");
21
+ const rightBorder = px(node, "border-right-width");
22
+ const topBorder = px(node, "border-top-width");
23
+ const bottomBorder = px(node, "border-bottom-width");
24
+
25
+ return {
26
+ width: node.clientWidth + leftBorder + rightBorder,
27
+ height: node.clientHeight + topBorder + bottomBorder + 12, // Fixes up truncated region
28
+ };
29
+ }
30
+
31
+ export function createImage(url: string): Promise<HTMLImageElement> {
32
+ return new Promise((resolve, reject) => {
33
+ const img = new Image();
34
+ img.decode = () => resolve(img) as any;
35
+ img.onload = () => resolve(img);
36
+ img.onerror = reject;
37
+ img.crossOrigin = "anonymous";
38
+ img.decoding = "async";
39
+ img.src = url;
40
+ });
41
+ }
42
+
43
+ export async function svgToDataURI(svg: Element): Promise<string> {
44
+ return Promise.resolve()
45
+ .then(() => new XMLSerializer().serializeToString(svg))
46
+ .then(encodeURIComponent)
47
+ .then((html) => `data:image/svg+xml;charset=utf-8,${html}`);
48
+ }
49
+
50
+ export async function nodeToDataURI(
51
+ node: HTMLElement,
52
+ width: number,
53
+ height: number,
54
+ ): Promise<string> {
55
+ const xmlns = "http://www.w3.org/2000/svg";
56
+ const svg = document.createElementNS(xmlns, "svg");
57
+ const foreignObject = document.createElementNS(xmlns, "foreignObject");
58
+
59
+ svg.setAttribute("width", `${width}`);
60
+ svg.setAttribute("height", `${height}`);
61
+ svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
62
+
63
+ foreignObject.setAttribute("width", "100%");
64
+ foreignObject.setAttribute("height", "100%");
65
+ foreignObject.setAttribute("x", "0");
66
+ foreignObject.setAttribute("y", "0");
67
+ foreignObject.setAttribute("externalResourcesRequired", "true");
68
+
69
+ svg.appendChild(foreignObject);
70
+ foreignObject.appendChild(node);
71
+ return svgToDataURI(svg);
72
+ }
@@ -2,7 +2,9 @@
2
2
  // Licensed under the MIT License.
3
3
 
4
4
  import { useRef, useEffect } from "preact/hooks";
5
+ import { createRef } from "preact";
5
6
  import * as utils from "../src/utils.js";
7
+ import { saveToImage } from "./saveImage.js";
6
8
 
7
9
  export type ScatterSeries = {
8
10
  color: string;
@@ -31,6 +33,7 @@ export function ScatterChart(props: {
31
33
  yAxis: Axis;
32
34
  onPointSelected(seriesIndex: number, pointIndex: number): void;
33
35
  selectedPoint?: [number, number];
36
+ allowSaveImage: boolean;
34
37
  }) {
35
38
  const selectedTooltipDiv = useRef<HTMLDivElement>(null);
36
39
 
@@ -154,6 +157,12 @@ export function ScatterChart(props: {
154
157
  }
155
158
  const selectedPoint = getSelectedPointData();
156
159
 
160
+ const saveRef = createRef();
161
+
162
+ const handleSaveImage = async () => {
163
+ saveToImage(saveRef!.current);
164
+ };
165
+
157
166
  // Need to render first to get the element layout to position the tooltip
158
167
  useEffect(() => {
159
168
  if (!selectedTooltipDiv.current) return;
@@ -182,6 +191,7 @@ export function ScatterChart(props: {
182
191
  onMouseOver={(ev) => onPointMouseEvent(ev, "over")}
183
192
  onMouseOut={(ev) => onPointMouseEvent(ev, "out")}
184
193
  onClick={(ev) => onPointMouseEvent(ev, "click")}
194
+ ref={saveRef}
185
195
  >
186
196
  <line
187
197
  class="qs-scatterChart-axis"
@@ -316,6 +326,27 @@ export function ScatterChart(props: {
316
326
  </svg>
317
327
  <div class="qs-scatterChart-selectedInfo" ref={selectedTooltipDiv}></div>
318
328
  <div class="qs-scatterChart-tooltip"></div>
329
+ {props.allowSaveImage ? (
330
+ <button
331
+ role="button"
332
+ onClick={handleSaveImage}
333
+ className={"qs-estimatesOverview-saveIcon"}
334
+ >
335
+ <span>
336
+ <svg
337
+ width="75%"
338
+ height="75%"
339
+ viewBox="0 0 16 16"
340
+ xmlns="http://www.w3.org/2000/svg"
341
+ >
342
+ <path
343
+ className={"qs-estimatesOverview-saveIconSvgPath"}
344
+ d="M12.0147 2.8595L13.1397 3.9845L13.25 4.25V12.875L12.875 13.25H3.125L2.75 12.875V3.125L3.125 2.75H11.75L12.0147 2.8595ZM3.5 3.5V12.5H12.5V4.406L11.5947 3.5H10.25V6.5H5V3.5H3.5ZM8 3.5V5.75H9.5V3.5H8Z"
345
+ />
346
+ </svg>
347
+ </span>
348
+ </button>
349
+ ) : null}
319
350
  </div>
320
351
  );
321
352
  }