@grafana/plugin-ui 0.10.0 → 0.10.2

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 (1059) hide show
  1. package/dist/cjs/index.cjs +40041 -0
  2. package/dist/cjs/index.cjs.map +1 -0
  3. package/dist/cjs/index.d.cts +76 -3
  4. package/dist/esm/_virtual/AsymmetricMatcher.js +4 -0
  5. package/dist/esm/_virtual/AsymmetricMatcher.js.map +1 -0
  6. package/dist/esm/_virtual/ConvertAnsi.js +4 -0
  7. package/dist/esm/_virtual/ConvertAnsi.js.map +1 -0
  8. package/dist/esm/_virtual/DOMCollection.js +4 -0
  9. package/dist/esm/_virtual/DOMCollection.js.map +1 -0
  10. package/dist/esm/_virtual/DOMElement.js +4 -0
  11. package/dist/esm/_virtual/DOMElement.js.map +1 -0
  12. package/dist/esm/_virtual/Immutable.js +4 -0
  13. package/dist/esm/_virtual/Immutable.js.map +1 -0
  14. package/dist/esm/_virtual/ReactElement.js +4 -0
  15. package/dist/esm/_virtual/ReactElement.js.map +1 -0
  16. package/dist/esm/_virtual/ReactTestComponent.js +4 -0
  17. package/dist/esm/_virtual/ReactTestComponent.js.map +1 -0
  18. package/dist/esm/_virtual/_commonjsHelpers.js +6 -0
  19. package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -0
  20. package/dist/esm/_virtual/alertRole.js +4 -0
  21. package/dist/esm/_virtual/alertRole.js.map +1 -0
  22. package/dist/esm/_virtual/alertdialogRole.js +4 -0
  23. package/dist/esm/_virtual/alertdialogRole.js.map +1 -0
  24. package/dist/esm/_virtual/applicationRole.js +4 -0
  25. package/dist/esm/_virtual/applicationRole.js.map +1 -0
  26. package/dist/esm/_virtual/ariaAbstractRoles.js +4 -0
  27. package/dist/esm/_virtual/ariaAbstractRoles.js.map +1 -0
  28. package/dist/esm/_virtual/ariaDpubRoles.js +4 -0
  29. package/dist/esm/_virtual/ariaDpubRoles.js.map +1 -0
  30. package/dist/esm/_virtual/ariaGraphicsRoles.js +4 -0
  31. package/dist/esm/_virtual/ariaGraphicsRoles.js.map +1 -0
  32. package/dist/esm/_virtual/ariaLiteralRoles.js +4 -0
  33. package/dist/esm/_virtual/ariaLiteralRoles.js.map +1 -0
  34. package/dist/esm/_virtual/ariaPropsMap.js +4 -0
  35. package/dist/esm/_virtual/ariaPropsMap.js.map +1 -0
  36. package/dist/esm/_virtual/articleRole.js +4 -0
  37. package/dist/esm/_virtual/articleRole.js.map +1 -0
  38. package/dist/esm/_virtual/bannerRole.js +4 -0
  39. package/dist/esm/_virtual/bannerRole.js.map +1 -0
  40. package/dist/esm/_virtual/blockquoteRole.js +4 -0
  41. package/dist/esm/_virtual/blockquoteRole.js.map +1 -0
  42. package/dist/esm/_virtual/buttonRole.js +4 -0
  43. package/dist/esm/_virtual/buttonRole.js.map +1 -0
  44. package/dist/esm/_virtual/captionRole.js +4 -0
  45. package/dist/esm/_virtual/captionRole.js.map +1 -0
  46. package/dist/esm/_virtual/cellRole.js +4 -0
  47. package/dist/esm/_virtual/cellRole.js.map +1 -0
  48. package/dist/esm/_virtual/chance.js +6 -0
  49. package/dist/esm/_virtual/chance.js.map +1 -0
  50. package/dist/esm/_virtual/chance2.js +4 -0
  51. package/dist/esm/_virtual/chance2.js.map +1 -0
  52. package/dist/esm/_virtual/checkboxRole.js +4 -0
  53. package/dist/esm/_virtual/checkboxRole.js.map +1 -0
  54. package/dist/esm/_virtual/codeRole.js +4 -0
  55. package/dist/esm/_virtual/codeRole.js.map +1 -0
  56. package/dist/esm/_virtual/collections.js +4 -0
  57. package/dist/esm/_virtual/collections.js.map +1 -0
  58. package/dist/esm/_virtual/columnheaderRole.js +4 -0
  59. package/dist/esm/_virtual/columnheaderRole.js.map +1 -0
  60. package/dist/esm/_virtual/comboboxRole.js +4 -0
  61. package/dist/esm/_virtual/comboboxRole.js.map +1 -0
  62. package/dist/esm/_virtual/commandRole.js +4 -0
  63. package/dist/esm/_virtual/commandRole.js.map +1 -0
  64. package/dist/esm/_virtual/complementaryRole.js +4 -0
  65. package/dist/esm/_virtual/complementaryRole.js.map +1 -0
  66. package/dist/esm/_virtual/compositeRole.js +4 -0
  67. package/dist/esm/_virtual/compositeRole.js.map +1 -0
  68. package/dist/esm/_virtual/contentinfoRole.js +4 -0
  69. package/dist/esm/_virtual/contentinfoRole.js.map +1 -0
  70. package/dist/esm/_virtual/definitionRole.js +4 -0
  71. package/dist/esm/_virtual/definitionRole.js.map +1 -0
  72. package/dist/esm/_virtual/deletionRole.js +4 -0
  73. package/dist/esm/_virtual/deletionRole.js.map +1 -0
  74. package/dist/esm/_virtual/dialogRole.js +4 -0
  75. package/dist/esm/_virtual/dialogRole.js.map +1 -0
  76. package/dist/esm/_virtual/directoryRole.js +4 -0
  77. package/dist/esm/_virtual/directoryRole.js.map +1 -0
  78. package/dist/esm/_virtual/docAbstractRole.js +4 -0
  79. package/dist/esm/_virtual/docAbstractRole.js.map +1 -0
  80. package/dist/esm/_virtual/docAcknowledgmentsRole.js +4 -0
  81. package/dist/esm/_virtual/docAcknowledgmentsRole.js.map +1 -0
  82. package/dist/esm/_virtual/docAfterwordRole.js +4 -0
  83. package/dist/esm/_virtual/docAfterwordRole.js.map +1 -0
  84. package/dist/esm/_virtual/docAppendixRole.js +4 -0
  85. package/dist/esm/_virtual/docAppendixRole.js.map +1 -0
  86. package/dist/esm/_virtual/docBacklinkRole.js +4 -0
  87. package/dist/esm/_virtual/docBacklinkRole.js.map +1 -0
  88. package/dist/esm/_virtual/docBiblioentryRole.js +4 -0
  89. package/dist/esm/_virtual/docBiblioentryRole.js.map +1 -0
  90. package/dist/esm/_virtual/docBibliographyRole.js +4 -0
  91. package/dist/esm/_virtual/docBibliographyRole.js.map +1 -0
  92. package/dist/esm/_virtual/docBibliorefRole.js +4 -0
  93. package/dist/esm/_virtual/docBibliorefRole.js.map +1 -0
  94. package/dist/esm/_virtual/docChapterRole.js +4 -0
  95. package/dist/esm/_virtual/docChapterRole.js.map +1 -0
  96. package/dist/esm/_virtual/docColophonRole.js +4 -0
  97. package/dist/esm/_virtual/docColophonRole.js.map +1 -0
  98. package/dist/esm/_virtual/docConclusionRole.js +4 -0
  99. package/dist/esm/_virtual/docConclusionRole.js.map +1 -0
  100. package/dist/esm/_virtual/docCoverRole.js +4 -0
  101. package/dist/esm/_virtual/docCoverRole.js.map +1 -0
  102. package/dist/esm/_virtual/docCreditRole.js +4 -0
  103. package/dist/esm/_virtual/docCreditRole.js.map +1 -0
  104. package/dist/esm/_virtual/docCreditsRole.js +4 -0
  105. package/dist/esm/_virtual/docCreditsRole.js.map +1 -0
  106. package/dist/esm/_virtual/docDedicationRole.js +4 -0
  107. package/dist/esm/_virtual/docDedicationRole.js.map +1 -0
  108. package/dist/esm/_virtual/docEndnoteRole.js +4 -0
  109. package/dist/esm/_virtual/docEndnoteRole.js.map +1 -0
  110. package/dist/esm/_virtual/docEndnotesRole.js +4 -0
  111. package/dist/esm/_virtual/docEndnotesRole.js.map +1 -0
  112. package/dist/esm/_virtual/docEpigraphRole.js +4 -0
  113. package/dist/esm/_virtual/docEpigraphRole.js.map +1 -0
  114. package/dist/esm/_virtual/docEpilogueRole.js +4 -0
  115. package/dist/esm/_virtual/docEpilogueRole.js.map +1 -0
  116. package/dist/esm/_virtual/docErrataRole.js +4 -0
  117. package/dist/esm/_virtual/docErrataRole.js.map +1 -0
  118. package/dist/esm/_virtual/docExampleRole.js +4 -0
  119. package/dist/esm/_virtual/docExampleRole.js.map +1 -0
  120. package/dist/esm/_virtual/docFootnoteRole.js +4 -0
  121. package/dist/esm/_virtual/docFootnoteRole.js.map +1 -0
  122. package/dist/esm/_virtual/docForewordRole.js +4 -0
  123. package/dist/esm/_virtual/docForewordRole.js.map +1 -0
  124. package/dist/esm/_virtual/docGlossaryRole.js +4 -0
  125. package/dist/esm/_virtual/docGlossaryRole.js.map +1 -0
  126. package/dist/esm/_virtual/docGlossrefRole.js +4 -0
  127. package/dist/esm/_virtual/docGlossrefRole.js.map +1 -0
  128. package/dist/esm/_virtual/docIndexRole.js +4 -0
  129. package/dist/esm/_virtual/docIndexRole.js.map +1 -0
  130. package/dist/esm/_virtual/docIntroductionRole.js +4 -0
  131. package/dist/esm/_virtual/docIntroductionRole.js.map +1 -0
  132. package/dist/esm/_virtual/docNoterefRole.js +4 -0
  133. package/dist/esm/_virtual/docNoterefRole.js.map +1 -0
  134. package/dist/esm/_virtual/docNoticeRole.js +4 -0
  135. package/dist/esm/_virtual/docNoticeRole.js.map +1 -0
  136. package/dist/esm/_virtual/docPagebreakRole.js +4 -0
  137. package/dist/esm/_virtual/docPagebreakRole.js.map +1 -0
  138. package/dist/esm/_virtual/docPagelistRole.js +4 -0
  139. package/dist/esm/_virtual/docPagelistRole.js.map +1 -0
  140. package/dist/esm/_virtual/docPartRole.js +4 -0
  141. package/dist/esm/_virtual/docPartRole.js.map +1 -0
  142. package/dist/esm/_virtual/docPrefaceRole.js +4 -0
  143. package/dist/esm/_virtual/docPrefaceRole.js.map +1 -0
  144. package/dist/esm/_virtual/docPrologueRole.js +4 -0
  145. package/dist/esm/_virtual/docPrologueRole.js.map +1 -0
  146. package/dist/esm/_virtual/docPullquoteRole.js +4 -0
  147. package/dist/esm/_virtual/docPullquoteRole.js.map +1 -0
  148. package/dist/esm/_virtual/docQnaRole.js +4 -0
  149. package/dist/esm/_virtual/docQnaRole.js.map +1 -0
  150. package/dist/esm/_virtual/docSubtitleRole.js +4 -0
  151. package/dist/esm/_virtual/docSubtitleRole.js.map +1 -0
  152. package/dist/esm/_virtual/docTipRole.js +4 -0
  153. package/dist/esm/_virtual/docTipRole.js.map +1 -0
  154. package/dist/esm/_virtual/docTocRole.js +4 -0
  155. package/dist/esm/_virtual/docTocRole.js.map +1 -0
  156. package/dist/esm/_virtual/documentRole.js +4 -0
  157. package/dist/esm/_virtual/documentRole.js.map +1 -0
  158. package/dist/esm/_virtual/domMap.js +4 -0
  159. package/dist/esm/_virtual/domMap.js.map +1 -0
  160. package/dist/esm/_virtual/elementRoleMap.js +4 -0
  161. package/dist/esm/_virtual/elementRoleMap.js.map +1 -0
  162. package/dist/esm/_virtual/emphasisRole.js +4 -0
  163. package/dist/esm/_virtual/emphasisRole.js.map +1 -0
  164. package/dist/esm/_virtual/escapeHTML.js +4 -0
  165. package/dist/esm/_virtual/escapeHTML.js.map +1 -0
  166. package/dist/esm/_virtual/feedRole.js +4 -0
  167. package/dist/esm/_virtual/feedRole.js.map +1 -0
  168. package/dist/esm/_virtual/figureRole.js +4 -0
  169. package/dist/esm/_virtual/figureRole.js.map +1 -0
  170. package/dist/esm/_virtual/formRole.js +4 -0
  171. package/dist/esm/_virtual/formRole.js.map +1 -0
  172. package/dist/esm/_virtual/genericRole.js +4 -0
  173. package/dist/esm/_virtual/genericRole.js.map +1 -0
  174. package/dist/esm/_virtual/graphicsDocumentRole.js +4 -0
  175. package/dist/esm/_virtual/graphicsDocumentRole.js.map +1 -0
  176. package/dist/esm/_virtual/graphicsObjectRole.js +4 -0
  177. package/dist/esm/_virtual/graphicsObjectRole.js.map +1 -0
  178. package/dist/esm/_virtual/graphicsSymbolRole.js +4 -0
  179. package/dist/esm/_virtual/graphicsSymbolRole.js.map +1 -0
  180. package/dist/esm/_virtual/gridRole.js +4 -0
  181. package/dist/esm/_virtual/gridRole.js.map +1 -0
  182. package/dist/esm/_virtual/gridcellRole.js +4 -0
  183. package/dist/esm/_virtual/gridcellRole.js.map +1 -0
  184. package/dist/esm/_virtual/groupRole.js +4 -0
  185. package/dist/esm/_virtual/groupRole.js.map +1 -0
  186. package/dist/esm/_virtual/headingRole.js +4 -0
  187. package/dist/esm/_virtual/headingRole.js.map +1 -0
  188. package/dist/esm/_virtual/imgRole.js +4 -0
  189. package/dist/esm/_virtual/imgRole.js.map +1 -0
  190. package/dist/esm/_virtual/index.js +6 -0
  191. package/dist/esm/_virtual/index.js.map +1 -0
  192. package/dist/esm/_virtual/index2.js +6 -0
  193. package/dist/esm/_virtual/index2.js.map +1 -0
  194. package/dist/esm/_virtual/index3.js +4 -0
  195. package/dist/esm/_virtual/index3.js.map +1 -0
  196. package/dist/esm/_virtual/index4.js +4 -0
  197. package/dist/esm/_virtual/index4.js.map +1 -0
  198. package/dist/esm/_virtual/index5.js +4 -0
  199. package/dist/esm/_virtual/index5.js.map +1 -0
  200. package/dist/esm/_virtual/index6.js +4 -0
  201. package/dist/esm/_virtual/index6.js.map +1 -0
  202. package/dist/esm/_virtual/index7.js +4 -0
  203. package/dist/esm/_virtual/index7.js.map +1 -0
  204. package/dist/esm/_virtual/inputRole.js +4 -0
  205. package/dist/esm/_virtual/inputRole.js.map +1 -0
  206. package/dist/esm/_virtual/insertionRole.js +4 -0
  207. package/dist/esm/_virtual/insertionRole.js.map +1 -0
  208. package/dist/esm/_virtual/iterationDecorator.js +4 -0
  209. package/dist/esm/_virtual/iterationDecorator.js.map +1 -0
  210. package/dist/esm/_virtual/iteratorProxy.js +4 -0
  211. package/dist/esm/_virtual/iteratorProxy.js.map +1 -0
  212. package/dist/esm/_virtual/landmarkRole.js +4 -0
  213. package/dist/esm/_virtual/landmarkRole.js.map +1 -0
  214. package/dist/esm/_virtual/linkRole.js +4 -0
  215. package/dist/esm/_virtual/linkRole.js.map +1 -0
  216. package/dist/esm/_virtual/listRole.js +4 -0
  217. package/dist/esm/_virtual/listRole.js.map +1 -0
  218. package/dist/esm/_virtual/listboxRole.js +4 -0
  219. package/dist/esm/_virtual/listboxRole.js.map +1 -0
  220. package/dist/esm/_virtual/listitemRole.js +4 -0
  221. package/dist/esm/_virtual/listitemRole.js.map +1 -0
  222. package/dist/esm/_virtual/logRole.js +4 -0
  223. package/dist/esm/_virtual/logRole.js.map +1 -0
  224. package/dist/esm/_virtual/lz-string.js +8 -0
  225. package/dist/esm/_virtual/lz-string.js.map +1 -0
  226. package/dist/esm/_virtual/lz-string2.js +4 -0
  227. package/dist/esm/_virtual/lz-string2.js.map +1 -0
  228. package/dist/esm/_virtual/mainRole.js +4 -0
  229. package/dist/esm/_virtual/mainRole.js.map +1 -0
  230. package/dist/esm/_virtual/markRole.js +4 -0
  231. package/dist/esm/_virtual/markRole.js.map +1 -0
  232. package/dist/esm/_virtual/markup.js +4 -0
  233. package/dist/esm/_virtual/markup.js.map +1 -0
  234. package/dist/esm/_virtual/marqueeRole.js +4 -0
  235. package/dist/esm/_virtual/marqueeRole.js.map +1 -0
  236. package/dist/esm/_virtual/mathRole.js +4 -0
  237. package/dist/esm/_virtual/mathRole.js.map +1 -0
  238. package/dist/esm/_virtual/menuRole.js +4 -0
  239. package/dist/esm/_virtual/menuRole.js.map +1 -0
  240. package/dist/esm/_virtual/menubarRole.js +4 -0
  241. package/dist/esm/_virtual/menubarRole.js.map +1 -0
  242. package/dist/esm/_virtual/menuitemRole.js +4 -0
  243. package/dist/esm/_virtual/menuitemRole.js.map +1 -0
  244. package/dist/esm/_virtual/menuitemcheckboxRole.js +4 -0
  245. package/dist/esm/_virtual/menuitemcheckboxRole.js.map +1 -0
  246. package/dist/esm/_virtual/menuitemradioRole.js +4 -0
  247. package/dist/esm/_virtual/menuitemradioRole.js.map +1 -0
  248. package/dist/esm/_virtual/meterRole.js +4 -0
  249. package/dist/esm/_virtual/meterRole.js.map +1 -0
  250. package/dist/esm/_virtual/navigationRole.js +4 -0
  251. package/dist/esm/_virtual/navigationRole.js.map +1 -0
  252. package/dist/esm/_virtual/noneRole.js +4 -0
  253. package/dist/esm/_virtual/noneRole.js.map +1 -0
  254. package/dist/esm/_virtual/noteRole.js +4 -0
  255. package/dist/esm/_virtual/noteRole.js.map +1 -0
  256. package/dist/esm/_virtual/optionRole.js +4 -0
  257. package/dist/esm/_virtual/optionRole.js.map +1 -0
  258. package/dist/esm/_virtual/paragraphRole.js +4 -0
  259. package/dist/esm/_virtual/paragraphRole.js.map +1 -0
  260. package/dist/esm/_virtual/presentationRole.js +4 -0
  261. package/dist/esm/_virtual/presentationRole.js.map +1 -0
  262. package/dist/esm/_virtual/progressbarRole.js +4 -0
  263. package/dist/esm/_virtual/progressbarRole.js.map +1 -0
  264. package/dist/esm/_virtual/radioRole.js +4 -0
  265. package/dist/esm/_virtual/radioRole.js.map +1 -0
  266. package/dist/esm/_virtual/radiogroupRole.js +4 -0
  267. package/dist/esm/_virtual/radiogroupRole.js.map +1 -0
  268. package/dist/esm/_virtual/rangeRole.js +4 -0
  269. package/dist/esm/_virtual/rangeRole.js.map +1 -0
  270. package/dist/esm/_virtual/react-is.development.js +4 -0
  271. package/dist/esm/_virtual/react-is.development.js.map +1 -0
  272. package/dist/esm/_virtual/react-is.production.min.js +4 -0
  273. package/dist/esm/_virtual/react-is.production.min.js.map +1 -0
  274. package/dist/esm/_virtual/regionRole.js +4 -0
  275. package/dist/esm/_virtual/regionRole.js.map +1 -0
  276. package/dist/esm/_virtual/roleElementMap.js +4 -0
  277. package/dist/esm/_virtual/roleElementMap.js.map +1 -0
  278. package/dist/esm/_virtual/rolesMap.js +4 -0
  279. package/dist/esm/_virtual/rolesMap.js.map +1 -0
  280. package/dist/esm/_virtual/roletypeRole.js +4 -0
  281. package/dist/esm/_virtual/roletypeRole.js.map +1 -0
  282. package/dist/esm/_virtual/rowRole.js +4 -0
  283. package/dist/esm/_virtual/rowRole.js.map +1 -0
  284. package/dist/esm/_virtual/rowgroupRole.js +4 -0
  285. package/dist/esm/_virtual/rowgroupRole.js.map +1 -0
  286. package/dist/esm/_virtual/rowheaderRole.js +4 -0
  287. package/dist/esm/_virtual/rowheaderRole.js.map +1 -0
  288. package/dist/esm/_virtual/scrollbarRole.js +4 -0
  289. package/dist/esm/_virtual/scrollbarRole.js.map +1 -0
  290. package/dist/esm/_virtual/searchRole.js +4 -0
  291. package/dist/esm/_virtual/searchRole.js.map +1 -0
  292. package/dist/esm/_virtual/searchboxRole.js +4 -0
  293. package/dist/esm/_virtual/searchboxRole.js.map +1 -0
  294. package/dist/esm/_virtual/sectionRole.js +4 -0
  295. package/dist/esm/_virtual/sectionRole.js.map +1 -0
  296. package/dist/esm/_virtual/sectionheadRole.js +4 -0
  297. package/dist/esm/_virtual/sectionheadRole.js.map +1 -0
  298. package/dist/esm/_virtual/selectRole.js +4 -0
  299. package/dist/esm/_virtual/selectRole.js.map +1 -0
  300. package/dist/esm/_virtual/separatorRole.js +4 -0
  301. package/dist/esm/_virtual/separatorRole.js.map +1 -0
  302. package/dist/esm/_virtual/sliderRole.js +4 -0
  303. package/dist/esm/_virtual/sliderRole.js.map +1 -0
  304. package/dist/esm/_virtual/spinbuttonRole.js +4 -0
  305. package/dist/esm/_virtual/spinbuttonRole.js.map +1 -0
  306. package/dist/esm/_virtual/statusRole.js +4 -0
  307. package/dist/esm/_virtual/statusRole.js.map +1 -0
  308. package/dist/esm/_virtual/strongRole.js +4 -0
  309. package/dist/esm/_virtual/strongRole.js.map +1 -0
  310. package/dist/esm/_virtual/structureRole.js +4 -0
  311. package/dist/esm/_virtual/structureRole.js.map +1 -0
  312. package/dist/esm/_virtual/subscriptRole.js +4 -0
  313. package/dist/esm/_virtual/subscriptRole.js.map +1 -0
  314. package/dist/esm/_virtual/superscriptRole.js +4 -0
  315. package/dist/esm/_virtual/superscriptRole.js.map +1 -0
  316. package/dist/esm/_virtual/switchRole.js +4 -0
  317. package/dist/esm/_virtual/switchRole.js.map +1 -0
  318. package/dist/esm/_virtual/tabRole.js +4 -0
  319. package/dist/esm/_virtual/tabRole.js.map +1 -0
  320. package/dist/esm/_virtual/tableRole.js +4 -0
  321. package/dist/esm/_virtual/tableRole.js.map +1 -0
  322. package/dist/esm/_virtual/tablistRole.js +4 -0
  323. package/dist/esm/_virtual/tablistRole.js.map +1 -0
  324. package/dist/esm/_virtual/tabpanelRole.js +4 -0
  325. package/dist/esm/_virtual/tabpanelRole.js.map +1 -0
  326. package/dist/esm/_virtual/termRole.js +4 -0
  327. package/dist/esm/_virtual/termRole.js.map +1 -0
  328. package/dist/esm/_virtual/textboxRole.js +4 -0
  329. package/dist/esm/_virtual/textboxRole.js.map +1 -0
  330. package/dist/esm/_virtual/timeRole.js +4 -0
  331. package/dist/esm/_virtual/timeRole.js.map +1 -0
  332. package/dist/esm/_virtual/timerRole.js +4 -0
  333. package/dist/esm/_virtual/timerRole.js.map +1 -0
  334. package/dist/esm/_virtual/toolbarRole.js +4 -0
  335. package/dist/esm/_virtual/toolbarRole.js.map +1 -0
  336. package/dist/esm/_virtual/tooltipRole.js +4 -0
  337. package/dist/esm/_virtual/tooltipRole.js.map +1 -0
  338. package/dist/esm/_virtual/treeRole.js +4 -0
  339. package/dist/esm/_virtual/treeRole.js.map +1 -0
  340. package/dist/esm/_virtual/treegridRole.js +4 -0
  341. package/dist/esm/_virtual/treegridRole.js.map +1 -0
  342. package/dist/esm/_virtual/treeitemRole.js +4 -0
  343. package/dist/esm/_virtual/treeitemRole.js.map +1 -0
  344. package/dist/esm/_virtual/widgetRole.js +4 -0
  345. package/dist/esm/_virtual/widgetRole.js.map +1 -0
  346. package/dist/esm/_virtual/windowRole.js +4 -0
  347. package/dist/esm/_virtual/windowRole.js.map +1 -0
  348. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js +5 -5
  349. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -1
  350. package/dist/esm/components/ConfigEditor/Auth/Auth.js +3 -3
  351. package/dist/esm/components/ConfigEditor/Auth/Auth.js.map +1 -1
  352. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +4 -4
  353. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
  354. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js +5 -5
  355. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -1
  356. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js +6 -6
  357. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -1
  358. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +4 -4
  359. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
  360. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +4 -4
  361. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -1
  362. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js +2 -2
  363. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -1
  364. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +8 -8
  365. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -1
  366. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js +5 -5
  367. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -1
  368. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js +2 -2
  369. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -1
  370. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +2 -2
  371. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -1
  372. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js +2 -2
  373. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -1
  374. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js +2 -2
  375. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -1
  376. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js +3 -3
  377. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
  378. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +4 -4
  379. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -1
  380. package/dist/esm/components/ConfigEditor/DataSourceDescription.js +2 -2
  381. package/dist/esm/components/ConfigEditor/DataSourceDescription.js.map +1 -1
  382. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js +4 -4
  383. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
  384. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +7 -7
  385. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
  386. package/dist/esm/components/DataLinks/DataLink.js +9 -9
  387. package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
  388. package/dist/esm/components/DataLinks/DataLinks.js +4 -4
  389. package/dist/esm/components/DataLinks/DataLinks.js.map +1 -1
  390. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +3 -3
  391. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
  392. package/dist/esm/components/DatePicker/DatePicker.js +5 -5
  393. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  394. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js +4 -4
  395. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
  396. package/dist/esm/components/DebounceInput/DebounceInput.js +5 -5
  397. package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
  398. package/dist/esm/components/Plugins/PluginSignatureBadge.js +2 -2
  399. package/dist/esm/components/Plugins/PluginSignatureBadge.js.map +1 -1
  400. package/dist/esm/components/QueryEditor/AccessoryButton.js +2 -2
  401. package/dist/esm/components/QueryEditor/AccessoryButton.js.map +1 -1
  402. package/dist/esm/components/QueryEditor/ConfirmModal.js +6 -6
  403. package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
  404. package/dist/esm/components/QueryEditor/DatasetSelector.js +5 -3
  405. package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
  406. package/dist/esm/components/QueryEditor/EditorField.js +3 -3
  407. package/dist/esm/components/QueryEditor/EditorField.js.map +1 -1
  408. package/dist/esm/components/QueryEditor/EditorFieldGroup.js +2 -2
  409. package/dist/esm/components/QueryEditor/EditorFieldGroup.js.map +1 -1
  410. package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
  411. package/dist/esm/components/QueryEditor/EditorHeader.js.map +1 -1
  412. package/dist/esm/components/QueryEditor/EditorList.js +4 -4
  413. package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
  414. package/dist/esm/components/QueryEditor/EditorRow.js +2 -2
  415. package/dist/esm/components/QueryEditor/EditorRow.js.map +1 -1
  416. package/dist/esm/components/QueryEditor/EditorRows.js +2 -2
  417. package/dist/esm/components/QueryEditor/EditorRows.js.map +1 -1
  418. package/dist/esm/components/QueryEditor/EditorStack.js +2 -2
  419. package/dist/esm/components/QueryEditor/EditorStack.js.map +1 -1
  420. package/dist/esm/components/QueryEditor/EditorSwitch.js +2 -2
  421. package/dist/esm/components/QueryEditor/EditorSwitch.js.map +1 -1
  422. package/dist/esm/components/QueryEditor/FlexItem.js +2 -2
  423. package/dist/esm/components/QueryEditor/FlexItem.js.map +1 -1
  424. package/dist/esm/components/QueryEditor/InlineSelect.js +4 -4
  425. package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
  426. package/dist/esm/components/QueryEditor/InputGroup.js +2 -2
  427. package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
  428. package/dist/esm/components/QueryEditor/QueryEditor.js +4 -4
  429. package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
  430. package/dist/esm/components/QueryEditor/QueryHeader.js +16 -13
  431. package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
  432. package/dist/esm/components/QueryEditor/RunQueryButton.js +4 -4
  433. package/dist/esm/components/QueryEditor/RunQueryButton.js.map +1 -1
  434. package/dist/esm/components/QueryEditor/Space.js +2 -2
  435. package/dist/esm/components/QueryEditor/Space.js.map +1 -1
  436. package/dist/esm/components/QueryEditor/TableSelector.js +4 -3
  437. package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
  438. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +2 -2
  439. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
  440. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +4 -4
  441. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
  442. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +2 -2
  443. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
  444. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +7 -7
  445. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
  446. package/dist/esm/components/QueryEditor/types.js +1 -1
  447. package/dist/esm/components/QueryEditor/types.js.map +1 -1
  448. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +39 -21
  449. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
  450. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +3 -3
  451. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
  452. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
  453. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
  454. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js +2 -2
  455. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
  456. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +4 -4
  457. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
  458. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +4 -4
  459. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
  460. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +3 -3
  461. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
  462. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +2 -2
  463. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
  464. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +2 -2
  465. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
  466. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +2 -2
  467. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
  468. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +2 -2
  469. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
  470. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +5 -5
  471. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
  472. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +2 -2
  473. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
  474. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js +4 -4
  475. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
  476. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js +2 -2
  477. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
  478. package/dist/esm/components/SQLEditor/components/SQLEditor.js +2 -2
  479. package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
  480. package/dist/esm/components/Segment/Segment.js +3 -3
  481. package/dist/esm/components/Segment/Segment.js.map +1 -1
  482. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +5 -5
  483. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
  484. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +4 -4
  485. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
  486. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +4 -4
  487. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -1
  488. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +8 -8
  489. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
  490. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +2 -2
  491. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -1
  492. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +7 -7
  493. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
  494. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +5 -5
  495. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
  496. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +5 -5
  497. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
  498. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +5 -5
  499. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -1
  500. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +6 -6
  501. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -1
  502. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +2 -2
  503. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -1
  504. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +3 -3
  505. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
  506. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js +2 -2
  507. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -1
  508. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +2 -2
  509. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
  510. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +5 -5
  511. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -1
  512. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +2 -2
  513. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js.map +1 -1
  514. package/dist/esm/index.d.ts +76 -3
  515. package/dist/esm/index.js +5 -0
  516. package/dist/esm/index.js.map +1 -1
  517. package/dist/esm/node_modules/@testing-library/dom/dist/@testing-library/dom.esm.js +2779 -0
  518. package/dist/esm/node_modules/@testing-library/dom/dist/@testing-library/dom.esm.js.map +1 -0
  519. package/dist/esm/node_modules/@testing-library/dom/node_modules/ansi-styles/index.js +179 -0
  520. package/dist/esm/node_modules/@testing-library/dom/node_modules/ansi-styles/index.js.map +1 -0
  521. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/collections.js +198 -0
  522. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/collections.js.map +1 -0
  523. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/index.js +617 -0
  524. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/index.js.map +1 -0
  525. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/AsymmetricMatcher.js +129 -0
  526. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/AsymmetricMatcher.js.map +1 -0
  527. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/ConvertAnsi.js +109 -0
  528. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/ConvertAnsi.js.map +1 -0
  529. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/DOMCollection.js +92 -0
  530. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/DOMCollection.js.map +1 -0
  531. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/DOMElement.js +140 -0
  532. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/DOMElement.js.map +1 -0
  533. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/Immutable.js +259 -0
  534. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/Immutable.js.map +1 -0
  535. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/ReactElement.js +179 -0
  536. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/ReactElement.js.map +1 -0
  537. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/ReactTestComponent.js +91 -0
  538. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/ReactTestComponent.js.map +1 -0
  539. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/lib/escapeHTML.js +27 -0
  540. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/lib/escapeHTML.js.map +1 -0
  541. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/lib/markup.js +165 -0
  542. package/dist/esm/node_modules/@testing-library/dom/node_modules/pretty-format/build/plugins/lib/markup.js.map +1 -0
  543. package/dist/esm/node_modules/@testing-library/dom/node_modules/react-is/cjs/react-is.development.js +233 -0
  544. package/dist/esm/node_modules/@testing-library/dom/node_modules/react-is/cjs/react-is.development.js.map +1 -0
  545. package/dist/esm/node_modules/@testing-library/dom/node_modules/react-is/cjs/react-is.production.min.js +27 -0
  546. package/dist/esm/node_modules/@testing-library/dom/node_modules/react-is/cjs/react-is.production.min.js.map +1 -0
  547. package/dist/esm/node_modules/@testing-library/dom/node_modules/react-is/index.js +20 -0
  548. package/dist/esm/node_modules/@testing-library/dom/node_modules/react-is/index.js.map +1 -0
  549. package/dist/esm/node_modules/@testing-library/react/dist/@testing-library/react.esm.js +262 -0
  550. package/dist/esm/node_modules/@testing-library/react/dist/@testing-library/react.esm.js.map +1 -0
  551. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/clipboard/copy.js +27 -0
  552. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/clipboard/copy.js.map +1 -0
  553. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/clipboard/cut.js +27 -0
  554. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/clipboard/cut.js.map +1 -0
  555. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/clipboard/paste.js +30 -0
  556. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/clipboard/paste.js.map +1 -0
  557. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/convenience/click.js +32 -0
  558. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/convenience/click.js.map +1 -0
  559. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/convenience/hover.js +22 -0
  560. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/convenience/hover.js.map +1 -0
  561. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/convenience/tab.js +6 -0
  562. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/convenience/tab.js.map +1 -0
  563. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/UI.js +80 -0
  564. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/UI.js.map +1 -0
  565. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/copySelection.js +34 -0
  566. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/copySelection.js.map +1 -0
  567. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/getValueOrTextContent.js +23 -0
  568. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/getValueOrTextContent.js.map +1 -0
  569. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/interceptor.js +106 -0
  570. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/interceptor.js.map +1 -0
  571. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/prepareDocument.js +63 -0
  572. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/prepareDocument.js.map +1 -0
  573. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/trackValue.js +60 -0
  574. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/document/trackValue.js.map +1 -0
  575. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/click.js +37 -0
  576. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/click.js.map +1 -0
  577. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/cut.js +18 -0
  578. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/cut.js.map +1 -0
  579. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/keydown.js +132 -0
  580. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/keydown.js.map +1 -0
  581. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/keypress.js +55 -0
  582. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/keypress.js.map +1 -0
  583. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/keyup.js +21 -0
  584. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/keyup.js.map +1 -0
  585. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/paste.js +22 -0
  586. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/paste.js.map +1 -0
  587. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/registry.js +4 -0
  588. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/behavior/registry.js.map +1 -0
  589. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/createEvent.js +199 -0
  590. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/createEvent.js.map +1 -0
  591. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/dispatchEvent.js +51 -0
  592. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/dispatchEvent.js.map +1 -0
  593. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/eventMap.js +246 -0
  594. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/eventMap.js.map +1 -0
  595. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/focus.js +36 -0
  596. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/focus.js.map +1 -0
  597. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/input.js +161 -0
  598. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/input.js.map +1 -0
  599. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/radio.js +31 -0
  600. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/radio.js.map +1 -0
  601. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/getInputRange.js +17 -0
  602. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/getInputRange.js.map +1 -0
  603. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/getTargetTypeAndSelection.js +36 -0
  604. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/getTargetTypeAndSelection.js.map +1 -0
  605. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/modifySelectionPerMouse.js +45 -0
  606. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/modifySelectionPerMouse.js.map +1 -0
  607. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/moveSelection.js +43 -0
  608. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/moveSelection.js.map +1 -0
  609. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/resolveCaretPosition.js +66 -0
  610. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/resolveCaretPosition.js.map +1 -0
  611. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/selectAll.js +42 -0
  612. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/selectAll.js.map +1 -0
  613. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/setSelection.js +26 -0
  614. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/setSelection.js.map +1 -0
  615. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/setSelectionPerMouse.js +86 -0
  616. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/setSelectionPerMouse.js.map +1 -0
  617. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/setSelectionRange.js +36 -0
  618. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/setSelectionRange.js.map +1 -0
  619. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/updateSelectionOnFocus.js +41 -0
  620. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/selection/updateSelectionOnFocus.js.map +1 -0
  621. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/wrapEvent.js +8 -0
  622. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/event/wrapEvent.js.map +1 -0
  623. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/keyboard/index.js +44 -0
  624. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/keyboard/index.js.map +1 -0
  625. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/keyboard/keyMap.js +155 -0
  626. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/keyboard/keyMap.js.map +1 -0
  627. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/keyboard/parseKeyDef.js +49 -0
  628. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/keyboard/parseKeyDef.js.map +1 -0
  629. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/options.js +13 -0
  630. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/options.js.map +1 -0
  631. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/pointer/index.js +78 -0
  632. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/pointer/index.js.map +1 -0
  633. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/pointer/keyMap.js +32 -0
  634. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/pointer/keyMap.js.map +1 -0
  635. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/pointer/parseKeyDef.js +27 -0
  636. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/pointer/parseKeyDef.js.map +1 -0
  637. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/api.js +34 -0
  638. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/api.js.map +1 -0
  639. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/directApi.js +59 -0
  640. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/directApi.js.map +1 -0
  641. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/index.js +10 -0
  642. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/index.js.map +1 -0
  643. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/setup.js +120 -0
  644. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/setup.js.map +1 -0
  645. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/wrapAsync.js +10 -0
  646. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/setup/wrapAsync.js.map +1 -0
  647. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/index.js +43 -0
  648. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/index.js.map +1 -0
  649. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/keyboard.js +146 -0
  650. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/keyboard.js.map +1 -0
  651. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/buttons.js +79 -0
  652. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/buttons.js.map +1 -0
  653. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/device.js +33 -0
  654. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/device.js.map +1 -0
  655. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/index.js +163 -0
  656. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/index.js.map +1 -0
  657. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/mouse.js +211 -0
  658. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/mouse.js.map +1 -0
  659. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/pointer.js +125 -0
  660. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/pointer.js.map +1 -0
  661. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/shared.js +7 -0
  662. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/system/pointer/shared.js.map +1 -0
  663. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utility/clear.js +36 -0
  664. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utility/clear.js.map +1 -0
  665. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utility/selectOptions.js +117 -0
  666. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utility/selectOptions.js.map +1 -0
  667. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utility/type.js +28 -0
  668. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utility/type.js.map +1 -0
  669. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utility/upload.js +63 -0
  670. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utility/upload.js.map +1 -0
  671. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/click/isClickableInput.js +19 -0
  672. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/click/isClickableInput.js.map +1 -0
  673. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/dataTransfer/Blob.js +15 -0
  674. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/dataTransfer/Blob.js.map +1 -0
  675. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/dataTransfer/Clipboard.js +164 -0
  676. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/dataTransfer/Clipboard.js.map +1 -0
  677. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/dataTransfer/DataTransfer.js +138 -0
  678. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/dataTransfer/DataTransfer.js.map +1 -0
  679. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/dataTransfer/FileList.js +23 -0
  680. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/dataTransfer/FileList.js.map +1 -0
  681. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/isContentEditable.js +16 -0
  682. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/isContentEditable.js.map +1 -0
  683. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/isEditable.js +27 -0
  684. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/isEditable.js.map +1 -0
  685. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/maxLength.js +24 -0
  686. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/maxLength.js.map +1 -0
  687. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/setFiles.js +58 -0
  688. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/setFiles.js.map +1 -0
  689. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/timeValue.js +38 -0
  690. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/edit/timeValue.js.map +1 -0
  691. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/cursor.js +125 -0
  692. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/cursor.js.map +1 -0
  693. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/getActiveElement.js +21 -0
  694. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/getActiveElement.js.map +1 -0
  695. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/getTabDestination.js +79 -0
  696. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/getTabDestination.js.map +1 -0
  697. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/isFocusable.js +8 -0
  698. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/isFocusable.js.map +1 -0
  699. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/selection.js +18 -0
  700. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/selection.js.map +1 -0
  701. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/selector.js +13 -0
  702. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/focus/selector.js.map +1 -0
  703. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/keyDef/readNextDescriptor.js +91 -0
  704. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/keyDef/readNextDescriptor.js.map +1 -0
  705. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/cloneEvent.js +6 -0
  706. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/cloneEvent.js.map +1 -0
  707. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/findClosest.js +13 -0
  708. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/findClosest.js.map +1 -0
  709. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/getDocumentFromNode.js +9 -0
  710. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/getDocumentFromNode.js.map +1 -0
  711. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/getTreeDiff.js +24 -0
  712. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/getTreeDiff.js.map +1 -0
  713. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/getWindow.js +18 -0
  714. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/getWindow.js.map +1 -0
  715. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/isDisabled.js +32 -0
  716. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/isDisabled.js.map +1 -0
  717. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/isElementType.js +19 -0
  718. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/isElementType.js.map +1 -0
  719. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/isVisible.js +18 -0
  720. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/isVisible.js.map +1 -0
  721. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/level.js +14 -0
  722. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/level.js.map +1 -0
  723. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/wait.js +13 -0
  724. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/misc/wait.js.map +1 -0
  725. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/pointer/cssPointerEvents.js +101 -0
  726. package/dist/esm/node_modules/@testing-library/user-event/dist/esm/utils/pointer/cssPointerEvents.js.map +1 -0
  727. package/dist/esm/node_modules/ansi-regex/index.js +20 -0
  728. package/dist/esm/node_modules/ansi-regex/index.js.map +1 -0
  729. package/dist/esm/node_modules/aria-query/lib/ariaPropsMap.js +190 -0
  730. package/dist/esm/node_modules/aria-query/lib/ariaPropsMap.js.map +1 -0
  731. package/dist/esm/node_modules/aria-query/lib/domMap.js +333 -0
  732. package/dist/esm/node_modules/aria-query/lib/domMap.js.map +1 -0
  733. package/dist/esm/node_modules/aria-query/lib/elementRoleMap.js +117 -0
  734. package/dist/esm/node_modules/aria-query/lib/elementRoleMap.js.map +1 -0
  735. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/commandRole.js +34 -0
  736. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/commandRole.js.map +1 -0
  737. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/compositeRole.js +37 -0
  738. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/compositeRole.js.map +1 -0
  739. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/inputRole.js +41 -0
  740. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/inputRole.js.map +1 -0
  741. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/landmarkRole.js +34 -0
  742. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/landmarkRole.js.map +1 -0
  743. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/rangeRole.js +38 -0
  744. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/rangeRole.js.map +1 -0
  745. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/roletypeRole.js +62 -0
  746. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/roletypeRole.js.map +1 -0
  747. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/sectionRole.js +49 -0
  748. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/sectionRole.js.map +1 -0
  749. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/sectionheadRole.js +34 -0
  750. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/sectionheadRole.js.map +1 -0
  751. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/selectRole.js +36 -0
  752. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/selectRole.js.map +1 -0
  753. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/structureRole.js +34 -0
  754. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/structureRole.js.map +1 -0
  755. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/widgetRole.js +34 -0
  756. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/widgetRole.js.map +1 -0
  757. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/windowRole.js +36 -0
  758. package/dist/esm/node_modules/aria-query/lib/etc/roles/abstract/windowRole.js.map +1 -0
  759. package/dist/esm/node_modules/aria-query/lib/etc/roles/ariaAbstractRoles.js +46 -0
  760. package/dist/esm/node_modules/aria-query/lib/etc/roles/ariaAbstractRoles.js.map +1 -0
  761. package/dist/esm/node_modules/aria-query/lib/etc/roles/ariaDpubRoles.js +100 -0
  762. package/dist/esm/node_modules/aria-query/lib/etc/roles/ariaDpubRoles.js.map +1 -0
  763. package/dist/esm/node_modules/aria-query/lib/etc/roles/ariaGraphicsRoles.js +28 -0
  764. package/dist/esm/node_modules/aria-query/lib/etc/roles/ariaGraphicsRoles.js.map +1 -0
  765. package/dist/esm/node_modules/aria-query/lib/etc/roles/ariaLiteralRoles.js +188 -0
  766. package/dist/esm/node_modules/aria-query/lib/etc/roles/ariaLiteralRoles.js.map +1 -0
  767. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docAbstractRole.js +45 -0
  768. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docAbstractRole.js.map +1 -0
  769. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docAcknowledgmentsRole.js +45 -0
  770. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docAcknowledgmentsRole.js.map +1 -0
  771. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docAfterwordRole.js +45 -0
  772. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docAfterwordRole.js.map +1 -0
  773. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docAppendixRole.js +45 -0
  774. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docAppendixRole.js.map +1 -0
  775. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docBacklinkRole.js +42 -0
  776. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docBacklinkRole.js.map +1 -0
  777. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docBiblioentryRole.js +45 -0
  778. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docBiblioentryRole.js.map +1 -0
  779. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docBibliographyRole.js +45 -0
  780. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docBibliographyRole.js.map +1 -0
  781. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docBibliorefRole.js +42 -0
  782. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docBibliorefRole.js.map +1 -0
  783. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docChapterRole.js +45 -0
  784. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docChapterRole.js.map +1 -0
  785. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docColophonRole.js +45 -0
  786. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docColophonRole.js.map +1 -0
  787. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docConclusionRole.js +45 -0
  788. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docConclusionRole.js.map +1 -0
  789. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docCoverRole.js +45 -0
  790. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docCoverRole.js.map +1 -0
  791. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docCreditRole.js +45 -0
  792. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docCreditRole.js.map +1 -0
  793. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docCreditsRole.js +45 -0
  794. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docCreditsRole.js.map +1 -0
  795. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docDedicationRole.js +45 -0
  796. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docDedicationRole.js.map +1 -0
  797. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docEndnoteRole.js +45 -0
  798. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docEndnoteRole.js.map +1 -0
  799. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docEndnotesRole.js +45 -0
  800. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docEndnotesRole.js.map +1 -0
  801. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docEpigraphRole.js +45 -0
  802. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docEpigraphRole.js.map +1 -0
  803. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docEpilogueRole.js +45 -0
  804. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docEpilogueRole.js.map +1 -0
  805. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docErrataRole.js +45 -0
  806. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docErrataRole.js.map +1 -0
  807. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docExampleRole.js +40 -0
  808. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docExampleRole.js.map +1 -0
  809. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docFootnoteRole.js +45 -0
  810. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docFootnoteRole.js.map +1 -0
  811. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docForewordRole.js +45 -0
  812. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docForewordRole.js.map +1 -0
  813. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docGlossaryRole.js +45 -0
  814. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docGlossaryRole.js.map +1 -0
  815. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docGlossrefRole.js +42 -0
  816. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docGlossrefRole.js.map +1 -0
  817. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docIndexRole.js +45 -0
  818. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docIndexRole.js.map +1 -0
  819. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docIntroductionRole.js +45 -0
  820. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docIntroductionRole.js.map +1 -0
  821. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docNoterefRole.js +42 -0
  822. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docNoterefRole.js.map +1 -0
  823. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docNoticeRole.js +45 -0
  824. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docNoticeRole.js.map +1 -0
  825. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPagebreakRole.js +44 -0
  826. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPagebreakRole.js.map +1 -0
  827. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPagelistRole.js +45 -0
  828. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPagelistRole.js.map +1 -0
  829. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPartRole.js +45 -0
  830. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPartRole.js.map +1 -0
  831. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPrefaceRole.js +45 -0
  832. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPrefaceRole.js.map +1 -0
  833. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPrologueRole.js +45 -0
  834. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPrologueRole.js.map +1 -0
  835. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPullquoteRole.js +39 -0
  836. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docPullquoteRole.js.map +1 -0
  837. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docQnaRole.js +45 -0
  838. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docQnaRole.js.map +1 -0
  839. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docSubtitleRole.js +45 -0
  840. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docSubtitleRole.js.map +1 -0
  841. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docTipRole.js +45 -0
  842. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docTipRole.js.map +1 -0
  843. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docTocRole.js +45 -0
  844. package/dist/esm/node_modules/aria-query/lib/etc/roles/dpub/docTocRole.js.map +1 -0
  845. package/dist/esm/node_modules/aria-query/lib/etc/roles/graphics/graphicsDocumentRole.js +55 -0
  846. package/dist/esm/node_modules/aria-query/lib/etc/roles/graphics/graphicsDocumentRole.js.map +1 -0
  847. package/dist/esm/node_modules/aria-query/lib/etc/roles/graphics/graphicsObjectRole.js +59 -0
  848. package/dist/esm/node_modules/aria-query/lib/etc/roles/graphics/graphicsObjectRole.js.map +1 -0
  849. package/dist/esm/node_modules/aria-query/lib/etc/roles/graphics/graphicsSymbolRole.js +40 -0
  850. package/dist/esm/node_modules/aria-query/lib/etc/roles/graphics/graphicsSymbolRole.js.map +1 -0
  851. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/alertRole.js +42 -0
  852. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/alertRole.js.map +1 -0
  853. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/alertdialogRole.js +39 -0
  854. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/alertdialogRole.js.map +1 -0
  855. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/applicationRole.js +45 -0
  856. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/applicationRole.js.map +1 -0
  857. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/articleRole.js +42 -0
  858. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/articleRole.js.map +1 -0
  859. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/bannerRole.js +40 -0
  860. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/bannerRole.js.map +1 -0
  861. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/blockquoteRole.js +39 -0
  862. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/blockquoteRole.js.map +1 -0
  863. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/buttonRole.js +85 -0
  864. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/buttonRole.js.map +1 -0
  865. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/captionRole.js +39 -0
  866. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/captionRole.js.map +1 -0
  867. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/cellRole.js +45 -0
  868. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/cellRole.js.map +1 -0
  869. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/checkboxRole.js +57 -0
  870. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/checkboxRole.js.map +1 -0
  871. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/codeRole.js +39 -0
  872. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/codeRole.js.map +1 -0
  873. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/columnheaderRole.js +59 -0
  874. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/columnheaderRole.js.map +1 -0
  875. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/comboboxRole.js +136 -0
  876. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/comboboxRole.js.map +1 -0
  877. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/complementaryRole.js +59 -0
  878. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/complementaryRole.js.map +1 -0
  879. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/contentinfoRole.js +40 -0
  880. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/contentinfoRole.js.map +1 -0
  881. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/definitionRole.js +39 -0
  882. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/definitionRole.js.map +1 -0
  883. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/deletionRole.js +39 -0
  884. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/deletionRole.js.map +1 -0
  885. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/dialogRole.js +39 -0
  886. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/dialogRole.js.map +1 -0
  887. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/directoryRole.js +36 -0
  888. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/directoryRole.js.map +1 -0
  889. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/documentRole.js +43 -0
  890. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/documentRole.js.map +1 -0
  891. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/emphasisRole.js +39 -0
  892. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/emphasisRole.js.map +1 -0
  893. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/feedRole.js +34 -0
  894. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/feedRole.js.map +1 -0
  895. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/figureRole.js +39 -0
  896. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/figureRole.js.map +1 -0
  897. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/formRole.js +61 -0
  898. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/formRole.js.map +1 -0
  899. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/genericRole.js +131 -0
  900. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/genericRole.js.map +1 -0
  901. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/gridRole.js +37 -0
  902. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/gridRole.js.map +1 -0
  903. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/gridcellRole.js +49 -0
  904. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/gridcellRole.js.map +1 -0
  905. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/groupRole.js +57 -0
  906. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/groupRole.js.map +1 -0
  907. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/headingRole.js +68 -0
  908. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/headingRole.js.map +1 -0
  909. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/imgRole.js +57 -0
  910. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/imgRole.js.map +1 -0
  911. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/insertionRole.js +39 -0
  912. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/insertionRole.js.map +1 -0
  913. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/linkRole.js +56 -0
  914. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/linkRole.js.map +1 -0
  915. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/listRole.js +49 -0
  916. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/listRole.js.map +1 -0
  917. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/listboxRole.js +75 -0
  918. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/listboxRole.js.map +1 -0
  919. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/listitemRole.js +49 -0
  920. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/listitemRole.js.map +1 -0
  921. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/logRole.js +36 -0
  922. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/logRole.js.map +1 -0
  923. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/mainRole.js +39 -0
  924. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/mainRole.js.map +1 -0
  925. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/markRole.js +43 -0
  926. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/markRole.js.map +1 -0
  927. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/marqueeRole.js +34 -0
  928. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/marqueeRole.js.map +1 -0
  929. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/mathRole.js +39 -0
  930. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/mathRole.js.map +1 -0
  931. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menuRole.js +56 -0
  932. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menuRole.js.map +1 -0
  933. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menubarRole.js +41 -0
  934. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menubarRole.js.map +1 -0
  935. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menuitemRole.js +55 -0
  936. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menuitemRole.js.map +1 -0
  937. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menuitemcheckboxRole.js +41 -0
  938. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menuitemcheckboxRole.js.map +1 -0
  939. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menuitemradioRole.js +41 -0
  940. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/menuitemradioRole.js.map +1 -0
  941. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/meterRole.js +45 -0
  942. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/meterRole.js.map +1 -0
  943. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/navigationRole.js +39 -0
  944. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/navigationRole.js.map +1 -0
  945. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/noneRole.js +34 -0
  946. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/noneRole.js.map +1 -0
  947. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/noteRole.js +34 -0
  948. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/noteRole.js.map +1 -0
  949. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/optionRole.js +56 -0
  950. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/optionRole.js.map +1 -0
  951. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/paragraphRole.js +39 -0
  952. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/paragraphRole.js.map +1 -0
  953. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/presentationRole.js +43 -0
  954. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/presentationRole.js.map +1 -0
  955. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/progressbarRole.js +46 -0
  956. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/progressbarRole.js.map +1 -0
  957. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/radioRole.js +49 -0
  958. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/radioRole.js.map +1 -0
  959. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/radiogroupRole.js +44 -0
  960. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/radiogroupRole.js.map +1 -0
  961. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/regionRole.js +56 -0
  962. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/regionRole.js.map +1 -0
  963. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/rowRole.js +47 -0
  964. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/rowRole.js.map +1 -0
  965. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/rowgroupRole.js +49 -0
  966. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/rowgroupRole.js.map +1 -0
  967. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/rowheaderRole.js +54 -0
  968. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/rowheaderRole.js.map +1 -0
  969. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/scrollbarRole.js +43 -0
  970. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/scrollbarRole.js.map +1 -0
  971. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/searchRole.js +34 -0
  972. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/searchRole.js.map +1 -0
  973. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/searchboxRole.js +47 -0
  974. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/searchboxRole.js.map +1 -0
  975. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/separatorRole.js +46 -0
  976. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/separatorRole.js.map +1 -0
  977. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/sliderRole.js +54 -0
  978. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/sliderRole.js.map +1 -0
  979. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/spinbuttonRole.js +50 -0
  980. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/spinbuttonRole.js.map +1 -0
  981. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/statusRole.js +42 -0
  982. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/statusRole.js.map +1 -0
  983. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/strongRole.js +39 -0
  984. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/strongRole.js.map +1 -0
  985. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/subscriptRole.js +39 -0
  986. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/subscriptRole.js.map +1 -0
  987. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/superscriptRole.js +39 -0
  988. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/superscriptRole.js.map +1 -0
  989. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/switchRole.js +41 -0
  990. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/switchRole.js.map +1 -0
  991. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tabRole.js +41 -0
  992. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tabRole.js.map +1 -0
  993. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tableRole.js +42 -0
  994. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tableRole.js.map +1 -0
  995. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tablistRole.js +43 -0
  996. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tablistRole.js.map +1 -0
  997. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tabpanelRole.js +34 -0
  998. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tabpanelRole.js.map +1 -0
  999. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/termRole.js +44 -0
  1000. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/termRole.js.map +1 -0
  1001. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/textboxRole.js +119 -0
  1002. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/textboxRole.js.map +1 -0
  1003. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/timeRole.js +39 -0
  1004. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/timeRole.js.map +1 -0
  1005. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/timerRole.js +34 -0
  1006. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/timerRole.js.map +1 -0
  1007. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/toolbarRole.js +41 -0
  1008. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/toolbarRole.js.map +1 -0
  1009. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tooltipRole.js +34 -0
  1010. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/tooltipRole.js.map +1 -0
  1011. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/treeRole.js +40 -0
  1012. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/treeRole.js.map +1 -0
  1013. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/treegridRole.js +34 -0
  1014. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/treegridRole.js.map +1 -0
  1015. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/treeitemRole.js +39 -0
  1016. package/dist/esm/node_modules/aria-query/lib/etc/roles/literal/treeitemRole.js.map +1 -0
  1017. package/dist/esm/node_modules/aria-query/lib/index.js +39 -0
  1018. package/dist/esm/node_modules/aria-query/lib/index.js.map +1 -0
  1019. package/dist/esm/node_modules/aria-query/lib/roleElementMap.js +98 -0
  1020. package/dist/esm/node_modules/aria-query/lib/roleElementMap.js.map +1 -0
  1021. package/dist/esm/node_modules/aria-query/lib/rolesMap.js +130 -0
  1022. package/dist/esm/node_modules/aria-query/lib/rolesMap.js.map +1 -0
  1023. package/dist/esm/node_modules/aria-query/lib/util/iterationDecorator.js +29 -0
  1024. package/dist/esm/node_modules/aria-query/lib/util/iterationDecorator.js.map +1 -0
  1025. package/dist/esm/node_modules/aria-query/lib/util/iteratorProxy.js +45 -0
  1026. package/dist/esm/node_modules/aria-query/lib/util/iteratorProxy.js.map +1 -0
  1027. package/dist/esm/node_modules/chance/chance.js +11705 -0
  1028. package/dist/esm/node_modules/chance/chance.js.map +1 -0
  1029. package/dist/esm/node_modules/dequal/lite/index.js +43 -0
  1030. package/dist/esm/node_modules/dequal/lite/index.js.map +1 -0
  1031. package/dist/esm/node_modules/dom-accessibility-api/dist/accessible-description.js +37 -0
  1032. package/dist/esm/node_modules/dom-accessibility-api/dist/accessible-description.js.map +1 -0
  1033. package/dist/esm/node_modules/dom-accessibility-api/dist/accessible-name-and-description.js +537 -0
  1034. package/dist/esm/node_modules/dom-accessibility-api/dist/accessible-name-and-description.js.map +1 -0
  1035. package/dist/esm/node_modules/dom-accessibility-api/dist/accessible-name.js +26 -0
  1036. package/dist/esm/node_modules/dom-accessibility-api/dist/accessible-name.js.map +1 -0
  1037. package/dist/esm/node_modules/dom-accessibility-api/dist/getRole.js +187 -0
  1038. package/dist/esm/node_modules/dom-accessibility-api/dist/getRole.js.map +1 -0
  1039. package/dist/esm/node_modules/dom-accessibility-api/dist/polyfills/SetLike.js +62 -0
  1040. package/dist/esm/node_modules/dom-accessibility-api/dist/polyfills/SetLike.js.map +1 -0
  1041. package/dist/esm/node_modules/dom-accessibility-api/dist/polyfills/array.from.js +76 -0
  1042. package/dist/esm/node_modules/dom-accessibility-api/dist/polyfills/array.from.js.map +1 -0
  1043. package/dist/esm/node_modules/dom-accessibility-api/dist/util.js +83 -0
  1044. package/dist/esm/node_modules/dom-accessibility-api/dist/util.js.map +1 -0
  1045. package/dist/esm/node_modules/lz-string/libs/lz-string.js +519 -0
  1046. package/dist/esm/node_modules/lz-string/libs/lz-string.js.map +1 -0
  1047. package/dist/esm/test/mocks/DataQuery.js +14 -0
  1048. package/dist/esm/test/mocks/DataQuery.js.map +1 -0
  1049. package/dist/esm/test/mocks/Datasource.js +80 -0
  1050. package/dist/esm/test/mocks/Datasource.js.map +1 -0
  1051. package/dist/esm/test/mocks/Plugin.js +96 -0
  1052. package/dist/esm/test/mocks/Plugin.js.map +1 -0
  1053. package/dist/esm/test/mocks/QueryEditorProps.js +43 -0
  1054. package/dist/esm/test/mocks/QueryEditorProps.js.map +1 -0
  1055. package/dist/esm/test/mocks/utils.js +22 -0
  1056. package/dist/esm/test/mocks/utils.js.map +1 -0
  1057. package/package.json +3 -4
  1058. package/dist/cjs/index.js +0 -9739
  1059. package/dist/cjs/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/components/QueryEditorRow/QueryEditorRow.tsx","../../src/hooks/useDebounce.ts","../../src/components/DebounceInput/DebounceInput.tsx","../../src/components/Segment/Segment.tsx","../../src/components/DatePicker/styles.ts","../../src/components/DatePicker/DatePicker.tsx","../../src/components/DatePickerWithInput/styles.ts","../../src/components/DatePickerWithInput/DatePickerWithInput.tsx","../../src/components/Plugins/PluginSignatureBadge.tsx","../../src/components/DataSourcePicker/DataSourcePicker.tsx","../../src/components/DataLinks/DataLink.tsx","../../src/components/DataLinks/DataLinks.tsx","../../src/components/QueryEditor/expressions.ts","../../src/components/QueryEditor/utils/sql.utils.ts","../../src/components/QueryEditor/defaults.ts","../../src/components/SQLEditor/utils/LinkedToken.ts","../../src/components/SQLEditor/types.ts","../../src/components/SQLEditor/standardSql/getStatementPosition.ts","../../src/components/SQLEditor/utils/toCompletionItem.ts","../../src/components/SQLEditor/standardSql/getStandardSuggestions.ts","../../src/components/SQLEditor/standardSql/suggestionsKindRegistry.ts","../../src/components/SQLEditor/utils/getSuggestionKind.ts","../../src/components/SQLEditor/utils/linkedTokenBuilder.ts","../../src/components/SQLEditor/standardSql/language.ts","../../src/components/SQLEditor/utils/tokenUtils.ts","../../src/components/SQLEditor/utils/commands.ts","../../src/components/SQLEditor/standardSql/standardSuggestionsRegistry.ts","../../src/components/SQLEditor/standardSql/statementPositionResolversRegistry.ts","../../src/components/SQLEditor/utils/debugger.ts","../../src/components/SQLEditor/standardSql/macros.ts","../../src/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.ts","../../src/components/SQLEditor/standardSql/definition.ts","../../src/components/SQLEditor/components/SQLEditor.tsx","../../src/components/SQLEditor/mocks/queries/singleLineFullQuery.ts","../../src/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.ts","../../src/components/SQLEditor/mocks/queries/multiLineFullQuery.ts","../../src/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.ts","../../src/components/SQLEditor/mocks/queries/singleLineEmptyQuery.ts","../../src/components/SQLEditor/mocks/queries/singleLineTwoQueries.ts","../../src/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.ts","../../src/components/SQLEditor/mocks/queries/singleLineMultipleColumns.ts","../../src/components/SQLEditor/mocks/queries/multiLineMultipleColumns.ts","../../src/components/SQLEditor/mocks/Monaco.ts","../../src/components/SQLEditor/mocks/TextModel.ts","../../src/components/SQLEditor/test-utils/statementPosition.ts","../../src/components/SQLEditor/test-utils/index.ts","../../src/components/QueryEditor/types.ts","../../src/components/QueryEditor/EditorStack.tsx","../../src/components/QueryEditor/EditorList.tsx","../../src/components/QueryEditor/AccessoryButton.tsx","../../src/components/QueryEditor/InputGroup.tsx","../../src/components/QueryEditor/visual-query-builder/GroupByRow.tsx","../../src/components/QueryEditor/EditorFieldGroup.tsx","../../src/components/QueryEditor/EditorHeader.tsx","../../src/components/QueryEditor/EditorField.tsx","../../src/components/QueryEditor/EditorRow.tsx","../../src/components/QueryEditor/EditorRows.tsx","../../src/components/QueryEditor/EditorSwitch.tsx","../../src/components/QueryEditor/FlexItem.tsx","../../src/components/QueryEditor/InlineSelect.tsx","../../src/components/QueryEditor/Space.tsx","../../src/components/QueryEditor/ConfirmModal.tsx","../../src/components/QueryEditor/DatasetSelector.tsx","../../src/components/QueryEditor/TableSelector.tsx","../../src/components/QueryEditor/RunQueryButton.tsx","../../src/components/QueryEditor/QueryHeader.tsx","../../src/components/QueryEditor/utils/formatSQL.ts","../../src/components/QueryEditor/query-editor-raw/QueryEditorRaw.tsx","../../src/components/QueryEditor/query-editor-raw/QueryValidator.tsx","../../src/components/QueryEditor/query-editor-raw/QueryToolbox.tsx","../../src/components/QueryEditor/query-editor-raw/RawEditor.tsx","../../src/components/QueryEditor/visual-query-builder/Preview.tsx","../../src/components/QueryEditor/utils/useSqlChange.ts","../../src/components/QueryEditor/visual-query-builder/SQLGroupByRow.tsx","../../src/components/QueryEditor/visual-query-builder/OrderByRow.tsx","../../src/components/QueryEditor/visual-query-builder/SQLOrderByRow.tsx","../../src/components/QueryEditor/visual-query-builder/SelectRow.tsx","../../src/components/QueryEditor/visual-query-builder/SQLSelectRow.tsx","../../src/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.tsx","../../src/components/QueryEditor/visual-query-builder/WhereRow.tsx","../../src/components/QueryEditor/visual-query-builder/SQLWhereRow.tsx","../../src/components/QueryEditor/visual-query-builder/EditorRow.tsx","../../src/components/QueryEditor/visual-query-builder/EditorField.tsx","../../src/components/QueryEditor/visual-query-builder/EditorRows.tsx","../../src/components/QueryEditor/visual-query-builder/VisualEditor.tsx","../../src/datasource/constants.ts","../../src/datasource/SqlDatasource.ts","../../src/components/QueryEditor/QueryEditor.tsx","../../src/components/ConfigEditor/SecureSocksProxyToggle.tsx","../../src/components/ConfigEditor/DataSourceDescription.tsx","../../src/components/ConfigEditor/ConfigSection/GenericConfigSection.tsx","../../src/components/ConfigEditor/ConfigSection/ConfigSection.tsx","../../src/components/ConfigEditor/ConfigSection/ConfigSubSection.tsx","../../src/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.tsx","../../src/components/ConfigEditor/Auth/types.ts","../../src/components/ConfigEditor/Auth/styles.ts","../../src/components/ConfigEditor/Auth/auth-method/BasicAuth.tsx","../../src/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.tsx","../../src/components/ConfigEditor/Auth/tls/TLSSettingsSection.tsx","../../src/components/ConfigEditor/Auth/tls/SelfSignedCertificate.tsx","../../src/components/ConfigEditor/Auth/tls/TLSClientAuth.tsx","../../src/components/ConfigEditor/Auth/tls/SkipTLSVerification.tsx","../../src/components/ConfigEditor/Auth/tls/TLSSettings.tsx","../../src/components/ConfigEditor/Auth/custom-headers/CustomHeader.tsx","../../src/components/ConfigEditor/Auth/custom-headers/CustomHeaders.tsx","../../src/components/ConfigEditor/Auth/Auth.tsx","../../src/components/ConfigEditor/Auth/utils.ts","../../src/components/ConfigEditor/Connection/ConnectionSettings.tsx","../../src/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.tsx","../../src/components/CustomHeadersSettings/CustomHeadersSettings.tsx","../../src/components/VisualQueryBuilder/types.ts","../../src/components/VisualQueryBuilder/QueryModellerBase.ts","../../src/components/VisualQueryBuilder/components/LabelFilterItem.tsx","../../src/components/VisualQueryBuilder/components/LabelFilters.tsx","../../src/components/VisualQueryBuilder/components/OperationExplainedBox.tsx","../../src/components/VisualQueryBuilder/components/OperationInfoButton.tsx","../../src/components/VisualQueryBuilder/components/OperationHeader.tsx","../../src/components/VisualQueryBuilder/components/OperationParamEditor.tsx","../../src/components/VisualQueryBuilder/components/OperationEditorBody.tsx","../../src/components/VisualQueryBuilder/components/OperationEditor.tsx","../../src/components/VisualQueryBuilder/components/OperationList.tsx","../../src/components/VisualQueryBuilder/components/RawQuery.tsx","../../src/components/VisualQueryBuilder/components/OperationListExplained.tsx","../../src/components/VisualQueryBuilder/components/OperationsEditorRow.tsx","../../src/components/VisualQueryBuilder/components/QueryBuilderHints.tsx","../../src/components/VisualQueryBuilder/components/QueryEditorModeToggle.tsx","../../src/components/VisualQueryBuilder/components/QueryHeaderSwitch.tsx","../../src/components/VisualQueryBuilder/components/QueryOptionGroup.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface QueryEditorRowProps {\n label?: string;\n className?: string;\n noFillEnd?: boolean;\n children?: React.ReactNode;\n}\n\nexport const QueryEditorRow = (props: QueryEditorRowProps) => {\n const className: string = props.className ?? 'width-8';\n const noFillEnd: boolean = props.noFillEnd ?? false;\n\n return (\n <div className=\"gf-form\">\n {props.label && <label className={`gf-form-label query-keyword ${className}`}>{props.label}</label>}\n {props.children}\n\n <div className={'gf-form--grow'}>{noFillEnd || <div className={'gf-form-label gf-form-label--grow'}></div>}</div>\n </div>\n );\n};\n","import { useState, useEffect } from 'react';\n\nexport const DEFAULT_DELAY = 275;\n\nexport const useDebounce = <T>(value: T, delay: number = DEFAULT_DELAY) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n // TODO: We should fix this\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n return debouncedValue;\n};\n","import React, { type ComponentProps } from 'react';\nimport { Input } from '@grafana/ui';\nimport { useDebounce } from '../../hooks/useDebounce';\n\nexport interface DebounceInputProps extends Omit<ComponentProps<typeof Input>, 'ref'> {\n value: string;\n onDebounce: (debouncedInput?: string) => void;\n delay?: number;\n}\n\nexport const DebounceInput = (props: DebounceInputProps) => {\n const { delay, onDebounce, value, ...rest } = props;\n const [input, setInput] = React.useState(value);\n\n const debouncedInput = useDebounce(input, delay);\n\n // TODO: We should fix this\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(() => onDebounce(debouncedInput), [debouncedInput]);\n React.useEffect(() => setInput(value), [value]);\n\n return <Input onChange={(ev) => setInput(ev.currentTarget.value)} value={input} {...rest} />;\n};\n","import React, { useEffect, type ComponentProps } from 'react';\nimport { Segment as GrafanaSegment } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { useDebounce } from '../../hooks/useDebounce';\n\nexport interface SegmentProps<T> extends Omit<ComponentProps<typeof GrafanaSegment<T>>, 'onChange'> {\n value: T;\n onDebounce: (debouncedSegment?: T) => void;\n delay?: number;\n}\n\nexport function Segment<T>(props: SegmentProps<T>) {\n const { delay, onDebounce, value, options, ...rest } = props;\n const [input, setInput] = React.useState(value);\n\n const debouncedSegment = useDebounce(input, delay);\n\n // TODO: We should fix the exhaustive-deps rule\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => onDebounce(debouncedSegment), [debouncedSegment]);\n useEffect(() => setInput(value), [value]);\n\n return (\n <GrafanaSegment\n options={options}\n onChange={(ev: SelectableValue<T>) => setInput(ev.value!)}\n value={input}\n {...rest}\n />\n );\n}\n","import { type GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\n\nexport const getStyles = (theme: GrafanaTheme2) => {\n const containerBorder = theme.isDark ? theme.v1.palette.dark9 : theme.v1.palette.gray5;\n\n return {\n container: css`\n top: -1px;\n position: absolute;\n right: 544px;\n box-shadow: 0px 0px 20px ${theme.v1.colors.dropdownShadow};\n background-color: ${theme.v1.colors.bodyBg};\n z-index: -1;\n border: 1px solid ${containerBorder};\n border-radius: 2px 0 0 2px;\n\n &:after {\n display: block;\n background-color: ${theme.v1.colors.bodyBg};\n width: 19px;\n height: 100%;\n content: '';\n position: absolute;\n top: 0;\n right: -19px;\n border-left: 1px solid ${theme.v1.colors.border1};\n }\n `,\n modal: css`\n z-index: ${theme.v1.zIndex.modal};\n `,\n content: css`\n margin: 0 auto;\n width: 268px;\n `,\n backdrop: css`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: #202226;\n opacity: 0.7;\n z-index: ${theme.v1.zIndex.modalBackdrop};\n text-align: center;\n `,\n };\n};\n\nexport const getBodyStyles = (theme: GrafanaTheme2) => {\n const containerBorder = theme.isDark ? theme.v1.palette.dark9 : theme.v1.palette.gray5;\n\n return {\n title: css`\n color: ${theme.colors.text};\n background-color: ${theme.v1.colors.bodyBg};\n font-size: ${theme.v1.typography.size.md};\n border: 1px solid transparent;\n\n &:hover {\n position: relative;\n }\n `,\n body: css`\n z-index: ${theme.zIndex.modal};\n position: fixed;\n background-color: ${theme.v1.colors.bodyBg};\n width: 268px;\n\n box-shadow: 0px 0px 20px ${theme.v1.colors.dropdownShadow};\n border: 1px solid ${containerBorder};\n border-radius: 2px 0 0 2px;\n\n .react-calendar__navigation__label,\n .react-calendar__navigation__arrow,\n .react-calendar__navigation {\n padding-top: 4px;\n background-color: inherit;\n color: ${theme.colors.text};\n border: 0;\n font-weight: ${theme.v1.typography.weight.semibold};\n }\n\n .react-calendar__month-view__weekdays {\n background-color: inherit;\n text-align: center;\n color: ${theme.v1.palette.blue77};\n\n abbr {\n border: 0;\n text-decoration: none;\n cursor: default;\n display: block;\n padding: 4px 0 4px 0;\n }\n }\n\n .react-calendar__month-view__days {\n background-color: inherit;\n }\n\n .react-calendar__tile,\n .react-calendar__tile--now {\n margin-bottom: 4px;\n background-color: inherit;\n height: 26px;\n }\n\n .react-calendar__navigation__label,\n .react-calendar__navigation > button:focus,\n .time-picker-calendar-tile:focus {\n outline: 0;\n }\n\n .react-calendar__tile--active,\n .react-calendar__tile--active:hover {\n color: ${theme.v1.palette.white};\n font-weight: ${theme.v1.typography.weight.semibold};\n background: ${theme.v1.palette.blue95};\n box-shadow: none;\n border: 0px;\n }\n\n .react-calendar__tile--rangeEnd,\n .react-calendar__tile--rangeStart {\n padding: 0;\n border: 0px;\n color: ${theme.v1.palette.white};\n font-weight: ${theme.v1.typography.weight.semibold};\n background: ${theme.v1.palette.blue95};\n\n abbr {\n background-color: ${theme.v1.palette.blue77};\n border-radius: 100px;\n display: block;\n padding-top: 2px;\n height: 26px;\n }\n }\n\n .react-calendar__tile--rangeStart {\n border-top-left-radius: 20px;\n border-bottom-left-radius: 20px;\n }\n\n .react-calendar__tile--rangeEnd {\n border-top-right-radius: 20px;\n border-bottom-right-radius: 20px;\n }\n `,\n };\n};\n","import React, { memo } from 'react';\nimport Calendar from 'react-calendar';\nimport { useTheme2, ClickOutsideWrapper, Icon } from '@grafana/ui';\nimport { getStyles, getBodyStyles } from './styles';\n\nexport interface DatePickerProps {\n isOpen?: boolean;\n onClose: () => void;\n onChange: (value: Date) => void;\n value?: Date;\n}\n\nexport const DatePicker = memo<DatePickerProps>((props) => {\n const theme = useTheme2();\n const styles = getStyles(theme);\n const { isOpen, onClose } = props;\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <ClickOutsideWrapper useCapture={true} includeButtonPress={false} onClick={onClose}>\n <div className={styles.modal} data-testid=\"date-picker\">\n <Body {...props} />\n </div>\n </ClickOutsideWrapper>\n );\n});\n\nDatePicker.displayName = 'DatePicker';\n\nconst Body = memo<DatePickerProps>(({ value, onChange }) => {\n const theme = useTheme2();\n const styles = getBodyStyles(theme);\n\n return (\n <Calendar\n className={styles.body}\n tileClassName={styles.title}\n value={value || new Date()}\n nextLabel={<Icon name=\"angle-right\" />}\n prevLabel={<Icon name=\"angle-left\" />}\n onChange={(ev: any) => {\n if (!Array.isArray(ev)) {\n onChange(ev);\n }\n }}\n locale=\"en\"\n />\n );\n});\n\nBody.displayName = 'Body';\n","import { css } from '@emotion/css';\n\nexport function getStyles() {\n return {\n input: css({\n /* hides the native Calendar picker icon given when using type=date */\n \"input[type='date']::-webkit-inner-spin-button, input[type='date']::-webkit-calendar-picker-indicator\": {\n display: 'none',\n WebkitAppearance: 'none',\n },\n }),\n };\n}\n","import { Input } from '@grafana/ui';\n\nimport React, { type ComponentProps } from 'react';\nimport { DatePicker } from '../DatePicker/DatePicker';\nimport { getStyles } from './styles';\nimport { cx } from '@emotion/css';\n\nexport const formatDate = (date: Date) => date.toISOString().split('T')[0];\n\nexport interface DatePickerWithInputProps extends Omit<ComponentProps<typeof Input>, 'ref' | 'value' | 'onChange'> {\n value?: Date;\n onChange: (value: Date) => void;\n}\n\nexport const DatePickerWithInput = (props: DatePickerWithInputProps) => {\n const { value, onChange, className, ...rest } = props;\n const [open, setOpen] = React.useState(false);\n const styles = getStyles();\n\n return (\n <>\n <Input\n type=\"date\"\n placeholder=\"Date\"\n value={formatDate(value || new Date())}\n onClick={() => setOpen(true)}\n onChange={() => {}}\n className={cx(styles.input, className)}\n {...rest}\n />\n <DatePicker isOpen={open} value={value} onChange={(ev: any) => onChange(ev)} onClose={() => setOpen(false)} />\n </>\n );\n};\n","import React, { type HTMLAttributes } from 'react';\nimport { Badge, type BadgeProps } from '@grafana/ui';\nimport { PluginErrorCode, PluginSignatureStatus } from '@grafana/data';\n\ninterface Props extends HTMLAttributes<HTMLDivElement> {\n status?: PluginSignatureStatus;\n}\n\nexport const PluginSignatureBadge = ({ status, ...otherProps }: Props) => {\n const display = getSignatureDisplayModel(status);\n return (\n <Badge\n text={display.text}\n color={display.color as any}\n icon={display.icon}\n tooltip={display.tooltip}\n {...otherProps}\n />\n );\n};\n\nexport function isUnsignedPluginSignature(signature?: PluginSignatureStatus) {\n return signature && signature !== PluginSignatureStatus.valid && signature !== PluginSignatureStatus.internal;\n}\n\nexport function mapPluginErrorCodeToSignatureStatus(code: PluginErrorCode) {\n switch (code) {\n case PluginErrorCode.invalidSignature:\n return PluginSignatureStatus.invalid;\n case PluginErrorCode.missingSignature:\n return PluginSignatureStatus.missing;\n case PluginErrorCode.modifiedSignature:\n return PluginSignatureStatus.modified;\n default:\n return PluginSignatureStatus.missing;\n }\n}\n\nfunction getSignatureDisplayModel(signature?: PluginSignatureStatus): BadgeProps {\n if (!signature) {\n signature = PluginSignatureStatus.invalid;\n }\n\n switch (signature) {\n case PluginSignatureStatus.internal:\n return { text: 'Core', icon: 'cube', color: 'blue', tooltip: 'Core plugin that is bundled with Grafana' };\n case PluginSignatureStatus.valid:\n return { text: 'Signed', icon: 'lock', color: 'green', tooltip: 'Signed and verified plugin' };\n case PluginSignatureStatus.invalid:\n return {\n text: 'Invalid signature',\n icon: 'exclamation-triangle',\n color: 'red',\n tooltip: 'Invalid plugin signature',\n };\n case PluginSignatureStatus.modified:\n return {\n text: 'Modified signature',\n icon: 'exclamation-triangle',\n color: 'red',\n tooltip: 'Valid signature but content has been modified',\n };\n case PluginSignatureStatus.missing:\n return {\n text: 'Missing signature',\n icon: 'exclamation-triangle',\n color: 'red',\n tooltip: 'Missing plugin signature',\n };\n }\n\n return { text: 'Unsigned', icon: 'exclamation-triangle', color: 'red', tooltip: 'Unsigned external plugin' };\n}\n\nPluginSignatureBadge.displayName = 'PluginSignatureBadge';\n","// Libraries\nimport React, { PureComponent } from 'react';\n\n// Components\nimport { HorizontalGroup, Select } from '@grafana/ui';\nimport { type DataSourceInstanceSettings, type SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { isUnsignedPluginSignature, PluginSignatureBadge } from '../Plugins/PluginSignatureBadge';\nimport { getDataSourceSrv, type DataSourceSrv } from '@grafana/runtime';\n\nexport interface Props {\n onChange: (ds: DataSourceInstanceSettings) => void;\n current: string | null;\n hideTextValue?: boolean;\n onBlur?: () => void;\n autoFocus?: boolean;\n openMenuOnFocus?: boolean;\n placeholder?: string;\n tracing?: boolean;\n mixed?: boolean;\n dashboard?: boolean;\n metrics?: boolean;\n annotations?: boolean;\n variables?: boolean;\n pluginId?: string;\n noDefault?: boolean;\n}\n\nexport interface State {\n error?: string;\n}\n\nexport class DataSourcePicker extends PureComponent<Props, State> {\n dataSourceSrv: DataSourceSrv = getDataSourceSrv();\n\n static defaultProps: Partial<Props> = {\n autoFocus: false,\n openMenuOnFocus: false,\n placeholder: 'Select datasource',\n };\n\n state: State = {};\n\n constructor(props: Props) {\n super(props);\n }\n\n componentDidMount() {\n const { current } = this.props;\n const dsSettings = this.dataSourceSrv.getInstanceSettings(current!);\n if (!dsSettings) {\n this.setState({ error: 'Could not find data source ' + current });\n }\n }\n\n onChange = (item: SelectableValue<string>) => {\n const dsSettings = this.dataSourceSrv.getInstanceSettings(item.value!);\n\n if (dsSettings) {\n this.props.onChange(dsSettings);\n this.setState({ error: undefined });\n }\n };\n\n private getCurrentValue(): SelectableValue<string> {\n const { current, hideTextValue, noDefault } = this.props;\n\n if (!current && noDefault) {\n return {\n label: 'No datasources found',\n };\n }\n\n const ds = this.dataSourceSrv.getInstanceSettings(current!);\n\n if (ds) {\n return {\n label: ds.name.substr(0, 37),\n value: ds.name,\n imgUrl: ds.meta.info.logos.small,\n hideText: hideTextValue,\n meta: ds.meta,\n };\n }\n\n return {\n label: (current ?? 'no name') + ' - not found',\n value: (current ?? 'no name') + ' - not found',\n imgUrl: '',\n hideText: hideTextValue,\n };\n }\n\n getDataSourceOptions(): Array<SelectableValue<string>> {\n const options: Array<SelectableValue<string>> = this.dataSourceSrv.getList().map((ds) => ({\n value: ds.uid,\n label: ds.name,\n imgUrl: ds.meta.info.logos.small,\n meta: ds.meta,\n }));\n\n return options;\n }\n\n render() {\n const { autoFocus, onBlur, openMenuOnFocus, placeholder } = this.props;\n const { error } = this.state;\n const options = this.getDataSourceOptions();\n const value = this.getCurrentValue();\n\n return (\n <div aria-label={selectors.components.DataSourcePicker.container}>\n <Select\n className=\"ds-picker select-container\"\n isMulti={false}\n isClearable={false}\n backspaceRemovesValue={false}\n onChange={this.onChange}\n options={options}\n autoFocus={autoFocus}\n onBlur={onBlur}\n openMenuOnFocus={openMenuOnFocus}\n maxMenuHeight={500}\n placeholder={placeholder}\n noOptionsMessage=\"No datasources found\"\n value={value}\n invalid={!!error}\n getOptionLabel={(o) => {\n if (o.meta && isUnsignedPluginSignature(o.meta.signature) && o !== value) {\n return (\n <HorizontalGroup align=\"center\" justify=\"space-between\">\n <span>{o.label}</span> <PluginSignatureBadge status={o.meta.signature} />\n </HorizontalGroup>\n );\n }\n return o.label || '';\n }}\n />\n </div>\n );\n }\n}\n","import React, { type Dispatch, type SetStateAction, useEffect, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { type VariableSuggestion, type DataSourceInstanceSettings, type DataSourceJsonData } from '@grafana/data';\nimport { Button, LegacyForms, DataLinkInput, stylesFactory } from '@grafana/ui';\nconst { FormField, Switch } = LegacyForms;\nimport { type DataLinkConfig } from './types';\nimport { usePrevious } from 'react-use';\nimport { DataSourcePicker } from '../DataSourcePicker/DataSourcePicker';\n\nconst getStyles = stylesFactory(() => ({\n firstRow: css`\n display: flex;\n `,\n nameField: css`\n flex: 2;\n `,\n regexField: css`\n flex: 3;\n `,\n row: css`\n display: flex;\n align-items: baseline;\n `,\n}));\n\ntype Props = {\n value: DataLinkConfig;\n datasources?: Array<DataSourceInstanceSettings<DataSourceJsonData>>;\n onChange: (value: DataLinkConfig) => void;\n onDelete: () => void;\n suggestions: VariableSuggestion[];\n className?: string;\n};\nexport const DataLink = (props: Props) => {\n const { value, onChange, onDelete, suggestions, className } = props;\n const styles = getStyles();\n const [showInternalLink, setShowInternalLink] = useInternalLink(value.datasourceUid);\n\n const handleChange = (field: keyof typeof value) => (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange({\n ...value,\n [field]: event.currentTarget.value,\n });\n };\n\n return (\n <div className={className}>\n <div className={styles.firstRow + ' gf-form'}>\n <FormField\n className={styles.nameField}\n labelWidth={6}\n // A bit of a hack to prevent using default value for the width from FormField\n inputWidth={null}\n label=\"Field\"\n type=\"text\"\n value={value.field}\n tooltip={'Can be exact field name or a regex pattern that will match on the field name.'}\n onChange={handleChange('field')}\n />\n <Button\n variant={'destructive'}\n title=\"Remove field\"\n icon=\"times\"\n onClick={(event) => {\n event.preventDefault();\n onDelete();\n }}\n />\n </div>\n <div className=\"gf-form\">\n <FormField\n className={styles.nameField}\n inputWidth={null}\n label=\"Label\"\n type=\"text\"\n value={value.label}\n onChange={handleChange('label')}\n tooltip={'Use to provide a meaningful label to the data matched in the regex'}\n />\n <FormField\n className={styles.regexField}\n inputWidth={null}\n label=\"Regex\"\n type=\"text\"\n value={value.matcherRegex}\n onChange={handleChange('matcherRegex')}\n tooltip={\n 'Use to parse and capture some part of the log message. You can use the captured groups in the template.'\n }\n />\n </div>\n <div className=\"gf-form\">\n <FormField\n label={showInternalLink ? 'Query' : 'URL'}\n labelWidth={6}\n inputEl={\n <DataLinkInput\n placeholder={showInternalLink ? '${__value.raw}' : 'http://example.com/${__value.raw}'}\n value={value.url || ''}\n onChange={(newValue) =>\n onChange({\n ...value,\n url: newValue,\n })\n }\n suggestions={suggestions}\n />\n }\n className={css`\n width: 100%;\n `}\n />\n </div>\n\n <div className={styles.row}>\n <Switch\n labelClass={'width-6'}\n label=\"Internal link\"\n checked={showInternalLink}\n onChange={() => {\n if (showInternalLink) {\n onChange({\n ...value,\n datasourceUid: undefined,\n });\n }\n setShowInternalLink(!showInternalLink);\n }}\n />\n {showInternalLink && (\n <DataSourcePicker\n // Uid and value should be always set in the db and so in the items.\n onChange={(ds) => {\n onChange({\n ...value,\n datasourceUid: ds.uid,\n });\n }}\n current={value.datasourceUid}\n />\n )}\n </div>\n </div>\n );\n};\n\nfunction useInternalLink(datasourceUid?: string): [boolean, Dispatch<SetStateAction<boolean>>] {\n const [showInternalLink, setShowInternalLink] = useState<boolean>(!!datasourceUid);\n const previousUid = usePrevious(datasourceUid);\n\n // Force internal link visibility change if uid changed outside of this component.\n useEffect(() => {\n if (!previousUid && datasourceUid && !showInternalLink) {\n setShowInternalLink(true);\n }\n if (previousUid && !datasourceUid && showInternalLink) {\n setShowInternalLink(false);\n }\n }, [previousUid, datasourceUid, showInternalLink]);\n\n return [showInternalLink, setShowInternalLink];\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { type GrafanaTheme2, VariableOrigin, DataLinkBuiltInVars } from '@grafana/data';\nimport { type DataLinkConfig } from './types';\nimport { DataLink } from './DataLink';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n infoText: css`\n padding-bottom: ${theme.v1.spacing.md};\n color: ${theme.v1.colors.textWeak};\n `,\n dataLink: css`\n margin-bottom: ${theme.v1.spacing.sm};\n `,\n});\n\ntype Props = {\n value?: DataLinkConfig[];\n onChange: (value: DataLinkConfig[]) => void;\n};\nexport const DataLinks = (props: Props) => {\n const { value, onChange } = props;\n const theme = useTheme2();\n const styles = getStyles(theme);\n\n return (\n <>\n <h3 className=\"page-heading\">Data links</h3>\n\n <div className={styles.infoText}>\n Add links to existing fields. Links will be shown in log row details next to the field value.\n </div>\n\n <div className=\"gf-form-group\">\n {value &&\n value.map((field, index) => {\n return (\n <DataLink\n className={styles.dataLink}\n key={index}\n value={field}\n onChange={(newField) => {\n const newDataLinks = [...value];\n newDataLinks.splice(index, 1, newField);\n onChange(newDataLinks);\n }}\n onDelete={() => {\n const newDataLinks = [...value];\n newDataLinks.splice(index, 1);\n onChange(newDataLinks);\n }}\n suggestions={[\n {\n value: DataLinkBuiltInVars.valueRaw,\n label: 'Raw value',\n documentation: 'Raw value of the field',\n origin: VariableOrigin.Value,\n },\n ]}\n />\n );\n })}\n <div>\n <Button\n variant={'secondary'}\n className={css`\n margin-right: 10px;\n `}\n icon=\"plus\"\n onClick={(event) => {\n event.preventDefault();\n const newDataLinks = [...(value || []), { field: '', label: '', matcherRegex: '', url: '' }];\n onChange(newDataLinks);\n }}\n >\n Add\n </Button>\n </div>\n </div>\n </>\n );\n};\n","export enum QueryEditorPropertyType {\n String = 'string',\n}\n\nexport interface QueryEditorProperty {\n type: QueryEditorPropertyType;\n name?: string;\n}\n\nexport type QueryEditorOperatorType = string | boolean | number;\ntype QueryEditorOperatorValueType = QueryEditorOperatorType | QueryEditorOperatorType[];\n\nexport interface QueryEditorOperator<T extends QueryEditorOperatorValueType> {\n name?: string;\n value?: T;\n}\n\nexport interface QueryEditorOperatorExpression {\n type: QueryEditorExpressionType.Operator;\n property: QueryEditorProperty;\n operator: QueryEditorOperator<QueryEditorOperatorValueType>;\n}\n\nexport interface QueryEditorArrayExpression {\n type: QueryEditorExpressionType.And | QueryEditorExpressionType.Or;\n expressions: QueryEditorExpression[] | QueryEditorArrayExpression[];\n}\n\nexport interface QueryEditorPropertyExpression {\n type: QueryEditorExpressionType.Property;\n property: QueryEditorProperty;\n}\n\nexport enum QueryEditorExpressionType {\n Property = 'property',\n Operator = 'operator',\n Or = 'or',\n And = 'and',\n GroupBy = 'groupBy',\n Function = 'function',\n FunctionParameter = 'functionParameter',\n}\n\nexport type QueryEditorExpression =\n | QueryEditorArrayExpression\n | QueryEditorPropertyExpression\n | QueryEditorGroupByExpression\n | QueryEditorFunctionExpression\n | QueryEditorFunctionParameterExpression\n | QueryEditorOperatorExpression;\n\nexport interface QueryEditorGroupByExpression {\n type: QueryEditorExpressionType.GroupBy;\n property: QueryEditorProperty;\n}\n\nexport interface QueryEditorFunctionExpression {\n type: QueryEditorExpressionType.Function;\n name?: string;\n parameters?: QueryEditorFunctionParameterExpression[];\n}\n\nexport interface QueryEditorFunctionParameterExpression {\n type: QueryEditorExpressionType.FunctionParameter;\n name?: string;\n}\n","import { isEmpty } from 'lodash';\n\nimport {\n QueryEditorExpressionType,\n type QueryEditorFunctionExpression,\n type QueryEditorGroupByExpression,\n type QueryEditorPropertyExpression,\n QueryEditorPropertyType,\n} from '../expressions';\nimport { type SQLQuery, type SQLExpression, type DB } from '../types';\n\nexport function getRawSqlFn(db: DB) {\n return db.toRawSql ? db.toRawSql : (query: SQLQuery) => toRawSql(query, Boolean(db.disableDatasets));\n}\n\nexport function toRawSql({ sql, dataset, table }: SQLQuery, disableDatasets: boolean): string {\n let rawQuery = '';\n\n if (!sql || !haveColumns(sql.columns)) {\n return rawQuery;\n }\n\n rawQuery += createSelectClause(sql.columns);\n\n if (disableDatasets) {\n if (table) {\n rawQuery += `FROM ${table} `;\n }\n } else {\n if (dataset && table) {\n rawQuery += `FROM ${dataset}.${table} `;\n }\n }\n\n if (sql.whereString) {\n rawQuery += `WHERE ${sql.whereString} `;\n }\n\n if (sql.groupBy?.[0]?.property.name) {\n const groupBy = sql.groupBy.map((g) => g.property.name).filter((g) => !isEmpty(g));\n rawQuery += `GROUP BY ${groupBy.join(', ')} `;\n }\n\n if (sql.orderBy?.property.name) {\n rawQuery += `ORDER BY ${sql.orderBy.property.name} `;\n }\n\n if (sql.orderBy?.property.name && sql.orderByDirection) {\n rawQuery += `${sql.orderByDirection} `;\n }\n\n if (sql.limit !== undefined && sql.limit >= 0) {\n rawQuery += `LIMIT ${sql.limit} `;\n }\n return rawQuery;\n}\n\nfunction createSelectClause(sqlColumns: NonNullable<SQLExpression['columns']>): string {\n const columns = sqlColumns.map((c) => {\n let rawColumn = '';\n if (c.name) {\n rawColumn += `${c.name}(${c.parameters?.map((p) => `${p.name}`)})`;\n } else {\n rawColumn += `${c.parameters?.map((p) => `${p.name}`)}`;\n }\n return rawColumn;\n });\n return `SELECT ${columns.join(', ')} `;\n}\n\nexport function haveColumns(columns: SQLExpression['columns']): columns is NonNullable<SQLExpression['columns']> {\n if (!columns) {\n return false;\n }\n\n const haveColumn = columns.some((c) => c.parameters?.length || c.parameters?.some((p) => p.name));\n const haveFunction = columns.some((c) => c.name);\n return haveColumn || haveFunction;\n}\n\n/**\n * Creates a GroupByExpression for a specified field\n */\nexport function setGroupByField(field?: string): QueryEditorGroupByExpression {\n return {\n type: QueryEditorExpressionType.GroupBy,\n property: {\n type: QueryEditorPropertyType.String,\n name: field,\n },\n };\n}\n\n/**\n * Creates a PropertyExpression for a specified field\n */\nexport function setPropertyField(field?: string): QueryEditorPropertyExpression {\n return {\n type: QueryEditorExpressionType.Property,\n property: {\n type: QueryEditorPropertyType.String,\n name: field,\n },\n };\n}\n\nexport function createFunctionField(functionName?: string): QueryEditorFunctionExpression {\n return {\n type: QueryEditorExpressionType.Function,\n name: functionName,\n parameters: [],\n };\n}\n","import { EditorMode, QueryFormat, type SQLQuery } from './types';\nimport { createFunctionField, setGroupByField } from './utils/sql.utils';\n\nexport function applyQueryDefaults(q?: SQLQuery): SQLQuery {\n let editorMode = q?.editorMode || EditorMode.Builder;\n\n // Switching to code editor if the query was created before visual query builder was introduced.\n if (q?.editorMode === undefined && q?.rawSql !== undefined) {\n editorMode = EditorMode.Code;\n }\n\n const result: SQLQuery = {\n ...q,\n refId: q?.refId || 'A',\n format: q?.format !== undefined ? q.format : QueryFormat.Table,\n rawSql: q?.rawSql || '',\n editorMode,\n sql: q?.sql || {\n columns: [createFunctionField()],\n groupBy: [setGroupByField()],\n limit: 50,\n },\n };\n\n return result;\n}\n\nexport type QueryWithDefaults = ReturnType<typeof applyQueryDefaults>;\n","import { type monacoTypes } from '@grafana/ui';\nimport { TokenType } from '../types';\n\nexport class LinkedToken {\n constructor(\n public type: string,\n public value: string,\n public range: monacoTypes.IRange,\n public previous: LinkedToken | null,\n public next: LinkedToken | null\n ) {}\n\n isKeyword(): boolean {\n return this.type === TokenType.Keyword;\n }\n\n isWhiteSpace(): boolean {\n return this.type === TokenType.Whitespace;\n }\n\n isParenthesis(): boolean {\n return this.type === TokenType.Parenthesis;\n }\n\n isIdentifier(): boolean {\n return this.type === TokenType.Identifier;\n }\n\n isString(): boolean {\n return this.type === TokenType.String;\n }\n\n isNumber(): boolean {\n return this.type === TokenType.Number;\n }\n\n isDoubleQuotedString(): boolean {\n return this.type === TokenType.Type;\n }\n\n isVariable(): boolean {\n return this.type === TokenType.Variable;\n }\n\n isFunction(): boolean {\n return this.type === TokenType.Function;\n }\n\n isOperator(): boolean {\n return this.type === TokenType.Operator;\n }\n\n isTemplateVariable(): boolean {\n return this.type === TokenType.Variable;\n }\n\n is(type: TokenType, value?: string | number | boolean): boolean {\n const isType = this.type === type;\n\n return value !== undefined ? isType && compareTokenWithValue(type, this, value) : isType;\n }\n\n getPreviousNonWhiteSpaceToken(): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n if (!curr.isWhiteSpace()) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getPreviousOfType(type: TokenType, value?: string): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getPreviousUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n let tokens: LinkedToken[] = [];\n let curr = this.previous;\n while (curr != null) {\n if (ignoreTypes.some((t) => t === curr?.type)) {\n curr = curr.previous;\n continue;\n }\n\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return tokens;\n }\n if (!curr.isWhiteSpace()) {\n tokens.push(curr);\n }\n curr = curr.previous;\n }\n\n return tokens;\n }\n\n getNextUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n let tokens: LinkedToken[] = [];\n let curr = this.next;\n while (curr != null) {\n if (ignoreTypes.some((t) => t === curr?.type)) {\n curr = curr.next;\n continue;\n }\n\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return tokens;\n }\n if (!curr.isWhiteSpace()) {\n tokens.push(curr);\n }\n curr = curr.next;\n }\n\n return tokens;\n }\n\n getPreviousKeyword(): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n if (curr.isKeyword()) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getNextNonWhiteSpaceToken(): LinkedToken | null {\n let curr = this.next;\n while (curr != null) {\n if (!curr.isWhiteSpace()) {\n return curr;\n }\n curr = curr.next;\n }\n return null;\n }\n\n getNextOfType(type: TokenType, value?: string): LinkedToken | null {\n let curr = this.next;\n while (curr != null) {\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return curr;\n }\n curr = curr.next;\n }\n return null;\n }\n}\n\nfunction compareTokenWithValue(type: TokenType, token: LinkedToken, value: string | number | boolean) {\n return type === TokenType.Keyword || type === TokenType.Operator\n ? token.value.toLowerCase() === value.toString().toLowerCase()\n : token.value === value;\n}\n","import { type Monaco, type monacoTypes } from '@grafana/ui';\nimport { type SQLMonarchLanguage, type StatementPositionResolver, type SuggestionsResolver } from './standardSql/types';\nimport { type LinkedToken } from './utils/LinkedToken';\n\n/**\n * Provides a context for suggestions resolver\n * @alpha\n */\nexport interface PositionContext {\n position: monacoTypes.IPosition;\n kind: SuggestionKind[];\n statementPosition: StatementPosition[];\n currentToken: LinkedToken | null;\n range: monacoTypes.IRange;\n}\n\nexport type CustomSuggestion = Partial<monacoTypes.languages.CompletionItem> & { label: string };\n\nexport interface CustomSuggestionKind {\n id: string;\n suggestionsResolver: SuggestionsResolver;\n applyTo?: Array<StatementPosition | string>;\n overrideDefault?: boolean;\n}\n\nexport interface CustomStatementPlacement {\n id: string;\n name?: string;\n resolve: StatementPositionResolver;\n overrideDefault?: boolean;\n}\nexport type StatementPlacementProvider = () => CustomStatementPlacement[];\nexport type SuggestionKindProvider = () => CustomSuggestionKind[];\n\nexport interface ColumnDefinition {\n name: string;\n type?: string;\n description?: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface SchemaDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface TableDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface Operator {\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n}\n\nexport interface TableIdentifier {\n table?: string;\n schema?: string;\n}\n\nexport interface SQLCompletionItemProvider\n extends Omit<monacoTypes.languages.CompletionItemProvider, 'provideCompletionItems'> {\n /**\n * Allows dialect specific functions to be added to the completion list.\n * @alpha\n */\n supportedFunctions?: () => Array<{\n id: string;\n name: string;\n description?: string;\n }>;\n\n /**\n * Allows dialect specific operators to be added to the completion list.\n * @alpha\n */\n supportedOperators?: () => Array<{\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n }>;\n\n supportedMacros?: () => Array<{\n id: string;\n text: string;\n type: MacroType;\n args: string[];\n description?: string;\n }>;\n\n /**\n * Allows custom suggestion kinds to be defined and correlate them with <Custom>StatementPosition.\n * @alpha\n */\n customSuggestionKinds?: SuggestionKindProvider;\n\n /**\n * Allows custom statement placement definition.\n * @alpha\n */\n customStatementPlacement?: StatementPlacementProvider;\n\n /**\n * Allows providing a custom function for resolving schemas.\n * It's up to the consumer to decide whether the schemas are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n schemas?: {\n resolve: () => Promise<SchemaDefinition[]>;\n };\n\n /**\n * Allows providing a custom function for resolving db tables.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n tables?: {\n resolve: (TableIdentifier: TableIdentifier | null) => Promise<TableDefinition[]>;\n // Allows providing a custom function for calculating the table name from the query. If not specified a default implementation is used.\n parseName?: (token: LinkedToken | null | undefined) => TableIdentifier;\n };\n /**\n * Allows providing a custom function for resolving table.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n columns?: {\n resolve: (identifier?: TableIdentifier) => Promise<ColumnDefinition[]>;\n };\n\n /**\n * TODO: Not sure whether or not we need this. Would like to avoid this kind of flexibility.\n * @alpha\n */\n provideCompletionItems?: (\n model: monacoTypes.editor.ITextModel,\n position: monacoTypes.Position,\n context: monacoTypes.languages.CompletionContext,\n token: monacoTypes.CancellationToken,\n positionContext: PositionContext // Decorates original provideCompletionItems function with our custom statement position context\n ) => monacoTypes.languages.CompletionList;\n}\n\nexport type LanguageCompletionProvider = (m: Monaco, l?: SQLMonarchLanguage) => SQLCompletionItemProvider;\n\nexport enum OperatorType {\n Comparison,\n Logical,\n}\n\nexport enum MacroType {\n Value,\n Filter,\n Group,\n Column,\n Table,\n}\n\nexport enum TokenType {\n Parenthesis = 'delimiter.parenthesis.sql',\n Whitespace = 'white.sql',\n Keyword = 'keyword.sql',\n Delimiter = 'delimiter.sql',\n Operator = 'operator.sql',\n Identifier = 'identifier.sql',\n IdentifierQuote = 'identifier.quote.sql',\n Type = 'type.sql',\n Function = 'predefined.sql',\n Number = 'number.sql',\n String = 'string.sql',\n Variable = 'variable.sql',\n}\n\nexport enum StatementPosition {\n Unknown = 'unknown',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n AfterSelectKeyword = 'afterSelectKeyword',\n AfterSelectArguments = 'afterSelectArguments',\n AfterSelectFuncFirstArgument = 'afterSelectFuncFirstArgument',\n SelectAlias = 'selectAlias',\n AfterFromKeyword = 'afterFromKeyword',\n AfterTable = 'afterTable',\n SchemaFuncFirstArgument = 'schemaFuncFirstArgument',\n SchemaFuncExtraArgument = 'schemaFuncExtraArgument',\n FromKeyword = 'fromKeyword',\n AfterFrom = 'afterFrom',\n WhereKeyword = 'whereKeyword',\n WhereComparisonOperator = 'whereComparisonOperator',\n WhereValue = 'whereValue',\n AfterWhereFunctionArgument = 'afterWhereFunctionArgument',\n AfterGroupByFunctionArgument = 'afterGroupByFunctionArgument',\n AfterWhereValue = 'afterWhereValue',\n AfterGroupByKeywords = 'afterGroupByKeywords',\n AfterGroupBy = 'afterGroupBy',\n AfterOrderByKeywords = 'afterOrderByKeywords',\n AfterOrderByFunction = 'afterOrderByFunction',\n AfterOrderByDirection = 'afterOrderByDirection',\n AfterIsOperator = 'afterIsOperator',\n AfterIsNotOperator = 'afterIsNotOperator',\n AfterSchema = 'afterSchema',\n}\n\nexport enum SuggestionKind {\n Schemas = 'schemas',\n Tables = 'tables',\n Columns = 'columns',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n FunctionsWithArguments = 'functionsWithArguments',\n FromKeyword = 'fromKeyword',\n WhereKeyword = 'whereKeyword',\n GroupByKeywords = 'groupByKeywords',\n OrderByKeywords = 'orderByKeywords',\n FunctionsWithoutArguments = 'functionsWithoutArguments',\n LimitKeyword = 'limitKeyword',\n SortOrderDirectionKeyword = 'sortOrderDirectionKeyword',\n ComparisonOperators = 'comparisonOperators',\n LogicalOperators = 'logicalOperators',\n SelectMacro = 'selectMacro',\n TableMacro = 'tableMacro',\n FilterMacro = 'filterMacro',\n GroupMacro = 'groupMacro',\n BoolValues = 'boolValues',\n NullValue = 'nullValue',\n NotKeyword = 'notKeyword',\n TemplateVariables = 'templateVariables',\n StarWildCard = 'starWildCard',\n}\n\n// TODO: export from grafana/ui\nexport enum CompletionItemPriority {\n High = 'a',\n MediumHigh = 'd',\n Medium = 'g',\n MediumLow = 'k',\n Low = 'q',\n}\n\nexport enum CompletionItemKind {\n Method = 0,\n Function = 1,\n Constructor = 2,\n Field = 3,\n Variable = 4,\n Class = 5,\n Struct = 6,\n Interface = 7,\n Module = 8,\n Property = 9,\n Event = 10,\n Operator = 11,\n Unit = 12,\n Value = 13,\n Constant = 14,\n Enum = 15,\n EnumMember = 16,\n Keyword = 17,\n Text = 18,\n Color = 19,\n File = 20,\n Reference = 21,\n Customcolor = 22,\n Folder = 23,\n TypeParameter = 24,\n User = 25,\n Issue = 26,\n Snippet = 27,\n}\n\nexport enum CompletionItemInsertTextRule {\n KeepWhitespace = 1,\n InsertAsSnippet = 4,\n}\n\nexport enum SQLEditorMode {\n Builder = 'builder',\n Code = 'code',\n}\n","import { StatementPosition, TokenType } from '../types';\nimport { type LinkedToken } from '../utils/LinkedToken';\nimport { type StatementPositionResolversRegistryItem } from './types';\nimport { type Registry } from '@grafana/data';\n\n// Given current cursor position in the SQL editor, returns the statement position.\nexport function getStatementPosition(\n currentToken: LinkedToken | null,\n statementPositionResolversRegistry: Registry<StatementPositionResolversRegistryItem>\n): StatementPosition[] {\n const previousNonWhiteSpace = currentToken?.getPreviousNonWhiteSpaceToken();\n const previousKeyword = currentToken?.getPreviousKeyword();\n const previousIsSlash = currentToken?.getPreviousNonWhiteSpaceToken()?.is(TokenType.Operator, '/');\n const resolvers = statementPositionResolversRegistry.list();\n const positions = [];\n\n for (const resolver of resolvers) {\n if (\n resolver.resolve(currentToken, previousKeyword ?? null, previousNonWhiteSpace ?? null, Boolean(previousIsSlash))\n ) {\n positions.push(resolver.id);\n }\n }\n\n if (positions.length === 0) {\n return [StatementPosition.Unknown];\n }\n return positions;\n}\n","import { type monacoTypes } from '@grafana/ui';\nimport { CompletionItemKind, CompletionItemPriority } from '../types';\n\nexport const toCompletionItem = (\n value: string,\n range: monacoTypes.IRange,\n rest: Partial<monacoTypes.languages.CompletionItem> = {}\n) => {\n const item: monacoTypes.languages.CompletionItem = {\n label: value,\n insertText: value,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.Medium,\n range,\n ...rest,\n };\n return item;\n};\n","import { type Registry } from '@grafana/data';\nimport { type Monaco, type monacoTypes } from '@grafana/ui';\nimport { type PositionContext, type SuggestionKind } from '../types';\nimport { type LinkedToken } from '../utils/LinkedToken';\nimport { toCompletionItem } from '../utils/toCompletionItem';\nimport { type SuggestionsRegistryItem } from './types';\n\n// Given standard and custom registered suggestions and kinds of suggestion expected, return a list of completion items\nexport const getStandardSuggestions = async (\n monaco: Monaco,\n currentToken: LinkedToken | null,\n suggestionKinds: SuggestionKind[],\n positionContext: PositionContext,\n suggestionsRegistry: Registry<SuggestionsRegistryItem>\n): Promise<monacoTypes.languages.CompletionItem[]> => {\n let suggestions: monacoTypes.languages.CompletionItem[] = [];\n const invalidRangeToken =\n currentToken?.isWhiteSpace() ||\n currentToken?.isParenthesis() ||\n (currentToken?.isIdentifier() && currentToken.value.endsWith('.'));\n const range =\n invalidRangeToken || !currentToken?.range\n ? monaco.Range.fromPositions(positionContext.position)\n : currentToken?.range;\n\n // iterating over Set to deduplicate\n for (const suggestion of [...new Set(suggestionKinds)]) {\n const registeredSuggestions = suggestionsRegistry.getIfExists(suggestion);\n if (registeredSuggestions) {\n const su = await registeredSuggestions.suggestions({ ...positionContext, range }, monaco);\n suggestions = [...suggestions, ...su.map((s) => toCompletionItem(s.label, range, { kind: s.kind, ...s }))];\n }\n }\n return Promise.resolve(suggestions);\n};\n","import { type RegistryItem } from '@grafana/data';\nimport { StatementPosition, SuggestionKind } from '../types';\n\nexport interface SuggestionKindRegistryItem extends RegistryItem {\n id: StatementPosition;\n kind: SuggestionKind[];\n}\n\n// Registry of possible suggestions for the given statement position\nexport const initSuggestionsKindRegistry = (): SuggestionKindRegistryItem[] => {\n return [\n {\n id: StatementPosition.SelectKeyword,\n name: StatementPosition.SelectKeyword,\n kind: [SuggestionKind.SelectKeyword],\n },\n {\n id: StatementPosition.WithKeyword,\n name: StatementPosition.WithKeyword,\n kind: [SuggestionKind.WithKeyword],\n },\n {\n id: StatementPosition.AfterSelectKeyword,\n name: StatementPosition.AfterSelectKeyword,\n kind: [\n SuggestionKind.StarWildCard,\n SuggestionKind.FunctionsWithArguments,\n SuggestionKind.Columns,\n SuggestionKind.SelectMacro,\n ],\n },\n {\n id: StatementPosition.AfterSelectFuncFirstArgument,\n name: StatementPosition.AfterSelectFuncFirstArgument,\n kind: [SuggestionKind.Columns],\n },\n {\n id: StatementPosition.AfterGroupByFunctionArgument,\n name: StatementPosition.AfterGroupByFunctionArgument,\n kind: [SuggestionKind.Columns],\n },\n {\n id: StatementPosition.AfterWhereFunctionArgument,\n name: StatementPosition.AfterWhereFunctionArgument,\n kind: [SuggestionKind.Columns],\n },\n {\n id: StatementPosition.AfterSelectArguments,\n name: StatementPosition.AfterSelectArguments,\n kind: [SuggestionKind.Columns],\n },\n {\n id: StatementPosition.AfterFromKeyword,\n name: StatementPosition.AfterFromKeyword,\n kind: [SuggestionKind.Schemas, SuggestionKind.Tables, SuggestionKind.TableMacro],\n },\n {\n id: StatementPosition.AfterSchema,\n name: StatementPosition.AfterSchema,\n kind: [SuggestionKind.Tables, SuggestionKind.TableMacro],\n },\n {\n id: StatementPosition.SelectAlias,\n name: StatementPosition.SelectAlias,\n kind: [SuggestionKind.Columns, SuggestionKind.FunctionsWithArguments],\n },\n {\n id: StatementPosition.FromKeyword,\n name: StatementPosition.FromKeyword,\n kind: [SuggestionKind.FromKeyword],\n },\n {\n id: StatementPosition.AfterFrom,\n name: StatementPosition.AfterFrom,\n kind: [\n SuggestionKind.WhereKeyword,\n SuggestionKind.GroupByKeywords,\n SuggestionKind.OrderByKeywords,\n SuggestionKind.LimitKeyword,\n ],\n },\n {\n id: StatementPosition.AfterTable,\n name: StatementPosition.AfterTable,\n kind: [\n SuggestionKind.WhereKeyword,\n SuggestionKind.GroupByKeywords,\n SuggestionKind.OrderByKeywords,\n SuggestionKind.LimitKeyword,\n ],\n },\n {\n id: StatementPosition.WhereKeyword,\n name: StatementPosition.WhereKeyword,\n kind: [SuggestionKind.Columns, SuggestionKind.FilterMacro, SuggestionKind.TemplateVariables],\n },\n {\n id: StatementPosition.WhereComparisonOperator,\n name: StatementPosition.WhereComparisonOperator,\n kind: [SuggestionKind.ComparisonOperators],\n },\n {\n id: StatementPosition.WhereValue,\n name: StatementPosition.WhereValue,\n kind: [SuggestionKind.FilterMacro, SuggestionKind.TemplateVariables],\n },\n {\n id: StatementPosition.AfterWhereValue,\n name: StatementPosition.AfterWhereValue,\n kind: [\n SuggestionKind.LogicalOperators,\n SuggestionKind.GroupByKeywords,\n SuggestionKind.OrderByKeywords,\n SuggestionKind.LimitKeyword,\n SuggestionKind.Columns,\n SuggestionKind.TemplateVariables,\n ],\n },\n {\n id: StatementPosition.AfterGroupByKeywords,\n name: StatementPosition.AfterGroupByKeywords,\n kind: [SuggestionKind.GroupMacro, SuggestionKind.Columns],\n },\n {\n id: StatementPosition.AfterGroupBy,\n name: StatementPosition.AfterGroupBy,\n kind: [SuggestionKind.OrderByKeywords, SuggestionKind.LimitKeyword],\n },\n {\n id: StatementPosition.AfterOrderByKeywords,\n name: StatementPosition.AfterOrderByKeywords,\n kind: [SuggestionKind.Columns],\n },\n {\n id: StatementPosition.AfterOrderByFunction,\n name: StatementPosition.AfterOrderByFunction,\n kind: [SuggestionKind.SortOrderDirectionKeyword, SuggestionKind.LimitKeyword],\n },\n {\n id: StatementPosition.AfterOrderByDirection,\n name: StatementPosition.AfterOrderByDirection,\n kind: [SuggestionKind.LimitKeyword],\n },\n {\n id: StatementPosition.AfterIsOperator,\n name: StatementPosition.AfterOrderByDirection,\n kind: [SuggestionKind.NotKeyword, SuggestionKind.NullValue, SuggestionKind.BoolValues],\n },\n {\n id: StatementPosition.AfterIsNotOperator,\n name: StatementPosition.AfterOrderByDirection,\n kind: [SuggestionKind.NullValue, SuggestionKind.BoolValues],\n },\n ];\n};\n","import { type Registry } from '@grafana/data';\nimport { type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport { type StatementPosition, type SuggestionKind } from '../types';\n\n/**\n * Given statement positions, returns list of suggestion kinds that apply to those positions.\n */\nexport function getSuggestionKinds(\n statementPosition: StatementPosition[],\n suggestionsKindRegistry: Registry<SuggestionKindRegistryItem>\n): SuggestionKind[] {\n let result: SuggestionKind[] = [];\n for (let i = 0; i < statementPosition.length; i++) {\n const exists = suggestionsKindRegistry.getIfExists(statementPosition[i]);\n if (exists) {\n result = result.concat(exists.kind);\n }\n }\n\n return result;\n}\n","import type { monacoTypes } from '@grafana/ui';\nimport { TokenType } from '../types';\nimport { LinkedToken } from './LinkedToken';\nimport { type Monaco } from './types';\n\nexport function linkedTokenBuilder(\n monaco: Monaco,\n model: monacoTypes.editor.ITextModel,\n position: monacoTypes.IPosition,\n languageId = 'sql'\n) {\n let current: LinkedToken | null = null;\n let previous: LinkedToken | null = null;\n const tokensPerLine = monaco.editor.tokenize(model.getValue() ?? '', languageId);\n for (let lineIndex = 0; lineIndex < tokensPerLine.length; lineIndex++) {\n const tokens = tokensPerLine[lineIndex];\n // In case position is first column in new line, add empty whitespace token so that links are not broken\n if (!tokens.length && previous) {\n const token: monacoTypes.Token = {\n offset: 0,\n type: TokenType.Whitespace,\n language: languageId,\n _tokenBrand: undefined,\n };\n tokens.push(token);\n }\n\n for (let columnIndex = 0; columnIndex < tokens.length; columnIndex++) {\n const token = tokens[columnIndex];\n let endColumn =\n tokens.length > columnIndex + 1 ? tokens[columnIndex + 1].offset + 1 : model.getLineLength(lineIndex + 1) + 1;\n\n const range: monacoTypes.IRange = {\n startLineNumber: lineIndex + 1,\n startColumn: token.offset === 0 ? 0 : token.offset + 1,\n endLineNumber: lineIndex + 1,\n endColumn,\n };\n\n const value = model.getValueInRange(range);\n const sqlToken: LinkedToken = new LinkedToken(token.type, value, range, previous, null);\n\n if (monaco.Range.containsPosition(range, position)) {\n current = sqlToken;\n }\n\n if (previous) {\n previous.next = sqlToken;\n }\n previous = sqlToken;\n }\n }\n return current;\n}\n","import { type monacoTypes } from '@grafana/ui';\nimport { type SQLMonarchLanguage } from './types';\n\n// STD basic SQL\nexport const SELECT = 'select';\nexport const FROM = 'from';\nexport const WHERE = 'where';\nexport const GROUP = 'group';\nexport const ORDER = 'order';\nexport const BY = 'by';\nexport const DESC = 'desc';\nexport const ASC = 'asc';\nexport const LIMIT = 'limit';\nexport const WITH = 'with';\nexport const AS = 'as';\nexport const SCHEMA = 'schema';\n\nexport const AND = 'AND';\nexport const OR = 'OR';\nexport const LOGICAL_OPERATORS = [AND, OR];\n\nexport const EQUALS = '=';\nexport const NOT_EQUALS = '!=';\nexport const COMPARISON_OPERATORS = [EQUALS, NOT_EQUALS];\n\nexport const STD_OPERATORS = [...COMPARISON_OPERATORS];\n\nexport const conf: monacoTypes.languages.LanguageConfiguration = {\n comments: {\n lineComment: '--',\n blockComment: ['/*', '*/'],\n },\n brackets: [\n ['{', '}'],\n ['[', ']'],\n ['(', ')'],\n ],\n autoClosingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n surroundingPairs: [\n { open: '{', close: '}' },\n { open: '[', close: ']' },\n { open: '(', close: ')' },\n { open: '\"', close: '\"' },\n { open: \"'\", close: \"'\" },\n ],\n};\n\n// based on https://github.com/microsoft/monaco-editor/blob/main/src/basic-languages/sql/sql.ts\nexport const language: SQLMonarchLanguage = {\n defaultToken: '',\n tokenPostfix: '.sql',\n ignoreCase: true,\n\n brackets: [\n { open: '[', close: ']', token: 'delimiter.square' },\n { open: '(', close: ')', token: 'delimiter.parenthesis' },\n ],\n\n keywords: [\n 'ABORT',\n 'ABSOLUTE',\n 'ACTION',\n 'ADA',\n 'ADD',\n 'AFTER',\n 'ALL',\n 'ALLOCATE',\n 'ALTER',\n 'ALWAYS',\n 'ANALYZE',\n 'AND',\n 'ANY',\n 'ARE',\n 'AS',\n 'ASC',\n 'ASSERTION',\n 'AT',\n 'ATTACH',\n 'AUTHORIZATION',\n 'AUTOINCREMENT',\n 'AVG',\n 'BACKUP',\n 'BEFORE',\n 'BEGIN',\n 'BETWEEN',\n 'BIT',\n 'BIT_LENGTH',\n 'BOTH',\n 'BREAK',\n 'BROWSE',\n 'BULK',\n 'BY',\n 'CASCADE',\n 'CASCADED',\n 'CASE',\n 'CAST',\n 'CATALOG',\n 'CHAR',\n 'CHARACTER',\n 'CHARACTER_LENGTH',\n 'CHAR_LENGTH',\n 'CHECK',\n 'CHECKPOINT',\n 'CLOSE',\n 'CLUSTERED',\n 'COALESCE',\n 'COLLATE',\n 'COLLATION',\n 'COLUMN',\n 'COMMIT',\n 'COMPUTE',\n 'CONFLICT',\n 'CONNECT',\n 'CONNECTION',\n 'CONSTRAINT',\n 'CONSTRAINTS',\n 'CONTAINS',\n 'CONTAINSTABLE',\n 'CONTINUE',\n 'CONVERT',\n 'CORRESPONDING',\n 'COUNT',\n 'CREATE',\n 'CROSS',\n 'CURRENT',\n 'CURRENT_DATE',\n 'CURRENT_TIME',\n 'CURRENT_TIMESTAMP',\n 'CURRENT_USER',\n 'CURSOR',\n 'DATABASE',\n 'DATE',\n 'DAY',\n 'DBCC',\n 'DEALLOCATE',\n 'DEC',\n 'DECIMAL',\n 'DECLARE',\n 'DEFAULT',\n 'DEFERRABLE',\n 'DEFERRED',\n 'DELETE',\n 'DENY',\n 'DESC',\n 'DESCRIBE',\n 'DESCRIPTOR',\n 'DETACH',\n 'DIAGNOSTICS',\n 'DISCONNECT',\n 'DISK',\n 'DISTINCT',\n 'DISTRIBUTED',\n 'DO',\n 'DOMAIN',\n 'DOUBLE',\n 'DROP',\n 'DUMP',\n 'EACH',\n 'ELSE',\n 'END',\n 'END-EXEC',\n 'ERRLVL',\n 'ESCAPE',\n 'EXCEPT',\n 'EXCEPTION',\n 'EXCLUDE',\n 'EXCLUSIVE',\n 'EXEC',\n 'EXECUTE',\n 'EXISTS',\n 'EXIT',\n 'EXPLAIN',\n 'EXTERNAL',\n 'EXTRACT',\n 'FAIL',\n 'FALSE',\n 'FETCH',\n 'FILE',\n 'FILLFACTOR',\n 'FILTER',\n 'FIRST',\n 'FLOAT',\n 'FOLLOWING',\n 'FOR',\n 'FOREIGN',\n 'FORTRAN',\n 'FOUND',\n 'FREETEXT',\n 'FREETEXTTABLE',\n 'FROM',\n 'FULL',\n 'FUNCTION',\n 'GENERATED',\n 'GET',\n 'GLOB',\n 'GLOBAL',\n 'GO',\n 'GOTO',\n 'GRANT',\n 'GROUP',\n 'GROUPS',\n 'HAVING',\n 'HOLDLOCK',\n 'HOUR',\n 'IDENTITY',\n 'IDENTITYCOL',\n 'IDENTITY_INSERT',\n 'IF',\n 'IGNORE',\n 'IMMEDIATE',\n 'IN',\n 'INCLUDE',\n 'INDEX',\n 'INDEXED',\n 'INDICATOR',\n 'INITIALLY',\n 'INNER',\n 'INPUT',\n 'INSENSITIVE',\n 'INSERT',\n 'INSTEAD',\n 'INT',\n 'INTEGER',\n 'INTERSECT',\n 'INTERVAL',\n 'INTO',\n 'IS',\n 'ISNULL',\n 'ISOLATION',\n 'JOIN',\n 'KEY',\n 'KILL',\n 'LANGUAGE',\n 'LAST',\n 'LEADING',\n 'LEFT',\n 'LEVEL',\n 'LIKE',\n 'LIMIT',\n 'LINENO',\n 'LOAD',\n 'LOCAL',\n 'LOWER',\n 'MATCH',\n 'MATERIALIZED',\n 'MAX',\n 'MERGE',\n 'MIN',\n 'MINUTE',\n 'MODULE',\n 'MONTH',\n 'NAMES',\n 'NATIONAL',\n 'NATURAL',\n 'NCHAR',\n 'NEXT',\n 'NO',\n 'NOCHECK',\n 'NONCLUSTERED',\n 'NONE',\n 'NOT',\n 'NOTHING',\n 'NOTNULL',\n 'NULL',\n 'NULLIF',\n 'NULLS',\n 'NUMERIC',\n 'OCTET_LENGTH',\n 'OF',\n 'OFF',\n 'OFFSET',\n 'OFFSETS',\n 'ON',\n 'ONLY',\n 'OPEN',\n 'OPENDATASOURCE',\n 'OPENQUERY',\n 'OPENROWSET',\n 'OPENXML',\n 'OPTION',\n 'OR',\n 'ORDER',\n 'OTHERS',\n 'OUTER',\n 'OUTPUT',\n 'OVER',\n 'OVERLAPS',\n 'PAD',\n 'PARTIAL',\n 'PARTITION',\n 'PASCAL',\n 'PERCENT',\n 'PIVOT',\n 'PLAN',\n 'POSITION',\n 'PRAGMA',\n 'PRECEDING',\n 'PRECISION',\n 'PREPARE',\n 'PRESERVE',\n 'PRIMARY',\n 'PRINT',\n 'PRIOR',\n 'PRIVILEGES',\n 'PROC',\n 'PROCEDURE',\n 'PUBLIC',\n 'QUERY',\n 'RAISE',\n 'RAISERROR',\n 'RANGE',\n 'READ',\n 'READTEXT',\n 'REAL',\n 'RECONFIGURE',\n 'RECURSIVE',\n 'REFERENCES',\n 'REGEXP',\n 'REINDEX',\n 'RELATIVE',\n 'RELEASE',\n 'RENAME',\n 'REPLACE',\n 'REPLICATION',\n 'RESTORE',\n 'RESTRICT',\n 'RETURN',\n 'RETURNING',\n 'REVERT',\n 'REVOKE',\n 'RIGHT',\n 'ROLLBACK',\n 'ROW',\n 'ROWCOUNT',\n 'ROWGUIDCOL',\n 'ROWS',\n 'RULE',\n 'SAVE',\n 'SAVEPOINT',\n 'SCHEMA',\n 'SCROLL',\n 'SECOND',\n 'SECTION',\n 'SECURITYAUDIT',\n 'SELECT',\n 'SEMANTICKEYPHRASETABLE',\n 'SEMANTICSIMILARITYDETAILSTABLE',\n 'SEMANTICSIMILARITYTABLE',\n 'SESSION',\n 'SESSION_USER',\n 'SET',\n 'SETUSER',\n 'SHUTDOWN',\n 'SIZE',\n 'SMALLINT',\n 'SOME',\n 'SPACE',\n 'SQL',\n 'SQLCA',\n 'SQLCODE',\n 'SQLERROR',\n 'SQLSTATE',\n 'SQLWARNING',\n 'STATISTICS',\n 'SUBSTRING',\n 'SUM',\n 'SYSTEM_USER',\n 'TABLE',\n 'TABLESAMPLE',\n 'TEMP',\n 'TEMPORARY',\n 'TEXTSIZE',\n 'THEN',\n 'TIES',\n 'TIME',\n 'TIMESTAMP',\n 'TIMEZONE_HOUR',\n 'TIMEZONE_MINUTE',\n 'TO',\n 'TOP',\n 'TRAILING',\n 'TRAN',\n 'TRANSACTION',\n 'TRANSLATE',\n 'TRANSLATION',\n 'TRIGGER',\n 'TRIM',\n 'TRUE',\n 'TRUNCATE',\n 'TRY_CONVERT',\n 'TSEQUAL',\n 'UNBOUNDED',\n 'UNION',\n 'UNIQUE',\n 'UNKNOWN',\n 'UNPIVOT',\n 'UPDATE',\n 'UPDATETEXT',\n 'UPPER',\n 'USAGE',\n 'USE',\n 'USER',\n 'USING',\n 'VACUUM',\n 'VALUE',\n 'VALUES',\n 'VARCHAR',\n 'VARYING',\n 'VIEW',\n 'VIRTUAL',\n 'WAITFOR',\n 'WHEN',\n 'WHENEVER',\n 'WHERE',\n 'WHILE',\n 'WINDOW',\n 'WITH',\n 'WITHIN GROUP',\n 'WITHOUT',\n 'WORK',\n 'WRITE',\n 'WRITETEXT',\n 'YEAR',\n 'ZONE',\n ],\n operators: [\n // Set\n 'EXCEPT',\n 'INTERSECT',\n 'UNION',\n // Join\n 'APPLY',\n 'CROSS',\n 'FULL',\n 'INNER',\n 'JOIN',\n 'LEFT',\n 'OUTER',\n 'RIGHT',\n // Predicates\n 'CONTAINS',\n 'FREETEXT',\n 'IS',\n 'NULL',\n // Pivoting\n 'PIVOT',\n 'UNPIVOT',\n // Merging\n 'MATCHED',\n ],\n logicalOperators: ['ALL', 'AND', 'ANY', 'BETWEEN', 'EXISTS', 'IN', 'LIKE', 'NOT', 'OR', 'SOME'],\n comparisonOperators: ['<>', '>', '<', '>=', '<=', '=', '!=', '&', '~', '^', '%'],\n\n builtinFunctions: [\n // Aggregate\n 'AVG',\n 'CHECKSUM_AGG',\n 'COUNT',\n 'COUNT_BIG',\n 'GROUPING',\n 'GROUPING_ID',\n 'MAX',\n 'MIN',\n 'SUM',\n 'STDEV',\n 'STDEVP',\n 'VAR',\n 'VARP',\n // Analytic\n 'CUME_DIST',\n 'FIRST_VALUE',\n 'LAG',\n 'LAST_VALUE',\n 'LEAD',\n 'PERCENTILE_CONT',\n 'PERCENTILE_DISC',\n 'PERCENT_RANK',\n // Collation\n 'COLLATE',\n 'COLLATIONPROPERTY',\n 'TERTIARY_WEIGHTS',\n // Azure\n 'FEDERATION_FILTERING_VALUE',\n // Conversion\n 'CAST',\n 'CONVERT',\n 'PARSE',\n 'TRY_CAST',\n 'TRY_CONVERT',\n 'TRY_PARSE',\n // Cryptographic\n 'ASYMKEY_ID',\n 'ASYMKEYPROPERTY',\n 'CERTPROPERTY',\n 'CERT_ID',\n 'CRYPT_GEN_RANDOM',\n 'DECRYPTBYASYMKEY',\n 'DECRYPTBYCERT',\n 'DECRYPTBYKEY',\n 'DECRYPTBYKEYAUTOASYMKEY',\n 'DECRYPTBYKEYAUTOCERT',\n 'DECRYPTBYPASSPHRASE',\n 'ENCRYPTBYASYMKEY',\n 'ENCRYPTBYCERT',\n 'ENCRYPTBYKEY',\n 'ENCRYPTBYPASSPHRASE',\n 'HASHBYTES',\n 'IS_OBJECTSIGNED',\n 'KEY_GUID',\n 'KEY_ID',\n 'KEY_NAME',\n 'SIGNBYASYMKEY',\n 'SIGNBYCERT',\n 'SYMKEYPROPERTY',\n 'VERIFYSIGNEDBYCERT',\n 'VERIFYSIGNEDBYASYMKEY',\n // Cursor\n 'CURSOR_STATUS',\n // Datatype\n 'DATALENGTH',\n 'IDENT_CURRENT',\n 'IDENT_INCR',\n 'IDENT_SEED',\n 'IDENTITY',\n 'SQL_VARIANT_PROPERTY',\n // Datetime\n 'CURRENT_TIMESTAMP',\n 'DATEADD',\n 'DATEDIFF',\n 'DATEFROMPARTS',\n 'DATENAME',\n 'DATEPART',\n 'DATETIME2FROMPARTS',\n 'DATETIMEFROMPARTS',\n 'DATETIMEOFFSETFROMPARTS',\n 'DAY',\n 'EOMONTH',\n 'GETDATE',\n 'GETUTCDATE',\n 'ISDATE',\n 'MONTH',\n 'SMALLDATETIMEFROMPARTS',\n 'SWITCHOFFSET',\n 'SYSDATETIME',\n 'SYSDATETIMEOFFSET',\n 'SYSUTCDATETIME',\n 'TIMEFROMPARTS',\n 'TODATETIMEOFFSET',\n 'YEAR',\n // Logical\n 'CHOOSE',\n 'COALESCE',\n 'IIF',\n 'NULLIF',\n // Mathematical\n 'ABS',\n 'ACOS',\n 'ASIN',\n 'ATAN',\n 'ATN2',\n 'CEILING',\n 'COS',\n 'COT',\n 'DEGREES',\n 'EXP',\n 'FLOOR',\n 'LOG',\n 'LOG10',\n 'PI',\n 'POWER',\n 'RADIANS',\n 'RAND',\n 'ROUND',\n 'SIGN',\n 'SIN',\n 'SQRT',\n 'SQUARE',\n 'TAN',\n // Metadata\n 'APP_NAME',\n 'APPLOCK_MODE',\n 'APPLOCK_TEST',\n 'ASSEMBLYPROPERTY',\n 'COL_LENGTH',\n 'COL_NAME',\n 'COLUMNPROPERTY',\n 'DATABASE_PRINCIPAL_ID',\n 'DATABASEPROPERTYEX',\n 'DB_ID',\n 'DB_NAME',\n 'FILE_ID',\n 'FILE_IDEX',\n 'FILE_NAME',\n 'FILEGROUP_ID',\n 'FILEGROUP_NAME',\n 'FILEGROUPPROPERTY',\n 'FILEPROPERTY',\n 'FULLTEXTCATALOGPROPERTY',\n 'FULLTEXTSERVICEPROPERTY',\n 'INDEX_COL',\n 'INDEXKEY_PROPERTY',\n 'INDEXPROPERTY',\n 'OBJECT_DEFINITION',\n 'OBJECT_ID',\n 'OBJECT_NAME',\n 'OBJECT_SCHEMA_NAME',\n 'OBJECTPROPERTY',\n 'OBJECTPROPERTYEX',\n 'ORIGINAL_DB_NAME',\n 'PARSENAME',\n 'SCHEMA_ID',\n 'SCHEMA_NAME',\n 'SCOPE_IDENTITY',\n 'SERVERPROPERTY',\n 'STATS_DATE',\n 'TYPE_ID',\n 'TYPE_NAME',\n 'TYPEPROPERTY',\n // Ranking\n 'DENSE_RANK',\n 'NTILE',\n 'RANK',\n 'ROW_NUMBER',\n // Replication\n 'PUBLISHINGSERVERNAME',\n // Rowset\n 'OPENDATASOURCE',\n 'OPENQUERY',\n 'OPENROWSET',\n 'OPENXML',\n // Security\n 'CERTENCODED',\n 'CERTPRIVATEKEY',\n 'CURRENT_USER',\n 'HAS_DBACCESS',\n 'HAS_PERMS_BY_NAME',\n 'IS_MEMBER',\n 'IS_ROLEMEMBER',\n 'IS_SRVROLEMEMBER',\n 'LOGINPROPERTY',\n 'ORIGINAL_LOGIN',\n 'PERMISSIONS',\n 'PWDENCRYPT',\n 'PWDCOMPARE',\n 'SESSION_USER',\n 'SESSIONPROPERTY',\n 'SUSER_ID',\n 'SUSER_NAME',\n 'SUSER_SID',\n 'SUSER_SNAME',\n 'SYSTEM_USER',\n 'USER',\n 'USER_ID',\n 'USER_NAME',\n // String\n 'ASCII',\n 'CHAR',\n 'CHARINDEX',\n 'CONCAT',\n 'DIFFERENCE',\n 'FORMAT',\n 'LEFT',\n 'LEN',\n 'LOWER',\n 'LTRIM',\n 'NCHAR',\n 'PATINDEX',\n 'QUOTENAME',\n 'REPLACE',\n 'REPLICATE',\n 'REVERSE',\n 'RIGHT',\n 'RTRIM',\n 'SOUNDEX',\n 'SPACE',\n 'STR',\n 'STUFF',\n 'SUBSTRING',\n 'UNICODE',\n 'UPPER',\n // System\n 'BINARY_CHECKSUM',\n 'CHECKSUM',\n 'CONNECTIONPROPERTY',\n 'CONTEXT_INFO',\n 'CURRENT_REQUEST_ID',\n 'ERROR_LINE',\n 'ERROR_NUMBER',\n 'ERROR_MESSAGE',\n 'ERROR_PROCEDURE',\n 'ERROR_SEVERITY',\n 'ERROR_STATE',\n 'FORMATMESSAGE',\n 'GETANSINULL',\n 'GET_FILESTREAM_TRANSACTION_CONTEXT',\n 'HOST_ID',\n 'HOST_NAME',\n 'ISNULL',\n 'ISNUMERIC',\n 'MIN_ACTIVE_ROWVERSION',\n 'NEWID',\n 'NEWSEQUENTIALID',\n 'ROWCOUNT_BIG',\n 'XACT_STATE',\n // TextImage\n 'TEXTPTR',\n 'TEXTVALID',\n // Trigger\n 'COLUMNS_UPDATED',\n 'EVENTDATA',\n 'TRIGGER_NESTLEVEL',\n 'UPDATE',\n // ChangeTracking\n 'CHANGETABLE',\n 'CHANGE_TRACKING_CONTEXT',\n 'CHANGE_TRACKING_CURRENT_VERSION',\n 'CHANGE_TRACKING_IS_COLUMN_IN_MASK',\n 'CHANGE_TRACKING_MIN_VALID_VERSION',\n // FullTextSearch\n 'CONTAINSTABLE',\n 'FREETEXTTABLE',\n // SemanticTextSearch\n 'SEMANTICKEYPHRASETABLE',\n 'SEMANTICSIMILARITYDETAILSTABLE',\n 'SEMANTICSIMILARITYTABLE',\n // FileStream\n 'FILETABLEROOTPATH',\n 'GETFILENAMESPACEPATH',\n 'GETPATHLOCATOR',\n 'PATHNAME',\n // ServiceBroker\n 'GET_TRANSMISSION_STATUS',\n ],\n builtinVariables: [\n // Configuration\n '@@DATEFIRST',\n '@@DBTS',\n '@@LANGID',\n '@@LANGUAGE',\n '@@LOCK_TIMEOUT',\n '@@MAX_CONNECTIONS',\n '@@MAX_PRECISION',\n '@@NESTLEVEL',\n '@@OPTIONS',\n '@@REMSERVER',\n '@@SERVERNAME',\n '@@SERVICENAME',\n '@@SPID',\n '@@TEXTSIZE',\n '@@VERSION',\n // Cursor\n '@@CURSOR_ROWS',\n '@@FETCH_STATUS',\n // Datetime\n '@@DATEFIRST',\n // Metadata\n '@@PROCID',\n // System\n '@@ERROR',\n '@@IDENTITY',\n '@@ROWCOUNT',\n '@@TRANCOUNT',\n // Stats\n '@@CONNECTIONS',\n '@@CPU_BUSY',\n '@@IDLE',\n '@@IO_BUSY',\n '@@PACKET_ERRORS',\n '@@PACK_RECEIVED',\n '@@PACK_SENT',\n '@@TIMETICKS',\n '@@TOTAL_ERRORS',\n '@@TOTAL_READ',\n '@@TOTAL_WRITE',\n ],\n pseudoColumns: ['$ACTION', '$IDENTITY', '$ROWGUID', '$PARTITION'],\n tokenizer: {\n root: [\n { include: '@templateVariables' },\n { include: '@macros' },\n { include: '@comments' },\n { include: '@whitespace' },\n { include: '@pseudoColumns' },\n { include: '@numbers' },\n { include: '@strings' },\n { include: '@complexIdentifiers' },\n { include: '@scopes' },\n { include: '@schemaTable' },\n [/[;,.]/, 'delimiter'],\n [/[()]/, '@brackets'],\n [\n /[\\w@#$|<|>|=|!|%|&|+|\\|-|*|/|~|^]+/,\n {\n cases: {\n '@operators': 'operator',\n '@comparisonOperators': 'operator',\n '@logicalOperators': 'operator',\n '@builtinVariables': 'predefined',\n '@builtinFunctions': 'predefined',\n '@keywords': 'keyword',\n '@default': 'identifier',\n },\n },\n ],\n ],\n templateVariables: [[/\\$[a-zA-Z0-9]+/, 'variable']],\n macros: [[/\\$__[a-zA-Z0-9-_]+/, 'type']],\n schemaTable: [\n [/(\\w+)\\./, 'identifier'],\n [/(\\w+\\.\\w+)/, 'identifier'],\n ],\n whitespace: [[/\\s+/, 'white']],\n comments: [\n [/--+.*/, 'comment'],\n [/\\/\\*/, { token: 'comment.quote', next: '@comment' }],\n ],\n comment: [\n [/[^*/]+/, 'comment'],\n // Not supporting nested comments, as nested comments seem to not be standard?\n // i.e. http://stackoverflow.com/questions/728172/are-there-multiline-comment-delimiters-in-sql-that-are-vendor-agnostic\n // [/\\/\\*/, { token: 'comment.quote', next: '@push' }], // nested comment not allowed :-(\n [/\\*\\//, { token: 'comment.quote', next: '@pop' }],\n [/./, 'comment'],\n ],\n pseudoColumns: [\n [\n /[$][A-Za-z_][\\w@#$]*/,\n {\n cases: {\n '@pseudoColumns': 'predefined',\n '@default': 'identifier',\n },\n },\n ],\n ],\n numbers: [\n [/0[xX][0-9a-fA-F]*/, 'number'],\n [/[$][+-]*\\d*(\\.\\d*)?/, 'number'],\n [/((\\d+(\\.\\d*)?)|(\\.\\d+))([eE][\\-+]?\\d+)?/, 'number'],\n ],\n strings: [\n [/N'/, { token: 'string', next: '@string' }],\n [/'/, { token: 'string', next: '@string' }],\n ],\n string: [\n [/[^']+/, 'string'],\n [/''/, 'string'],\n [/'/, { token: 'string', next: '@pop' }],\n ],\n complexIdentifiers: [\n [/\\[/, { token: 'identifier.quote', next: '@bracketedIdentifier' }],\n [/\"/, { token: 'identifier.quote', next: '@quotedIdentifier' }],\n ],\n bracketedIdentifier: [\n [/[^\\]]+/, 'identifier'],\n [/]]/, 'identifier'],\n [/]/, { token: 'identifier.quote', next: '@pop' }],\n ],\n quotedIdentifier: [\n [/[^\"]+/, 'identifier'],\n [/\"\"/, 'identifier'],\n [/\"/, { token: 'identifier.quote', next: '@pop' }],\n ],\n scopes: [\n [/BEGIN\\s+(DISTRIBUTED\\s+)?TRAN(SACTION)?\\b/i, 'keyword'],\n [/BEGIN\\s+TRY\\b/i, { token: 'keyword.try' }],\n [/END\\s+TRY\\b/i, { token: 'keyword.try' }],\n [/BEGIN\\s+CATCH\\b/i, { token: 'keyword.catch' }],\n [/END\\s+CATCH\\b/i, { token: 'keyword.catch' }],\n [/(BEGIN|CASE)\\b/i, { token: 'keyword.block' }],\n [/END\\b/i, { token: 'keyword.block' }],\n [/WHEN\\b/i, { token: 'keyword.choice' }],\n [/THEN\\b/i, { token: 'keyword.choice' }],\n ],\n },\n};\n","import { FROM, SCHEMA, SELECT } from '../standardSql/language';\nimport { TokenType } from '../types';\nimport { type LinkedToken } from './LinkedToken';\n\nexport const getSelectToken = (currentToken: LinkedToken | null) =>\n currentToken?.getPreviousOfType(TokenType.Keyword, SELECT) ?? null;\n\nexport const getSelectStatisticToken = (currentToken: LinkedToken | null) => {\n const assumedStatisticToken = getSelectToken(currentToken)?.getNextNonWhiteSpaceToken();\n return assumedStatisticToken?.isVariable() || assumedStatisticToken?.isFunction() ? assumedStatisticToken : null;\n};\n\nexport const getMetricNameToken = (currentToken: LinkedToken | null) => {\n // statistic function is followed by `(` and then an argument\n const assumedMetricNameToken = getSelectStatisticToken(currentToken)?.next?.next;\n return assumedMetricNameToken?.isVariable() || assumedMetricNameToken?.isIdentifier() ? assumedMetricNameToken : null;\n};\n\nexport const getFromKeywordToken = (currentToken: LinkedToken | null) => {\n const selectToken = getSelectToken(currentToken);\n return selectToken?.getNextOfType(TokenType.Keyword, FROM);\n};\n\nexport const getNamespaceToken = (currentToken: LinkedToken | null) => {\n const fromToken = getFromKeywordToken(currentToken);\n const nextNonWhiteSpace = fromToken?.getNextNonWhiteSpaceToken();\n\n if (\n nextNonWhiteSpace?.isDoubleQuotedString() ||\n (nextNonWhiteSpace?.isVariable() && nextNonWhiteSpace?.value.toUpperCase() !== SCHEMA)\n ) {\n // schema is not used\n return nextNonWhiteSpace;\n } else if (nextNonWhiteSpace?.isKeyword() && nextNonWhiteSpace.next?.is(TokenType.Parenthesis, '(')) {\n // schema is specified\n const assumedNamespaceToken = nextNonWhiteSpace.next?.next;\n if (assumedNamespaceToken?.isDoubleQuotedString() || assumedNamespaceToken?.isVariable()) {\n return assumedNamespaceToken;\n }\n }\n return null;\n};\nexport const getTableToken = (currentToken: LinkedToken | null) => {\n const fromToken = getFromKeywordToken(currentToken);\n const nextNonWhiteSpace = fromToken?.getNextNonWhiteSpaceToken();\n if (nextNonWhiteSpace?.isVariable()) {\n // TODO: resolve column from variable?\n return null;\n } else if (nextNonWhiteSpace?.isKeyword() && nextNonWhiteSpace.next?.is(TokenType.Parenthesis, '(')) {\n return null;\n } else {\n return nextNonWhiteSpace;\n }\n};\n\nexport const defaultTableNameParser = (token: LinkedToken | null | undefined) => {\n const parts = token?.value.split('.');\n\n if (parts?.length === 1) {\n return { table: parts[0] };\n } else if (parts?.length === 2) {\n return { schema: parts[0], table: parts[1] };\n }\n\n return null;\n};\n","export const TRIGGER_SUGGEST = {\n id: 'editor.action.triggerSuggest',\n title: '',\n};\n","import { type Registry } from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\nimport { TRIGGER_SUGGEST } from '../utils/commands';\nimport {\n CompletionItemInsertTextRule,\n CompletionItemKind,\n CompletionItemPriority,\n MacroType,\n OperatorType,\n SuggestionKind,\n} from '../types';\nimport { ASC, DESC } from './language';\nimport {\n type FunctionsRegistryItem,\n type MacrosRegistryItem,\n type OperatorsRegistryItem,\n type SuggestionsRegistryItem,\n} from './types';\n\n/**\n * This registry glues particular SuggestionKind with an async function that provides completion items for it.\n * To add a new suggestion kind, SQLEditor should be configured with a provider that implements customSuggestionKinds.\n */\n\nexport const initStandardSuggestions =\n (\n functions: Registry<FunctionsRegistryItem>,\n operators: Registry<OperatorsRegistryItem>,\n macros: Registry<MacrosRegistryItem>\n ) =>\n (): SuggestionsRegistryItem[] => [\n {\n id: SuggestionKind.SelectKeyword,\n name: SuggestionKind.SelectKeyword,\n suggestions: (_, m) =>\n Promise.resolve([\n {\n label: `SELECT <column>`,\n insertText: `SELECT $0`,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n kind: CompletionItemKind.Snippet,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.Medium,\n },\n {\n label: `SELECT <column> FROM <table>`,\n insertText: `SELECT $2 FROM $1`,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n kind: CompletionItemKind.Snippet,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.Medium,\n },\n ]),\n },\n {\n id: SuggestionKind.TemplateVariables,\n name: SuggestionKind.TemplateVariables,\n suggestions: (_, m) => {\n const templateSrv = getTemplateSrv();\n if (!templateSrv) {\n return Promise.resolve([]);\n }\n\n return Promise.resolve(\n templateSrv.getVariables().map((variable) => {\n const label = `\\$${variable.name}`;\n const val = templateSrv.replace(label);\n return {\n label,\n detail: `(Template Variable) ${val}`,\n kind: CompletionItemKind.Snippet,\n documentation: `(Template Variable) ${val}`,\n insertText: `\\\\$${variable.name} `,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.Low,\n };\n })\n );\n },\n },\n {\n id: SuggestionKind.SelectMacro,\n name: SuggestionKind.SelectMacro,\n suggestions: (_, m) =>\n Promise.resolve([\n ...macros\n .list()\n .filter((m) => m.type === MacroType.Value || m.type === MacroType.Column)\n .map(createMacroSuggestionItem),\n ]),\n },\n {\n id: SuggestionKind.TableMacro,\n name: SuggestionKind.TableMacro,\n suggestions: (_, m) =>\n Promise.resolve([\n ...macros\n .list()\n .filter((m) => m.type === MacroType.Table)\n .map(createMacroSuggestionItem),\n ]),\n },\n {\n id: SuggestionKind.GroupMacro,\n name: SuggestionKind.GroupMacro,\n suggestions: (_, m) =>\n Promise.resolve([\n ...macros\n .list()\n .filter((m) => m.type === MacroType.Group)\n .map(createMacroSuggestionItem),\n ]),\n },\n {\n id: SuggestionKind.FilterMacro,\n name: SuggestionKind.FilterMacro,\n suggestions: (_, m) =>\n Promise.resolve([\n ...macros\n .list()\n .filter((m) => m.type === MacroType.Filter)\n .map(createMacroSuggestionItem),\n ]),\n },\n {\n id: SuggestionKind.WithKeyword,\n name: SuggestionKind.WithKeyword,\n suggestions: (_, m) =>\n Promise.resolve([\n {\n label: `WITH <alias> AS ( ... )`,\n insertText: `WITH $1 AS ( $2 )`,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n kind: CompletionItemKind.Snippet,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.Medium,\n },\n ]),\n },\n {\n id: SuggestionKind.StarWildCard,\n name: SuggestionKind.StarWildCard,\n suggestions: (_, m) =>\n Promise.resolve([\n {\n label: '*',\n insertText: `* $0`,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n kind: CompletionItemKind.Field,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.High,\n },\n ]),\n },\n {\n id: SuggestionKind.FunctionsWithArguments,\n name: SuggestionKind.FunctionsWithArguments,\n suggestions: (_, m) =>\n Promise.resolve([\n ...functions.list().map((f) => ({\n label: f.name,\n insertText: `${f.name}($0)`,\n documentation: f.description,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n kind: CompletionItemKind.Function,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.MediumLow,\n })),\n ]),\n },\n {\n id: SuggestionKind.FunctionsWithoutArguments,\n name: SuggestionKind.FunctionsWithoutArguments,\n suggestions: (_, m) =>\n Promise.resolve([\n ...functions.list().map((f) => ({\n label: f.name,\n insertText: `${f.name}()`,\n documentation: f.description,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n kind: CompletionItemKind.Function,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.MediumHigh,\n })),\n ]),\n },\n {\n id: SuggestionKind.FromKeyword,\n name: SuggestionKind.FromKeyword,\n suggestions: (_, m) =>\n Promise.resolve([\n {\n label: 'FROM',\n insertText: `FROM $0`,\n command: TRIGGER_SUGGEST,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n kind: CompletionItemKind.Keyword,\n },\n ]),\n },\n {\n id: SuggestionKind.Schemas,\n name: SuggestionKind.Schemas,\n suggestions: (_, m) => Promise.resolve([]),\n },\n {\n id: SuggestionKind.Tables,\n name: SuggestionKind.Tables,\n suggestions: (_, m) => Promise.resolve([]),\n },\n {\n id: SuggestionKind.Columns,\n name: SuggestionKind.Columns,\n suggestions: (_, m) => Promise.resolve([]),\n },\n {\n id: SuggestionKind.LogicalOperators,\n name: SuggestionKind.LogicalOperators,\n suggestions: (_, m) =>\n Promise.resolve(\n operators\n .list()\n .filter((o) => o.type === OperatorType.Logical)\n .map((o) => ({\n label: o.operator,\n insertText: `${o.operator} `,\n documentation: o.description,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.MediumHigh,\n kind: CompletionItemKind.Operator,\n }))\n ),\n },\n {\n id: SuggestionKind.WhereKeyword,\n name: SuggestionKind.WhereKeyword,\n suggestions: (_, m) =>\n Promise.resolve([\n {\n label: 'WHERE',\n insertText: `WHERE `,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.MediumHigh,\n kind: CompletionItemKind.Keyword,\n },\n ]),\n },\n {\n id: SuggestionKind.ComparisonOperators,\n name: SuggestionKind.ComparisonOperators,\n suggestions: (_, m) =>\n Promise.resolve([\n ...operators\n .list()\n .filter((o) => o.type === OperatorType.Comparison)\n .map((o) => ({\n label: o.operator,\n insertText: `${o.operator} `,\n documentation: o.description,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.MediumHigh,\n kind: CompletionItemKind.Operator,\n })),\n {\n label: 'IN (...)',\n insertText: `IN ( $0 )`,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.Medium,\n kind: CompletionItemKind.Operator,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: 'NOT IN (...)',\n insertText: `NOT IN ( $0 )`,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.Medium,\n kind: CompletionItemKind.Operator,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: 'IS',\n insertText: `IS`,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.Medium,\n kind: CompletionItemKind.Operator,\n },\n {\n label: 'IS NOT',\n insertText: `IS NOT`,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.Medium,\n kind: CompletionItemKind.Operator,\n },\n ]),\n },\n {\n id: SuggestionKind.GroupByKeywords,\n name: SuggestionKind.GroupByKeywords,\n suggestions: (_, m) =>\n Promise.resolve([\n {\n label: 'GROUP BY',\n insertText: `GROUP BY `,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.MediumHigh,\n kind: CompletionItemKind.Keyword,\n },\n ]),\n },\n {\n id: SuggestionKind.OrderByKeywords,\n name: SuggestionKind.OrderByKeywords,\n suggestions: (_, m) =>\n Promise.resolve([\n {\n label: 'ORDER BY',\n insertText: `ORDER BY `,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.Medium,\n kind: CompletionItemKind.Keyword,\n },\n {\n label: 'ORDER BY(ascending)',\n insertText: `ORDER BY $1 ASC `,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.MediumLow,\n kind: CompletionItemKind.Snippet,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: 'ORDER BY(descending)',\n insertText: `ORDER BY $1 DESC`,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.MediumLow,\n kind: CompletionItemKind.Snippet,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n },\n ]),\n },\n {\n id: SuggestionKind.LimitKeyword,\n name: SuggestionKind.LimitKeyword,\n suggestions: (_, m) =>\n Promise.resolve([\n {\n label: 'LIMIT',\n insertText: `LIMIT `,\n command: TRIGGER_SUGGEST,\n sortText: CompletionItemPriority.MediumLow,\n kind: CompletionItemKind.Keyword,\n },\n ]),\n },\n {\n id: SuggestionKind.SortOrderDirectionKeyword,\n name: SuggestionKind.SortOrderDirectionKeyword,\n suggestions: (_, m) =>\n Promise.resolve(\n [ASC, DESC].map((o) => ({\n label: o,\n insertText: `${o} `,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Keyword,\n }))\n ),\n },\n {\n id: SuggestionKind.NotKeyword,\n name: SuggestionKind.NotKeyword,\n suggestions: () =>\n Promise.resolve([\n {\n label: 'NOT',\n insertText: 'NOT',\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Keyword,\n sortText: CompletionItemPriority.High,\n },\n ]),\n },\n {\n id: SuggestionKind.BoolValues,\n name: SuggestionKind.BoolValues,\n suggestions: () =>\n Promise.resolve(\n ['TRUE', 'FALSE'].map((o) => ({\n label: o,\n insertText: `${o}`,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Keyword,\n sortText: CompletionItemPriority.Medium,\n }))\n ),\n },\n {\n id: SuggestionKind.NullValue,\n name: SuggestionKind.NullValue,\n suggestions: () =>\n Promise.resolve(\n ['NULL'].map((o) => ({\n label: o,\n insertText: `${o}`,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Keyword,\n sortText: CompletionItemPriority.Low,\n }))\n ),\n },\n ];\n\nfunction createMacroSuggestionItem(m: MacrosRegistryItem) {\n return {\n label: m.name,\n insertText: `${'\\\\' + m.text}${argsString(m.args)} `,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n kind: CompletionItemKind.Snippet,\n documentation: m.description,\n command: TRIGGER_SUGGEST,\n };\n}\n\nfunction argsString(args?: string[]): string {\n if (!args) {\n return '()';\n }\n return '('.concat(args.map((t, i) => `\\${${i}:${t}}`).join(', ')).concat(')');\n}\n","import { StatementPosition, TokenType } from '../types';\nimport { AND, AS, ASC, BY, DESC, FROM, GROUP, ORDER, SELECT, WHERE, WITH } from './language';\nimport { type StatementPositionResolversRegistryItem } from './types';\n\nexport function initStatementPositionResolvers(): StatementPositionResolversRegistryItem[] {\n return [\n {\n id: StatementPosition.SelectKeyword,\n name: StatementPosition.SelectKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n currentToken === null ||\n (currentToken.isWhiteSpace() && currentToken.previous === null) ||\n currentToken.is(TokenType.Keyword, SELECT) ||\n (currentToken.is(TokenType.Keyword, SELECT) && currentToken.previous === null) ||\n previousIsSlash ||\n (currentToken.isIdentifier() && (previousIsSlash || currentToken?.previous === null)) ||\n (currentToken.isIdentifier() && SELECT.startsWith(currentToken.value.toLowerCase()))\n ),\n },\n {\n id: StatementPosition.WithKeyword,\n name: StatementPosition.WithKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n currentToken === null ||\n (currentToken.isWhiteSpace() && currentToken.previous === null) ||\n (currentToken.is(TokenType.Keyword, WITH) && currentToken.previous === null) ||\n (currentToken.isIdentifier() && WITH.toLowerCase().startsWith(currentToken.value.toLowerCase()))\n ),\n },\n {\n id: StatementPosition.AfterSelectKeyword,\n name: StatementPosition.AfterSelectKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(previousNonWhiteSpace?.value.toLowerCase() === SELECT),\n },\n {\n id: StatementPosition.AfterSelectArguments,\n name: StatementPosition.AfterSelectArguments,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(previousKeyword?.value.toLowerCase() === SELECT && previousNonWhiteSpace?.value === ',');\n },\n },\n {\n id: StatementPosition.AfterSelectFuncFirstArgument,\n name: StatementPosition.AfterSelectFuncFirstArgument,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n (previousKeyword?.value.toLowerCase() === SELECT || previousKeyword?.value.toLowerCase() === AS) &&\n (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n );\n },\n },\n {\n id: StatementPosition.AfterWhereFunctionArgument,\n name: StatementPosition.AfterWhereFunctionArgument,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.is(TokenType.Keyword, WHERE) &&\n (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n );\n },\n },\n {\n id: StatementPosition.AfterGroupBy,\n name: StatementPosition.AfterGroupBy,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n (previousNonWhiteSpace?.isIdentifier() ||\n previousNonWhiteSpace?.isDoubleQuotedString() ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, ')') ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, '()'))\n ),\n },\n {\n id: StatementPosition.SelectAlias,\n name: StatementPosition.SelectAlias,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n if (previousNonWhiteSpace?.value === ',' && previousKeyword?.value.toLowerCase() === AS) {\n return true;\n }\n\n return false;\n },\n },\n\n {\n id: StatementPosition.FromKeyword,\n name: StatementPosition.FromKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n // cloudwatch specific commented out\n // Boolean(previousKeyword?.value === SELECT && previousNonWhiteSpace?.isParenthesis()),\n return Boolean(\n (previousKeyword?.value.toLowerCase() === SELECT && previousNonWhiteSpace?.value !== ',') ||\n ((currentToken?.isKeyword() || currentToken?.isIdentifier()) &&\n FROM.toLowerCase().startsWith(currentToken.value.toLowerCase()))\n );\n },\n },\n {\n id: StatementPosition.AfterFromKeyword,\n name: StatementPosition.AfterFromKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(!currentToken?.value.includes('.') && previousNonWhiteSpace?.value.toLowerCase() === FROM),\n },\n {\n id: StatementPosition.AfterSchema,\n name: StatementPosition.AfterSchema,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n // depending on whether the schema was the last token in the query or not, current token might be whitespace or dot. if whitespace, just use the previous token\n if (currentToken?.isWhiteSpace() && currentToken?.next) {\n currentToken = currentToken?.previous;\n previousNonWhiteSpace = currentToken!.getPreviousNonWhiteSpaceToken();\n }\n return Boolean(\n currentToken?.isIdentifier() &&\n currentToken?.value.endsWith('.') &&\n previousNonWhiteSpace?.value.toLowerCase() === FROM\n );\n },\n },\n {\n id: StatementPosition.AfterFrom,\n name: StatementPosition.AfterFrom,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isDoubleQuotedString()) ||\n (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isIdentifier()) ||\n (previousKeyword?.value.toLowerCase() === FROM && previousNonWhiteSpace?.isVariable())\n // cloudwatch specific\n // (previousKeyword?.value === SCHEMA && previousNonWhiteSpace?.is(TokenType.Parenthesis, ')'))\n ),\n },\n {\n id: StatementPosition.AfterTable,\n name: StatementPosition.AfterTable,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.value.toLowerCase() === FROM &&\n (previousNonWhiteSpace?.isVariable() ||\n (previousNonWhiteSpace?.value !== '' && previousNonWhiteSpace?.value.toLowerCase() !== FROM))\n );\n },\n },\n {\n id: StatementPosition.WhereKeyword,\n name: StatementPosition.WhereKeyword,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.value.toLowerCase() === WHERE &&\n (previousNonWhiteSpace?.isKeyword() ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') ||\n previousNonWhiteSpace?.is(TokenType.Operator, AND))\n ),\n },\n {\n id: StatementPosition.WhereComparisonOperator,\n name: StatementPosition.WhereComparisonOperator,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.value.toLowerCase() === WHERE &&\n !previousNonWhiteSpace?.getPreviousNonWhiteSpaceToken()?.isOperator() &&\n !currentToken?.is(TokenType.Delimiter, '.') &&\n !currentToken?.isParenthesis() &&\n (previousNonWhiteSpace?.isIdentifier() || previousNonWhiteSpace?.isDoubleQuotedString())\n ),\n },\n {\n id: StatementPosition.WhereValue,\n name: StatementPosition.WhereValue,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(previousKeyword?.value.toLowerCase() === WHERE && previousNonWhiteSpace?.isOperator()),\n },\n {\n id: StatementPosition.AfterWhereValue,\n name: StatementPosition.AfterWhereValue,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.value.toLowerCase() === WHERE &&\n (previousNonWhiteSpace?.is(TokenType.Operator, 'and') ||\n previousNonWhiteSpace?.is(TokenType.Operator, 'or') ||\n previousNonWhiteSpace?.isString() ||\n previousNonWhiteSpace?.isNumber() ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, ')') ||\n previousNonWhiteSpace?.is(TokenType.Parenthesis, '()') ||\n previousNonWhiteSpace?.isTemplateVariable() ||\n (previousNonWhiteSpace?.is(TokenType.IdentifierQuote) &&\n previousNonWhiteSpace.getPreviousNonWhiteSpaceToken()?.is(TokenType.Identifier) &&\n previousNonWhiteSpace\n ?.getPreviousNonWhiteSpaceToken()\n ?.getPreviousNonWhiteSpaceToken()\n ?.is(TokenType.IdentifierQuote)))\n );\n },\n },\n {\n id: StatementPosition.AfterGroupByKeywords,\n name: StatementPosition.AfterGroupByKeywords,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n (previousNonWhiteSpace?.is(TokenType.Keyword, BY) || previousNonWhiteSpace?.is(TokenType.Delimiter, ','))\n ),\n },\n {\n id: StatementPosition.AfterGroupByFunctionArgument,\n name: StatementPosition.AfterGroupByFunctionArgument,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, GROUP) &&\n (previousNonWhiteSpace?.is(TokenType.Parenthesis, '(') || currentToken?.is(TokenType.Parenthesis, '()'))\n );\n },\n },\n {\n id: StatementPosition.AfterOrderByKeywords,\n name: StatementPosition.AfterOrderByKeywords,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousNonWhiteSpace?.is(TokenType.Keyword, BY) &&\n previousNonWhiteSpace?.getPreviousKeyword()?.is(TokenType.Keyword, ORDER)\n ),\n },\n {\n id: StatementPosition.AfterOrderByFunction,\n name: StatementPosition.AfterOrderByFunction,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(\n previousKeyword?.is(TokenType.Keyword, BY) &&\n previousKeyword?.getPreviousKeyword()?.is(TokenType.Keyword, ORDER) &&\n previousNonWhiteSpace?.is(TokenType.Parenthesis) &&\n previousNonWhiteSpace?.getPreviousNonWhiteSpaceToken()?.is(TokenType.Function)\n ),\n },\n {\n id: StatementPosition.AfterOrderByDirection,\n name: StatementPosition.AfterOrderByDirection,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) =>\n Boolean(previousKeyword?.is(TokenType.Keyword, DESC) || previousKeyword?.is(TokenType.Keyword, ASC)),\n },\n {\n id: StatementPosition.AfterIsOperator,\n name: StatementPosition.AfterIsOperator,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(previousNonWhiteSpace?.is(TokenType.Operator, 'IS'));\n },\n },\n {\n id: StatementPosition.AfterIsNotOperator,\n name: StatementPosition.AfterIsNotOperator,\n resolve: (currentToken, previousKeyword, previousNonWhiteSpace, previousIsSlash) => {\n return Boolean(\n previousNonWhiteSpace?.is(TokenType.Operator, 'NOT') &&\n previousNonWhiteSpace.getPreviousNonWhiteSpaceToken()?.is(TokenType.Operator, 'IS')\n );\n },\n },\n ];\n}\n","import { attachDebugger, createLogger } from '@grafana/ui';\n\nlet sqlEditorLogger = { logger: () => {} };\nlet sqlEditorLog: (...t: any[]) => void = () => {};\n\nif (attachDebugger && createLogger) {\n sqlEditorLogger = createLogger('SQLEditor');\n sqlEditorLog = sqlEditorLogger.logger;\n attachDebugger('sqleditor', undefined, sqlEditorLogger as any);\n}\n\nexport { sqlEditorLog, sqlEditorLogger };\n","import { MacroType } from '../types';\nimport { type MacrosRegistryItem } from './types';\n\nconst COLUMN = 'column',\n RELATIVE_TIME_STRING = \"'5m'\";\n\nexport const MACROS: MacrosRegistryItem[] = [\n {\n id: '$__timeFilter(dateColumn)',\n name: '$__timeFilter(dateColumn)',\n text: '$__timeFilter',\n args: [COLUMN],\n type: MacroType.Filter,\n description:\n 'Will be replaced by a time range filter using the specified column name. For example, dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)',\n },\n {\n id: '$__timeFrom()',\n name: '$__timeFrom()',\n text: '$__timeFrom',\n args: [],\n type: MacroType.Filter,\n description:\n 'Will be replaced by the start of the currently active time selection. For example, FROM_UNIXTIME(1494410783)',\n },\n {\n id: '$__timeTo()',\n name: '$__timeTo()',\n text: '$__timeTo',\n args: [],\n type: MacroType.Filter,\n description:\n 'Will be replaced by the end of the currently active time selection. For example, FROM_UNIXTIME(1494410983)',\n },\n {\n id: \"$__timeGroup(dateColumn, '5m')\",\n name: \"$__timeGroup(dateColumn, '5m')\",\n text: '$__timeGroup',\n args: [COLUMN, RELATIVE_TIME_STRING],\n type: MacroType.Value,\n description:\n 'Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),*',\n },\n {\n id: '$__table',\n name: '$__table',\n text: '$__table',\n args: [],\n type: MacroType.Table,\n description: 'Will be replaced by the query table.',\n },\n {\n id: '$__column',\n name: '$__column',\n text: '$__column',\n args: [],\n type: MacroType.Column,\n description: 'Will be replaced by the query column.',\n },\n];\n\n/*\n {\n id: \"$__timeGroupAlias(dateColumn, '5m', fill)\",\n name: \"$__timeGroupAlias(dateColumn, '5m', fill)\",\n text: \"$__timeGroup\",\n args: [COLUMN, RELATIVE_TIME_STRING , FILL_TYPE],\n type: MacroType.Group,\n description:\n \"Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),* with an added column alias\",\n },\n {\n id: \"$__unixEpochFilter(dateColumn)\",\n name: \"$__unixEpochFilter(dateColumn)\",\n text: \"$__unixEpochFilter\",\n args: [COLUMN],\n type: MacroType.Filter,\n description:\n \"Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, dateColumn > 1494410783 AND dateColumn < 1494497183\",\n },\n {\n id: \"$__unixEpochFrom()\",\n name: \"$__unixEpochFrom()\",\n text: \"$__unixEpochFrom\",\n args: [],\n type: MacroType.Value,\n description:\n \"Will be replaced by the start of the currently active time selection as Unix timestamp. For example, 1494410783\",\n },\n {\n id: \"$__unixEpochTo()\",\n name: \"$__unixEpochTo()\",\n text: \"$__unixEpochTo\",\n args: [],\n type: MacroType.Value,\n description:\n \"Will be replaced by the end of the currently active time selection as Unix timestamp. For example, 1494410783\",\n },\n {\n id: \"$__unixEpochNanoFilter(dateColumn)\",\n name: \"$__unixEpochNanoFilter(dateColumn)\",\n text: \"$__unixEpochNanoFilter\",\n args: [COLUMN],\n type: MacroType.Filter,\n description:\n \"Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872\",\n },\n {\n id: \"$__unixEpochNanoFrom()\",\n name: \"$__unixEpochNanoFrom()\",\n text: \"$__unixEpochNanoFrom\",\n args: [],\n type: MacroType.Value,\n description:\n \"Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, 1494410783152415214\",\n },\n {\n id: \"$__unixEpochNanoTo()\",\n name: \"$__unixEpochNanoTo()\",\n text: \"$__unixEpochNanoTo\",\n args: [],\n type: MacroType.Value,\n description:\n \"Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, 1494410783152415214\",\n },\n {\n id: \"$__unixEpochGroup(dateColumn, '5m')\",\n name: \"$__unixEpochGroup(dateColumn, '5m')\",\n text: \"$__unixEpochGroup\",\n args: [COLUMN, RELATIVE_TIME_STRING],\n type: MacroType.Group,\n description:\n \"Will be replaced by an expression usable in GROUP BY clause. For values stored as unix timestamp.\",\n },\n {\n id: \"$__unixEpochGroup(dateColumn, '5m', fill)\",\n name: \"$__unixEpochGroup(dateColumn, '5m', fill)\",\n text: \"$__unixEpochGroup\",\n args: [COLUMN, RELATIVE_TIME_STRING, FILL_TYPE],\n type: MacroType.Group,\n description:\n \"Will be replaced by an expression usable in GROUP BY clause. For values stored as unix timestamp. Missing values can be filled with 0, NULL or previous\",\n },\n {\n id: \"$__timeEpoch(dateColumn, )\",\n name: \"$__timeEpoch(dateColumn)\",\n text: \"$__timeEpoch\",\n args: [COLUMN],\n type: MacroType.Value,\n description:\n \"Will be replaced by an expression to convert to a UNIX timestamp and rename the column to time_sec. For example, UNIX_TIMESTAMP(dateColumn) as time_sec\",\n },\n {\n id: \"$__time(dateColumn)\",\n name: \"$__time(dateColumn)\",\n text: \"$__time\",\n args: [COLUMN],\n type: MacroType.Value,\n description:\n \"Will be replaced by an expression to convert to a UNIX timestamp and rename the column to time_sec. For example, UNIX_TIMESTAMP(dateColumn) as time_sec\",\n },\n {\n id: \"$__timeGroup(dateColumn, '5m', fill)\",\n name: \"$__timeGroup(dateColumn, '5m', fill)\",\n text: \"$__timeGroup\",\n args: [COLUMN, RELATIVE_TIME_STRING, FILL_TYPE],\n type: MacroType.Value,\n description:\n \"Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),* missing values can be filled with 0, NULL or previous\",\n },\n */\n","import { type Monaco } from '@grafana/ui';\nimport { type Operator, OperatorType, type SQLCompletionItemProvider } from '../types';\nimport { MACROS } from './macros';\nimport { type SQLMonarchLanguage } from './types';\n\nexport function getStandardSQLCompletionProvider(\n monaco: Monaco,\n language: SQLMonarchLanguage\n): SQLCompletionItemProvider {\n const provider: SQLCompletionItemProvider = { triggerCharacters: ['.', ' ', '$', ',', '(', \"'\"] };\n if (language && Array.isArray(language.builtinFunctions)) {\n provider.supportedFunctions = () => language.builtinFunctions!.map((f) => ({ id: f, name: f }));\n }\n\n const operators: Operator[] = [];\n if (language?.comparisonOperators?.length) {\n operators.push(\n ...language.comparisonOperators.map((f) => ({\n id: f.toLocaleLowerCase(),\n operator: f,\n type: OperatorType.Comparison,\n }))\n );\n }\n\n // some languages in the monaco language registry don't specify logical operators, only operators. if so, suggest them instead\n language.logicalOperators = language.logicalOperators ?? language.operators;\n if (language?.logicalOperators?.length) {\n operators.push(\n ...language.logicalOperators.map((f) => ({ id: f.toLocaleLowerCase(), operator: f, type: OperatorType.Logical }))\n );\n }\n\n provider.supportedOperators = () => operators;\n\n provider.supportedMacros = () => MACROS;\n\n return provider;\n}\n","import { type LanguageDefinition } from '../components/SQLEditor';\nimport { getStandardSQLCompletionProvider } from './standardSQLCompletionItemProvider';\n\nconst standardSQLLanguageDefinition: LanguageDefinition = {\n id: 'standardSql',\n extensions: ['.sql'],\n aliases: ['sql'],\n mimetypes: [],\n loader: () => require('./language'),\n\n completionProvider: getStandardSQLCompletionProvider,\n};\n\nexport default standardSQLLanguageDefinition;\n","import { CodeEditor, type Monaco, type monacoTypes } from '@grafana/ui';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { getStatementPosition } from '../standardSql/getStatementPosition';\nimport { getStandardSuggestions } from '../standardSql/getStandardSuggestions';\nimport { initSuggestionsKindRegistry, type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport {\n CompletionItemInsertTextRule,\n CompletionItemKind,\n CompletionItemPriority,\n type CustomSuggestion,\n type PositionContext,\n type SQLCompletionItemProvider,\n type StatementPosition,\n SuggestionKind,\n} from '../types';\nimport { getSuggestionKinds } from '../utils/getSuggestionKind';\nimport { linkedTokenBuilder } from '../utils/linkedTokenBuilder';\nimport { defaultTableNameParser, getTableToken } from '../utils/tokenUtils';\nimport { TRIGGER_SUGGEST } from '../utils/commands';\nimport { v4 } from 'uuid';\nimport { Registry } from '@grafana/data';\nimport {\n type FunctionsRegistryItem,\n type MacrosRegistryItem,\n type OperatorsRegistryItem,\n type SQLMonarchLanguage,\n type StatementPositionResolversRegistryItem,\n type SuggestionsRegistryItem,\n} from '../standardSql/types';\nimport { initStandardSuggestions } from '../standardSql/standardSuggestionsRegistry';\nimport { initStatementPositionResolvers } from '../standardSql/statementPositionResolversRegistry';\nimport { sqlEditorLog } from '../utils/debugger';\nimport standardSQLLanguageDefinition from '../standardSql/definition';\nimport { getStandardSQLCompletionProvider } from '../standardSql/standardSQLCompletionItemProvider';\n\nconst STANDARD_SQL_LANGUAGE = 'sql';\n\nexport interface LanguageDefinition extends monacoTypes.languages.ILanguageExtensionPoint {\n loader?: (module: any) => Promise<{\n language: SQLMonarchLanguage;\n conf: monacoTypes.languages.LanguageConfiguration;\n }>;\n // Provides API for customizing the autocomplete\n completionProvider?: (m: Monaco, language: SQLMonarchLanguage) => SQLCompletionItemProvider;\n // Function that returns a formatted query\n formatter?: (q: string) => string;\n}\n\ninterface SQLEditorProps {\n query: string;\n /**\n * Use for inspecting the query as it changes. I.e. for validation.\n */\n onChange?: (q: string, processQuery: boolean) => void;\n onBlur?: (text: string) => void;\n language?: LanguageDefinition;\n children?: (props: { formatQuery: () => void }) => React.ReactNode;\n width?: number;\n height?: number;\n}\n\ninterface LanguageRegistries {\n functions: Registry<FunctionsRegistryItem>;\n operators: Registry<OperatorsRegistryItem>;\n suggestionKinds: Registry<SuggestionKindRegistryItem>;\n positionResolvers: Registry<StatementPositionResolversRegistryItem>;\n macros: Registry<MacrosRegistryItem>;\n}\n\nconst LANGUAGES_CACHE = new Map<string, LanguageRegistries>();\nconst INSTANCE_CACHE = new Map<string, Registry<SuggestionsRegistryItem>>();\n\nexport const SQLEditor = ({\n children,\n onBlur,\n onChange,\n query,\n language = { id: STANDARD_SQL_LANGUAGE },\n width,\n height,\n}: SQLEditorProps) => {\n const monacoRef = useRef<monacoTypes.editor.IStandaloneCodeEditor | null>(null);\n const langUid = useRef<string>();\n // create unique language id for each SQLEditor instance\n const id = useMemo(() => {\n const uid = v4();\n const id = `${language.id}-${uid}`;\n langUid.current = id;\n return id;\n }, [language.id]);\n\n useEffect(() => {\n return () => {\n if (langUid.current) {\n INSTANCE_CACHE.delete(langUid.current);\n }\n sqlEditorLog(`Removing instance cache ${langUid.current}`, false, INSTANCE_CACHE);\n };\n }, []);\n\n const formatQuery = useCallback(() => {\n if (monacoRef.current) {\n monacoRef.current.getAction('editor.action.formatDocument').run();\n }\n }, []);\n\n const onSqlBlur = (text: string) => {\n onChange && onChange(text, false);\n onBlur && onBlur(text);\n };\n\n return (\n <div style={{ width }}>\n <CodeEditor\n height={height || '240px'}\n // -2px to compensate for borders width\n width={width ? `${width - 2}px` : undefined}\n language={id}\n value={query}\n onBlur={onSqlBlur}\n showMiniMap={false}\n showLineNumbers={true}\n // Using onEditorDidMount instead of onBeforeEditorMount to support Grafana < 8.2.x\n onEditorDidMount={(editor, m) => {\n monacoRef.current = editor;\n editor.onDidChangeModelContent((e) => {\n const text = editor.getValue();\n if (onChange) {\n onChange(text, false);\n }\n });\n\n editor.addCommand(m.KeyMod.CtrlCmd | m.KeyCode.Enter, () => {\n const text = editor.getValue();\n if (onChange) {\n onChange(text, true);\n }\n });\n\n editor.onKeyUp((e) => {\n // keyCode 84 is . (DOT)\n if (e.keyCode === 84) {\n editor.trigger(TRIGGER_SUGGEST.id, TRIGGER_SUGGEST.id, {});\n }\n });\n registerLanguageAndSuggestions(m, language, id);\n }}\n />\n {children && children({ formatQuery })}\n </div>\n );\n};\n\n// There's three ways to define Monaco language:\n// 1. Leave language.id empty or set it to 'sql'. This will load a standard sql language definition, including syntax highlighting and tokenization for\n// common Grafana entities such as macros and template variables\n// 2. Provide a custom language and load it via the async LanguageDefinition.loader callback\n// 3. Specify a language.id that exists in the Monaco language registry. A custom completion item provider can still be provided.\n// If not, the standard SQL completion item provider will be used. See available languages here: https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages\n// If a custom language is specified, its LanguageDefinition will be merged with the LanguageDefinition for standard SQL. This allows the consumer to only\n// override parts of the LanguageDefinition, such as for example the completion item provider.\nconst resolveLanguage = (monaco: Monaco, languageDefinitionProp: LanguageDefinition): LanguageDefinition => {\n if (languageDefinitionProp?.id !== STANDARD_SQL_LANGUAGE && !languageDefinitionProp.loader) {\n sqlEditorLog(`Loading language '${languageDefinitionProp?.id}' from Monaco registry`, false);\n const allLangs = monaco.languages.getLanguages();\n const custom = allLangs.find(({ id }) => id === languageDefinitionProp?.id);\n if (!custom) {\n throw Error(`Unknown Monaco language ${languageDefinitionProp?.id}`);\n }\n\n return { completionProvider: getStandardSQLCompletionProvider, ...custom, ...languageDefinitionProp };\n }\n\n return {\n ...standardSQLLanguageDefinition,\n ...languageDefinitionProp,\n };\n};\n\nexport const registerLanguageAndSuggestions = async (monaco: Monaco, l: LanguageDefinition, lid: string) => {\n const languageDefinition = resolveLanguage(monaco, l);\n if (!languageDefinition.loader) {\n return;\n }\n const { language, conf } = await languageDefinition.loader(monaco);\n monaco.languages.register({ id: lid });\n monaco.languages.setMonarchTokensProvider(lid, { ...language });\n monaco.languages.setLanguageConfiguration(lid, { ...conf });\n\n if (languageDefinition.formatter) {\n monaco.languages.registerDocumentFormattingEditProvider(lid, {\n provideDocumentFormattingEdits: (model) => {\n const formatted = l.formatter?.(model.getValue());\n return [\n {\n range: model.getFullModelRange(),\n text: formatted || '',\n },\n ];\n },\n });\n }\n\n if (languageDefinition.completionProvider) {\n const customProvider = languageDefinition.completionProvider(monaco, language);\n extendStandardRegistries(l.id, lid, customProvider);\n const languageSuggestionsRegistries = LANGUAGES_CACHE.get(l.id)!;\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n const completionProvider: monacoTypes.languages.CompletionItemProvider['provideCompletionItems'] = async (\n model,\n position,\n context,\n token\n ) => {\n const currentToken = linkedTokenBuilder(monaco, model, position, lid);\n const statementPosition = getStatementPosition(currentToken, languageSuggestionsRegistries.positionResolvers);\n const kind = getSuggestionKinds(statementPosition, languageSuggestionsRegistries.suggestionKinds);\n\n sqlEditorLog('Statement position', false, statementPosition);\n sqlEditorLog('Suggestion kinds', false, kind);\n\n const ctx: PositionContext = {\n position,\n currentToken,\n statementPosition,\n kind,\n range: monaco.Range.fromPositions(position),\n };\n\n const stdSuggestions = await getStandardSuggestions(monaco, currentToken, kind, ctx, instanceSuggestionsRegistry);\n\n return {\n suggestions: stdSuggestions,\n };\n };\n\n monaco.languages.registerCompletionItemProvider(lid, {\n ...customProvider,\n provideCompletionItems: completionProvider,\n });\n }\n};\n\nfunction extendStandardRegistries(id: string, lid: string, customProvider: SQLCompletionItemProvider) {\n if (!LANGUAGES_CACHE.has(id)) {\n initializeLanguageRegistries(id);\n }\n\n const languageRegistries = LANGUAGES_CACHE.get(id)!;\n\n if (!INSTANCE_CACHE.has(lid)) {\n INSTANCE_CACHE.set(\n lid,\n new Registry(\n initStandardSuggestions(languageRegistries.functions, languageRegistries.operators, languageRegistries.macros)\n )\n );\n }\n\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n if (customProvider.supportedFunctions) {\n for (const func of customProvider.supportedFunctions()) {\n const exists = languageRegistries.functions.getIfExists(func.id);\n if (!exists) {\n languageRegistries.functions.register(func);\n }\n }\n }\n\n if (customProvider.supportedOperators) {\n for (const op of customProvider.supportedOperators()) {\n const exists = languageRegistries.operators.getIfExists(op.id);\n if (!exists) {\n languageRegistries.operators.register({ ...op, name: op.id });\n }\n }\n }\n\n if (customProvider.supportedMacros) {\n for (const macro of customProvider.supportedMacros()) {\n const exists = languageRegistries.macros.getIfExists(macro.id);\n if (!exists) {\n languageRegistries.macros.register({ ...macro, name: macro.id });\n }\n }\n }\n\n if (customProvider.customStatementPlacement) {\n for (const placement of customProvider.customStatementPlacement()) {\n const exists = languageRegistries.positionResolvers.getIfExists(placement.id);\n if (!exists) {\n languageRegistries.positionResolvers.register({\n ...placement,\n id: placement.id as StatementPosition,\n name: placement.id,\n });\n languageRegistries.suggestionKinds.register({\n id: placement.id as StatementPosition,\n name: placement.id,\n kind: [],\n });\n } else {\n // Allow extension to the built-in placement resolvers\n const origResolve = exists.resolve;\n exists.resolve = (...args) => {\n const ext = placement.resolve(...args);\n if (placement.overrideDefault) {\n return ext;\n }\n const orig = origResolve(...args);\n return orig || ext;\n };\n }\n }\n }\n\n if (customProvider.customSuggestionKinds) {\n for (const kind of customProvider.customSuggestionKinds()) {\n kind.applyTo?.forEach((applyTo) => {\n const exists = languageRegistries.suggestionKinds.getIfExists(applyTo);\n if (exists) {\n // avoid duplicates\n if (exists.kind.indexOf(kind.id as SuggestionKind) === -1) {\n exists.kind.push(kind.id as SuggestionKind);\n }\n }\n });\n\n if (kind.overrideDefault) {\n const stbBehavior = instanceSuggestionsRegistry.get(kind.id);\n if (stbBehavior !== undefined) {\n stbBehavior.suggestions = kind.suggestionsResolver;\n continue;\n }\n }\n\n instanceSuggestionsRegistry.register({\n id: kind.id as SuggestionKind,\n name: kind.id,\n suggestions: kind.suggestionsResolver,\n });\n }\n }\n\n if (customProvider.schemas) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Schemas);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const standardSchemas = await s(ctx, m);\n if (!customProvider.schemas) {\n return [...standardSchemas];\n }\n const customSchemas = await customProvider.schemas.resolve();\n const customSchemaCompletionItems = customSchemas.map((x) => ({\n label: x.name,\n insertText: `${x.completion ?? x.name}.`,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Module, // it's nice to differentiate schemas from tables\n sortText: CompletionItemPriority.High,\n }));\n return [...standardSchemas, ...customSchemaCompletionItems];\n };\n }\n\n if (customProvider.tables) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Tables);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n const tableIdentifier = tableNameParser(tableToken);\n\n const oo = ((await customProvider.tables?.resolve?.(tableIdentifier)) ?? []).map((x) => ({\n label: x.name,\n // if no custom completion is provided it's safe to move cursor further in the statement\n insertText: `${x.completion ?? x.name}${x.completion === x.name ? ' $0' : ''}`,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.MediumHigh,\n }));\n return [...o, ...oo];\n };\n }\n\n if (customProvider.columns) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Columns);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n let tableIdentifier;\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n if (tableToken && tableToken.value) {\n tableIdentifier = tableNameParser(tableToken);\n }\n\n let oo: CustomSuggestion[] = [];\n if (tableIdentifier) {\n const columns = await customProvider.columns?.resolve!(tableIdentifier);\n oo = columns\n ? columns.map<CustomSuggestion>((x) => ({\n label: x.name,\n insertText: x.completion ?? x.name,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.High,\n detail: x.type,\n documentation: x.description,\n }))\n : [];\n }\n return [...o, ...oo];\n };\n }\n}\n\n/**\n * Initializes language specific registries that are treated as singletons\n */\nfunction initializeLanguageRegistries(id: string) {\n if (!LANGUAGES_CACHE.has(id)) {\n LANGUAGES_CACHE.set(id, {\n functions: new Registry(),\n operators: new Registry(),\n suggestionKinds: new Registry(initSuggestionsKindRegistry),\n positionResolvers: new Registry(initStatementPositionResolvers),\n macros: new Registry(),\n });\n }\n\n return LANGUAGES_CACHE.get(id)!;\n}\n","import { type monacoTypes } from '@grafana/ui';\nimport { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineFullQuery: TestQueryModel = {\n query: `SELECT column1, FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1 DESC LIMIT 10`,\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 20,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 21,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 27,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 28,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 33,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 34,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 41,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 42,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 43,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 44,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 45,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 51,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 52,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 53,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 58,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 59,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 61,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 62,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 69,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 70,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 75,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 76,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 78,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 79,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 86,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 87,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 91,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 92,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 97,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 98,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 100,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ] as monacoTypes.Token[][],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineFullQueryWithAggregation: TestQueryModel = {\n query: 'SELECT count(column1), FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1 DESC LIMIT 10;',\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'predefined.sql',\n language: 'sql',\n },\n {\n offset: 12,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 20,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 21,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 27,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 28,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 34,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 35,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 40,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 41,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 48,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 49,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 50,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 51,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 52,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 58,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 59,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 60,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 65,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 66,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 68,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 69,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 76,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 77,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 82,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 83,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 85,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 86,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 93,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 94,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 98,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 99,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 104,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 105,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 107,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const multiLineFullQuery: TestQueryModel = {\n query: `SELECT column1,\n FROM table1\n\n WHERE column1 = \"value1\"\n GROUP BY column1 ORDER BY column1 DESC\n LIMIT 10;`,\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 4,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 11,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 24,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 9,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 25,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 26,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 33,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 34,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 38,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const multiLineFullQueryWithAggregation: TestQueryModel = {\n query: `SELECT count(column1),\n FROM table1\n\n WHERE column1 = \"value1\"\n GROUP BY column1 ORDER BY column1 DESC\n LIMIT 10;`,\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'predefined.sql',\n language: 'sql',\n },\n {\n offset: 12,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 20,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 21,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 4,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 11,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 24,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 9,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 25,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 26,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 33,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 34,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 38,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineEmptyQuery: TestQueryModel = {\n query: '',\n tokens: [],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineTwoQueries: TestQueryModel = {\n query:\n 'SELECT column1, FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1 DESC LIMIT 10; SELECT column2, FROM table2 WHERE column2 = \"value2\" GROUP BY column1 ORDER BY column2 DESC LIMIT 10;',\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 20,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 21,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 27,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 28,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 33,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 34,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 41,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 42,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 43,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 44,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 45,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 51,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 52,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 53,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 58,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 59,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 61,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 62,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 69,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 70,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 75,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 76,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 78,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 79,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 86,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 87,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 91,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 92,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 97,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 98,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 100,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 101,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 102,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 108,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 109,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 116,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 117,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 118,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 122,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 123,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 129,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 130,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 135,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 136,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 143,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 144,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 145,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 146,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 147,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 153,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 154,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 155,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 160,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 161,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 163,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 164,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 171,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 172,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 177,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 178,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 180,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 181,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 188,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 189,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 193,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 194,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 199,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 200,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 202,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineTwoQueriesWithAggregation: TestQueryModel = {\n query:\n 'SELECT count(column1), FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1 DESC LIMIT 10; SELECT count(column2), FROM table2 WHERE column2 = \"value2\" GROUP BY column1 ORDER BY column2 DESC LIMIT 10;',\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'predefined.sql',\n language: 'sql',\n },\n {\n offset: 12,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 20,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 21,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 27,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 28,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 34,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 35,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 40,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 41,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 48,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 49,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 50,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 51,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 52,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 58,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 59,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 60,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 65,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 66,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 68,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 69,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 76,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 77,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 82,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 83,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 85,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 86,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 93,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 94,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 98,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 99,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 104,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 105,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 107,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 108,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 109,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 115,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 116,\n type: 'predefined.sql',\n language: 'sql',\n },\n {\n offset: 121,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 122,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 129,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 130,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 131,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 132,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 136,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 137,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 143,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 144,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 149,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 150,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 157,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 158,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 159,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 160,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 161,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 167,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 168,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 169,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 174,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 175,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 177,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 178,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 185,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 186,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 191,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 192,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 194,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 195,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 202,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 203,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 207,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 208,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 213,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 214,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 216,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const singleLineMultipleColumns: TestQueryModel = {\n query:\n 'SELECT count(column1), column2 FROM table1 WHERE column1 = \"value1\" GROUP BY column1 ORDER BY column1, avg(column2) DESC LIMIT 10;',\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'predefined.sql',\n language: 'sql',\n },\n {\n offset: 12,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 20,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 21,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 30,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 31,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 35,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 36,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 42,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 43,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 48,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 49,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 56,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 57,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 58,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 59,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 60,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 66,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 67,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 68,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 73,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 74,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 76,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 77,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 84,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 85,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 90,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 91,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 93,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 94,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 101,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 102,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 103,\n type: 'predefined.sql',\n language: 'sql',\n },\n {\n offset: 106,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 107,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 114,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 115,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 116,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 120,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 121,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 126,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 127,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 129,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ],\n};\n","import { type TestQueryModel } from '../../test-utils/types';\n\nexport const multiLineMultipleColumns: TestQueryModel = {\n query: `SELECT count(column1), column2\n FROM table1\n\n WHERE column1 = \"value1\"\n GROUP BY column1 ORDER BY column1, avg(column2) DESC\n LIMIT 10;`,\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'predefined.sql',\n language: 'sql',\n },\n {\n offset: 12,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 20,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 21,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 30,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 4,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 11,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 24,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 9,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 25,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 26,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 33,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 34,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 35,\n type: 'predefined.sql',\n language: 'sql',\n },\n {\n offset: 38,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 39,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 46,\n type: 'delimiter.parenthesis.sql',\n language: 'sql',\n },\n {\n offset: 47,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 48,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 52,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ],\n};\n","import { type monacoTypes } from '@grafana/ui';\n\n// Stub for the Monaco instance. Only implements the parts that are used in cloudwatch sql\nconst getMonacoMock: (\n testData: Map<string, Array<Array<Pick<monacoTypes.Token, 'language' | 'offset' | 'type'>>>>\n) => any = (testData) => ({\n editor: {\n tokenize: (value: string, languageId: string) => testData.get(value),\n },\n Range: {\n containsPosition: (range: monacoTypes.IRange, position: monacoTypes.IPosition) => {\n return (\n position.lineNumber >= range.startLineNumber &&\n position.lineNumber <= range.endLineNumber &&\n position.column >= range.startColumn &&\n position.column <= range.endColumn\n );\n },\n },\n languages: {\n CompletionItemKind: { Snippet: 2, Function: 1, Keyword: 3 },\n CompletionItemInsertTextRule: { InsertAsSnippet: 2 },\n },\n});\n\nexport { getMonacoMock };\n","import { type monacoTypes } from '@grafana/ui';\n\n// Stub for monacoTypes.editor.ITextModel\nfunction TextModel(value: string) {\n return {\n getValue: function (eol?: monacoTypes.editor.EndOfLinePreference, preserveBOM?: boolean): string {\n return value;\n },\n getValueInRange: function (range: monacoTypes.IRange, eol?: monacoTypes.editor.EndOfLinePreference): string {\n const lines = value.split('\\n');\n const line = lines[range.startLineNumber - 1];\n return line.trim().slice(range.startColumn === 0 ? 0 : range.startColumn - 1, range.endColumn - 1);\n },\n getLineLength: function (lineNumber: number): number {\n const lines = value.split('\\n');\n return lines[lineNumber - 1].trim().length;\n },\n };\n}\n\nexport { TextModel };\n","import { Registry } from '@grafana/data';\nimport { type monacoTypes } from '@grafana/ui';\nimport { getMonacoMock } from '../mocks/Monaco';\nimport { TextModel } from '../mocks/TextModel';\nimport { getStatementPosition } from '../standardSql/getStatementPosition';\nimport { type StatementPositionResolversRegistryItem } from '../standardSql/types';\nimport { type CustomStatementPlacement, type StatementPosition } from '../types';\nimport { linkedTokenBuilder } from '../utils/linkedTokenBuilder';\nimport { type StatementPositionResolverTestCase } from './types';\n\nfunction assertPosition(\n query: string,\n position: monacoTypes.IPosition,\n expected: StatementPosition | string,\n monacoMock: any,\n resolversRegistry: Registry<StatementPositionResolversRegistryItem>\n) {\n const testModel = TextModel(query);\n const current = linkedTokenBuilder(monacoMock, testModel as monacoTypes.editor.ITextModel, position);\n const statementPosition = getStatementPosition(current, resolversRegistry);\n\n expect(statementPosition).toContain(expected);\n}\n\nexport const testStatementPosition = (\n expected: StatementPosition | string,\n cases: StatementPositionResolverTestCase[],\n resolvers: () => CustomStatementPlacement[]\n) => {\n describe(`${expected}`, () => {\n let MonacoMock: any;\n let statementPositionResolversRegistry: Registry<StatementPositionResolversRegistryItem>;\n\n beforeEach(() => {\n const mockQueries = new Map<string, Array<Array<Pick<monacoTypes.Token, 'language' | 'offset' | 'type'>>>>();\n cases.forEach((c) => mockQueries.set(c.query.query, c.query.tokens));\n\n MonacoMock = getMonacoMock(mockQueries);\n statementPositionResolversRegistry = new Registry(() => {\n return resolvers().map((r) => ({\n id: r.id as StatementPosition,\n name: r.name || r.id,\n resolve: r.resolve,\n }));\n });\n });\n\n // using forEach here rather than test.each as been struggling to get the arguments interpolated in test name string\n cases.forEach((c) => {\n test(`${c.query.query}`, () => {\n assertPosition(\n c.query.query,\n { lineNumber: c.position.line, column: c.position.column },\n expected,\n MonacoMock,\n statementPositionResolversRegistry\n );\n });\n });\n });\n};\n","import * as testData from '../mocks/testData';\nimport { testStatementPosition } from './statementPosition';\nimport { type TestQueryModel } from './types';\n\nexport const SQLEditorTestUtils = {\n testData,\n testStatementPosition,\n};\n\nexport type { TestQueryModel };\n","import { type JsonTree } from 'react-awesome-query-builder';\n\nimport {\n type DataFrame,\n type DataSourceJsonData,\n type MetricFindValue,\n type SelectableValue,\n type TimeRange,\n toOption as toOptionFromData,\n} from '@grafana/data';\n\nimport { type DataQuery } from '@grafana/schema';\n\nimport { type QueryWithDefaults } from './defaults';\nimport {\n type QueryEditorFunctionExpression,\n type QueryEditorGroupByExpression,\n type QueryEditorPropertyExpression,\n} from './expressions';\nimport { type CompletionItemKind, type LanguageCompletionProvider } from '../SQLEditor';\n\nexport interface SqlQueryForInterpolation {\n dataset?: string;\n alias?: string;\n format?: QueryFormat;\n rawSql?: string;\n refId: string;\n hide?: boolean;\n}\n\nexport interface SQLConnectionLimits {\n maxOpenConns: number;\n maxIdleConns: number;\n connMaxLifetime: number;\n}\n\nexport interface SQLOptions extends SQLConnectionLimits, DataSourceJsonData {\n tlsAuth: boolean;\n tlsAuthWithCACert: boolean;\n timezone: string;\n tlsSkipVerify: boolean;\n user: string;\n database: string;\n url: string;\n timeInterval: string;\n}\n\n// Match the Enums Expected in SqlUtil and SqlDS\n// https://github.com/grafana/grafana-plugin-sdk-go/blob/main/data/sqlutil/query.go#L18-L29\nexport enum QueryFormat {\n Timeseries,\n Table,\n Logs,\n Trace,\n OptionMulti,\n}\n\nexport enum EditorMode {\n Builder = 'builder',\n Code = 'code',\n}\n\nexport interface SQLQuery extends DataQuery {\n alias?: string;\n format?: QueryFormat;\n rawSql?: string;\n dataset?: string;\n table?: string;\n sql?: SQLExpression;\n editorMode?: EditorMode;\n rawQuery?: boolean;\n}\n\nexport interface NameValue {\n name: string;\n value: string;\n}\n\nexport type SQLFilters = NameValue[];\n\nexport interface SQLExpression {\n columns?: QueryEditorFunctionExpression[];\n whereJsonTree?: JsonTree;\n whereString?: string;\n filters?: SQLFilters;\n groupBy?: QueryEditorGroupByExpression[];\n orderBy?: QueryEditorPropertyExpression;\n orderByDirection?: 'ASC' | 'DESC';\n limit?: number;\n offset?: number;\n}\n\nexport interface TableSchema {\n name?: string;\n schema?: TableFieldSchema[];\n}\n\nexport interface TableFieldSchema {\n name: string;\n description?: string;\n type: string;\n repeated: boolean;\n schema: TableFieldSchema[];\n}\n\nexport interface QueryRowFilter {\n filter: boolean;\n group: boolean;\n order: boolean;\n preview: boolean;\n}\n\nexport const QUERY_FORMAT_OPTIONS = [\n { label: 'Time series', value: QueryFormat.Timeseries },\n { label: 'Table', value: QueryFormat.Table },\n];\n\nconst backWardToOption = (value: string) => ({ label: value, value });\n\nexport const toOption = toOptionFromData ?? backWardToOption;\n\nexport interface ResourceSelectorProps {\n disabled?: boolean;\n className?: string;\n applyDefault?: boolean;\n}\n// React Awesome Query builder field types.\n// These are responsible for rendering the correct UI for the field.\nexport type RAQBFieldTypes = 'text' | 'number' | 'boolean' | 'datetime' | 'date' | 'time';\n\nexport interface SQLSelectableValue extends SelectableValue {\n type?: string;\n raqbFieldType?: RAQBFieldTypes;\n}\n\nexport interface Aggregate {\n id: string;\n name: string;\n description?: string;\n}\n\nexport interface DB {\n init?: (datasourceId?: string) => Promise<boolean>;\n datasets: () => Promise<string[]>;\n tables: (dataset?: string) => Promise<string[]>;\n fields: (query: SQLQuery, order?: boolean) => Promise<SQLSelectableValue[]>;\n validateQuery: (query: SQLQuery, range?: TimeRange) => Promise<ValidationResults>;\n dsID: () => number;\n dispose?: (dsID?: string) => void;\n lookup: (path?: string) => Promise<Array<{ name: string; completion: string }>>;\n getSqlCompletionProvider: () => LanguageCompletionProvider;\n toRawSql?: (query: SQLQuery) => string;\n functions: () => Promise<Aggregate[]>;\n labels?: Map<'dataset', string>;\n disableDatasets?: boolean;\n}\n\nexport interface QueryEditorProps {\n db: DB;\n query: QueryWithDefaults;\n onChange: (query: SQLQuery) => void;\n range?: TimeRange;\n}\n\nexport interface ValidationResults {\n query: SQLQuery;\n rawSql?: string;\n error: string;\n isError: boolean;\n isValid: boolean;\n statistics?: {\n TotalBytesProcessed: number;\n } | null;\n}\n\nexport interface SqlQueryModel {\n interpolate: () => string;\n quoteLiteral: (v: string) => string;\n}\n\nexport interface ResponseParser {\n transformMetricFindResponse: (frame: DataFrame) => MetricFindValue[];\n}\n\nexport interface MetaDefinition {\n name: string;\n completion?: string;\n kind: CompletionItemKind;\n}\n","import React from 'react';\n\nimport { Stack } from '@grafana/ui';\nimport { type ThemeSpacingTokens } from '@grafana/data';\n\nexport type Direction = 'row' | 'row-reverse' | 'column' | 'column-reverse';\nexport type AlignItems =\n | 'stretch'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'baseline'\n | 'start'\n | 'end'\n | 'self-start'\n | 'self-end';\n\ninterface StackProps {\n children?: React.ReactNode;\n direction?: Direction;\n alignItems?: AlignItems;\n wrap?: boolean;\n gap?: ThemeSpacingTokens;\n}\n\nexport const EditorStack = ({ children, wrap: wrapItems = true, ...props }: StackProps) => {\n return (\n <Stack wrap={wrapItems ? 'wrap' : undefined} direction={props.direction ?? 'row'} gap={props.gap ?? 2} {...props}>\n {children}\n </Stack>\n );\n};\n","import { Button } from '@grafana/ui';\nimport React from 'react';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorListProps<T> {\n items: Array<Partial<T>>;\n renderItem: (\n item: Partial<T>,\n onChangeItem: (item: Partial<T>) => void,\n onDeleteItem: () => void\n ) => React.ReactElement;\n onChange: (items: Array<Partial<T>>) => void;\n}\n\nexport const EditorList = React.forwardRef(function EditorList<T>(\n { items, renderItem, onChange }: EditorListProps<T>,\n ref: React.Ref<HTMLButtonElement>\n) {\n const onAddItem = () => {\n const newItems = [...items, {}];\n\n onChange(newItems);\n };\n\n const onChangeItem = (itemIndex: number, newItem: Partial<T>) => {\n const newItems = [...items];\n newItems[itemIndex] = newItem;\n onChange(newItems);\n };\n\n const onDeleteItem = (itemIndex: number) => {\n const newItems = [...items];\n newItems.splice(itemIndex, 1);\n onChange(newItems);\n };\n return (\n <EditorStack>\n {items.map((item, index) => (\n <div key={index}>\n {renderItem(\n item,\n (newItem) => onChangeItem(index, newItem),\n () => onDeleteItem(index)\n )}\n </div>\n ))}\n <Button ref={ref} onClick={onAddItem} variant=\"secondary\" size=\"md\" icon=\"plus\" aria-label=\"Add\" type=\"button\" />\n </EditorStack>\n );\n});\n","import { css, cx } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Button, type ButtonProps, useStyles2 } from '@grafana/ui';\n\ninterface AccessoryButtonProps extends ButtonProps {}\n\nexport const AccessoryButton = ({ className, ...props }: AccessoryButtonProps) => {\n const styles = useStyles2(getButtonStyles);\n\n return <Button {...props} className={cx(className, styles.button)} />;\n};\n\nconst getButtonStyles = (theme: GrafanaTheme2) => ({\n button: css({\n paddingLeft: theme.spacing(3 / 2),\n paddingRight: theme.spacing(3 / 2),\n }),\n});\n","import { css, cx } from '@emotion/css';\nimport { useStyles2 } from '@grafana/ui';\nimport React, { Children, cloneElement, isValidElement, type ReactElement } from 'react';\n\ntype Child = string | undefined | ReactElement<{ className?: string; invalid?: unknown }>;\ninterface InputGroupProps {\n // we type the children props so we can test them later on\n children: Child | Child[];\n}\n\nexport const InputGroup = ({ children }: InputGroupProps) => {\n const styles = useStyles2(getStyles);\n\n // Find children with an invalid prop, and set a class name to raise their z-index so all\n // of the invalid border is visible\n const modifiedChildren = Children.map(children, (child) => {\n if (isValidElement(child) && child.props.invalid) {\n return cloneElement(child, { className: cx(child.props.className, styles.invalidChild) });\n }\n\n return child;\n });\n\n return <div className={styles.root}>{modifiedChildren}</div>;\n};\n\n// The later in the array the higher the priority for showing that element's border\nconst borderPriority = [\n '' as const, // lowest priority\n 'base' as const,\n 'hovered' as const,\n 'invalid' as const,\n 'focused' as const, // highest priority\n];\n\nconst getStyles = () => ({\n root: css({\n display: 'flex',\n\n // Style the direct children of the component\n '> *': {\n '&:not(:first-child)': {\n // Negative margin hides the double-border on adjacent selects\n marginLeft: -1,\n },\n\n '&:first-child': {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '&:last-child': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n\n '&:not(:first-child):not(:last-child)': {\n borderRadius: 0,\n },\n\n //\n position: 'relative',\n zIndex: borderPriority.indexOf('base'),\n\n // Adjacent borders are overlapping, so raise children up when hovering etc\n // so all that child's borders are visible.\n '&:hover': {\n zIndex: borderPriority.indexOf('hovered'),\n },\n '&:focus-within': {\n zIndex: borderPriority.indexOf('focused'),\n },\n },\n }),\n\n invalidChild: css({\n zIndex: borderPriority.indexOf('invalid'),\n }),\n});\n","import React, { useCallback } from 'react';\n\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { type SQLExpression } from '../types';\nimport { type QueryEditorGroupByExpression } from '../expressions';\nimport { setGroupByField } from '../utils/sql.utils';\nimport { EditorList } from '../EditorList';\nimport { Select } from '@grafana/ui';\nimport { AccessoryButton } from '../AccessoryButton';\nimport { InputGroup } from '../InputGroup';\n\ninterface GroupByRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n}\n\nexport function GroupByRow({ sql, columns, onSqlChange }: GroupByRowProps) {\n const onGroupByChange = useCallback(\n (item: Array<Partial<QueryEditorGroupByExpression>>) => {\n // As new (empty object) items come in, we need to make sure they have the correct type\n const cleaned = item.map((v) => setGroupByField(v.property?.name));\n const newSql = { ...sql, groupBy: cleaned };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <EditorList\n items={sql.groupBy!}\n onChange={onGroupByChange}\n renderItem={makeRenderColumn({\n options: columns,\n })}\n />\n );\n}\n\nfunction makeRenderColumn({ options }: { options?: Array<SelectableValue<string>> }) {\n const renderColumn = function (\n item: Partial<QueryEditorGroupByExpression>,\n onChangeItem: (item: QueryEditorGroupByExpression) => void,\n onDeleteItem: () => void\n ) {\n return (\n <InputGroup>\n <Select\n value={item.property?.name ? toOption(item.property.name) : null}\n aria-label=\"Group by\"\n options={options}\n menuShouldPortal\n onChange={({ value }) => value && onChangeItem(setGroupByField(value))}\n />\n <AccessoryButton aria-label=\"Remove group by column\" icon=\"times\" variant=\"secondary\" onClick={onDeleteItem} />\n </InputGroup>\n );\n };\n return renderColumn;\n}\n","import React from 'react';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorFieldGroupProps {\n children?: React.ReactNode;\n}\n\nexport const EditorFieldGroup = ({ children }: EditorFieldGroupProps) => {\n return <EditorStack gap={1}>{children}</EditorStack>;\n};\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\ninterface EditorHeaderProps {\n children?: React.ReactNode;\n}\n\nexport const EditorHeader = ({ children }: EditorHeaderProps) => {\n const styles = useStyles2(getStyles);\n\n return <div className={styles.root}>{children}</div>;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n root: css({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: theme.spacing(3),\n minHeight: theme.spacing(4),\n }),\n});\n","import { css } from '@emotion/css';\nimport React, { type ComponentProps } from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Field, Icon, type PopoverContent, ReactUtils, Space, Tooltip, useStyles2 } from '@grafana/ui';\n\ninterface EditorFieldProps extends ComponentProps<typeof Field> {\n label: string;\n children: React.ReactElement;\n width?: number | string;\n optional?: boolean;\n tooltip?: PopoverContent;\n tooltipInteractive?: boolean;\n}\nexport const EditorField = (props: EditorFieldProps) => {\n const { label, optional, tooltip, tooltipInteractive, children, width, ...fieldProps } = props;\n\n const styles = useStyles2(getStyles, width);\n\n // Null check for backward compatibility\n const childInputId = fieldProps?.htmlFor || ReactUtils?.getChildId(children);\n\n const labelEl = (\n <>\n <label className={styles.label} htmlFor={childInputId}>\n {label}\n {optional && <span className={styles.optional}> - optional</span>}\n {tooltip && (\n <Tooltip placement=\"top\" content={tooltip} theme=\"info\" interactive={tooltipInteractive}>\n <Icon tabIndex={0} name=\"info-circle\" size=\"sm\" className={styles.icon} />\n </Tooltip>\n )}\n </label>\n <Space v={0.5} />\n </>\n );\n\n return (\n <div className={styles.root}>\n <Field className={styles.field} label={labelEl} {...fieldProps}>\n {children}\n </Field>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, width?: number | string) => {\n return {\n root: css({\n minWidth: theme.spacing(width ?? 0),\n }),\n label: css({\n fontSize: 12,\n fontWeight: theme.typography.fontWeightMedium,\n }),\n optional: css({\n fontStyle: 'italic',\n color: theme.colors.text.secondary,\n }),\n field: css({\n marginBottom: 0, // GrafanaUI/Field has a bottom margin which we must remove\n }),\n icon: css({\n color: theme.colors.text.secondary,\n marginLeft: theme.spacing(1),\n ':hover': {\n color: theme.colors.text.primary,\n },\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '@grafana/ui';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorRowProps {\n children?: React.ReactNode;\n}\n\nexport const EditorRow = ({ children }: EditorRowProps) => {\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.root}>\n <EditorStack gap={2}>{children}</EditorStack>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n root: css({\n padding: theme.spacing(1),\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n }),\n };\n};\n","import React from 'react';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorRowsProps {\n children?: React.ReactNode;\n}\n\nexport const EditorRows = ({ children }: EditorRowsProps) => {\n return (\n <EditorStack gap={0.5} direction=\"column\">\n {children}\n </EditorStack>\n );\n};\n","import { css } from '@emotion/css';\nimport { Switch } from '@grafana/ui';\nimport React, { type ComponentProps } from 'react';\n\n// Wrapper component around <Switch /> that properly aligns it in <EditorField />\nexport const EditorSwitch = (props: ComponentProps<typeof Switch>) => {\n const styles = getStyles();\n\n return (\n <div className={styles.switch}>\n <Switch {...props} />\n </div>\n );\n};\n\nconst getStyles = () => {\n return {\n switch: css({\n display: 'flex',\n alignItems: 'center',\n minHeight: 30,\n }),\n };\n};\n","import React from 'react';\n\ninterface FlexItemProps {\n grow?: number;\n shrink?: number;\n}\n\nexport const FlexItem = ({ grow, shrink }: FlexItemProps) => {\n return <div style={{ display: 'block', flexGrow: grow, flexShrink: shrink }} />;\n};\n","import { css, cx } from '@emotion/css';\nimport React, { useState } from 'react';\nimport { type GroupBase } from 'react-select';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport {\n Select,\n type SelectCommonProps,\n type SelectContainerProps,\n SelectContainer as BaseSelectContainer,\n useStyles2,\n} from '@grafana/ui';\n\ninterface InlineSelectProps<T> extends SelectCommonProps<T> {\n label?: string;\n}\n\nexport function InlineSelect<T>({ label: labelProp, ...props }: InlineSelectProps<T>) {\n const [id] = useState(() => Math.random().toString(16).slice(2));\n const styles = useStyles2(getSelectStyles);\n const components = {\n SelectContainer,\n ValueContainer,\n SingleValue: ValueContainer,\n };\n\n return (\n <div className={styles.root}>\n {labelProp && (\n <label className={styles.label} htmlFor={id}>\n {labelProp}\n {':'}&nbsp;\n </label>\n )}\n <Select openMenuOnFocus inputId={id} {...props} components={components} />\n </div>\n );\n}\n\nconst SelectContainer = <Option, isMulti extends boolean, Group extends GroupBase<Option>>(\n props: SelectContainerProps<Option, isMulti, Group>\n) => {\n const { children } = props;\n\n const styles = useStyles2(getSelectStyles);\n\n return (\n <BaseSelectContainer {...props} className={cx(props.className, styles.container)}>\n {children}\n </BaseSelectContainer>\n );\n};\n\nconst ValueContainer = <Option, isMulti extends boolean, Group extends GroupBase<Option>>(\n props: SelectContainerProps<Option, isMulti, Group>\n) => {\n const { className, children } = props;\n const styles = useStyles2(getSelectStyles);\n\n return <div className={cx(className, styles.valueContainer)}>{children}</div>;\n};\n\nconst getSelectStyles = (theme: GrafanaTheme2) => ({\n root: css({\n display: 'flex',\n fontSize: 12,\n alignItems: 'center',\n }),\n\n label: css({\n color: theme.colors.text.secondary,\n whiteSpace: 'nowrap',\n }),\n\n container: css({\n background: 'none',\n borderColor: 'transparent',\n }),\n\n valueContainer: css({\n display: 'flex',\n alignItems: 'center',\n flex: 'initial',\n color: theme.colors.text.secondary,\n fontSize: 12,\n }),\n});\n","import { css, cx } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useTheme2, stylesFactory } from '@grafana/ui';\n\nexport interface SpaceProps {\n v?: number;\n h?: number;\n layout?: 'block' | 'inline';\n}\n\nexport const Space = (props: SpaceProps) => {\n const theme = useTheme2();\n const styles = getStyles(theme, props);\n\n return <span className={cx(styles.wrapper)} />;\n};\n\nSpace.defaultProps = {\n v: 0,\n h: 0,\n layout: 'block',\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme2, props: SpaceProps) => ({\n wrapper: css([\n {\n paddingRight: theme.spacing(props.h ?? 0),\n paddingBottom: theme.spacing(props.v ?? 0),\n },\n props.layout === 'inline' && {\n display: 'inline-block',\n },\n props.layout === 'block' && {\n display: 'block',\n },\n ]),\n}));\n","import React, { useRef, useEffect } from 'react';\n\nimport { Button, Icon, Modal } from '@grafana/ui';\n\ntype ConfirmModalProps = {\n isOpen: boolean;\n onCancel?: () => void;\n onDiscard?: () => void;\n onCopy?: () => void;\n};\nexport function ConfirmModal({ isOpen, onCancel, onDiscard, onCopy }: ConfirmModalProps) {\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n // Moved from grafana/ui\n useEffect(() => {\n // for some reason autoFocus property did no work on this button, but this does\n if (isOpen) {\n buttonRef.current?.focus();\n }\n }, [isOpen]);\n\n return (\n <Modal\n title={\n <div className=\"modal-header-title\">\n <Icon name=\"exclamation-triangle\" size=\"lg\" />\n <span className=\"p-l-1\">Warning</span>\n </div>\n }\n onDismiss={onCancel}\n isOpen={isOpen}\n >\n <p>\n Builder mode does not display changes made in code. The query builder will display the last changes you made in\n builder mode.\n </p>\n <p>Do you want to copy your code to the clipboard?</p>\n <Modal.ButtonRow>\n <Button type=\"button\" variant=\"secondary\" onClick={onCancel} fill=\"outline\">\n Cancel\n </Button>\n <Button variant=\"destructive\" type=\"button\" onClick={onDiscard} ref={buttonRef}>\n Discard code and switch\n </Button>\n <Button variant=\"primary\" onClick={onCopy}>\n Copy code and switch\n </Button>\n </Modal.ButtonRow>\n </Modal>\n );\n}\n","import React, { useEffect } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { type DB, type ResourceSelectorProps, toOption } from './types';\n\ninterface DatasetSelectorProps extends ResourceSelectorProps {\n db: DB;\n dataset: string;\n value: string | null;\n applyDefault?: boolean;\n disabled?: boolean;\n onChange: (v: SelectableValue) => void;\n}\n\nexport const DatasetSelector = ({\n db,\n dataset,\n value,\n onChange,\n disabled,\n className,\n applyDefault,\n}: DatasetSelectorProps) => {\n const state = useAsync(async () => {\n if (dataset) {\n onChange(toOption(dataset));\n return [toOption(dataset)];\n }\n\n const datasets = await db.datasets();\n return datasets.map(toOption);\n }, []);\n\n useEffect(() => {\n if (!applyDefault) {\n return;\n }\n // Set default dataset when values are fetched\n if (!value) {\n if (state.value && state.value[0]) {\n onChange(state.value[0]);\n }\n } else {\n if (state.value && state.value.find((v) => v.value === value) === undefined) {\n // if value is set and newly fetched values does not contain selected value\n if (state.value.length > 0) {\n onChange(state.value[0]);\n }\n }\n }\n }, [state.value, value, applyDefault, onChange]);\n\n return (\n <Select\n className={className}\n aria-label=\"Dataset selector\"\n value={value}\n options={state.value}\n onChange={onChange}\n disabled={disabled}\n isLoading={state.loading}\n menuShouldPortal={true}\n />\n );\n};\n","import React from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Select } from '@grafana/ui';\nimport { type DB, type ResourceSelectorProps } from './types';\nimport { type QueryWithDefaults } from './defaults';\n\ninterface TableSelectorProps extends ResourceSelectorProps {\n db: DB;\n dataset: string;\n value: string | null;\n query: QueryWithDefaults;\n onChange: (v: SelectableValue) => void;\n}\n\nexport const TableSelector = ({ db, dataset, value, className, onChange }: TableSelectorProps) => {\n const state = useAsync(async () => {\n if (!dataset) {\n return [];\n }\n\n const tables = await db.tables(dataset);\n return tables.map(toOption);\n }, [dataset]);\n\n return (\n <Select\n className={className}\n disabled={state.loading}\n aria-label=\"Table selector\"\n value={value}\n options={state.value}\n onChange={onChange}\n isLoading={state.loading}\n menuShouldPortal={true}\n placeholder={state.loading ? 'Loading tables' : 'Select table'}\n />\n );\n};\n","import React from 'react';\nimport { Button, type IconName, type PopoverContent, Tooltip } from '@grafana/ui';\n\ntype RunQueryButtonProps = {\n ariaLabel?: string;\n queryInvalid?: boolean;\n invalidQueryTooltip?: PopoverContent;\n disabled?: boolean;\n queryRunning?: boolean;\n onClick: () => void;\n dataTestId?: string;\n};\n\nexport const RunQueryButton = ({\n ariaLabel = 'Query editor Run button',\n queryRunning = false,\n queryInvalid = false,\n invalidQueryTooltip,\n disabled = false,\n onClick,\n dataTestId,\n}: RunQueryButtonProps) => {\n let icon: IconName | undefined = queryInvalid ? 'exclamation-triangle' : undefined;\n if (queryRunning) {\n icon = 'fa fa-spinner';\n }\n\n const RunButton = (\n <Button\n aria-label={ariaLabel}\n size=\"sm\"\n variant=\"secondary\"\n icon={icon}\n disabled={disabled || queryRunning}\n onClick={onClick}\n data-testid={dataTestId}\n >\n Run query\n </Button>\n );\n\n return queryInvalid ? (\n <Tooltip\n theme=\"error\"\n placement=\"top\"\n content={\n invalidQueryTooltip ?? (\n <>\n Your query is invalid. Check below for details. <br />\n However, you can still run this query.\n </>\n )\n }\n >\n {RunButton}\n </Tooltip>\n ) : (\n RunButton\n );\n};\n","import React, { useCallback, useState } from 'react';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { type SelectableValue } from '@grafana/data';\n\nimport { ConfirmModal } from './ConfirmModal';\nimport { DatasetSelector } from './DatasetSelector';\nimport { TableSelector } from './TableSelector';\nimport { InlineSwitch, RadioButtonGroup } from '@grafana/ui';\nimport { type QueryWithDefaults } from './defaults';\nimport { EditorField } from './EditorField';\nimport { EditorHeader } from './EditorHeader';\nimport { EditorRow } from './EditorRow';\nimport { FlexItem } from './FlexItem';\nimport { InlineSelect } from './InlineSelect';\nimport { Space } from './Space';\nimport { RunQueryButton } from './RunQueryButton';\nimport { type DB, type SQLQuery, type QueryRowFilter, EditorMode, QueryFormat, QUERY_FORMAT_OPTIONS } from './types';\nimport { getRawSqlFn } from './utils/sql.utils';\n\ninterface QueryHeaderProps {\n db: DB;\n defaultDataset: string;\n enableDatasets: boolean;\n query: QueryWithDefaults;\n onChange: (query: SQLQuery) => void;\n onRunQuery: () => void;\n onQueryRowChange: (queryRowFilter: QueryRowFilter) => void;\n queryRowFilter: QueryRowFilter;\n isQueryRunnable: boolean;\n labels?: Map<string, string>;\n}\n\nconst editorModes = [\n { label: 'Builder', value: EditorMode.Builder },\n { label: 'Code', value: EditorMode.Code },\n];\n\nexport function QueryHeader({\n db,\n defaultDataset,\n enableDatasets,\n query,\n queryRowFilter,\n onChange,\n onRunQuery,\n onQueryRowChange,\n isQueryRunnable,\n labels = new Map([['dataset', 'Dataset']]),\n}: QueryHeaderProps) {\n const { editorMode } = query;\n const [_, copyToClipboard] = useCopyToClipboard();\n const [showConfirm, setShowConfirm] = useState(false);\n const toRawSql = getRawSqlFn(db);\n\n const onEditorModeChange = useCallback(\n (newEditorMode: EditorMode) => {\n if (editorMode === EditorMode.Code) {\n setShowConfirm(true);\n return;\n }\n onChange({ ...query, editorMode: newEditorMode });\n },\n [editorMode, onChange, query]\n );\n\n const onFormatChange = (e: SelectableValue) => {\n const next = { ...query, format: e.value !== undefined ? e.value : QueryFormat.Table };\n onChange(next);\n };\n\n const onDatasetChange = (e: SelectableValue) => {\n if (e.value === query.dataset) {\n return;\n }\n\n const next = {\n ...query,\n dataset: e.value,\n table: undefined,\n sql: undefined,\n rawSql: '',\n };\n\n onChange(next);\n };\n\n const onTableChange = (e: SelectableValue) => {\n if (e.value === query.table) {\n return;\n }\n\n const next: SQLQuery = {\n ...query,\n table: e.value,\n sql: undefined,\n rawSql: '',\n };\n onChange(next);\n };\n\n return (\n <>\n <EditorHeader>\n <InlineSelect\n label=\"Format\"\n value={query.format}\n placeholder=\"Select format\"\n menuShouldPortal\n onChange={onFormatChange}\n options={QUERY_FORMAT_OPTIONS}\n />\n {editorMode === EditorMode.Builder && (\n <>\n <InlineSwitch\n id=\"sql-filter\"\n label=\"Filter\"\n transparent={true}\n showLabel={true}\n value={queryRowFilter.filter}\n onChange={(ev) =>\n ev.target instanceof HTMLInputElement &&\n onQueryRowChange({ ...queryRowFilter, filter: ev.target.checked })\n }\n />\n\n <InlineSwitch\n id=\"sql-group\"\n label=\"Group\"\n transparent={true}\n showLabel={true}\n value={queryRowFilter.group}\n onChange={(ev) =>\n ev.target instanceof HTMLInputElement &&\n onQueryRowChange({ ...queryRowFilter, group: ev.target.checked })\n }\n />\n\n <InlineSwitch\n id=\"sql-order\"\n label=\"Order\"\n transparent={true}\n showLabel={true}\n value={queryRowFilter.order}\n onChange={(ev) =>\n ev.target instanceof HTMLInputElement &&\n onQueryRowChange({ ...queryRowFilter, order: ev.target.checked })\n }\n />\n\n <InlineSwitch\n id=\"sql-preview\"\n label=\"Preview\"\n transparent={true}\n showLabel={true}\n value={queryRowFilter.preview}\n onChange={(ev) =>\n ev.target instanceof HTMLInputElement &&\n onQueryRowChange({ ...queryRowFilter, preview: ev.target.checked })\n }\n />\n </>\n )}\n\n <FlexItem grow={1} />\n\n <RunQueryButton queryInvalid={!isQueryRunnable} onClick={() => onRunQuery()} />\n\n <RadioButtonGroup options={editorModes} size=\"sm\" value={editorMode} onChange={onEditorModeChange} />\n\n <ConfirmModal\n isOpen={showConfirm}\n onCopy={() => {\n setShowConfirm(false);\n copyToClipboard(query.rawSql!);\n onChange({\n ...query,\n rawSql: toRawSql(query),\n editorMode: EditorMode.Builder,\n });\n }}\n onDiscard={() => {\n setShowConfirm(false);\n onChange({\n ...query,\n rawSql: toRawSql(query),\n editorMode: EditorMode.Builder,\n });\n }}\n onCancel={() => setShowConfirm(false)}\n />\n </EditorHeader>\n\n {editorMode === EditorMode.Builder && (\n <>\n <Space v={0.5} />\n\n <EditorRow>\n {enableDatasets === true && (\n <EditorField label={labels.get('dataset') || 'Dataset'} width={25}>\n <DatasetSelector\n db={db}\n dataset={defaultDataset}\n value={query.dataset === undefined ? null : query.dataset}\n onChange={onDatasetChange}\n />\n </EditorField>\n )}\n\n <EditorField label=\"Table\" width={25}>\n <TableSelector\n db={db}\n dataset={query.dataset || defaultDataset}\n query={query}\n value={query.table === undefined ? null : query.table}\n onChange={onTableChange}\n applyDefault\n />\n </EditorField>\n </EditorRow>\n </>\n )}\n </>\n );\n}\n","// @ts-ignore\nimport sqlFormatter from 'sql-formatter-plus';\n\nexport function formatSQL(q: string) {\n return sqlFormatter.format(q).replace(/(\\$ \\{ .* \\})|(\\$ __)|(\\$ \\w+)/g, (m: string) => {\n return m.replace(/\\s/g, '');\n });\n}\n","import React, { useCallback, useEffect, useRef } from 'react';\n\nimport { type SQLQuery } from '../types';\n\nimport { formatSQL } from '../utils/formatSQL';\nimport { type LanguageCompletionProvider, SQLEditor } from '../../SQLEditor';\n\ntype Props = {\n query: SQLQuery;\n onChange: (value: SQLQuery, processQuery: boolean) => void;\n children?: (props: { formatQuery: () => void }) => React.ReactNode;\n width?: number;\n height?: number;\n completionProvider: LanguageCompletionProvider;\n};\n\nexport function QueryEditorRaw({ children, onChange, query, width, height, completionProvider }: Props) {\n // We need to pass query via ref to SQLEditor as onChange is executed via monacoEditor.onDidChangeModelContent callback, not onChange property\n const queryRef = useRef<SQLQuery>(query);\n useEffect(() => {\n queryRef.current = query;\n }, [query]);\n\n const onRawQueryChange = useCallback(\n (rawSql: string, processQuery: boolean) => {\n const newQuery = {\n ...queryRef.current,\n rawQuery: true,\n rawSql,\n };\n onChange(newQuery, processQuery);\n },\n [onChange]\n );\n\n return (\n <SQLEditor\n width={width}\n height={height}\n query={query.rawSql!}\n onChange={onRawQueryChange}\n language={{ id: 'sql', completionProvider, formatter: formatSQL }}\n >\n {children}\n </SQLEditor>\n );\n}\n","import { css } from '@emotion/css';\nimport React, { useState, useMemo, useEffect } from 'react';\nimport { useAsyncFn, useDebounce } from 'react-use';\nimport { formattedValueToString, getValueFormat, type TimeRange } from '@grafana/data';\nimport { Icon, Spinner, useTheme2 } from '@grafana/ui';\nimport { type DB, type SQLQuery, type ValidationResults } from '../types';\n\nexport interface QueryValidatorProps {\n db: DB;\n query: SQLQuery;\n range?: TimeRange;\n onValidate: (isValid: boolean) => void;\n}\n\nexport function QueryValidator({ db, query, onValidate, range }: QueryValidatorProps) {\n const [validationResult, setValidationResult] = useState<ValidationResults | null>();\n const theme = useTheme2();\n const valueFormatter = useMemo(() => getValueFormat('bytes'), []);\n\n const styles = useMemo(() => {\n return {\n error: css`\n color: ${theme.colors.error.text};\n font-size: ${theme.typography.bodySmall.fontSize};\n font-family: ${theme.typography.fontFamilyMonospace};\n `,\n valid: css`\n color: ${theme.colors.success.text};\n `,\n info: css`\n color: ${theme.colors.text.secondary};\n `,\n };\n }, [theme]);\n\n const [state, validateQuery] = useAsyncFn(\n async (q: SQLQuery) => {\n if (q.rawSql?.trim() === '') {\n return null;\n }\n\n return await db.validateQuery(q, range);\n },\n [db]\n );\n\n const [,] = useDebounce(\n async () => {\n const result = await validateQuery(query);\n if (result) {\n setValidationResult(result);\n }\n\n return null;\n },\n 1000,\n [query, validateQuery]\n );\n\n useEffect(() => {\n if (validationResult?.isError) {\n onValidate(false);\n }\n if (validationResult?.isValid) {\n onValidate(true);\n }\n }, [validationResult, onValidate]);\n\n if (!state.value && !state.loading) {\n return null;\n }\n\n const error = state.value?.error ? processErrorMessage(state.value.error) : '';\n\n return (\n <>\n {state.loading && (\n <div className={styles.info}>\n <Spinner inline={true} size={12} /> Validating query...\n </div>\n )}\n {!state.loading && state.value && (\n <>\n <>\n {state.value.isValid && state.value.statistics && (\n <div className={styles.valid}>\n <Icon name=\"check\" /> This query will process{' '}\n <strong>{formattedValueToString(valueFormatter(state.value.statistics.TotalBytesProcessed))}</strong>{' '}\n when run.\n </div>\n )}\n </>\n\n <>{state.value.isError && <div className={styles.error}>{error}</div>}</>\n </>\n )}\n </>\n );\n}\n\nfunction processErrorMessage(error: string) {\n const splat = error.split(':');\n if (splat.length > 2) {\n return splat.slice(2).join(':');\n }\n return error;\n}\n","import { css } from '@emotion/css';\nimport React, { useMemo, useState } from 'react';\n\nimport { HorizontalGroup, Icon, IconButton, Tooltip, useTheme2 } from '@grafana/ui';\n\nimport { QueryValidator, type QueryValidatorProps } from './QueryValidator';\n\ninterface QueryToolboxProps extends Omit<QueryValidatorProps, 'onValidate'> {\n showTools?: boolean;\n isExpanded?: boolean;\n onFormatCode?: () => void;\n onExpand?: (expand: boolean) => void;\n onValidate?: (isValid: boolean) => void;\n}\n\nexport function QueryToolbox({ showTools, onFormatCode, onExpand, isExpanded, ...validatorProps }: QueryToolboxProps) {\n const theme = useTheme2();\n const [validationResult, setValidationResult] = useState<boolean>();\n\n const styles = useMemo(() => {\n return {\n container: css`\n border: 1px solid ${theme.colors.border.medium};\n border-top: none;\n padding: ${theme.spacing(0.5, 0.5, 0.5, 0.5)};\n display: flex;\n flex-grow: 1;\n justify-content: space-between;\n font-size: ${theme.typography.bodySmall.fontSize};\n `,\n error: css`\n color: ${theme.colors.error.text};\n font-size: ${theme.typography.bodySmall.fontSize};\n font-family: ${theme.typography.fontFamilyMonospace};\n `,\n valid: css`\n color: ${theme.colors.success.text};\n `,\n info: css`\n color: ${theme.colors.text.secondary};\n `,\n hint: css`\n color: ${theme.colors.text.disabled};\n white-space: nowrap;\n cursor: help;\n `,\n };\n }, [theme]);\n\n let style = {};\n\n if (!showTools && validationResult === undefined) {\n style = { height: 0, padding: 0, visibility: 'hidden' };\n }\n\n return (\n <div className={styles.container} style={style}>\n <div>\n {validatorProps.onValidate && (\n <QueryValidator\n {...validatorProps}\n onValidate={(result: boolean) => {\n setValidationResult(result);\n validatorProps.onValidate!(result);\n }}\n />\n )}\n </div>\n {showTools && (\n <div>\n <HorizontalGroup spacing=\"sm\">\n {onFormatCode && (\n <IconButton onClick={onFormatCode} name=\"brackets-curly\" size=\"xs\" tooltip=\"Format query\" />\n )}\n {onExpand && (\n <IconButton\n onClick={() => onExpand(!isExpanded)}\n name={isExpanded ? 'angle-up' : 'angle-down'}\n size=\"xs\"\n tooltip={isExpanded ? 'Collapse editor' : 'Expand editor'}\n />\n )}\n <Tooltip content=\"Hit CTRL/CMD+Return to run query\">\n <Icon className={styles.hint} name=\"keyboard\" />\n </Tooltip>\n </HorizontalGroup>\n </div>\n )}\n </div>\n );\n}\n","import { css } from '@emotion/css';\nimport React, { useMemo, useState } from 'react';\nimport { useMeasure } from 'react-use';\n// @ts-ignore\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Modal, useStyles2, useTheme2 } from '@grafana/ui';\n\nimport { QueryEditorRaw } from './QueryEditorRaw';\nimport { QueryToolbox } from './QueryToolbox';\nimport { type QueryEditorProps, type SQLQuery } from '../types';\n\ninterface RawEditorProps extends Omit<QueryEditorProps, 'onChange'> {\n onRunQuery: () => void;\n onChange: (q: SQLQuery, processQuery: boolean) => void;\n onValidate: (isValid: boolean) => void;\n queryToValidate: SQLQuery;\n}\n\nexport function RawEditor({ db, query, onChange, onRunQuery, onValidate, queryToValidate, range }: RawEditorProps) {\n const theme = useTheme2();\n const styles = useStyles2(getStyles);\n const [isExpanded, setIsExpanded] = useState(false);\n const [toolboxRef, toolboxMeasure] = useMeasure<HTMLDivElement>();\n const [editorRef, editorMeasure] = useMeasure<HTMLDivElement>();\n\n const completionProvider = useMemo(() => db.getSqlCompletionProvider(), [db]);\n\n const renderQueryEditor = (width?: number, height?: number) => {\n return (\n <QueryEditorRaw\n completionProvider={completionProvider}\n query={query}\n width={width}\n height={height ? height - toolboxMeasure.height : undefined}\n onChange={onChange}\n >\n {({ formatQuery }) => {\n return (\n <div ref={toolboxRef}>\n <QueryToolbox\n db={db}\n query={queryToValidate}\n onValidate={onValidate}\n onFormatCode={formatQuery}\n showTools\n range={range}\n onExpand={setIsExpanded}\n isExpanded={isExpanded}\n />\n </div>\n );\n }}\n </QueryEditorRaw>\n );\n };\n\n interface AutoSizerProps {\n width: number;\n height: number;\n }\n\n const renderEditor = (standalone = false) => {\n return standalone ? (\n <AutoSizer>\n {({ width, height }: AutoSizerProps) => {\n return renderQueryEditor(width, height);\n }}\n </AutoSizer>\n ) : (\n <div ref={editorRef}>{renderQueryEditor()}</div>\n );\n };\n\n const renderPlaceholder = () => {\n return (\n <div\n style={{\n width: editorMeasure.width,\n height: editorMeasure.height,\n background: theme.colors.background.primary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n Editing in expanded code editor\n </div>\n );\n };\n\n return (\n <>\n {isExpanded ? renderPlaceholder() : renderEditor()}\n {isExpanded && (\n <Modal\n title={`Query ${query.refId}`}\n closeOnBackdropClick={false}\n closeOnEscape={false}\n className={styles.modal}\n contentClassName={styles.modalContent}\n isOpen={isExpanded}\n onDismiss={() => {\n setIsExpanded(false);\n }}\n >\n {renderEditor(true)}\n </Modal>\n )}\n </>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n modal: css`\n width: 95vw;\n height: 95vh;\n `,\n modalContent: css`\n height: 100%;\n padding-top: 0;\n `,\n };\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { CodeEditor, Field, IconButton, useStyles2 } from '@grafana/ui';\n\nimport { formatSQL } from '../utils/formatSQL';\n\ntype PreviewProps = {\n rawSql: string;\n};\n\nexport function Preview({ rawSql }: PreviewProps) {\n // TODO: use zero index to give feedback about copy success\n const [_, copyToClipboard] = useCopyToClipboard();\n const styles = useStyles2(getStyles);\n\n const labelElement = (\n <div className={styles.labelWrapper}>\n <label className={styles.label}>Preview</label>\n <IconButton tooltip=\"Copy to clipboard\" onClick={() => copyToClipboard(rawSql)} name=\"copy\" />\n </div>\n );\n\n return (\n <Field label={labelElement} className={styles.grow}>\n <CodeEditor\n language=\"sql\"\n height={80}\n value={formatSQL(rawSql)}\n monacoOptions={{ scrollbar: { vertical: 'hidden' }, scrollBeyondLastLine: false }}\n readOnly={true}\n showMiniMap={false}\n />\n </Field>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n grow: css({ flexGrow: 1 }),\n label: css({ fontSize: 12, fontWeight: theme.typography.fontWeightMedium }),\n labelWrapper: css({ display: 'flex', justifyContent: 'space-between', paddingBottom: theme.spacing(0.5) }),\n };\n}\n","import { useCallback } from 'react';\n\nimport { type DB, type SQLExpression, type SQLQuery } from '../types';\n\nimport { getRawSqlFn } from './sql.utils';\n\ninterface UseSqlChange {\n db: DB;\n query: SQLQuery;\n onQueryChange: (query: SQLQuery) => void;\n}\n\nexport function useSqlChange({ query, onQueryChange, db }: UseSqlChange) {\n const onSqlChange = useCallback(\n (sql: SQLExpression) => {\n const toRawSql = getRawSqlFn(db);\n const rawSql = toRawSql({ sql, dataset: query.dataset, table: query.table, refId: query.refId });\n const newQuery: SQLQuery = { ...query, sql, rawSql };\n onQueryChange(newQuery);\n },\n [db, onQueryChange, query]\n );\n\n return { onSqlChange };\n}\n","import React from 'react';\n\nimport { type SelectableValue } from '@grafana/data';\n\nimport { GroupByRow } from './GroupByRow';\nimport { type QueryWithDefaults } from '../defaults';\nimport { type SQLQuery, type DB } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ninterface SQLGroupByRowProps {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLGroupByRow({ fields, query, onQueryChange, db }: SQLGroupByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n return <GroupByRow columns={fields} sql={query.sql!} onSqlChange={onSqlChange} />;\n}\n","import { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\n\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Input, RadioButtonGroup, Select } from '@grafana/ui';\nimport { type SQLExpression } from '../types';\nimport { setPropertyField } from '../utils/sql.utils';\n\nimport { Space } from '../Space';\nimport { EditorField } from '../EditorField';\nimport { InputGroup } from '../InputGroup';\n\ntype OrderByRowProps = {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n showOffset?: boolean;\n};\n\nconst sortOrderOptions = [\n { description: 'Sort by ascending', value: 'ASC', icon: 'sort-amount-up' } as const,\n { description: 'Sort by descending', value: 'DESC', icon: 'sort-amount-down' } as const,\n];\n\nexport function OrderByRow({ sql, onSqlChange, columns, showOffset }: OrderByRowProps) {\n const onSortOrderChange = useCallback(\n (item: 'ASC' | 'DESC') => {\n const newSql: SQLExpression = { ...sql, orderByDirection: item };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onLimitChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOffsetChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOrderByChange = useCallback(\n (item: SelectableValue<string>) => {\n const newSql: SQLExpression = { ...sql, orderBy: setPropertyField(item?.value) };\n if (item === null) {\n newSql.orderByDirection = undefined;\n }\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <>\n <EditorField label=\"Order by\" width={25}>\n <InputGroup>\n <Select\n aria-label=\"Order by\"\n options={columns}\n value={sql.orderBy?.property.name ? toOption(sql.orderBy.property.name) : null}\n isClearable\n menuShouldPortal\n onChange={onOrderByChange}\n />\n\n <Space h={1.5} />\n\n <RadioButtonGroup\n options={sortOrderOptions}\n disabled={!sql?.orderBy?.property.name}\n value={sql.orderByDirection}\n onChange={onSortOrderChange}\n />\n </InputGroup>\n </EditorField>\n <EditorField label=\"Limit\" optional width={25}>\n <Input type=\"number\" min={0} id={uniqueId('limit-')} value={sql.limit || ''} onChange={onLimitChange} />\n </EditorField>\n {showOffset && (\n <EditorField label=\"Offset\" optional width={25}>\n <Input type=\"number\" id={uniqueId('offset-')} value={sql.offset || ''} onChange={onOffsetChange} />\n </EditorField>\n )}\n </>\n );\n}\n","import React from 'react';\n\nimport { type SelectableValue } from '@grafana/data';\n\nimport { OrderByRow } from './OrderByRow';\nimport { type QueryWithDefaults } from '../defaults';\nimport { type SQLQuery, type DB } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ntype SQLOrderByRowProps = {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n};\n\nexport function SQLOrderByRow({ fields, query, onQueryChange, db }: SQLOrderByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n let columnsWithIndices: SelectableValue[] = [];\n\n if (fields) {\n const options = query.sql?.columns?.map((c, i) => {\n const value = c.name ? `${c.name}(${c.parameters?.map((p) => p.name)})` : c.parameters?.map((p) => p.name);\n return {\n value,\n label: `${i + 1} - ${value}`,\n };\n });\n columnsWithIndices = [\n {\n value: '',\n label: 'Selected columns',\n options,\n expanded: true,\n },\n ...fields,\n ];\n }\n\n return <OrderByRow sql={query.sql!} onSqlChange={onSqlChange} columns={columnsWithIndices} />;\n}\n","import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\n\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Button, Select, useStyles2 } from '@grafana/ui';\nimport { EditorField } from '../EditorField';\nimport { type QueryEditorFunctionExpression, QueryEditorExpressionType } from '../expressions';\nimport { type SQLExpression } from '../types';\nimport { createFunctionField } from '../utils/sql.utils';\nimport { EditorStack } from '../EditorStack';\n\ninterface SelectRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n functions?: Array<SelectableValue<string>>;\n}\n\nconst asteriskValue = { label: '*', value: '*' };\n\nexport function SelectRow({ sql, columns, onSqlChange, functions }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const columnsWithAsterisk = [asteriskValue, ...(columns || [])];\n\n const onColumnChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (column: SelectableValue<string>) => {\n let modifiedItem = { ...item };\n if (!item.parameters?.length) {\n modifiedItem.parameters = [{ type: QueryEditorExpressionType.FunctionParameter, name: column.value } as const];\n } else {\n modifiedItem.parameters = item.parameters.map((p) =>\n p.type === QueryEditorExpressionType.FunctionParameter ? { ...p, name: column.value } : p\n );\n }\n\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? modifiedItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n };\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...sql.columns!];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...sql, columns: [...sql.columns!, createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, sql]);\n\n return (\n <EditorStack gap={2} alignItems=\"end\" direction=\"column\">\n {sql.columns?.map((item, index) => (\n <div key={index}>\n <EditorStack gap={2} alignItems=\"end\">\n <EditorField label=\"Column\" width={25}>\n <Select\n value={getColumnValue(item)}\n options={columnsWithAsterisk}\n inputId={`select-column-${index}-${uniqueId()}`}\n menuShouldPortal\n allowCustomValue\n onChange={onColumnChange(item, index)}\n />\n </EditorField>\n\n <EditorField label=\"Aggregation\" optional width={25}>\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={functions}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n <Button\n aria-label=\"Remove\"\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </EditorStack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n size=\"md\"\n icon=\"plus\"\n aria-label=\"Add\"\n className={styles.addButton}\n />\n </EditorStack>\n );\n}\n\nconst getStyles = () => {\n return { addButton: css({ alignSelf: 'flex-start' }) };\n};\n\nfunction getColumnValue({ parameters }: QueryEditorFunctionExpression): SelectableValue<string> | null {\n const column = parameters?.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);\n if (column?.name) {\n return toOption(column.name);\n }\n return null;\n}\n","import React from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type SelectableValue, toOption } from '@grafana/data';\n\nimport { SelectRow } from './SelectRow';\nimport { type QueryWithDefaults } from '../defaults';\nimport { type SQLQuery, type DB } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ninterface SQLSelectRowProps {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLSelectRow({ fields, query, onQueryChange, db }: SQLSelectRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n const state = useAsync(async () => {\n const functions = await db.functions();\n return functions.map((f) => toOption(f.name));\n }, [db]);\n\n return <SelectRow columns={fields} sql={query.sql!} functions={state.value} onSqlChange={onSqlChange} />;\n}\n","import { type List } from 'immutable';\nimport { isString } from 'lodash';\nimport React from 'react';\nimport {\n BasicConfig,\n type Config,\n type JsonItem,\n type JsonTree,\n type Operator,\n type Settings,\n type SimpleField,\n Utils,\n type ValueSource,\n type Widgets,\n} from 'react-awesome-query-builder';\n\nimport { dateTime, toOption } from '@grafana/data';\nimport { Button, DateTimePicker, Input, Select } from '@grafana/ui';\n\nconst buttonLabels = {\n add: 'Add',\n remove: 'Remove',\n};\n\nexport const emptyInitValue: JsonItem = {\n id: Utils.uuid(),\n type: 'group' as const,\n children1: {\n [Utils.uuid()]: {\n type: 'rule',\n properties: {\n field: null,\n operator: null,\n value: [],\n valueSrc: [],\n },\n },\n },\n};\n\nexport const emptyInitTree: JsonTree = {\n id: Utils.uuid(),\n type: 'group' as const,\n children1: {\n [Utils.uuid()]: {\n type: 'rule',\n properties: {\n field: null,\n operator: null,\n value: [],\n valueSrc: [],\n },\n },\n },\n};\n\nexport const widgets: Widgets = {\n ...BasicConfig.widgets,\n text: {\n ...BasicConfig.widgets.text,\n factory: function TextInput(props) {\n return (\n <Input\n value={props?.value || ''}\n placeholder={props?.placeholder}\n onChange={(e) => props?.setValue(e.currentTarget.value)}\n />\n );\n },\n },\n number: {\n ...BasicConfig.widgets.number,\n factory: function NumberInput(props) {\n return (\n <Input\n value={props?.value}\n placeholder={props?.placeholder}\n type=\"number\"\n onChange={(e) => props?.setValue(Number.parseInt(e.currentTarget.value, 10))}\n />\n );\n },\n },\n datetime: {\n ...BasicConfig.widgets.datetime,\n factory: function DateTimeInput(props) {\n return (\n <DateTimePicker\n onChange={(e) => {\n props?.setValue(e?.format(BasicConfig.widgets.datetime.valueFormat));\n }}\n date={dateTime(props?.value).utc()}\n />\n );\n },\n },\n};\n\nexport const settings: Settings = {\n ...BasicConfig.settings,\n canRegroup: false,\n maxNesting: 1,\n canReorder: false,\n showNot: false,\n addRuleLabel: buttonLabels.add,\n deleteLabel: buttonLabels.remove,\n renderConjs: function Conjunctions(conjProps) {\n return (\n <Select\n id={conjProps?.id}\n aria-label=\"Conjunction\"\n menuShouldPortal\n options={conjProps?.conjunctionOptions ? Object.keys(conjProps?.conjunctionOptions).map(toOption) : undefined}\n value={conjProps?.selectedConjunction}\n onChange={(val) => conjProps?.setConjunction(val.value!)}\n />\n );\n },\n renderField: function Field(fieldProps) {\n const fields = fieldProps?.config?.fields || {};\n return (\n <Select\n id={fieldProps?.id}\n width={25}\n aria-label=\"Field\"\n menuShouldPortal\n options={fieldProps?.items.map((f) => {\n // @ts-ignore\n const icon = fields[f.key].mainWidgetProps?.customProps?.icon;\n return {\n label: f.label,\n value: f.key,\n icon,\n };\n })}\n value={fieldProps?.selectedKey}\n onChange={(val) => {\n fieldProps?.setField(val.label!);\n }}\n />\n );\n },\n renderButton: function RAQBButton(buttonProps) {\n return (\n <Button\n type=\"button\"\n title={`${buttonProps?.label} filter`}\n onClick={buttonProps?.onClick}\n variant=\"secondary\"\n size=\"md\"\n icon={buttonProps?.label === buttonLabels.add ? 'plus' : 'times'}\n />\n );\n },\n renderOperator: function Operator(operatorProps) {\n return (\n <Select\n options={operatorProps?.items.map((op) => ({ label: op.label, value: op.key }))}\n aria-label=\"Operator\"\n menuShouldPortal\n value={operatorProps?.selectedKey}\n onChange={(val) => {\n operatorProps?.setField(val.value || '');\n }}\n />\n );\n },\n};\n\n// add IN / NOT IN operators to text to support multi-value variables\nconst enum Op {\n IN = 'select_any_in',\n NOT_IN = 'select_not_any_in',\n}\n// eslint-ignore\nconst customOperators = getCustomOperators(BasicConfig) as typeof BasicConfig.operators;\nconst textWidget = BasicConfig.types.text.widgets.text;\nconst opers = [...(textWidget.operators || []), Op.IN, Op.NOT_IN];\nconst customTextWidget = {\n ...textWidget,\n operators: opers,\n};\n\nconst customTypes = {\n ...BasicConfig.types,\n text: {\n ...BasicConfig.types.text,\n widgets: {\n ...BasicConfig.types.text.widgets,\n text: customTextWidget,\n },\n },\n};\n\nexport const raqbConfig: Config = {\n ...BasicConfig,\n widgets,\n settings,\n operators: customOperators as typeof BasicConfig.operators,\n types: customTypes,\n};\n\nexport type { Config };\n\nfunction getCustomOperators(config: BasicConfig) {\n const { ...supportedOperators } = config.operators;\n const noop = () => '';\n // IN operator expects array, override IN formatter for multi-value variables\n const sqlFormatInOp = supportedOperators[Op.IN].sqlFormatOp || noop;\n const customSqlInFormatter = (\n field: string,\n op: string,\n value: string | List<string>,\n valueSrc: ValueSource,\n valueType: string,\n opDef: Operator,\n operatorOptions: object,\n fieldDef: SimpleField\n ) => {\n return sqlFormatInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n // NOT IN operator expects array, override NOT IN formatter for multi-value variables\n const sqlFormatNotInOp = supportedOperators[Op.NOT_IN].sqlFormatOp || noop;\n const customSqlNotInFormatter = (\n field: string,\n op: string,\n value: string | List<string>,\n valueSrc: ValueSource,\n valueType: string,\n opDef: Operator,\n operatorOptions: object,\n fieldDef: SimpleField\n ) => {\n return sqlFormatNotInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n\n const customOperators = {\n ...supportedOperators,\n [Op.IN]: {\n ...supportedOperators[Op.IN],\n sqlFormatOp: customSqlInFormatter,\n },\n [Op.NOT_IN]: {\n ...supportedOperators[Op.NOT_IN],\n sqlFormatOp: customSqlNotInFormatter,\n },\n };\n\n return customOperators;\n}\n\n// value: string | List<string> but AQB uses a different version of Immutable\n// eslint-ignore\nfunction splitIfString(value: any) {\n if (isString(value)) {\n return value.split(',');\n }\n return value;\n}\n","import { injectGlobal } from '@emotion/css';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Builder, type Config, type ImmutableTree, Query, Utils } from 'react-awesome-query-builder';\nimport { type SQLExpression } from '../types';\nimport { emptyInitTree, raqbConfig } from './AwesomeQueryBuilder';\n\ninterface SQLBuilderWhereRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n config?: Partial<Config>;\n}\n\nexport function WhereRow({ sql, config, onSqlChange }: SQLBuilderWhereRowProps) {\n const [tree, setTree] = useState<ImmutableTree>();\n const configWithDefaults = useMemo(() => ({ ...raqbConfig, ...config }), [config]);\n\n useEffect(() => {\n // Set the initial tree\n if (!tree) {\n const initTree = Utils.checkTree(Utils.loadTree(sql.whereJsonTree ?? emptyInitTree), configWithDefaults);\n setTree(initTree);\n }\n }, [configWithDefaults, sql.whereJsonTree, tree]);\n\n useEffect(() => {\n if (!sql.whereJsonTree) {\n setTree(Utils.checkTree(Utils.loadTree(emptyInitTree), configWithDefaults));\n }\n }, [configWithDefaults, sql.whereJsonTree]);\n\n const onTreeChange = useCallback(\n (changedTree: ImmutableTree, config: Config) => {\n setTree(changedTree);\n const newSql = {\n ...sql,\n whereJsonTree: Utils.getTree(changedTree),\n whereString: Utils.sqlFormat(changedTree, config),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n if (!tree) {\n return null;\n }\n\n return (\n <Query\n {...configWithDefaults}\n value={tree}\n onChange={onTreeChange}\n renderBuilder={(props) => <Builder {...props} />}\n />\n );\n}\n\nfunction flex(direction: string) {\n return `\n display: flex;\n gap: 8px;\n flex-direction: ${direction};`;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\ninjectGlobal`\n .group--header {\n ${flex('row')}\n }\n\n .group-or-rule {\n ${flex('column')}\n .rule {\n flex-direction: row;\n }\n }\n\n .rule--body {\n ${flex('row')}\n }\n\n .group--children {\n ${flex('column')}\n }\n\n .group--conjunctions:empty {\n display: none;\n }\n`;\n","import React from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type SelectableValue } from '@grafana/data';\n\nimport { type Config } from './AwesomeQueryBuilder';\nimport { WhereRow } from './WhereRow';\nimport { type QueryWithDefaults } from '../defaults';\nimport { type SQLQuery, type DB, type SQLExpression, type SQLSelectableValue } from '../types';\nimport { useSqlChange } from '../utils/useSqlChange';\n\ninterface WhereRowProps {\n query: QueryWithDefaults;\n fields: SelectableValue[];\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLWhereRow({ query, fields, onQueryChange, db }: WhereRowProps) {\n const state = useAsync(async () => {\n return mapFieldsToTypes(fields);\n }, [fields]);\n\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n return (\n <WhereRow\n // TODO: fix key that's used to force clean render or SQLWhereRow - otherwise it doesn't render operators correctly\n key={JSON.stringify(state.value)}\n config={{ fields: state.value || {} }}\n sql={query.sql!}\n onSqlChange={(val: SQLExpression) => {\n onSqlChange(val);\n }}\n />\n );\n}\n\n// needed for awesome query builder\nfunction mapFieldsToTypes(columns: SQLSelectableValue[]) {\n const fields: Config['fields'] = {};\n for (const col of columns) {\n fields[col.value] = {\n type: col.raqbFieldType || 'text',\n valueSources: ['value'],\n mainWidgetProps: { customProps: { icon: col.icon } },\n };\n }\n return fields;\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '@grafana/ui';\nimport { EditorStack } from '../EditorStack';\n\ninterface EditorRowProps {\n children?: React.ReactNode;\n}\n\nexport const EditorRow = ({ children }: EditorRowProps) => {\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.root}>\n <EditorStack gap={2}>{children}</EditorStack>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n root: css({\n padding: theme.spacing(1),\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.borderRadius(1),\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport React, { type ComponentProps } from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Field, type PopoverContent, useTheme2, ReactUtils, Tooltip, Icon, stylesFactory } from '@grafana/ui';\nimport { Space } from '../Space';\n\ninterface EditorFieldProps extends ComponentProps<typeof Field> {\n label: string;\n children: React.ReactElement;\n width?: number | string;\n optional?: boolean;\n tooltip?: PopoverContent;\n}\n\nexport const EditorField = (props: EditorFieldProps) => {\n const { label, optional, tooltip, children, width, ...fieldProps } = props;\n\n const theme = useTheme2();\n const styles = getStyles(theme, width);\n\n // Null check for backward compatibility\n const childInputId = fieldProps?.htmlFor || ReactUtils?.getChildId(children);\n\n const labelEl = (\n <>\n <label className={styles.label} htmlFor={childInputId}>\n {label}\n {optional && <span className={styles.optional}> - optional</span>}\n {tooltip && (\n <Tooltip placement=\"top\" content={tooltip} theme=\"info\">\n <Icon name=\"info-circle\" size=\"sm\" className={styles.icon} />\n </Tooltip>\n )}\n </label>\n <Space v={0.5} />\n </>\n );\n\n return (\n <div className={styles.root}>\n <Field className={styles.field} label={labelEl} {...fieldProps}>\n {children}\n </Field>\n </div>\n );\n};\n\nconst getStyles = stylesFactory((theme: GrafanaTheme2, width?: number | string) => {\n return {\n root: css({\n minWidth: theme.spacing(width ?? 0),\n }),\n label: css({\n fontSize: 12,\n fontWeight: theme.typography.fontWeightMedium,\n }),\n optional: css({\n fontStyle: 'italic',\n color: theme.colors.text.secondary,\n }),\n field: css({\n marginBottom: 0, // GrafanaUI/Field has a bottom margin which we must remove\n }),\n icon: css({\n color: theme.colors.text.secondary,\n marginLeft: theme.spacing(1),\n ':hover': {\n color: theme.colors.text.primary,\n },\n }),\n };\n});\n","import React from 'react';\n\nimport { EditorStack } from '../EditorStack';\n\ninterface EditorRowsProps {\n children?: React.ReactNode;\n}\n\nexport const EditorRows = ({ children }: EditorRowsProps) => {\n return (\n <EditorStack gap={0.5} direction=\"column\">\n {children}\n </EditorStack>\n );\n};\n","import React from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type DB, type QueryEditorProps, type QueryRowFilter, type SQLQuery } from '../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\n\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLSelectRow } from './SQLSelectRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { type TimeRange } from '@grafana/data';\nimport { EditorRow } from './EditorRow';\nimport { EditorField } from './EditorField';\nimport { EditorRows } from './EditorRows';\n\ninterface VisualEditorProps extends QueryEditorProps {\n query: SQLQuery;\n db: DB;\n queryRowFilter: QueryRowFilter;\n onChange: (q: SQLQuery) => void;\n onValidate: (isValid: boolean) => void;\n range?: TimeRange;\n}\n\nexport const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range }: VisualEditorProps) => {\n const state = useAsync(async () => {\n const fields = await db.fields(query);\n return fields;\n }, [db, query.dataset, query.table]);\n\n return (\n <>\n <EditorRows>\n <EditorRow>\n <SQLSelectRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n {queryRowFilter.filter && (\n <EditorRow>\n <EditorField label=\"Filter by column value\" optional>\n <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.group && (\n <EditorRow>\n <EditorField label=\"Group by column\">\n <SQLGroupByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.order && (\n <EditorRow>\n <SQLOrderByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n )}\n {queryRowFilter.preview && query.rawSql && (\n <EditorRow>\n <Preview rawSql={query.rawSql} />\n </EditorRow>\n )}\n </EditorRows>\n <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n </>\n );\n};\n","export const MACRO_NAMES = [\n '$__time',\n '$__timeEpoch',\n '$__timeFilter',\n '$__timeFrom',\n '$__timeTo',\n '$__timeGroup',\n '$__timeGroupAlias',\n '$__unixEpochFilter',\n '$__unixEpochNanoFilter',\n '$__unixEpochNanoFrom',\n '$__unixEpochNanoTo',\n '$__unixEpochGroup',\n '$__unixEpochGroupAlias',\n];\n","import { lastValueFrom, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport {\n type DataFrame,\n DataFrameView,\n type DataSourceInstanceSettings,\n type MetricFindValue,\n type ScopedVars,\n type TimeRange,\n type VariableModel,\n} from '@grafana/data';\nimport {\n type BackendDataSourceResponse,\n DataSourceWithBackend,\n type FetchResponse,\n getBackendSrv,\n getTemplateSrv,\n type TemplateSrv,\n toDataQueryResponse,\n} from '@grafana/runtime';\nimport { type DataQuery } from '@grafana/schema';\n\nimport { MACRO_NAMES } from './constants';\n// import { toTestingStatus } from '@grafana/runtime/utils/queryResponse';\nimport {\n type SQLQuery,\n type SQLOptions,\n type DB,\n type SqlQueryModel,\n type ResponseParser,\n QueryFormat,\n} from '../components/QueryEditor/types';\n\nexport interface SearchFilterOptions {\n searchFilter?: string;\n}\n\nexport interface VariableWithMultiSupport extends VariableWithOptions {\n multi: boolean;\n includeAll: boolean;\n allValue?: string | null;\n}\n\nexport interface VariableWithOptions extends VariableModel {\n current: VariableOption;\n options: VariableOption[];\n query: string;\n}\n\nexport interface VariableOption {\n selected: boolean;\n text: string | string[];\n value: string | string[];\n isNone?: boolean;\n}\n\nexport abstract class SqlDatasource extends DataSourceWithBackend<SQLQuery, SQLOptions> {\n id: number;\n name: string;\n interval: string;\n db: DB;\n dataset?: string;\n annotations = {};\n\n constructor(\n instanceSettings: DataSourceInstanceSettings<SQLOptions>,\n protected readonly templateSrv: TemplateSrv = getTemplateSrv()\n ) {\n super(instanceSettings);\n this.name = instanceSettings.name;\n this.id = instanceSettings.id;\n const settingsData = instanceSettings.jsonData || {};\n this.interval = settingsData.timeInterval || '1m';\n this.db = this.getDB();\n }\n\n abstract getDB(dsID?: number): DB;\n\n abstract getQueryModel(target?: SQLQuery, templateSrv?: TemplateSrv, scopedVars?: ScopedVars): SqlQueryModel;\n\n abstract getResponseParser(): ResponseParser;\n\n interpolateVariable = (value: string | string[] | number, variable: VariableWithMultiSupport) => {\n if (typeof value === 'string') {\n if (variable.multi || variable.includeAll) {\n const result = this.getQueryModel().quoteLiteral(value);\n return result;\n } else {\n return value;\n }\n }\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (Array.isArray(value)) {\n const quotedValues = value.map((v) => this.getQueryModel().quoteLiteral(v));\n return quotedValues.join(',');\n }\n\n return value;\n };\n\n interpolateVariablesInQueries(queries: SQLQuery[], scopedVars: ScopedVars): SQLQuery[] {\n let expandedQueries = queries;\n if (queries && queries.length > 0) {\n expandedQueries = queries.map((query) => {\n const expandedQuery = {\n ...query,\n datasource: this.getRef(),\n rawSql: this.templateSrv.replace(query.rawSql, scopedVars, this.interpolateVariable),\n rawQuery: true,\n };\n return expandedQuery;\n });\n }\n return expandedQueries;\n }\n\n filterQuery(query: SQLQuery): boolean {\n return !query.hide;\n }\n\n applyTemplateVariables(target: SQLQuery, scopedVars: ScopedVars): SQLQuery {\n const queryModel = this.getQueryModel(target, this.templateSrv, scopedVars);\n const rawSql = this.clean(queryModel.interpolate());\n return {\n refId: target.refId,\n datasource: this.getRef(),\n rawSql,\n format: target.format,\n };\n }\n\n clean(value: string) {\n return value.replace(/''/g, \"'\");\n }\n\n async metricFindQuery(query: string, optionalOptions?: MetricFindQueryOptions): Promise<MetricFindValue[]> {\n const rawSql = this.templateSrv.replace(\n query,\n getSearchFilterScopedVar({ query, wildcardChar: '%', options: optionalOptions }),\n this.interpolateVariable\n );\n\n const interpolatedQuery: SQLQuery = {\n refId: 'tempvar',\n datasource: this.getRef(),\n rawSql,\n format: QueryFormat.Table,\n };\n\n const response = await this.runMetaQuery(interpolatedQuery, optionalOptions);\n return this.getResponseParser().transformMetricFindResponse(response);\n }\n\n async runSql<T extends object>(query: string, options?: RunSQLOptions) {\n const frame = await this.runMetaQuery({ rawSql: query, format: QueryFormat.Table, refId: options?.refId }, options);\n return new DataFrameView<T>(frame);\n }\n\n private runMetaQuery(request: Partial<SQLQuery>, options?: MetricFindQueryOptions): Promise<DataFrame> {\n const refId = request.refId || 'meta';\n const queries: DataQuery[] = [{ ...request, datasource: request.datasource || this.getRef(), refId }];\n\n return lastValueFrom(\n getBackendSrv()\n .fetch<BackendDataSourceResponse>({\n url: '/api/ds/query',\n method: 'POST',\n data: {\n from: options?.range?.from.valueOf().toString(),\n to: options?.range?.to.valueOf().toString(),\n queries,\n },\n requestId: refId,\n })\n .pipe(\n map((res: FetchResponse<BackendDataSourceResponse>) => {\n const rsp = toDataQueryResponse(res, queries);\n return rsp.data[0];\n })\n )\n );\n }\n\n testDatasource(): Promise<{ status: string; message: string }> {\n return lastValueFrom(\n getBackendSrv()\n .fetch({\n url: '/api/ds/query',\n method: 'POST',\n data: {\n from: '5m',\n to: 'now',\n queries: [\n {\n refId: 'A',\n intervalMs: 1,\n maxDataPoints: 1,\n datasource: this.getRef(),\n datasourceId: this.id,\n rawSql: 'SELECT 1',\n format: 'table',\n },\n ],\n },\n })\n .pipe(\n map(() => ({ status: 'success', message: 'Database Connection OK' })),\n catchError((err) => {\n // return of(toTestingStatus(err));\n return of(err);\n })\n )\n );\n }\n\n targetContainsTemplate(target: SQLQuery) {\n let queryWithoutMacros = target.rawSql;\n MACRO_NAMES.forEach((value) => {\n queryWithoutMacros = queryWithoutMacros?.replace(value, '') || '';\n });\n return this.templateSrv.containsTemplate(queryWithoutMacros);\n }\n}\n\ninterface RunSQLOptions extends MetricFindQueryOptions {\n refId?: string;\n}\n\ninterface MetricFindQueryOptions extends SearchFilterOptions {\n range?: TimeRange;\n}\n\nexport const SEARCH_FILTER_VARIABLE = '__searchFilter';\n\nexport const containsSearchFilter = (query: string | unknown): boolean =>\n query && typeof query === 'string' ? query.indexOf(SEARCH_FILTER_VARIABLE) !== -1 : false;\n\nexport const getSearchFilterScopedVar = (args: {\n query: string;\n wildcardChar: string;\n options?: SearchFilterOptions;\n}): ScopedVars => {\n const { query, wildcardChar } = args;\n if (!containsSearchFilter(query)) {\n return {};\n }\n\n let { options } = args;\n\n options = options || { searchFilter: '' };\n const value = options.searchFilter ? `${options.searchFilter}${wildcardChar}` : `${wildcardChar}`;\n\n return {\n __searchFilter: {\n value,\n text: '',\n },\n };\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type QueryEditorProps } from '@grafana/data';\n\nimport { applyQueryDefaults } from './defaults';\nimport { type SQLQuery, type QueryRowFilter, type SQLOptions, EditorMode } from './types';\nimport { haveColumns } from './utils/sql.utils';\n\nimport { QueryHeader } from './QueryHeader';\nimport { RawEditor } from './query-editor-raw/RawEditor';\nimport { VisualEditor } from './visual-query-builder/VisualEditor';\n\nimport { type SqlDatasource } from '../../datasource/SqlDatasource';\nimport { Space } from './Space';\n\ninterface Props extends QueryEditorProps<SqlDatasource, SQLQuery, SQLOptions> {}\n\nexport function SqlQueryEditor({ datasource, query, onChange, onRunQuery, range }: Props) {\n const [isQueryRunnable, setIsQueryRunnable] = useState(true);\n const db = datasource.getDB();\n const defaultDataset = datasource.dataset;\n\n const { loading, error } = useAsync(async () => {\n return () => {\n if (datasource.getDB(datasource.id).init !== undefined) {\n datasource.getDB(datasource.id).init!();\n }\n };\n }, [datasource]);\n\n const queryWithDefaults = applyQueryDefaults(query);\n const [queryRowFilter, setQueryRowFilter] = useState<QueryRowFilter>({\n filter: !!queryWithDefaults.sql?.whereString,\n group: !!queryWithDefaults.sql?.groupBy?.[0]?.property.name,\n order: !!queryWithDefaults.sql?.orderBy?.property.name,\n preview: true,\n });\n const [queryToValidate, setQueryToValidate] = useState(queryWithDefaults);\n\n useEffect(() => {\n return () => {\n if (datasource.getDB(datasource.id).dispose !== undefined) {\n datasource.getDB(datasource.id).dispose!();\n }\n };\n }, [datasource]);\n\n const processQuery = useCallback(\n (q: SQLQuery) => {\n if (isQueryValid(q) && onRunQuery) {\n onRunQuery();\n }\n },\n [onRunQuery]\n );\n\n const onQueryChange = (q: SQLQuery, process = true) => {\n setQueryToValidate(q);\n onChange(q);\n\n if (haveColumns(q.sql?.columns) && q.sql?.columns.some((c) => c.name) && !queryRowFilter.group) {\n setQueryRowFilter({ ...queryRowFilter, group: true });\n }\n\n if (process) {\n processQuery(q);\n }\n };\n\n const onQueryHeaderChange = (q: SQLQuery) => {\n setQueryToValidate(q);\n onChange(q);\n };\n\n if (loading || error) {\n return null;\n }\n\n return (\n <>\n <QueryHeader\n db={db}\n defaultDataset={defaultDataset || ''}\n enableDatasets={!db.disableDatasets}\n onChange={onQueryHeaderChange}\n onRunQuery={onRunQuery}\n onQueryRowChange={setQueryRowFilter}\n queryRowFilter={queryRowFilter}\n query={queryWithDefaults}\n isQueryRunnable={isQueryRunnable}\n labels={datasource.getDB(datasource.id)?.labels}\n />\n\n <Space v={0.5} />\n\n {queryWithDefaults.editorMode !== EditorMode.Code && (\n <VisualEditor\n db={db}\n query={queryWithDefaults}\n onChange={(q: SQLQuery) => onQueryChange(q, false)}\n queryRowFilter={queryRowFilter}\n onValidate={setIsQueryRunnable}\n range={range}\n />\n )}\n\n {queryWithDefaults.editorMode === EditorMode.Code && (\n <RawEditor\n db={db}\n query={queryWithDefaults}\n queryToValidate={queryToValidate}\n onChange={onQueryChange}\n onRunQuery={onRunQuery}\n onValidate={setIsQueryRunnable}\n range={range}\n />\n )}\n </>\n );\n}\n\nconst isQueryValid = (q: SQLQuery) => {\n return Boolean(q.rawSql);\n};\n","import React from 'react';\nimport { type InlineLabel as OriginalInlineLabel, InlineField, InlineSwitch } from '@grafana/ui';\nimport { config } from '@grafana/runtime';\nimport { type DataSourceSettings } from '@grafana/data';\n\ntype Props = Omit<React.ComponentProps<typeof OriginalInlineLabel>, 'children'> & {\n dataSourceConfig: DataSourceSettings<any, any>;\n onChange: (config: DataSourceSettings) => void;\n labelWidth: number;\n};\n\nexport const SecureSocksProxyToggle = ({ labelWidth = 10, ...props }: Props) => {\n const { dataSourceConfig, onChange } = props;\n const handleSwitchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange({\n ...dataSourceConfig,\n jsonData: {\n ...dataSourceConfig.jsonData,\n enableSecureSocksProxy: e.target.checked,\n },\n });\n };\n\n return (\n (config as any).secureSocksDSProxyEnabled && (\n <div>\n <div className=\"gf-form\">\n <div className=\"gf-form gf-form-inline\">\n <InlineField\n htmlFor=\"secureSocksProxyEnabled\"\n label=\"Secure Socks Proxy Enabled\"\n labelWidth={labelWidth}\n tooltip={\n <>\n Proxy the datasource connection through the secure socks proxy to a different network. To learn more\n about configuring the datasource connection proxy,{' '}\n <a\n href=\"https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/proxy/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n click here.\n </a>\n </>\n }\n >\n <InlineSwitch\n id=\"secureSocksProxyEnabled\"\n value={dataSourceConfig.jsonData.enableSecureSocksProxy}\n onChange={handleSwitchChange}\n />\n </InlineField>\n </div>\n </div>\n </div>\n )\n );\n};\n","import React from 'react';\nimport { cx, css } from '@emotion/css';\nimport { useTheme2 } from '@grafana/ui';\n\ntype Props = {\n dataSourceName: string;\n docsLink: string;\n hasRequiredFields?: boolean;\n className?: string;\n};\n\nexport const DataSourceDescription = ({ dataSourceName, docsLink, hasRequiredFields = true, className }: Props) => {\n const theme = useTheme2();\n\n const styles = {\n container: css({\n p: {\n margin: 0,\n },\n 'p + p': {\n marginTop: theme.spacing(2),\n },\n }),\n text: css({\n ...theme.typography.body,\n color: theme.colors.text.secondary,\n a: css({\n color: theme.colors.text.link,\n textDecoration: 'underline',\n '&:hover': {\n textDecoration: 'none',\n },\n }),\n }),\n };\n\n return (\n <div className={cx(styles.container, className)}>\n <p className={styles.text}>\n Before you can use the {dataSourceName} data source, you must configure it below or in the config file. For\n detailed instructions,{' '}\n <a href={docsLink} target=\"_blank\" rel=\"noreferrer\">\n view the documentation\n </a>\n .\n </p>\n {hasRequiredFields && (\n <p className={styles.text}>\n <i>Fields marked with * are required</i>\n </p>\n )}\n </div>\n );\n};\n","import React, { useState, type ReactNode } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, IconButton, type IconName } from '@grafana/ui';\n\nexport type Props = {\n title: string;\n description?: ReactNode;\n isCollapsible?: boolean;\n isInitiallyOpen?: boolean;\n kind?: 'section' | 'sub-section';\n className?: string;\n};\n\nexport const GenericConfigSection = ({\n children,\n title,\n description,\n isCollapsible = false,\n isInitiallyOpen = true,\n kind = 'section',\n className,\n}: React.PropsWithChildren<Props>) => {\n const { colors, typography, spacing } = useTheme2();\n const [isOpen, setIsOpen] = useState(isCollapsible ? isInitiallyOpen : true);\n const iconName: IconName = isOpen ? 'angle-up' : 'angle-down';\n const isSubSection = kind === 'sub-section';\n const collapsibleButtonAriaLabel = `${isOpen ? 'Collapse' : 'Expand'} section ${title}`;\n\n const styles = {\n header: css({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }),\n title: css({\n margin: 0,\n }),\n subtitle: css({\n margin: 0,\n fontWeight: typography.fontWeightRegular,\n }),\n descriptionText: css({\n marginTop: spacing(isSubSection ? 0.25 : 0.5),\n marginBottom: 0,\n ...typography.bodySmall,\n color: colors.text.secondary,\n }),\n content: css({\n marginTop: spacing(2),\n }),\n };\n\n return (\n <div className={className}>\n <div className={styles.header}>\n {kind === 'section' ? <h3 className={styles.title}>{title}</h3> : <h6 className={styles.subtitle}>{title}</h6>}\n {isCollapsible && (\n <IconButton\n name={iconName}\n onClick={() => setIsOpen(!isOpen)}\n type=\"button\"\n size=\"xl\"\n aria-label={collapsibleButtonAriaLabel}\n />\n )}\n </div>\n {description && <p className={styles.descriptionText}>{description}</p>}\n {isOpen && <div className={styles.content}>{children}</div>}\n </div>\n );\n};\n","import React from 'react';\nimport { GenericConfigSection, type Props as GenericConfigSectionProps } from './GenericConfigSection';\n\ntype Props = Omit<GenericConfigSectionProps, 'kind'>;\n\nexport const ConfigSection = ({ children, ...props }: React.PropsWithChildren<Props>) => {\n return (\n <GenericConfigSection {...props} kind=\"section\">\n {children}\n </GenericConfigSection>\n );\n};\n","import React from 'react';\nimport { GenericConfigSection, type Props as GenericConfigSectionProps } from './GenericConfigSection';\n\ntype Props = Omit<GenericConfigSectionProps, 'kind'>;\n\nexport const ConfigSubSection = ({ children, ...props }: React.PropsWithChildren<Props>) => {\n return (\n <GenericConfigSection {...props} kind=\"sub-section\">\n {children}\n </GenericConfigSection>\n );\n};\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\ntype Props = {\n description: string;\n suffix: string;\n feature: string;\n};\n\nexport function ConfigDescriptionLink(props: Props) {\n const { description, suffix, feature } = props;\n const text = `Learn more about ${feature}`;\n const styles = useStyles2(getStyles);\n\n return (\n <span className={styles.container}>\n {description}\n <a\n aria-label={text}\n href={`https://grafana.com/docs/grafana/next/datasources/${suffix}`}\n rel=\"noreferrer\"\n target=\"_blank\"\n >\n {text}\n </a>\n </span>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n container: css({\n color: theme.colors.text.secondary,\n a: css({\n color: theme.colors.text.link,\n textDecoration: 'underline',\n marginLeft: '5px',\n '&:hover': {\n textDecoration: 'none',\n },\n }),\n }),\n };\n};\n","import { type ReactElement } from 'react';\n\nexport enum AuthMethod {\n NoAuth = 'NoAuth',\n BasicAuth = 'BasicAuth',\n OAuthForward = 'OAuthForward',\n CrossSiteCredentials = 'CrossSiteCredentials',\n}\n\nexport interface AuthMethodSelectOption {\n label?: string;\n description?: string;\n}\n\nexport type CustomMethodId = `custom-${string}`;\n\nexport type CustomMethod = {\n id: CustomMethodId;\n label: string;\n description: string;\n component: ReactElement;\n};\n\nexport type Header = {\n name: string;\n configured: boolean;\n};\n\nexport type HeaderWithValue = Header & { value: string };\n\nexport type LocalHeader = HeaderWithValue & { id: string };\n","import { css } from '@emotion/css';\n\nexport const useCommonStyles = () => {\n return {\n inlineFieldNoMarginRight: css({\n marginRight: 0,\n }),\n // This is dirty hack to make configured secret input grow\n inlineFieldWithSecret: css({\n '[class$=\"layoutChildrenWrapper\"]:first-child': {\n flexGrow: 1,\n },\n }),\n };\n};\n","import React from 'react';\nimport { cx, css } from '@emotion/css';\nimport { InlineField, Input, type PopoverContent, SecretInput } from '@grafana/ui';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n user?: string;\n passwordConfigured: boolean;\n userLabel?: string;\n userTooltip?: PopoverContent;\n userPlaceholder?: string;\n passwordLabel?: string;\n passwordTooltip?: PopoverContent;\n passwordPlaceholder?: string;\n onUserChange: (user: string) => void;\n onPasswordChange: (password: string) => void;\n onPasswordReset: () => void;\n readOnly: boolean;\n};\n\nexport const BasicAuth = ({\n user,\n passwordConfigured,\n userLabel = 'User',\n userTooltip = 'The username of the data source account',\n userPlaceholder = 'User',\n passwordLabel = 'Password',\n passwordTooltip = 'The password of the data source account',\n passwordPlaceholder = 'Password',\n onUserChange,\n onPasswordChange,\n onPasswordReset,\n readOnly,\n}: Props) => {\n const commonStyles = useCommonStyles();\n const styles = {\n lastInlineField: css({\n marginBottom: 0,\n }),\n };\n return (\n <>\n <InlineField\n className={commonStyles.inlineFieldNoMarginRight}\n label={userLabel}\n labelWidth={24}\n tooltip={userTooltip}\n required\n htmlFor=\"basic-auth-user-input\"\n interactive\n grow\n disabled={readOnly}\n >\n <Input\n id=\"basic-auth-user-input\"\n placeholder={userPlaceholder}\n value={user}\n onChange={(e) => onUserChange(e.currentTarget.value)}\n required\n />\n </InlineField>\n <InlineField\n className={cx(\n commonStyles.inlineFieldNoMarginRight,\n commonStyles.inlineFieldWithSecret,\n styles.lastInlineField\n )}\n label={passwordLabel}\n labelWidth={24}\n tooltip={passwordTooltip}\n required\n htmlFor=\"basic-auth-password-input\"\n interactive\n grow\n disabled={readOnly}\n >\n <SecretInput\n id=\"basic-auth-password-input\"\n isConfigured={passwordConfigured}\n onReset={readOnly ? () => {} : onPasswordReset}\n placeholder={passwordPlaceholder}\n onChange={(e) => onPasswordChange(e.currentTarget.value)}\n required\n />\n </InlineField>\n </>\n );\n};\n","import React, { type ReactElement, useMemo, useState } from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2, Select, Field } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { BasicAuth, type Props as BasicAuthProps } from './BasicAuth';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport { AuthMethod, type CustomMethod, type CustomMethodId, type AuthMethodSelectOption } from '../types';\n\nconst defaultOptions: Record<AuthMethod, SelectableValue<AuthMethod>> = {\n [AuthMethod.BasicAuth]: {\n label: 'Basic authentication',\n value: AuthMethod.BasicAuth,\n description: 'Authenticate with your data source username and password',\n },\n [AuthMethod.CrossSiteCredentials]: {\n label: 'Enable cross-site access control requests',\n value: AuthMethod.CrossSiteCredentials,\n description:\n 'Allow cross-site Access-Control requests with your existing credentials and cookies. This enables the server to authenticate the user and perform authorized requests on their behalf on other domains.',\n },\n [AuthMethod.OAuthForward]: {\n label: 'Forward OAuth Identity',\n value: AuthMethod.OAuthForward,\n description:\n 'Forward the OAuth access token (and if available: the OIDC ID token) of the user querying to the data source',\n },\n [AuthMethod.NoAuth]: {\n label: 'No Authentication',\n value: AuthMethod.NoAuth,\n description: 'Data source is available without authentication',\n },\n};\n\nexport type Props = {\n selectedMethod: AuthMethod | CustomMethodId;\n mostCommonMethod?: AuthMethod | CustomMethodId;\n visibleMethods?: Array<AuthMethod | CustomMethodId>;\n defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n customMethods?: CustomMethod[];\n onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n readOnly: boolean;\n};\n\nexport const AuthMethodSettings = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods: visibleMethodsFromProps,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n readOnly,\n}: Props) => {\n const [authMethodChanged, setAuthMethodChanged] = useState(false);\n const { colors, spacing } = useTheme2();\n const visibleMethods: Array<AuthMethod | CustomMethodId> = useMemo(\n () =>\n visibleMethodsFromProps ?? [\n AuthMethod.BasicAuth,\n AuthMethod.OAuthForward,\n AuthMethod.NoAuth,\n ...(customMethods?.map((m) => m.id) ?? []),\n ],\n [customMethods, visibleMethodsFromProps]\n );\n const hasSelect = visibleMethods.length > 1;\n\n const preparedOptions = useMemo(() => {\n const customOptions =\n customMethods?.reduce<Record<CustomMethodId, SelectableValue<CustomMethodId>>>((acc, method) => {\n acc[method.id] = {\n label: method.label,\n value: method.id,\n description: method.description,\n };\n return acc;\n }, {}) ?? {};\n\n const preparedDefaultOptions = {} as Record<AuthMethod, SelectableValue<AuthMethod>>;\n let k: keyof typeof AuthMethod;\n for (k in defaultOptions) {\n preparedDefaultOptions[k] = {\n ...defaultOptions[k],\n ...defaultOptionsOverrides?.[k],\n };\n }\n\n const allOptions: Record<AuthMethod | CustomMethodId, SelectableValue<AuthMethod | CustomMethodId>> = {\n ...customOptions,\n ...preparedDefaultOptions,\n };\n\n return visibleMethods\n .filter((method) => Boolean(allOptions[method]))\n .map((method) => {\n const option = allOptions[method];\n if (method === mostCommonMethod && hasSelect) {\n return {\n ...option,\n label: `${option.label} (most common)`,\n };\n }\n return option;\n });\n }, [visibleMethods, customMethods, defaultOptionsOverrides, mostCommonMethod, hasSelect]);\n\n let selected = selectedMethod;\n if (!hasSelect) {\n selected = visibleMethods[0];\n } else if (selectedMethod === AuthMethod.NoAuth && mostCommonMethod && !authMethodChanged) {\n selected = mostCommonMethod;\n }\n\n let AuthFieldsComponent: ReactElement | null = null;\n if (selected === AuthMethod.BasicAuth && basicAuth) {\n AuthFieldsComponent = <BasicAuth {...basicAuth} readOnly={readOnly} />;\n } else if (selected.startsWith('custom-')) {\n AuthFieldsComponent = customMethods?.find((m) => m.id === selected)?.component ?? null;\n }\n\n const title = hasSelect ? 'Authentication methods' : (preparedOptions[0].label ?? '');\n\n const description = hasSelect\n ? 'Choose an authentication method to access the data source'\n : (preparedOptions[0].description ?? '');\n\n const styles = {\n authMethods: css({\n marginTop: spacing(2.5),\n ...(hasSelect && {\n padding: spacing(2),\n border: `1px solid ${colors.border.weak}`,\n }),\n }),\n selectedMethodFields: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <ConfigSubSection title={title} description={description}>\n <div className={styles.authMethods}>\n {hasSelect && (\n <Field label=\"Authentication method\">\n <Select\n inputId=\"auth-method-select\"\n options={preparedOptions}\n value={selected}\n onChange={(option) => {\n setAuthMethodChanged(true);\n onAuthMethodSelect(option.value!);\n }}\n disabled={readOnly}\n />\n </Field>\n )}\n {AuthFieldsComponent && <div className={styles.selectedMethodFields}>{AuthFieldsComponent}</div>}\n </div>\n </ConfigSubSection>\n );\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { Checkbox, Tooltip, Icon, useTheme2 } from '@grafana/ui';\n\nexport type Props = {\n enabled: boolean;\n label: string;\n tooltipText: string;\n onToggle: (enabled: boolean) => void;\n readOnly: boolean;\n};\n\nexport const TLSSettingsSection = ({\n children,\n enabled,\n label,\n tooltipText,\n onToggle,\n readOnly,\n}: React.PropsWithChildren<Props>) => {\n const { colors, spacing } = useTheme2();\n const styles = {\n container: css({\n marginTop: 3,\n }),\n checkboxContainer: css({\n display: 'flex',\n alignItems: 'center',\n }),\n infoIcon: css({\n marginTop: -2,\n marginLeft: 5,\n color: colors.text.secondary,\n }),\n content: css({\n margin: spacing(1, 0, 2, 3),\n }),\n };\n\n return (\n <div className={styles.container}>\n <div className={styles.checkboxContainer}>\n <Checkbox value={enabled} label={label} onChange={() => onToggle(!enabled)} disabled={readOnly} />\n <Tooltip placement=\"top\" content={tooltipText} interactive>\n <Icon name=\"info-circle\" className={styles.infoIcon} size=\"sm\" />\n </Tooltip>\n </div>\n {enabled && children && <div className={styles.content}>{children}</div>}\n </div>\n );\n};\n","import React from 'react';\nimport { cx } from '@emotion/css';\nimport { InlineField, SecretTextArea } from '@grafana/ui';\nimport { TLSSettingsSection } from './TLSSettingsSection';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n enabled: boolean;\n onToggle: (enabled: boolean) => void;\n certificateConfigured: boolean;\n onCertificateChange: (certificate: string) => void;\n onCertificateReset: () => void;\n tooltips?: {\n certificateLabel?: string;\n };\n readOnly: boolean;\n};\n\nexport const SelfSignedCertificate = ({\n enabled,\n certificateConfigured,\n onToggle,\n onCertificateChange,\n onCertificateReset,\n tooltips,\n readOnly,\n}: Props) => {\n const commonStyles = useCommonStyles();\n\n return (\n <TLSSettingsSection\n enabled={enabled}\n label=\"Add self-signed certificate\"\n tooltipText=\"Add your own Certificate Authority (CA) certificate on top of one generated by the certificate authorities for additional security measures\"\n onToggle={(newEnabled) => onToggle(newEnabled)}\n readOnly={readOnly}\n >\n <InlineField\n label=\"CA Certificate\"\n labelWidth={24}\n tooltip={tooltips?.certificateLabel ?? 'Your self-signed certificate'}\n required\n htmlFor=\"self-signed-certificate-input\"\n interactive\n grow\n className={cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret)}\n disabled={readOnly}\n >\n <SecretTextArea\n id=\"self-signed-certificate-input\"\n isConfigured={certificateConfigured}\n onChange={(e) => onCertificateChange(e.currentTarget.value)}\n onReset={readOnly ? () => {} : onCertificateReset}\n placeholder=\"Begins with --- BEGIN CERTIFICATE ---\"\n rows={6}\n required\n />\n </InlineField>\n </TLSSettingsSection>\n );\n};\n","import React from 'react';\nimport { cx } from '@emotion/css';\nimport { InlineField, Input, SecretTextArea } from '@grafana/ui';\nimport { TLSSettingsSection } from './TLSSettingsSection';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n enabled: boolean;\n onToggle: (enabled: boolean) => void;\n serverName: string;\n clientCertificateConfigured: boolean;\n clientKeyConfigured: boolean;\n onServerNameChange: (serverName: string) => void;\n onClientCertificateChange: (clientCertificate: string) => void;\n onClientKeyChange: (clientKey: string) => void;\n onClientCertificateReset: () => void;\n onClientKeyReset: () => void;\n tooltips?: {\n serverNameLabel?: string;\n certificateLabel?: string;\n keyLabel?: string;\n };\n readOnly: boolean;\n};\n\nexport const TLSClientAuth = ({\n enabled,\n serverName,\n clientCertificateConfigured,\n clientKeyConfigured,\n onToggle,\n onServerNameChange,\n onClientCertificateChange,\n onClientKeyChange,\n onClientCertificateReset,\n onClientKeyReset,\n tooltips,\n readOnly,\n}: Props) => {\n const commonStyles = useCommonStyles();\n\n return (\n <TLSSettingsSection\n enabled={enabled}\n label=\"TLS Client Authentication\"\n tooltipText=\"Validate using TLS client authentication, in which the server authenticates the client\"\n onToggle={(newEnabled) => onToggle(newEnabled)}\n readOnly={readOnly}\n >\n <InlineField\n label=\"ServerName\"\n labelWidth={24}\n tooltip={tooltips?.serverNameLabel ?? 'A Servername is used to verify the hostname on the returned certificate'}\n required\n htmlFor=\"client-auth-servername-input\"\n interactive\n grow\n className={commonStyles.inlineFieldNoMarginRight}\n disabled={readOnly}\n >\n <Input\n id=\"client-auth-servername-input\"\n placeholder=\"domain.example.com\"\n value={serverName}\n onChange={(e) => onServerNameChange(e.currentTarget.value)}\n required\n />\n </InlineField>\n <InlineField\n label=\"Client Certificate\"\n labelWidth={24}\n tooltip={\n tooltips?.certificateLabel ??\n 'The client certificate can be generated from a Certificate Authority or be self-signed'\n }\n required\n htmlFor=\"client-auth-client-certificate-input\"\n interactive\n grow\n className={cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret)}\n disabled={readOnly}\n >\n <SecretTextArea\n id=\"client-auth-client-certificate-input\"\n isConfigured={clientCertificateConfigured}\n onChange={(e) => onClientCertificateChange(e.currentTarget.value)}\n onReset={readOnly ? () => {} : onClientCertificateReset}\n placeholder=\"Begins with --- BEGIN CERTIFICATE ---\"\n rows={6}\n required\n />\n </InlineField>\n <InlineField\n label=\"Client Key\"\n labelWidth={24}\n tooltip={tooltips?.keyLabel ?? 'The client key can be generated from a Certificate Authority or be self-signed'}\n required\n htmlFor=\"client-auth-client-key-input\"\n interactive\n grow\n className={cx(commonStyles.inlineFieldNoMarginRight, commonStyles.inlineFieldWithSecret)}\n disabled={readOnly}\n >\n <SecretTextArea\n id=\"client-auth-client-key-input\"\n isConfigured={clientKeyConfigured}\n onChange={(e) => onClientKeyChange(e.currentTarget.value)}\n onReset={readOnly ? () => {} : onClientKeyReset}\n placeholder={`Begins with --- RSA PRIVATE KEY CERTIFICATE ---`}\n rows={6}\n required\n />\n </InlineField>\n </TLSSettingsSection>\n );\n};\n","import React from 'react';\nimport { TLSSettingsSection } from './TLSSettingsSection';\n\nexport type Props = {\n enabled: boolean;\n onToggle: (enabled: boolean) => void;\n readOnly: boolean;\n};\n\nexport const SkipTLSVerification = ({ enabled, onToggle, readOnly }: Props) => {\n return (\n <TLSSettingsSection\n enabled={enabled}\n label=\"Skip TLS certificate validation\"\n tooltipText=\"Skipping TLS certificate validation is not recommended unless absolutely necessary or for testing\"\n onToggle={(newEnabled) => onToggle(newEnabled)}\n readOnly={readOnly}\n />\n );\n};\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { useTheme2 } from '@grafana/ui';\nimport { SelfSignedCertificate, type Props as SelfSignedCertificateProps } from './SelfSignedCertificate';\nimport { TLSClientAuth as TLSClientAuthComponent, type Props as TLSClientAuthProps } from './TLSClientAuth';\nimport { SkipTLSVerification, type Props as SkipTLSVerificationProps } from './SkipTLSVerification';\nimport { ConfigSubSection } from '../../ConfigSection';\n\nexport type Props = {\n selfSignedCertificate: Omit<SelfSignedCertificateProps, 'readOnly'>;\n TLSClientAuth: Omit<TLSClientAuthProps, 'readOnly'>;\n skipTLSVerification: Omit<SkipTLSVerificationProps, 'readOnly'>;\n readOnly: boolean;\n};\n\nexport const TLSSettings = ({ selfSignedCertificate, TLSClientAuth, skipTLSVerification, readOnly }: Props) => {\n const { spacing } = useTheme2();\n\n const styles = {\n container: css({\n marginTop: spacing(3),\n }),\n };\n\n return (\n <ConfigSubSection\n className={styles.container}\n title=\"TLS settings\"\n description=\"Additional security measures that can be applied on top of authentication\"\n >\n <SelfSignedCertificate {...selfSignedCertificate} readOnly={readOnly} />\n <TLSClientAuthComponent {...TLSClientAuth} readOnly={readOnly} />\n <SkipTLSVerification {...skipTLSVerification} readOnly={readOnly} />\n </ConfigSubSection>\n );\n};\n","import React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineFieldRow, InlineField, Input, IconButton, useTheme2, SecretInput } from '@grafana/ui';\nimport type { LocalHeader } from '../types';\nimport { useCommonStyles } from '../styles';\n\nexport type Props = {\n header: LocalHeader;\n onChange: (header: LocalHeader) => void;\n onBlur: () => void;\n onDelete: () => void;\n readOnly: boolean;\n};\n\nexport const CustomHeader = ({ header, onChange, onBlur, onDelete, readOnly }: Props) => {\n const { spacing } = useTheme2();\n const commonStyles = useCommonStyles();\n const styles = {\n container: css({\n alignItems: 'center',\n }),\n input: css({\n minWidth: '100%',\n }),\n headerNameField: css({\n width: '40%',\n marginRight: 0,\n paddingRight: spacing(1),\n }),\n headerValueField: css({\n width: '45%',\n marginRight: 0,\n }),\n removeHeaderBtn: css({\n margin: `0 0 3px 10px`,\n }),\n };\n\n return (\n <>\n <InlineFieldRow className={styles.container}>\n <InlineField\n label=\"Header\"\n labelWidth={9}\n grow\n className={styles.headerNameField}\n htmlFor={`custom-header-${header.id}-name-input`}\n disabled={readOnly}\n >\n <Input\n id={`custom-header-${header.id}-name-input`}\n placeholder=\"X-Custom-Header\"\n value={header.name}\n width={12}\n onChange={(e) => onChange({ ...header, name: e.currentTarget.value })}\n onBlur={onBlur}\n className={styles.input}\n />\n </InlineField>\n <InlineField\n label=\"Value\"\n labelWidth={9}\n grow\n className={cx(commonStyles.inlineFieldWithSecret, styles.headerValueField)}\n htmlFor={`custom-header-${header.id}-value-input`}\n disabled={readOnly}\n >\n <SecretInput\n id={`custom-header-${header.id}-value-input`}\n isConfigured={header.configured}\n placeholder=\"Header value\"\n value={header.value}\n width={12}\n onChange={(e) => onChange({ ...header, value: e.currentTarget.value })}\n onReset={readOnly ? () => {} : () => onChange({ ...header, configured: false, value: '' })}\n onBlur={onBlur}\n className={styles.input}\n />\n </InlineField>\n <IconButton\n name=\"trash-alt\"\n tooltip=\"Remove header\"\n tooltipPlacement=\"top\"\n className={styles.removeHeaderBtn}\n onClick={onDelete}\n type=\"button\"\n disabled={readOnly}\n />\n </InlineFieldRow>\n </>\n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { css } from '@emotion/css';\nimport { Button, useTheme2 } from '@grafana/ui';\nimport { CustomHeader } from './CustomHeader';\nimport { ConfigSubSection } from '../../ConfigSection';\nimport type { Header, HeaderWithValue, LocalHeader } from '../types';\n\nexport type Props = {\n headers: Header[];\n onChange: (headers: HeaderWithValue[]) => void;\n readOnly: boolean;\n};\n\nexport const CustomHeaders = ({ headers: headersFromProps, onChange, readOnly }: Props) => {\n const { spacing } = useTheme2();\n\n const [headers, setHeaders] = useState<LocalHeader[]>(\n headersFromProps.map((header) => ({\n ...header,\n id: uniqueId(),\n value: '',\n }))\n );\n\n useEffect(() => {\n setHeaders((headers) => {\n let changed = false;\n const newHeaders = headers.map<LocalHeader>((header) => {\n const configured = headersFromProps.find((h) => h.name === header.name)?.configured;\n if (typeof configured !== 'undefined' && header.configured !== configured) {\n changed = true;\n return { ...header, configured };\n }\n return header;\n });\n\n if (changed) {\n return newHeaders;\n }\n\n return headers;\n });\n }, [headersFromProps]);\n\n const onHeaderAdd = () => {\n setHeaders([...headers, { id: uniqueId(), name: '', value: '', configured: false }]);\n };\n\n const onHeaderChange = (id: string, header: LocalHeader) => {\n setHeaders(headers.map((h) => (h.id === id ? { ...header } : h)));\n };\n\n const onHeaderDelete = (id: string) => {\n const index = headers.findIndex((h) => h.id === id);\n if (index === -1) {\n return;\n }\n const newHeaders = [...headers];\n newHeaders.splice(index, 1);\n setHeaders(newHeaders);\n onChange(\n newHeaders.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const onBlur = () => {\n onChange(\n headers.map(({ name, value, configured }) => ({\n name,\n value,\n configured,\n }))\n );\n };\n\n const styles = {\n container: css({\n marginTop: spacing(3),\n }),\n addHeaderButton: css({\n marginTop: spacing(1.5),\n }),\n };\n\n return (\n <div className={styles.container}>\n <ConfigSubSection\n title=\"HTTP headers\"\n description=\"Pass along additional context and metadata about the request/response\"\n isCollapsible\n isInitiallyOpen={headers.length > 0}\n >\n <div>\n {headers.map((header) => (\n <CustomHeader\n key={header.id}\n header={header}\n onChange={(header) => onHeaderChange(header.id, header)}\n onDelete={() => onHeaderDelete(header.id)}\n onBlur={onBlur}\n readOnly={readOnly}\n />\n ))}\n </div>\n <div className={styles.addHeaderButton}>\n <Button icon=\"plus\" variant=\"secondary\" fill=\"outline\" onClick={onHeaderAdd} disabled={readOnly}>\n {headers.length === 0 ? 'Add header' : 'Add another header'}\n </Button>\n </div>\n </ConfigSubSection>\n </div>\n );\n};\n\nfunction uniqueId(): string {\n return Math.random().toString(16).slice(2);\n}\n","import React from 'react';\nimport { css } from '@emotion/css';\nimport { type AuthMethod, type AuthMethodSelectOption, type CustomMethod, type CustomMethodId } from './types';\nimport { AuthMethodSettings } from './auth-method/AuthMethodSettings';\nimport { TLSSettings, type Props as TLSSettingsProps } from './tls/TLSSettings';\nimport { type Props as BasicAuthProps } from './auth-method/BasicAuth';\nimport { CustomHeaders, type Props as CustomHeadersProps } from './custom-headers/CustomHeaders';\nimport { ConfigSection } from '../ConfigSection';\n\nexport type Props = {\n selectedMethod: AuthMethod | CustomMethodId;\n mostCommonMethod?: AuthMethod | CustomMethodId;\n visibleMethods?: Array<AuthMethod | CustomMethodId>;\n defaultOptionsOverrides?: Partial<Record<AuthMethod, AuthMethodSelectOption>>;\n customMethods?: CustomMethod[];\n onAuthMethodSelect: (authType: AuthMethod | CustomMethodId) => void;\n basicAuth?: Omit<BasicAuthProps, 'readOnly'>;\n TLS?: Omit<TLSSettingsProps, 'readOnly'>;\n customHeaders?: Omit<CustomHeadersProps, 'readOnly'>;\n readOnly?: boolean;\n};\n\nexport const Auth = ({\n selectedMethod,\n mostCommonMethod,\n visibleMethods,\n defaultOptionsOverrides,\n customMethods,\n onAuthMethodSelect,\n basicAuth,\n TLS,\n customHeaders,\n readOnly = false,\n}: Props) => {\n const styles = {\n container: css({\n maxWidth: 578,\n }),\n };\n\n return (\n <div className={styles.container}>\n <ConfigSection title=\"Authentication\">\n <AuthMethodSettings\n selectedMethod={selectedMethod}\n mostCommonMethod={mostCommonMethod}\n customMethods={customMethods}\n visibleMethods={visibleMethods}\n defaultOptionsOverrides={defaultOptionsOverrides}\n onAuthMethodSelect={onAuthMethodSelect}\n basicAuth={basicAuth}\n readOnly={readOnly}\n />\n {TLS && <TLSSettings {...TLS} readOnly={readOnly} />}\n {customHeaders && <CustomHeaders {...customHeaders} readOnly={readOnly} />}\n </ConfigSection>\n </div>\n );\n};\n","import { type Props as AuthProps } from './Auth';\nimport { AuthMethod, type Header, type CustomMethodId } from './types';\nimport { type Config, type OnChangeHandler } from '../types';\n\nconst headerNamePrefix = 'httpHeaderName';\nconst headerValuePrefix = 'httpHeaderValue';\n\nexport function convertLegacyAuthProps<C extends Config = Config>({\n config,\n onChange,\n}: {\n config: C;\n onChange: OnChangeHandler<C>;\n}): AuthProps {\n const props: AuthProps = {\n selectedMethod: getSelectedMethod<C>(config),\n onAuthMethodSelect: getOnAuthMethodSelectHandler<C>(config, onChange),\n basicAuth: getBasicAuthProps<C>(config, onChange),\n TLS: getTLSProps<C>(config, onChange),\n customHeaders: getCustomHeaders<C>(config, onChange),\n readOnly: config.readOnly,\n };\n\n return props;\n}\n\nexport function getSelectedMethod<C extends Config = Config>(config: C): AuthMethod {\n if (config.basicAuth) {\n return AuthMethod.BasicAuth;\n }\n if (config.withCredentials) {\n return AuthMethod.CrossSiteCredentials;\n }\n if (config.jsonData.oauthPassThru) {\n return AuthMethod.OAuthForward;\n }\n return AuthMethod.NoAuth;\n}\n\nexport function getOnAuthMethodSelectHandler<C extends Config = Config>(\n config: C,\n onChange: OnChangeHandler<C>\n): (method: AuthMethod | CustomMethodId) => void {\n return (method: AuthMethod | CustomMethodId) => {\n onChange({\n ...config,\n basicAuth: method === AuthMethod.BasicAuth,\n withCredentials: method === AuthMethod.CrossSiteCredentials,\n jsonData: {\n ...config.jsonData,\n oauthPassThru: method === AuthMethod.OAuthForward,\n },\n });\n };\n}\n\nexport function getBasicAuthProps<C extends Config = Config>(\n config: C,\n onChange: OnChangeHandler<C>\n): AuthProps['basicAuth'] {\n return {\n user: config.basicAuthUser,\n passwordConfigured: config.secureJsonFields.basicAuthPassword,\n onUserChange: (user: string) => onChange({ ...config, basicAuthUser: user }),\n onPasswordChange: (password: string) =>\n onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n basicAuthPassword: password,\n },\n }),\n onPasswordReset: () =>\n onChange({\n ...config,\n secureJsonData: { ...config.secureJsonData, basicAuthPassword: '' },\n secureJsonFields: {\n ...config.secureJsonFields,\n basicAuthPassword: false,\n },\n }),\n };\n}\n\nexport function getTLSProps<C extends Config = Config>(config: C, onChange: OnChangeHandler<C>): AuthProps['TLS'] {\n return {\n selfSignedCertificate: {\n enabled: Boolean(config.jsonData.tlsAuthWithCACert),\n certificateConfigured: !!config.secureJsonFields?.tlsCACert,\n onToggle: (enabled) =>\n enabled\n ? onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsAuthWithCACert: enabled },\n })\n : onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsAuthWithCACert: enabled },\n secureJsonData: { ...config.secureJsonData, tlsCACert: '' },\n secureJsonFields: { ...config.secureJsonFields, tlsCACert: false },\n }),\n onCertificateChange: (certificate) =>\n onChange({\n ...config,\n secureJsonData: { ...config.secureJsonData, tlsCACert: certificate },\n }),\n onCertificateReset: () =>\n onChange({\n ...config,\n secureJsonData: { ...config.secureJsonData, tlsCACert: '' },\n secureJsonFields: { ...config.secureJsonFields, tlsCACert: false },\n }),\n },\n TLSClientAuth: {\n enabled: config.jsonData.tlsAuth,\n serverName: config.jsonData.serverName,\n clientCertificateConfigured: !!config.secureJsonFields?.tlsClientCert,\n clientKeyConfigured: !!config.secureJsonFields?.tlsClientKey,\n onToggle: (enabled) =>\n enabled\n ? onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsAuth: enabled },\n })\n : onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsAuth: enabled, serverName: '' },\n secureJsonData: { ...config.secureJsonData, tlsClientCert: '', tlsClientKey: '' },\n secureJsonFields: { ...config.secureJsonFields, tlsClientCert: false, tlsClientKey: false },\n }),\n onServerNameChange: (serverName) =>\n onChange({\n ...config,\n jsonData: { ...config.jsonData, serverName },\n }),\n onClientCertificateChange: (clientCertificate) =>\n onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n tlsClientCert: clientCertificate,\n },\n }),\n onClientCertificateReset: () =>\n onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n tlsClientCert: '',\n },\n secureJsonFields: {\n ...config.secureJsonFields,\n tlsClientCert: false,\n },\n }),\n onClientKeyChange: (clientKey) =>\n onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n tlsClientKey: clientKey,\n },\n }),\n onClientKeyReset: () =>\n onChange({\n ...config,\n secureJsonData: {\n ...config.secureJsonData,\n tlsClientKey: '',\n },\n secureJsonFields: {\n ...config.secureJsonFields,\n tlsClientKey: false,\n },\n }),\n },\n skipTLSVerification: {\n enabled: config.jsonData.tlsSkipVerify,\n onToggle: (enabled) =>\n onChange({\n ...config,\n jsonData: { ...config.jsonData, tlsSkipVerify: enabled },\n }),\n },\n };\n}\n\nexport function getCustomHeaders<C extends Config = Config>(\n config: C,\n onChange: OnChangeHandler<C>\n): AuthProps['customHeaders'] {\n const headers: Header[] = Object.keys(config.jsonData)\n .filter((key) => key.startsWith(headerNamePrefix))\n .sort()\n .map((key) => {\n const index = key.slice(headerNamePrefix.length);\n return {\n name: config.jsonData[key],\n configured: config.secureJsonFields[`${headerValuePrefix}${index}`] ?? false,\n };\n });\n\n return {\n headers,\n onChange: (headers) => {\n const newJsonData = Object.fromEntries(\n Object.entries(config.jsonData).filter(([key]) => !key.startsWith(headerNamePrefix))\n );\n const newSecureJsonData = Object.fromEntries(\n Object.entries(config.secureJsonData || {}).filter(([key]) => !key.startsWith(headerValuePrefix))\n );\n const newSecureJsonFields = Object.fromEntries(\n Object.entries(config.secureJsonFields).filter(([key]) => !key.startsWith(headerValuePrefix))\n );\n\n headers.forEach((header, index) => {\n newJsonData[`${headerNamePrefix}${index + 1}`] = header.name;\n if (header.configured) {\n newSecureJsonFields[`${headerValuePrefix}${index + 1}`] = true;\n } else {\n newSecureJsonData[`${headerValuePrefix}${index + 1}`] = header.value;\n }\n });\n\n onChange({\n ...config,\n jsonData: newJsonData,\n secureJsonData: newSecureJsonData,\n secureJsonFields: newSecureJsonFields,\n });\n },\n };\n}\n","import React, { type ReactNode } from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineField, Input, type PopoverContent } from '@grafana/ui';\nimport { ConfigSection } from '../ConfigSection';\nimport { type Config, type OnChangeHandler } from '../types';\n\nexport type Props<C extends Config = Config> = {\n config: C;\n onChange: OnChangeHandler<C>;\n description?: ReactNode;\n urlPlaceholder?: string;\n urlTooltip?: PopoverContent;\n urlLabel?: string;\n className?: string;\n};\n\nexport const ConnectionSettings: <C extends Config = Config>(props: Props<C>) => JSX.Element = ({\n config,\n onChange,\n description,\n urlPlaceholder,\n urlTooltip,\n urlLabel,\n className,\n}) => {\n const isValidUrl =\n config.url !== undefined &&\n /^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?$/.test(config.url);\n\n const styles = {\n container: css({\n maxWidth: 578,\n }),\n };\n\n return (\n <>\n <ConfigSection title=\"Connection\" description={description} className={cx(styles.container, className)}>\n <InlineField\n htmlFor=\"connection-url\"\n label={urlLabel || 'URL'}\n labelWidth={24}\n tooltip={\n urlTooltip || (\n <>\n Specify a complete HTTP URL\n <br />\n (for example https://example.com:8080)\n </>\n )\n }\n grow\n disabled={config.readOnly}\n required\n invalid={!isValidUrl && !config.readOnly}\n error={isValidUrl ? '' : 'Please enter a valid URL'}\n interactive\n >\n <Input\n id=\"connection-url\"\n aria-label=\"Data source connection URL\"\n onChange={(event) =>\n onChange({\n ...config,\n url: event.currentTarget.value,\n })\n }\n value={config.url || ''}\n placeholder={urlPlaceholder || 'URL'}\n />\n </InlineField>\n </ConfigSection>\n </>\n );\n};\n","import React from 'react';\nimport { css, cx } from '@emotion/css';\nimport { InlineField, Input, TagsInput } from '@grafana/ui';\nimport { ConfigSubSection } from '../ConfigSection';\nimport { type Config, type OnChangeHandler } from '../types';\n\nexport type Props<C extends Config = Config> = {\n config: C;\n onChange: OnChangeHandler<C>;\n className?: string;\n};\n\nexport const AdvancedHttpSettings: <C extends Config = Config>(props: Props<C>) => JSX.Element = ({\n config,\n onChange,\n className,\n}) => {\n const onCookiesChange = (cookies: string[]) => {\n onChange({\n ...config,\n jsonData: {\n ...config.jsonData,\n keepCookies: cookies,\n },\n });\n };\n\n const onTimeoutChange = (event: React.FormEvent<HTMLInputElement>) => {\n onChange({\n ...config,\n jsonData: {\n ...config.jsonData,\n timeout: parseInt(event.currentTarget.value, 10),\n },\n });\n };\n\n const styles = {\n container: css({\n maxWidth: 578,\n }),\n };\n\n return (\n <ConfigSubSection title=\"Advanced HTTP settings\" className={cx(styles.container, className)}>\n <InlineField\n htmlFor=\"advanced-http-cookies\"\n label=\"Allowed cookies\"\n labelWidth={24}\n tooltip=\"Grafana proxy deletes forwarded cookies by default. Specify cookies by name that should be forwarded to the data source.\"\n disabled={config.readOnly}\n grow\n >\n <TagsInput\n id=\"advanced-http-cookies\"\n placeholder=\"New cookie (hit enter to add)\"\n tags={config.jsonData.keepCookies}\n onChange={onCookiesChange}\n />\n </InlineField>\n\n <InlineField\n htmlFor=\"advanced-http-timeout\"\n label=\"Timeout\"\n labelWidth={24}\n tooltip=\"HTTP request timeout in seconds\"\n disabled={config.readOnly}\n grow\n >\n <Input\n id=\"advanced-http-timeout\"\n type=\"number\"\n min={0}\n placeholder=\"Timeout in seconds\"\n aria-label=\"Timeout in seconds\"\n value={config.jsonData.timeout}\n onChange={onTimeoutChange}\n />\n </InlineField>\n </ConfigSubSection>\n );\n};\n","import React, { PureComponent } from 'react';\nimport { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { type DataSourceSettings } from '@grafana/data';\nimport { stylesFactory, LegacyForms, Button, Icon } from '@grafana/ui';\n\nexport interface CustomHeader {\n id: string;\n name: string;\n value: string;\n configured: boolean;\n}\n\nexport type CustomHeaders = CustomHeader[];\n\nexport interface Props {\n dataSourceConfig: DataSourceSettings<any, any>;\n onChange: (config: DataSourceSettings) => void;\n}\n\nexport interface State {\n headers: CustomHeaders;\n}\n\ninterface CustomHeaderRowProps {\n header: CustomHeader;\n onReset: (id: string) => void;\n onRemove: (id: string) => void;\n onChange: (value: CustomHeader) => void;\n onBlur: () => void;\n}\n\nconst getCustomHeaderRowStyles = stylesFactory(() => {\n return {\n layout: css`\n display: flex;\n align-items: center;\n margin-bottom: 4px;\n > * {\n margin-left: 4px;\n margin-bottom: 0;\n height: 100%;\n &:first-child,\n &:last-child {\n margin-left: 0;\n }\n }\n `,\n };\n});\n\nconst CustomHeaderRow = ({ header, onBlur, onChange, onRemove, onReset }: CustomHeaderRowProps) => {\n const styles = getCustomHeaderRowStyles();\n return (\n <div className={styles.layout}>\n <LegacyForms.FormField\n label=\"Header\"\n name=\"name\"\n placeholder=\"X-Custom-Header\"\n labelWidth={5}\n value={header.name || ''}\n onChange={(e) => onChange({ ...header, name: e.target.value })}\n onBlur={onBlur}\n />\n <LegacyForms.SecretFormField\n label=\"Value\"\n aria-label=\"Value\"\n name=\"value\"\n isConfigured={header.configured}\n value={header.value}\n labelWidth={5}\n inputWidth={header.configured ? 11 : 12}\n placeholder=\"Header Value\"\n onReset={() => onReset(header.id)}\n onChange={(e) => onChange({ ...header, value: e.target.value })}\n onBlur={onBlur}\n />\n <Button\n type=\"button\"\n aria-label=\"Remove header\"\n variant=\"secondary\"\n size=\"xs\"\n onClick={(_e) => onRemove(header.id)}\n >\n <Icon name=\"trash-alt\" />\n </Button>\n </div>\n );\n};\n\nCustomHeaderRow.displayName = 'CustomHeaderRow';\n\nexport class CustomHeadersSettings extends PureComponent<Props, State> {\n state: State = {\n headers: [],\n };\n\n constructor(props: Props) {\n super(props);\n const { jsonData, secureJsonData, secureJsonFields } = this.props.dataSourceConfig;\n this.state = {\n headers: Object.keys(jsonData)\n .sort()\n .filter((key) => key.startsWith('httpHeaderName'))\n .map((key, index) => {\n return {\n id: uniqueId(),\n name: jsonData[key],\n value: secureJsonData !== undefined ? secureJsonData[key] : '',\n configured: (secureJsonFields && secureJsonFields[`httpHeaderValue${index + 1}`]) || false,\n };\n }),\n };\n }\n\n updateSettings = () => {\n const { headers } = this.state;\n\n // we remove every httpHeaderName* field\n const newJsonData = Object.fromEntries(\n Object.entries(this.props.dataSourceConfig.jsonData).filter(([key, val]) => !key.startsWith('httpHeaderName'))\n );\n\n // we remove every httpHeaderValue* field\n const newSecureJsonData = Object.fromEntries(\n Object.entries(this.props.dataSourceConfig.secureJsonData || {}).filter(\n ([key, val]) => !key.startsWith('httpHeaderValue')\n )\n );\n\n // then we add the current httpHeader-fields\n for (const [index, header] of headers.entries()) {\n newJsonData[`httpHeaderName${index + 1}`] = header.name;\n if (!header.configured) {\n newSecureJsonData[`httpHeaderValue${index + 1}`] = header.value;\n }\n }\n\n this.props.onChange({\n ...this.props.dataSourceConfig,\n jsonData: newJsonData,\n secureJsonData: newSecureJsonData,\n });\n };\n\n onHeaderAdd = () => {\n this.setState((prevState) => {\n return {\n headers: [...prevState.headers, { id: uniqueId(), name: '', value: '', configured: false }],\n };\n });\n };\n\n onHeaderChange = (headerIndex: number, value: CustomHeader) => {\n this.setState(({ headers }) => {\n return {\n headers: headers.map((item, index) => {\n if (headerIndex !== index) {\n return item;\n }\n return { ...value };\n }),\n };\n });\n };\n\n onHeaderReset = (headerId: string) => {\n this.setState(({ headers }) => {\n return {\n headers: headers.map((h, i) => {\n if (h.id !== headerId) {\n return h;\n }\n return {\n ...h,\n value: '',\n configured: false,\n };\n }),\n };\n });\n };\n\n onHeaderRemove = (headerId: string) => {\n this.setState(\n ({ headers }) => ({\n headers: headers.filter((h) => h.id !== headerId),\n }),\n this.updateSettings\n );\n };\n\n render() {\n const { headers } = this.state;\n return (\n <div className={'gf-form-group'}>\n <div className=\"gf-form\">\n <h6>Custom HTTP Headers</h6>\n </div>\n <div>\n {headers.map((header, i) => (\n <CustomHeaderRow\n key={header.id}\n header={header}\n onChange={(h) => {\n this.onHeaderChange(i, h);\n }}\n onBlur={this.updateSettings}\n onRemove={this.onHeaderRemove}\n onReset={this.onHeaderReset}\n />\n ))}\n </div>\n <div className=\"gf-form\">\n <Button\n variant=\"secondary\"\n icon=\"plus\"\n type=\"button\"\n onClick={(e) => {\n this.onHeaderAdd();\n }}\n >\n Add header\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomHeadersSettings;\n","import { type FunctionComponent } from 'react';\n\nimport { type DataSourceApi, type RegistryItem, type SelectableValue, type TimeRange } from '@grafana/data';\n\nexport interface QueryBuilderLabelFilter {\n label: string;\n op: string;\n value: string;\n}\n\nexport interface QueryBuilderOperation {\n id: string;\n params: QueryBuilderOperationParamValue[];\n disabled?: boolean;\n}\n\nexport interface QueryBuilderOperationDefinition<T = any> extends RegistryItem {\n documentation?: string;\n params: QueryBuilderOperationParamDef[];\n defaultParams: QueryBuilderOperationParamValue[];\n category: string;\n hideFromList?: boolean;\n alternativesKey?: string;\n /** Can be used to control operation placement when adding a new operations, lower are placed first */\n orderRank?: number;\n renderer: QueryBuilderOperationRenderer;\n addOperationHandler: QueryBuilderAddOperationHandler<T>;\n paramChangedHandler?: QueryBuilderOnParamChangedHandler;\n explainHandler?: QueryBuilderExplainOperationHandler;\n changeTypeHandler?: (op: QueryBuilderOperation, newDef: QueryBuilderOperationDefinition<T>) => QueryBuilderOperation;\n toggleable?: boolean;\n}\n\ntype QueryBuilderAddOperationHandler<T> = (\n def: QueryBuilderOperationDefinition,\n query: T,\n modeller: VisualQueryModeller\n) => T;\n\ntype QueryBuilderExplainOperationHandler = (op: QueryBuilderOperation, def?: QueryBuilderOperationDefinition) => string;\n\ntype QueryBuilderOnParamChangedHandler = (\n index: number,\n operation: QueryBuilderOperation,\n operationDef: QueryBuilderOperationDefinition\n) => QueryBuilderOperation;\n\ntype QueryBuilderOperationRenderer = (\n model: QueryBuilderOperation,\n def: QueryBuilderOperationDefinition,\n innerQuery: string\n) => string;\n\nexport type QueryBuilderOperationParamValue = string | number | boolean;\n\nexport interface QueryBuilderOperationParamDef {\n name: string;\n type: 'string' | 'number' | 'boolean';\n options?: string[] | number[] | Array<SelectableValue<string>>;\n hideName?: boolean;\n restParam?: boolean;\n optional?: boolean;\n placeholder?: string;\n description?: string;\n minWidth?: number;\n editor?: FunctionComponent<QueryBuilderOperationParamEditorProps>;\n runQueryOnEnter?: boolean;\n}\n\nexport interface QueryBuilderOperationParamEditorProps {\n value?: QueryBuilderOperationParamValue;\n paramDef: QueryBuilderOperationParamDef;\n /** Parameter index */\n index: number;\n operation: QueryBuilderOperation;\n operationId: string;\n query: any;\n datasource: DataSourceApi;\n timeRange?: TimeRange;\n onChange: (index: number, value: QueryBuilderOperationParamValue) => void;\n onRunQuery: () => void;\n queryModeller: VisualQueryModeller;\n}\n\nexport enum QueryEditorMode {\n Code = 'code',\n Builder = 'builder',\n}\n\nexport type QueryStats = {\n bytes: number;\n // The error message displayed in the UI when we cant estimate the size of the query.\n message?: string;\n};\n\nexport interface VisualQueryModeller {\n getOperationsForCategory(category: string): QueryBuilderOperationDefinition[];\n getAlternativeOperations(key: string): QueryBuilderOperationDefinition[];\n getCategories(): string[];\n getOperationDefinition(id: string): QueryBuilderOperationDefinition | undefined;\n renderQuery(query: VisualQuery, nested?: boolean): string;\n renderLabels(labels: QueryBuilderLabelFilter[]): string;\n innerQueryPlaceholder: string;\n}\n\nexport interface VisualQueryBinary<T> {\n operator: string;\n vectorMatchesType?: 'on' | 'ignoring';\n vectorMatches?: string;\n query: T;\n}\n\nexport const BINARY_OPERATIONS_KEY = 'Binary operations';\n\nexport interface VisualQuery {\n metric?: string;\n labels: QueryBuilderLabelFilter[];\n operations: QueryBuilderOperation[];\n binaryQueries?: Array<VisualQueryBinary<VisualQuery>>;\n}\n","import { Registry } from '@grafana/data';\n\nimport {\n BINARY_OPERATIONS_KEY,\n type VisualQuery,\n type VisualQueryBinary,\n type QueryBuilderLabelFilter,\n type QueryBuilderOperation,\n type VisualQueryModeller,\n type QueryBuilderOperationDefinition,\n} from './types';\n\nexport abstract class QueryModellerBase implements VisualQueryModeller {\n protected operationsRegistry: Registry<QueryBuilderOperationDefinition>;\n private categories: string[] = [];\n innerQueryPlaceholder: string;\n\n constructor(operationDefinitions: QueryBuilderOperationDefinition[], innerQueryPlaceholder?: string) {\n this.operationsRegistry = new Registry<QueryBuilderOperationDefinition>(() => operationDefinitions);\n this.innerQueryPlaceholder = innerQueryPlaceholder || '<query>';\n }\n\n protected setOperationCategories(categories: string[]) {\n this.categories = categories;\n }\n\n abstract renderOperations(queryString: string, operations: QueryBuilderOperation[]): string;\n\n abstract renderBinaryQueries(queryString: string, binaryQueries?: Array<VisualQueryBinary<VisualQuery>>): string;\n\n abstract renderLabels(labels: QueryBuilderLabelFilter[]): string;\n\n abstract renderQuery(query: VisualQuery, nested?: boolean): string;\n\n getOperationsForCategory(category: string) {\n return this.operationsRegistry.list().filter((op) => op.category === category && !op.hideFromList);\n }\n\n getAlternativeOperations(key: string) {\n return this.operationsRegistry.list().filter((op) => op.alternativesKey && op.alternativesKey === key);\n }\n\n getCategories() {\n return this.categories;\n }\n\n getOperationDefinition(id: string): QueryBuilderOperationDefinition | undefined {\n return this.operationsRegistry.getIfExists(id);\n }\n\n hasBinaryOp(query: VisualQuery): boolean {\n return (\n query.operations.find((op) => {\n const def = this.getOperationDefinition(op.id);\n return def?.category === BINARY_OPERATIONS_KEY;\n }) !== undefined\n );\n }\n}\n","import { uniqBy } from 'lodash';\nimport React, { useRef, useState } from 'react';\nimport { v4 } from 'uuid';\n\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { InlineField, Select } from '@grafana/ui';\n\nimport { type QueryBuilderLabelFilter } from '../types';\nimport { InputGroup } from '../../QueryEditor/InputGroup';\nimport { AccessoryButton } from '../../QueryEditor/AccessoryButton';\n\nconst CONFLICTING_LABEL_FILTER_ERROR_MESSAGE = 'You have conflicting label filters';\ninterface Props {\n defaultOp: string;\n item: Partial<QueryBuilderLabelFilter>;\n items: Array<Partial<QueryBuilderLabelFilter>>;\n onChange: (value: Partial<QueryBuilderLabelFilter>) => void;\n onGetLabelNames: (forLabel: Partial<QueryBuilderLabelFilter>) => Promise<Array<SelectableValue<string>>>;\n onGetLabelValues: (forLabel: Partial<QueryBuilderLabelFilter>) => Promise<Array<SelectableValue<string>>>;\n onDelete: () => void;\n invalidLabel?: boolean;\n invalidValue?: boolean;\n multiValueSeparator?: string;\n}\n\nexport function LabelFilterItem({\n item,\n items,\n defaultOp,\n onChange,\n onDelete,\n onGetLabelNames,\n onGetLabelValues,\n invalidLabel,\n invalidValue,\n multiValueSeparator = '|',\n}: Props) {\n const [state, setState] = useState<{\n labelNames?: Array<SelectableValue<string>>;\n labelValues?: Array<SelectableValue<string>>;\n isLoadingLabelNames?: boolean;\n isLoadingLabelValues?: boolean;\n }>({});\n // there's a bug in react-select where the menu doesn't recalculate its position when the options are loaded asynchronously\n // see https://github.com/grafana/grafana/issues/63558\n // instead, we explicitly control the menu visibility and prevent showing it until the options have fully loaded\n const [labelNamesMenuOpen, setLabelNamesMenuOpen] = useState(false);\n const [labelValuesMenuOpen, setLabelValuesMenuOpen] = useState(false);\n\n const isMultiSelect = (operator = item.op) => {\n return operators.find((op) => op.label === operator)?.isMultiValue;\n };\n\n const getSelectOptionsFromString = (item?: string): string[] => {\n if (item) {\n if (item.indexOf(multiValueSeparator) > 0) {\n return item.split(multiValueSeparator);\n }\n return [item];\n }\n return [];\n };\n\n const getOptions = (): Array<SelectableValue<string>> => {\n const labelValues = state.labelValues ? [...state.labelValues] : [];\n const selectedOptions = getSelectOptionsFromString(item?.value).map(toOption);\n\n // Remove possible duplicated values\n return uniqBy([...selectedOptions, ...labelValues], 'value');\n };\n\n const isConflicting = isConflictingLabelFilter(item, items);\n const { current: id } = useRef(v4());\n\n return (\n <div data-testid=\"visual-query-builder-dimensions-filter-item\">\n <InlineField error={CONFLICTING_LABEL_FILTER_ERROR_MESSAGE} invalid={isConflicting ? true : undefined}>\n <InputGroup>\n <Select<string>\n placeholder=\"Select label\"\n data-testid={selectors.components.QueryBuilder.labelSelect}\n inputId={`visual-query-builder-dimensions-filter-item-key-${id}`}\n width=\"auto\"\n value={item.label ? toOption(item.label) : null}\n allowCustomValue\n onOpenMenu={async () => {\n setState({ isLoadingLabelNames: true });\n const labelNames = await onGetLabelNames(item);\n setLabelNamesMenuOpen(true);\n setState({ labelNames, isLoadingLabelNames: undefined });\n }}\n onCloseMenu={() => {\n setLabelNamesMenuOpen(false);\n }}\n isOpen={labelNamesMenuOpen}\n isLoading={state.isLoadingLabelNames}\n options={state.labelNames}\n onChange={(change) => {\n if (change.value) {\n onChange({\n ...item,\n op: item.op ?? defaultOp,\n label: change.value,\n });\n }\n }}\n invalid={isConflicting || invalidLabel}\n />\n\n <Select<string>\n data-testid={selectors.components.QueryBuilder.matchOperatorSelect}\n value={toOption(item.op ?? defaultOp)}\n options={operators}\n width=\"auto\"\n onChange={(change) => {\n if (change.value) {\n onChange({\n ...item,\n op: change.value,\n value: isMultiSelect(change.value) ? item.value : getSelectOptionsFromString(item?.value)[0],\n });\n }\n }}\n invalid={isConflicting}\n />\n\n <Select<string>\n placeholder=\"Select value\"\n data-testid={selectors.components.QueryBuilder.valueSelect}\n inputId={`visual-query-builder-dimensions-filter-item-value-${id}`}\n width=\"auto\"\n value={\n isMultiSelect()\n ? getSelectOptionsFromString(item?.value).map(toOption)\n : getSelectOptionsFromString(item?.value).map(toOption)[0]\n }\n allowCustomValue\n onOpenMenu={async () => {\n setState({ isLoadingLabelValues: true });\n const labelValues = await onGetLabelValues(item);\n setState({\n ...state,\n labelValues,\n isLoadingLabelValues: undefined,\n });\n setLabelValuesMenuOpen(true);\n }}\n onCloseMenu={() => {\n setLabelValuesMenuOpen(false);\n }}\n isOpen={labelValuesMenuOpen}\n isMulti={isMultiSelect()}\n isLoading={state.isLoadingLabelValues}\n options={getOptions()}\n onChange={(change) => {\n if (change.value) {\n onChange({\n ...item,\n value: change.value,\n op: item.op ?? defaultOp,\n });\n } else {\n // otherwise, we're dealing with a multi-value select which is array of options\n const changes = change\n .map((change: SelectableValue<string>) => {\n if (change.value) {\n return change.value;\n } else {\n return undefined;\n }\n })\n .filter((val: string | undefined) => val !== undefined)\n .join(multiValueSeparator);\n onChange({ ...item, value: changes, op: item.op ?? defaultOp });\n }\n }}\n invalid={isConflicting || invalidValue}\n />\n <AccessoryButton aria-label=\"remove\" icon=\"times\" variant=\"secondary\" onClick={onDelete} />\n </InputGroup>\n </InlineField>\n </div>\n );\n}\n\nconst operators = [\n { label: '=', value: '=', description: 'Equals', isMultiValue: false },\n { label: '!=', value: '!=', description: 'Does not equal', isMultiValue: false },\n { label: '=~', value: '=~', description: 'Matches regex', isMultiValue: true },\n { label: '!~', value: '!~', description: 'Does not match regex', isMultiValue: true },\n];\n\nexport function isConflictingLabelFilter(\n newLabel: Partial<QueryBuilderLabelFilter>,\n labels: Array<Partial<QueryBuilderLabelFilter>>\n): boolean {\n if (!newLabel.label || !newLabel.op || !newLabel.value) {\n return false;\n }\n\n if (labels.length < 2) {\n return false;\n }\n\n const operationIsNegative = newLabel.op.toString().startsWith('!');\n\n const candidates = labels.filter(\n (label) => label.label === newLabel.label && label.value === newLabel.value && label.op !== newLabel.op\n );\n\n const conflict = candidates.some((candidate) => {\n if (operationIsNegative && candidate?.op?.toString().startsWith('!') === false) {\n return true;\n }\n if (operationIsNegative === false && candidate?.op?.toString().startsWith('!')) {\n return true;\n }\n return false;\n });\n\n return conflict;\n}\n","import { isEqual } from 'lodash';\nimport React, { useEffect, useState } from 'react';\n\nimport { type SelectableValue } from '@grafana/data';\n\nimport { type QueryBuilderLabelFilter } from '../types';\n\nimport { EditorField } from '../../QueryEditor/EditorField';\nimport { EditorFieldGroup } from '../../QueryEditor/EditorFieldGroup';\nimport { EditorList } from '../../QueryEditor/EditorList';\nimport { LabelFilterItem } from './LabelFilterItem';\n\nexport const MISSING_LABEL_FILTER_ERROR_MESSAGE = 'Select at least 1 label filter (label and value)';\n\nexport interface Props {\n labelsFilters: QueryBuilderLabelFilter[];\n onChange: (labelFilters: QueryBuilderLabelFilter[]) => void;\n onGetLabelNames: (forLabel: Partial<QueryBuilderLabelFilter>) => Promise<SelectableValue[]>;\n onGetLabelValues: (forLabel: Partial<QueryBuilderLabelFilter>) => Promise<SelectableValue[]>;\n /** If set to true, component will show error message until at least 1 filter is selected */\n labelFilterRequired?: boolean;\n multiValueSeparator?: string;\n}\n\nexport function LabelFilters({\n labelsFilters,\n onChange,\n onGetLabelNames,\n onGetLabelValues,\n labelFilterRequired,\n multiValueSeparator,\n}: Props) {\n const defaultOp = '=';\n const [items, setItems] = useState<Array<Partial<QueryBuilderLabelFilter>>>([{ op: defaultOp }]);\n\n useEffect(() => {\n if (labelsFilters.length > 0) {\n setItems(labelsFilters);\n } else {\n setItems([{ op: defaultOp }]);\n }\n }, [labelsFilters]);\n\n const onLabelsChange = (newItems: Array<Partial<QueryBuilderLabelFilter>>) => {\n setItems(newItems);\n\n // Extract full label filters with both label & value\n const newLabels = newItems.filter(\n (item): item is QueryBuilderLabelFilter => item.label !== undefined && item.value !== undefined\n );\n if (!isEqual(newLabels, labelsFilters)) {\n onChange(newLabels);\n }\n };\n\n const hasLabelFilter = items.some((item) => item.label && item.value);\n\n return (\n <EditorFieldGroup>\n <EditorField\n label=\"Label filters\"\n error={MISSING_LABEL_FILTER_ERROR_MESSAGE}\n invalid={labelFilterRequired && !hasLabelFilter}\n >\n <EditorList\n items={items}\n onChange={onLabelsChange}\n renderItem={(item: Partial<QueryBuilderLabelFilter>, onChangeItem, onDelete) => (\n <LabelFilterItem\n item={item}\n items={items}\n defaultOp={defaultOp}\n onChange={onChangeItem}\n onDelete={onDelete}\n onGetLabelNames={onGetLabelNames}\n onGetLabelValues={onGetLabelValues}\n invalidLabel={labelFilterRequired && !item.label}\n invalidValue={labelFilterRequired && !item.value}\n multiValueSeparator={multiValueSeparator}\n />\n )}\n />\n </EditorField>\n </EditorFieldGroup>\n );\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2, renderMarkdown } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nexport interface Props {\n title?: React.ReactNode;\n markdown?: string;\n stepNumber?: number;\n}\n\nexport function OperationExplainedBox({ title, stepNumber, markdown, children }: React.PropsWithChildren<Props>) {\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.box}>\n {stepNumber !== undefined && <div className={styles.stepNumber}>{stepNumber}</div>}\n <div className={styles.boxInner}>\n {title && (\n <div className={styles.header}>\n <span>{title}</span>\n </div>\n )}\n <div className={styles.body}>\n {markdown && <div dangerouslySetInnerHTML={{ __html: renderMarkdown(markdown) }}></div>}\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n box: css({\n background: theme.colors.background.secondary,\n padding: theme.spacing(1),\n borderRadius: theme.shape.radius.default,\n position: 'relative',\n }),\n boxInner: css({\n marginLeft: theme.spacing(4),\n }),\n stepNumber: css({\n fontWeight: theme.typography.fontWeightMedium,\n background: theme.colors.secondary.main,\n width: '20px',\n height: '20px',\n borderRadius: theme.shape.radius.circle,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n top: '10px',\n left: '11px',\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n header: css({\n paddingBottom: theme.spacing(0.5),\n display: 'flex',\n alignItems: 'center',\n fontFamily: theme.typography.fontFamilyMonospace,\n }),\n body: css({\n color: theme.colors.text.secondary,\n 'p:last-child': {\n margin: 0,\n },\n a: {\n color: theme.colors.text.link,\n textDecoration: 'underline',\n },\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport React, { useState } from 'react';\nimport { usePopperTooltip } from 'react-popper-tooltip';\n\nimport { type GrafanaTheme2, renderMarkdown } from '@grafana/data';\nimport { Button, Portal, useStyles2 } from '@grafana/ui';\n\nimport { type QueryBuilderOperation, type QueryBuilderOperationDefinition } from '../types';\nimport { FlexItem } from '../../QueryEditor/FlexItem';\n\ninterface Props {\n operation: QueryBuilderOperation;\n definition: QueryBuilderOperationDefinition;\n innerQueryPlaceholder: string;\n}\n\nexport const OperationInfoButton = React.memo<Props>(({ definition, operation, innerQueryPlaceholder }) => {\n const styles = useStyles2(getStyles);\n const [show, setShow] = useState(false);\n const { getTooltipProps, setTooltipRef, setTriggerRef, visible } = usePopperTooltip({\n placement: 'top',\n visible: show,\n offset: [0, 16],\n onVisibleChange: setShow,\n interactive: true,\n trigger: ['click'],\n });\n\n return (\n <>\n <Button\n title=\"Click to show description\"\n ref={setTriggerRef}\n icon=\"info-circle\"\n size=\"sm\"\n variant=\"secondary\"\n fill=\"text\"\n />\n {visible && (\n <Portal>\n <div ref={setTooltipRef} {...getTooltipProps()} className={styles.docBox}>\n <div className={styles.docBoxHeader}>\n <span>{definition.renderer(operation, definition, innerQueryPlaceholder)}</span>\n <FlexItem grow={1} />\n <Button\n icon=\"times\"\n onClick={() => setShow(false)}\n fill=\"text\"\n variant=\"secondary\"\n title=\"Remove operation\"\n />\n </div>\n <div\n className={styles.docBoxBody}\n dangerouslySetInnerHTML={{ __html: getOperationDocs(definition, operation) }}\n ></div>\n </div>\n </Portal>\n )}\n </>\n );\n});\n\nOperationInfoButton.displayName = 'OperationDocs';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n docBox: css({\n overflow: 'hidden',\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.strong}`,\n boxShadow: theme.shadows.z3,\n maxWidth: '600px',\n padding: theme.spacing(1),\n borderRadius: theme.shape.radius.default,\n zIndex: theme.zIndex.tooltip,\n }),\n docBoxHeader: css({\n fontSize: theme.typography.h5.fontSize,\n fontFamily: theme.typography.fontFamilyMonospace,\n paddingBottom: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n }),\n docBoxBody: css({\n // The markdown paragraph has a marginBottom this removes it\n marginBottom: theme.spacing(-1),\n color: theme.colors.text.secondary,\n }),\n signature: css({\n fontSize: theme.typography.bodySmall.fontSize,\n fontFamily: theme.typography.fontFamilyMonospace,\n }),\n dropdown: css({\n opacity: 0,\n color: theme.colors.text.secondary,\n }),\n };\n};\nfunction getOperationDocs(def: QueryBuilderOperationDefinition, op: QueryBuilderOperation): string {\n return renderMarkdown(def.explainHandler ? def.explainHandler(op, def) : (def.documentation ?? 'no docs'));\n}\n","import { css } from '@emotion/css';\nimport React, { useState } from 'react';\nimport { type DraggableProvided } from '@hello-pangea/dnd';\n\nimport { type GrafanaTheme2, type SelectableValue } from '@grafana/data';\nimport { Button, Select, useStyles2 } from '@grafana/ui';\n\nimport { OperationInfoButton } from './OperationInfoButton';\n\nimport { type VisualQueryModeller, type QueryBuilderOperation, type QueryBuilderOperationDefinition } from '../types';\nimport { FlexItem } from '../../QueryEditor/FlexItem';\n\ninterface Props {\n operation: QueryBuilderOperation;\n definition: QueryBuilderOperationDefinition;\n index: number;\n queryModeller: VisualQueryModeller;\n dragHandleProps?: DraggableProvided['dragHandleProps'];\n onChange: (index: number, update: QueryBuilderOperation) => void;\n onRemove: (index: number) => void;\n onToggle: (index: number) => void;\n}\n\ninterface State {\n isOpen?: boolean;\n disabled?: boolean;\n alternatives?: Array<SelectableValue<QueryBuilderOperationDefinition>>;\n}\n\nexport const OperationHeader = React.memo<Props>(\n ({ operation, definition, index, onChange, onRemove, onToggle, queryModeller, dragHandleProps }) => {\n const styles = useStyles2(getStyles);\n const [state, setState] = useState<State>({});\n\n const onToggleSwitcher = () => {\n if (state.isOpen) {\n setState({ ...state, isOpen: false });\n } else {\n const alternatives = queryModeller\n .getAlternativeOperations(definition.alternativesKey!)\n .map((alt) => ({ label: alt.name, value: alt }));\n setState({ isOpen: true, alternatives });\n }\n };\n\n return (\n <div className={styles.header}>\n {!state.isOpen && (\n <>\n <div {...dragHandleProps}>{definition.name ?? definition.id}</div>\n <FlexItem grow={1} />\n <div className={`${styles.operationHeaderButtons} operation-header-show-on-hover`}>\n <Button\n icon=\"angle-down\"\n size=\"sm\"\n onClick={onToggleSwitcher}\n fill=\"text\"\n variant=\"secondary\"\n title=\"Click to view alternative operations\"\n />\n <OperationInfoButton\n definition={definition}\n operation={operation}\n innerQueryPlaceholder={queryModeller.innerQueryPlaceholder}\n />\n {definition.toggleable && (\n <Button\n icon={operation.disabled ? 'eye-slash' : 'eye'}\n size=\"sm\"\n onClick={() => onToggle(index)}\n fill=\"text\"\n variant=\"secondary\"\n title={operation.disabled ? 'Enable operation' : 'Disable operation'}\n />\n )}\n <Button\n icon=\"times\"\n size=\"sm\"\n onClick={() => onRemove(index)}\n fill=\"text\"\n variant=\"secondary\"\n title=\"Remove operation\"\n />\n </div>\n </>\n )}\n {state.isOpen && (\n <div className={styles.selectWrapper}>\n <Select\n autoFocus\n openMenuOnFocus\n placeholder=\"Replace with\"\n options={state.alternatives}\n isOpen={true}\n onCloseMenu={onToggleSwitcher}\n onChange={(value) => {\n if (value.value) {\n // Operation should exist if it is selectable\n const newDef = queryModeller.getOperationDefinition(value.value.id)!;\n\n // copy default params, and override with all current params\n const newParams = [...newDef.defaultParams];\n for (let i = 0; i < Math.min(operation.params.length, newParams.length); i++) {\n if (newDef.params[i].type === definition.params[i].type) {\n newParams[i] = operation.params[i];\n }\n }\n\n const changedOp = { ...operation, params: newParams, id: value.value.id };\n onChange(\n index,\n definition.changeTypeHandler ? definition.changeTypeHandler(changedOp, newDef) : changedOp\n );\n }\n }}\n />\n </div>\n )}\n </div>\n );\n }\n);\n\nOperationHeader.displayName = 'OperationHeader';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n header: css({\n borderBottom: `1px solid ${theme.colors.border.medium}`,\n padding: theme.spacing(0.5, 0.5, 0.5, 1),\n display: 'flex',\n alignItems: 'center',\n }),\n operationHeaderButtons: css({\n opacity: 1,\n }),\n selectWrapper: css({\n paddingRight: theme.spacing(2),\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport React, { type FunctionComponent } from 'react';\n\nimport { type GrafanaTheme2, type SelectableValue, toOption } from '@grafana/data';\nimport { AutoSizeInput, Button, Checkbox, Select, useStyles2 } from '@grafana/ui';\n\nimport { type QueryBuilderOperationParamDef, type QueryBuilderOperationParamEditorProps } from '../types';\n\nimport { EditorStack } from '../../QueryEditor';\n\nexport function getOperationParamEditor(\n paramDef: QueryBuilderOperationParamDef\n): FunctionComponent<QueryBuilderOperationParamEditorProps> {\n if (paramDef.editor) {\n return paramDef.editor;\n }\n\n if (paramDef.options) {\n return SelectInputParamEditor;\n }\n\n switch (paramDef.type) {\n case 'boolean':\n return BoolInputParamEditor;\n case 'number':\n case 'string':\n default:\n return SimpleInputParamEditor;\n }\n}\n\nfunction SimpleInputParamEditor(props: QueryBuilderOperationParamEditorProps) {\n return (\n <AutoSizeInput\n id={getOperationParamId(props.operationId, props.index)}\n defaultValue={props.value?.toString()}\n minWidth={props.paramDef.minWidth}\n placeholder={props.paramDef.placeholder}\n title={props.paramDef.description}\n maxWidth={(props.paramDef.minWidth || 20) * 3}\n onCommitChange={(evt) => {\n props.onChange(props.index, evt.currentTarget.value);\n if (props.paramDef.runQueryOnEnter && evt.type === 'keydown') {\n props.onRunQuery();\n }\n }}\n />\n );\n}\n\nfunction BoolInputParamEditor(props: QueryBuilderOperationParamEditorProps) {\n return (\n <Checkbox\n id={getOperationParamId(props.operationId, props.index)}\n value={Boolean(props.value)}\n onChange={(evt) => props.onChange(props.index, evt.currentTarget.checked)}\n />\n );\n}\n\nfunction SelectInputParamEditor({\n paramDef,\n value,\n index,\n operationId,\n onChange,\n}: QueryBuilderOperationParamEditorProps) {\n const styles = useStyles2(getStyles);\n let selectOptions = paramDef.options as SelectableValue[];\n\n if (!selectOptions[0]?.label) {\n selectOptions = paramDef.options!.map((option) => ({\n label: option.toString(),\n value: option,\n }));\n }\n\n let valueOption = selectOptions.find((x) => x.value === value) ?? toOption(value as string);\n\n // If we have optional options param and don't have value, we want to render button with which we add optional options.\n // This makes it easier to understand what needs to be selected and what is optional.\n if (!value && paramDef.optional) {\n return (\n <div className={styles.optionalParam}>\n <Button\n size=\"sm\"\n variant=\"secondary\"\n title={`Add ${paramDef.name}`}\n icon=\"plus\"\n onClick={() => onChange(index, selectOptions[0].value)}\n >\n {paramDef.name}\n </Button>\n </div>\n );\n }\n\n return (\n <EditorStack gap={0.5} direction=\"row\" alignItems=\"center\">\n <Select\n id={getOperationParamId(operationId, index)}\n value={valueOption}\n options={selectOptions}\n placeholder={paramDef.placeholder}\n allowCustomValue={true}\n onChange={(value) => onChange(index, value.value!)}\n width={paramDef.minWidth || 'auto'}\n />\n {paramDef.optional && (\n <Button\n data-testid={`operations.${index}.remove-param`}\n size=\"sm\"\n fill=\"text\"\n icon=\"times\"\n variant=\"secondary\"\n title={`Remove ${paramDef.name}`}\n onClick={() => onChange(index, '')}\n />\n )}\n </EditorStack>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n optionalParam: css({\n marginTop: theme.spacing(1),\n }),\n };\n};\n\nexport function getOperationParamId(operationId: string, paramIndex: number) {\n return `operations.${operationId}.param.${paramIndex}`;\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport { type DraggableProvided } from '@hello-pangea/dnd';\nimport { Button, Icon, Tooltip, useTheme2 } from '@grafana/ui';\nimport { css, cx } from '@emotion/css';\nimport { type DataSourceApi, type GrafanaTheme2, type TimeRange } from '@grafana/data';\nimport { OperationHeader } from './OperationHeader';\nimport {\n type QueryBuilderOperation,\n type QueryBuilderOperationDefinition,\n type QueryBuilderOperationParamDef,\n type QueryBuilderOperationParamValue,\n type VisualQuery,\n type VisualQueryModeller,\n} from '../types';\nimport { getOperationParamEditor, getOperationParamId } from './OperationParamEditor';\nimport { v4 } from 'uuid';\nimport { EditorStack } from '../../QueryEditor';\n\ntype Props = {\n provided: DraggableProvided;\n isConflicting: boolean;\n index: number;\n operation: QueryBuilderOperation;\n definition: QueryBuilderOperationDefinition;\n queryModeller: VisualQueryModeller;\n query: VisualQuery;\n onChange: (index: number, update: QueryBuilderOperation) => void;\n onRemove: (index: number) => void;\n onToggle: (index: number) => void;\n onRunQuery: () => void;\n datasource: DataSourceApi;\n flash?: boolean;\n highlight?: boolean;\n timeRange?: TimeRange;\n};\n\nexport function OperationEditorBody({\n provided,\n flash,\n isConflicting,\n highlight,\n index,\n queryModeller,\n onChange,\n onRemove,\n onToggle,\n operation,\n definition,\n query,\n timeRange,\n onRunQuery,\n datasource,\n}: Props) {\n const theme = useTheme2();\n const styles = getStyles(theme, isConflicting);\n const shouldFlash = useFlash(flash);\n const { current: id } = useRef(v4());\n\n const onParamValueChanged = (paramIdx: number, value: QueryBuilderOperationParamValue) => {\n const update: QueryBuilderOperation = { ...operation, params: [...operation.params] };\n update.params[paramIdx] = value;\n callParamChangedThenOnChange(definition, update, index, paramIdx, onChange);\n };\n\n const onAddRestParam = () => {\n const update: QueryBuilderOperation = { ...operation, params: [...operation.params, ''] };\n callParamChangedThenOnChange(definition, update, index, operation.params.length, onChange);\n };\n\n const onRemoveRestParam = (paramIdx: number) => {\n const update: QueryBuilderOperation = {\n ...operation,\n params: [...operation.params.slice(0, paramIdx), ...operation.params.slice(paramIdx + 1)],\n };\n callParamChangedThenOnChange(definition, update, index, paramIdx, onChange);\n };\n\n // Handle adding button for rest params\n let restParam: React.ReactNode | undefined;\n if (definition.params.length > 0) {\n const lastParamDef = definition.params[definition.params.length - 1];\n if (lastParamDef.restParam) {\n restParam = renderAddRestParamButton(lastParamDef, onAddRestParam, index, operation.params.length, styles);\n }\n }\n\n return (\n <div\n className={cx(styles.card, {\n [styles.cardHighlight]: shouldFlash || highlight,\n [styles.cardError]: isConflicting,\n [styles.disabled]: operation.disabled,\n })}\n ref={provided.innerRef}\n {...provided.draggableProps}\n data-testid={`operations.${index}.wrapper`}\n >\n <OperationHeader\n operation={operation}\n dragHandleProps={provided.dragHandleProps}\n definition={definition}\n index={index}\n onChange={onChange}\n onRemove={onRemove}\n onToggle={onToggle}\n queryModeller={queryModeller}\n />\n <div className={styles.body}>\n {operation.params.map((param, paramIndex) => {\n const paramDef = definition.params[Math.min(definition.params.length - 1, paramIndex)];\n const Editor = getOperationParamEditor(paramDef);\n\n return (\n <div className={styles.paramRow} key={`${paramIndex}-1`}>\n {!paramDef.hideName && (\n <div className={styles.paramName}>\n <label htmlFor={getOperationParamId(id, paramIndex)}>{paramDef.name}</label>\n {paramDef.description && (\n <Tooltip placement=\"top\" content={paramDef.description} theme=\"info\">\n <Icon name=\"info-circle\" size=\"sm\" className={styles.infoIcon} />\n </Tooltip>\n )}\n </div>\n )}\n <div className={styles.paramValue}>\n <EditorStack gap={0.5} direction=\"row\" alignItems=\"center\" wrap={false}>\n <Editor\n index={paramIndex}\n paramDef={paramDef}\n value={operation.params[paramIndex]}\n operation={operation}\n operationId={id}\n onChange={onParamValueChanged}\n onRunQuery={onRunQuery}\n query={query}\n datasource={datasource}\n timeRange={timeRange}\n queryModeller={queryModeller}\n />\n {paramDef.restParam && (operation.params.length > definition.params.length || paramDef.optional) && (\n <Button\n data-testid={`operations.${index}.remove-rest-param`}\n size=\"sm\"\n fill=\"text\"\n icon=\"times\"\n variant=\"secondary\"\n title={`Remove ${paramDef.name}`}\n onClick={() => onRemoveRestParam(paramIndex)}\n />\n )}\n </EditorStack>\n </div>\n </div>\n );\n })}\n </div>\n {restParam}\n {index < query.operations.length - 1 && (\n <div className={styles.arrow}>\n <div className={styles.arrowLine} />\n <div className={styles.arrowArrow} />\n </div>\n )}\n </div>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2, isConflicting: boolean) => {\n return {\n cardWrapper: css({\n alignItems: 'stretch',\n }),\n error: css({\n marginBottom: theme.spacing(1),\n }),\n card: css({\n background: theme.colors.background.primary,\n border: `1px solid ${theme.colors.border.medium}`,\n cursor: 'grab',\n borderRadius: theme.shape.radius.default,\n position: 'relative',\n transition: 'all 0.5s ease-in 0s',\n height: isConflicting ? 'auto' : '100%',\n }),\n disabled: css({\n opacity: 0.5,\n transition: 'none',\n }),\n cardError: css({\n boxShadow: `0px 0px 4px 0px ${theme.colors.warning.main}`,\n border: `1px solid ${theme.colors.warning.main}`,\n }),\n cardHighlight: css({\n boxShadow: `0px 0px 4px 0px ${theme.colors.primary.border}`,\n border: `1px solid ${theme.colors.primary.border}`,\n }),\n infoIcon: css({\n marginLeft: theme.spacing(0.5),\n color: theme.colors.text.secondary,\n ':hover': {\n color: theme.colors.text.primary,\n },\n }),\n body: css({\n margin: theme.spacing(1, 1, 0.5, 1),\n display: 'table',\n }),\n paramRow: css({\n label: 'paramRow',\n display: 'table-row',\n verticalAlign: 'middle',\n }),\n paramName: css({\n display: 'table-cell',\n padding: theme.spacing(0, 1, 0, 0),\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n verticalAlign: 'middle',\n height: '32px',\n }),\n paramValue: css({\n label: 'paramValue',\n display: 'table-cell',\n verticalAlign: 'middle',\n }),\n restParam: css({\n padding: theme.spacing(0, 1, 1, 1),\n }),\n arrow: css({\n position: 'absolute',\n top: '0',\n right: '-18px',\n display: 'flex',\n }),\n arrowLine: css({\n height: '2px',\n width: '8px',\n backgroundColor: theme.colors.border.strong,\n position: 'relative',\n top: '14px',\n }),\n arrowArrow: css({\n width: 0,\n height: 0,\n borderTop: `5px solid transparent`,\n borderBottom: `5px solid transparent`,\n borderLeft: `7px solid ${theme.colors.border.strong}`,\n position: 'relative',\n top: '10px',\n }),\n };\n};\n\n/**\n * When flash is switched on makes sure it is switched of right away, so we just flash the highlight and then fade\n * out.\n * @param flash\n */\nfunction useFlash(flash?: boolean) {\n const [keepFlash, setKeepFlash] = useState(true);\n useEffect(() => {\n let t: ReturnType<typeof setTimeout>;\n if (flash) {\n t = setTimeout(() => {\n setKeepFlash(false);\n }, 1000);\n } else {\n setKeepFlash(true);\n }\n\n return () => clearTimeout(t);\n }, [flash]);\n\n return keepFlash && flash;\n}\n\nfunction callParamChangedThenOnChange(\n def: QueryBuilderOperationDefinition,\n operation: QueryBuilderOperation,\n operationIndex: number,\n paramIndex: number,\n onChange: (index: number, update: QueryBuilderOperation) => void\n) {\n if (def.paramChangedHandler) {\n onChange(operationIndex, def.paramChangedHandler(paramIndex, operation, def));\n } else {\n onChange(operationIndex, operation);\n }\n}\n\nfunction renderAddRestParamButton(\n paramDef: QueryBuilderOperationParamDef,\n onAddRestParam: () => void,\n operationIndex: number,\n paramIndex: number,\n styles: OperationEditorStyles\n) {\n return (\n <div className={styles.restParam} key={`${paramIndex}-2`}>\n <Button\n size=\"sm\"\n icon=\"plus\"\n title={`Add ${paramDef.name}`.trimEnd()}\n variant=\"secondary\"\n onClick={onAddRestParam}\n data-testid={`operations.${operationIndex}.add-rest-param`}\n >\n {paramDef.name}\n </Button>\n </div>\n );\n}\n\ntype OperationEditorStyles = ReturnType<typeof getStyles>;\n","import { css, cx } from '@emotion/css';\nimport React from 'react';\nimport { Draggable } from '@hello-pangea/dnd';\n\nimport { type DataSourceApi, type GrafanaTheme2, type TimeRange } from '@grafana/data';\nimport { InlineField, useTheme2 } from '@grafana/ui';\n\nimport { type QueryBuilderOperation, type VisualQuery, type VisualQueryModeller } from '../types';\nimport { OperationEditorBody } from './OperationEditorBody';\n\ninterface Props<T extends VisualQuery> {\n operation: QueryBuilderOperation;\n index: number;\n query: T;\n datasource: DataSourceApi;\n queryModeller: VisualQueryModeller;\n onChange: (index: number, update: QueryBuilderOperation) => void;\n onRemove: (index: number) => void;\n onToggle: (index: number) => void;\n onRunQuery: () => void;\n flash?: boolean;\n highlight?: boolean;\n timeRange?: TimeRange;\n isConflictingOperation?: (operation: QueryBuilderOperation, otherOperations: QueryBuilderOperation[]) => boolean;\n}\n\nexport function OperationEditor<T extends VisualQuery>({\n operation,\n index,\n onRemove,\n onToggle,\n onChange,\n onRunQuery,\n queryModeller,\n query,\n datasource,\n flash,\n highlight,\n timeRange,\n isConflictingOperation,\n}: Props<T>) {\n const def = queryModeller.getOperationDefinition(operation.id);\n\n const theme = useTheme2();\n const isConflicting = isConflictingOperation ? isConflictingOperation(operation, query.operations) : false;\n const styles = getStyles(theme, isConflicting);\n\n if (!def) {\n return <span>Operation {operation.id} not found</span>;\n }\n\n const isInvalid = (isDragging: boolean) => {\n if (isDragging) {\n return undefined;\n }\n\n return isConflicting ? true : undefined;\n };\n\n return (\n <Draggable draggableId={`operation-${index}`} index={index}>\n {(provided, snapshot) => (\n <InlineField\n error={'You have conflicting label filters'}\n invalid={isInvalid(snapshot.isDragging)}\n className={cx(styles.error, styles.cardWrapper)}\n >\n <OperationEditorBody\n provided={provided}\n flash={flash}\n highlight={highlight}\n isConflicting={isConflicting}\n index={index}\n operation={operation}\n definition={def}\n onChange={onChange}\n onRemove={onRemove}\n onToggle={onToggle}\n queryModeller={queryModeller}\n query={query}\n timeRange={timeRange}\n onRunQuery={onRunQuery}\n datasource={datasource}\n />\n </InlineField>\n )}\n </Draggable>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2, isConflicting: boolean) => {\n return {\n cardWrapper: css({\n alignItems: 'stretch',\n }),\n error: css({\n marginBottom: theme.spacing(1),\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport React, { useState } from 'react';\nimport { DragDropContext, Droppable, type DropResult } from '@hello-pangea/dnd';\nimport { useMountedState, usePrevious } from 'react-use';\n\nimport { type DataSourceApi, type GrafanaTheme2, type TimeRange } from '@grafana/data';\nimport { Button, Cascader, type CascaderOption, useStyles2 } from '@grafana/ui';\n\nimport { OperationEditor } from './OperationEditor';\nimport { type QueryBuilderOperation, type VisualQuery, type VisualQueryModeller } from '../types';\nimport { EditorStack } from '../../QueryEditor';\n\nexport interface Props<T extends VisualQuery> {\n query: T;\n datasource: DataSourceApi;\n onChange: (query: T) => void;\n onRunQuery: () => void;\n queryModeller: VisualQueryModeller;\n explainMode?: boolean;\n highlightedOp?: QueryBuilderOperation;\n timeRange?: TimeRange;\n isConflictingOperation?: (operation: QueryBuilderOperation, otherOperations: QueryBuilderOperation[]) => boolean;\n}\n\nexport function OperationList<T extends VisualQuery>({\n query,\n datasource,\n queryModeller,\n onChange,\n onRunQuery,\n highlightedOp,\n timeRange,\n isConflictingOperation,\n}: Props<T>) {\n const styles = useStyles2(getStyles);\n const { operations } = query;\n\n const opsToHighlight = useOperationsHighlight(operations);\n\n const [cascaderOpen, setCascaderOpen] = useState(false);\n\n const onOperationChange = (index: number, update: QueryBuilderOperation) => {\n const updatedList = [...operations];\n updatedList.splice(index, 1, update);\n onChange({ ...query, operations: updatedList });\n };\n\n const onRemove = (index: number) => {\n const updatedList = [...operations.slice(0, index), ...operations.slice(index + 1)];\n onChange({ ...query, operations: updatedList });\n };\n\n const onToggle = (index: number) => {\n onOperationChange(index, { ...operations[index], disabled: !operations[index].disabled });\n };\n\n const addOptions: CascaderOption[] = queryModeller.getCategories().map((category) => {\n return {\n value: category,\n label: category,\n items: queryModeller.getOperationsForCategory(category).map((operation) => ({\n value: operation.id,\n label: operation.name,\n isLeaf: true,\n })),\n };\n });\n\n const onAddOperation = (value: string) => {\n const operationDef = queryModeller.getOperationDefinition(value);\n if (!operationDef) {\n return;\n }\n onChange(operationDef.addOperationHandler(operationDef, query, queryModeller));\n setCascaderOpen(false);\n };\n\n const onDragEnd = (result: DropResult) => {\n if (!result.destination) {\n return;\n }\n\n const updatedList = [...operations];\n const element = updatedList[result.source.index];\n updatedList.splice(result.source.index, 1);\n updatedList.splice(result.destination.index, 0, element);\n onChange({ ...query, operations: updatedList });\n };\n\n const onCascaderBlur = () => {\n setCascaderOpen(false);\n };\n\n return (\n <EditorStack gap={1} direction=\"column\">\n <EditorStack gap={1}>\n {operations.length > 0 && (\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId=\"sortable-field-mappings\" direction=\"horizontal\">\n {(provided) => (\n <div className={styles.operationList} ref={provided.innerRef} {...provided.droppableProps}>\n {operations.map((op, index) => {\n return (\n <OperationEditor\n key={op.id + JSON.stringify(op.params) + index}\n queryModeller={queryModeller}\n index={index}\n operation={op}\n query={query}\n datasource={datasource}\n onChange={onOperationChange}\n onRemove={onRemove}\n onToggle={onToggle}\n onRunQuery={onRunQuery}\n flash={opsToHighlight[index]}\n highlight={highlightedOp === op}\n timeRange={timeRange}\n isConflictingOperation={isConflictingOperation}\n />\n );\n })}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n )}\n <div className={styles.addButton}>\n {cascaderOpen ? (\n <Cascader\n options={addOptions}\n onSelect={onAddOperation}\n onBlur={onCascaderBlur}\n autoFocus={true}\n alwaysOpen={true}\n hideActiveLevelLabel={true}\n placeholder={'Search'}\n />\n ) : (\n <Button icon={'plus'} variant={'secondary'} onClick={() => setCascaderOpen(true)} title={'Add operation'}>\n Operations\n </Button>\n )}\n </div>\n </EditorStack>\n </EditorStack>\n );\n}\n\n/**\n * Returns indexes of operations that should be highlighted. We check the diff of operations added but at the same time\n * we want to highlight operations only after the initial render, so we check for mounted state and calculate the diff\n * only after.\n * @param operations\n */\nfunction useOperationsHighlight(operations: QueryBuilderOperation[]) {\n const isMounted = useMountedState();\n const prevOperations = usePrevious(operations);\n\n if (!isMounted()) {\n return operations.map(() => false);\n }\n\n if (!prevOperations) {\n return operations.map(() => true);\n }\n\n let newOps: boolean[] = [];\n\n if (prevOperations.length - 1 === operations.length && operations.every((op) => prevOperations.includes(op))) {\n // In case we remove one op and does not change any ops then don't highlight anything.\n return operations.map(() => false);\n }\n if (prevOperations.length + 1 === operations.length && prevOperations.every((op) => operations.includes(op))) {\n // If we add a single op just find it and highlight just that.\n const newOp = operations.find((op) => !prevOperations.includes(op));\n newOps = operations.map((op) => {\n return op === newOp;\n });\n } else {\n // Default diff of all ops.\n newOps = operations.map((op, index) => {\n return !isSameOp(op.id, prevOperations[index]?.id);\n });\n }\n return newOps;\n}\n\nfunction isSameOp(op1?: string, op2?: string) {\n return op1 === op2 || `__${op1}_by` === op2 || op1 === `__${op2}_by`;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n heading: css({\n label: 'heading',\n fontSize: 12,\n fontWeight: theme.typography.fontWeightMedium,\n marginBottom: 0,\n }),\n operationList: css({\n label: 'operationList',\n display: 'flex',\n flexWrap: 'wrap',\n gap: theme.spacing(2),\n }),\n addButton: css({\n label: 'addButton',\n width: 126,\n paddingBottom: theme.spacing(1),\n }),\n };\n};\n","import { css, cx } from '@emotion/css';\nimport Prism, { type Grammar } from 'prismjs';\nimport React from 'react';\n\nimport { type GrafanaTheme2, textUtil } from '@grafana/data';\nimport { useTheme2 } from '@grafana/ui';\n\ninterface Props {\n query: string;\n language: {\n grammar: Grammar;\n name: string;\n };\n className?: string;\n}\nexport function RawQuery({ query, language, className }: Props) {\n const theme = useTheme2();\n const styles = getStyles(theme);\n const highlighted = Prism.highlight(query, language.grammar, language.name);\n\n return (\n <div\n className={cx(styles.editorField, 'prism-syntax-highlight', className)}\n aria-label=\"selector\"\n dangerouslySetInnerHTML={{ __html: textUtil.sanitize(highlighted) }}\n />\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n editorField: css({\n fontFamily: theme.typography.fontFamilyMonospace,\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n };\n};\n","import { type Grammar } from 'prismjs';\nimport React from 'react';\n\nimport { OperationExplainedBox } from './OperationExplainedBox';\nimport { RawQuery } from './RawQuery';\nimport { type QueryBuilderOperation, type VisualQuery, type VisualQueryModeller } from '../types';\n\ninterface Props<T extends VisualQuery> {\n query: T;\n queryModeller: VisualQueryModeller;\n explainMode?: boolean;\n stepNumber: number;\n language: {\n grammar: Grammar;\n name: string;\n };\n onMouseEnter?: (op: QueryBuilderOperation, index: number) => void;\n onMouseLeave?: (op: QueryBuilderOperation, index: number) => void;\n}\n\nexport function OperationListExplained<T extends VisualQuery>({\n query,\n queryModeller,\n stepNumber,\n language,\n onMouseEnter,\n onMouseLeave,\n}: Props<T>) {\n return (\n <>\n {query.operations.map((op, index) => {\n const def = queryModeller.getOperationDefinition(op.id);\n if (!def) {\n return `Operation ${op.id} not found`;\n }\n const title = def.renderer(op, def, queryModeller.innerQueryPlaceholder);\n const body = def.explainHandler ? def.explainHandler(op, def) : (def.documentation ?? 'no docs');\n\n return (\n <div\n key={index}\n onMouseEnter={() => onMouseEnter?.(op, index)}\n onMouseLeave={() => onMouseLeave?.(op, index)}\n >\n <OperationExplainedBox\n stepNumber={index + stepNumber}\n title={<RawQuery query={title} language={language} />}\n markdown={body}\n />\n </div>\n );\n })}\n </>\n );\n}\n","import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\nimport { EditorStack } from '../../QueryEditor';\n\nexport function OperationsEditorRow({ children }: React.PropsWithChildren<{}>) {\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.root}>\n <EditorStack gap={1}>{children}</EditorStack>\n </div>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n root: css({\n padding: theme.spacing(1, 1, 0, 1),\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport React, { useState, useEffect } from 'react';\n\nimport { type DataSourceApi, type GrafanaTheme2, type PanelData, type QueryHint, type DataQuery } from '@grafana/data';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Button, Tooltip, useStyles2 } from '@grafana/ui';\n\nimport { type VisualQuery, type VisualQueryModeller } from '../types';\n\ninterface Props<TVisualQuery extends VisualQuery, TDataQuery extends DataQuery> {\n query: TVisualQuery;\n datasource: DataSourceApi<TDataQuery>;\n queryModeller: VisualQueryModeller;\n buildVisualQueryFromString: (queryString: string) => { query: TVisualQuery };\n buildDataQueryFromQueryString: (queryString: string) => TDataQuery;\n buildQueryStringFromDataQuery: (dataQuery: TDataQuery) => string;\n onChange: (update: TVisualQuery) => void;\n data?: PanelData;\n}\n\nexport const QueryBuilderHints = <TVisualQuery extends VisualQuery, TDataQuery extends DataQuery>({\n datasource,\n query: visualQuery,\n onChange,\n data,\n queryModeller,\n buildVisualQueryFromString,\n buildDataQueryFromQueryString,\n buildQueryStringFromDataQuery,\n}: Props<TVisualQuery, TDataQuery>) => {\n const [hints, setHints] = useState<QueryHint[]>([]);\n const styles = useStyles2(getStyles);\n\n useEffect(() => {\n const dataQuery = buildDataQueryFromQueryString(queryModeller.renderQuery(visualQuery));\n // For now show only actionable hints\n const hints = datasource.getQueryHints?.(dataQuery, data?.series || []).filter((hint) => hint.fix?.action);\n setHints(hints ?? []);\n }, [datasource, visualQuery, data, queryModeller, buildDataQueryFromQueryString]);\n\n return (\n <>\n {hints.length > 0 && (\n <div className={styles.container}>\n {hints.map((hint) => {\n return (\n <Tooltip content={`${hint.label} ${hint.fix?.label}`} key={hint.type}>\n <Button\n onClick={() => {\n reportInteraction('grafana_query_builder_hints_clicked', {\n hint: hint.type,\n datasourceType: datasource.type,\n });\n\n if (hint?.fix?.action) {\n const dataQuery = buildDataQueryFromQueryString(queryModeller.renderQuery(visualQuery));\n const newQuery = datasource.modifyQuery?.(dataQuery, hint.fix.action);\n if (newQuery) {\n const newVisualQuery = buildVisualQueryFromString(\n buildQueryStringFromDataQuery(newQuery) ?? ''\n );\n return onChange(newVisualQuery.query);\n }\n }\n }}\n fill=\"outline\"\n size=\"sm\"\n className={styles.hint}\n >\n hint: {hint.fix?.title || hint.fix?.action?.type.toLowerCase().replace('_', ' ')}\n </Button>\n </Tooltip>\n );\n })}\n </div>\n )}\n </>\n );\n};\n\nQueryBuilderHints.displayName = 'QueryBuilderHints';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n container: css`\n display: flex;\n align-items: start;\n `,\n hint: css`\n margin-right: ${theme.spacing(1)};\n `,\n };\n};\n","import React from 'react';\n\nimport { RadioButtonGroup } from '@grafana/ui';\n\nimport { QueryEditorMode } from '../types';\n\ninterface Props {\n mode: QueryEditorMode;\n onChange: (mode: QueryEditorMode) => void;\n}\n\nconst editorModes = [\n { label: 'Builder', value: QueryEditorMode.Builder },\n { label: 'Code', value: QueryEditorMode.Code },\n];\n\nexport function QueryEditorModeToggle({ mode, onChange }: Props) {\n return (\n <div data-testid={'QueryEditorModeToggle'}>\n <RadioButtonGroup options={editorModes} size=\"sm\" value={mode} onChange={onChange} />\n </div>\n );\n}\n","import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React, { type HTMLProps, useRef } from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Switch, useStyles2 } from '@grafana/ui';\n\nimport { EditorStack } from '../../QueryEditor';\n\ninterface Props extends Omit<HTMLProps<HTMLInputElement>, 'value' | 'ref'> {\n value?: boolean;\n label: string;\n}\n\nexport function QueryHeaderSwitch({ label, ...inputProps }: Props) {\n const dashedLabel = label.replace(' ', '-');\n const switchIdRef = useRef(uniqueId(`switch-${dashedLabel}`));\n const styles = useStyles2(getStyles);\n\n return (\n <EditorStack gap={1}>\n <label htmlFor={switchIdRef.current} className={styles.switchLabel}>\n {label}\n </label>\n <Switch {...inputProps} id={switchIdRef.current} />\n </EditorStack>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n switchLabel: css({\n color: theme.colors.text.secondary,\n cursor: 'pointer',\n fontSize: theme.typography.bodySmall.fontSize,\n '&:hover': {\n color: theme.colors.text.primary,\n },\n }),\n };\n};\n","import { css } from '@emotion/css';\nimport React from 'react';\nimport { useToggle } from 'react-use';\n\nimport { getValueFormat, type GrafanaTheme2 } from '@grafana/data';\nimport { config } from '@grafana/runtime';\nimport { Collapse, Icon, Tooltip, useStyles2 } from '@grafana/ui';\n\nimport { type QueryStats } from '../types';\nimport { EditorStack } from '../../QueryEditor';\n\ninterface Props {\n title: string;\n collapsedInfo: string[];\n queryStats?: QueryStats | null;\n}\n\nexport function QueryOptionGroup({ title, children, collapsedInfo, queryStats }: React.PropsWithChildren<Props>) {\n const [isOpen, toggleOpen] = useToggle(false);\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.wrapper}>\n <Collapse\n className={styles.collapse}\n collapsible\n isOpen={isOpen}\n onToggle={toggleOpen}\n label={\n <EditorStack gap={0}>\n <h6 className={styles.title}>{title}</h6>\n {!isOpen && (\n <div className={styles.description}>\n {collapsedInfo.map((x, i) => (\n <span key={i}>{x}</span>\n ))}\n </div>\n )}\n </EditorStack>\n }\n >\n <div className={styles.body}>{children}</div>\n </Collapse>\n {/**TODO: This is Loki logic that should eventually be moved to Loki */}\n {queryStats && config.featureToggles.lokiQuerySplitting && (\n <Tooltip content=\"Note: the query will be split into multiple parts and executed in sequence. Query limits will only apply each individual part.\">\n <Icon tabIndex={0} name=\"info-circle\" className={styles.tooltip} size=\"sm\" />\n </Tooltip>\n )}\n\n {queryStats && <p className={styles.stats}>{generateQueryStats(queryStats)}</p>}\n </div>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n collapse: css({\n backgroundColor: 'unset',\n border: 'unset',\n marginBottom: 0,\n\n ['> button']: {\n padding: theme.spacing(0, 1),\n },\n }),\n wrapper: css({\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n }),\n title: css({\n flexGrow: 1,\n overflow: 'hidden',\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.fontWeightMedium,\n margin: 0,\n }),\n description: css({\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n fontWeight: theme.typography.bodySmall.fontWeight,\n paddingLeft: theme.spacing(2),\n gap: theme.spacing(2),\n display: 'flex',\n }),\n body: css({\n display: 'flex',\n gap: theme.spacing(2),\n flexWrap: 'wrap',\n }),\n stats: css({\n margin: '0px',\n color: theme.colors.text.secondary,\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n tooltip: css({\n marginRight: theme.spacing(0.25),\n }),\n };\n};\n\nconst generateQueryStats = (queryStats: QueryStats) => {\n if (queryStats.message) {\n return queryStats.message;\n }\n\n return `This query will process approximately ${convertUnits(queryStats)}.`;\n};\n\nconst convertUnits = (queryStats: QueryStats): string => {\n const { text, suffix } = getValueFormat('bytes')(queryStats.bytes, 1);\n return text + suffix;\n};\n"],"names":["React","useState","useEffect","Input","GrafanaSegment","getStyles","css","memo","useTheme2","ClickOutsideWrapper","Calendar","Icon","cx","Badge","PluginSignatureStatus","PureComponent","__publicField","getDataSourceSrv","selectors","Select","HorizontalGroup","LegacyForms","stylesFactory","Button","DataLinkInput","usePrevious","DataLinkBuiltInVars","VariableOrigin","QueryEditorPropertyType","QueryEditorExpressionType","isEmpty","OperatorType","MacroType","TokenType","StatementPosition","SuggestionKind","CompletionItemPriority","CompletionItemKind","CompletionItemInsertTextRule","SQLEditorMode","getTemplateSrv","m","attachDebugger","createLogger","useRef","useMemo","v4","id","useCallback","CodeEditor","Registry","_a","QueryFormat","EditorMode","toOptionFromData","Stack","EditorList","useStyles2","Children","isValidElement","cloneElement","toOption","EditorField","ReactUtils","Tooltip","Space","Field","EditorRow","EditorRows","Switch","BaseSelectContainer","Modal","useAsync","editorModes","useCopyToClipboard","InlineSwitch","RadioButtonGroup","sqlFormatter","getValueFormat","useAsyncFn","useDebounce","Spinner","formattedValueToString","IconButton","useMeasure","AutoSizer","uniqueId","_b","Utils","BasicConfig","DateTimePicker","dateTime","customOperators","isString","config","Query","Builder","injectGlobal","DataSourceWithBackend","DataFrameView","lastValueFrom","getBackendSrv","map","toDataQueryResponse","catchError","of","InlineField","AuthMethod","SecretInput","Checkbox","SecretTextArea","TLSClientAuth","TLSClientAuthComponent","InlineFieldRow","headers","header","TagsInput","QueryEditorMode","item","uniqBy","change","isEqual","renderMarkdown","usePopperTooltip","Portal","AutoSizeInput","value","Draggable","DragDropContext","Droppable","Cascader","useMountedState","Prism","textUtil","hints","_c","reportInteraction","useToggle","Collapse"],"mappings":"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"}