@gravity-ui/querieskit 1.5.1 → 1.7.0

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 (344) hide show
  1. package/README.md +62 -3
  2. package/build/cjs/components/QueryGraph/QueryGraph.css +70 -0
  3. package/build/cjs/components/QueryGraph/QueryGraph.css.map +1 -0
  4. package/build/cjs/components/QueryGraph/QueryGraph.d.ts +4 -0
  5. package/build/cjs/components/QueryGraph/QueryGraph.js +517 -0
  6. package/build/cjs/components/QueryGraph/QueryGraph.js.map +1 -0
  7. package/build/cjs/components/QueryGraph/QueryGraph.stories.d.ts +16 -0
  8. package/build/cjs/components/QueryGraph/QueryGraph.stories.js +339 -0
  9. package/build/cjs/components/QueryGraph/QueryGraph.stories.js.map +1 -0
  10. package/build/cjs/components/QueryGraph/helpers/layout.d.ts +9 -0
  11. package/build/cjs/components/QueryGraph/helpers/layout.js +138 -0
  12. package/build/cjs/components/QueryGraph/helpers/layout.js.map +1 -0
  13. package/build/cjs/components/QueryGraph/helpers/presentation.d.ts +18 -0
  14. package/build/cjs/components/QueryGraph/helpers/presentation.js +44 -0
  15. package/build/cjs/components/QueryGraph/helpers/presentation.js.map +1 -0
  16. package/build/cjs/components/QueryGraph/i18n/dicts.d.ts +55 -0
  17. package/build/cjs/components/QueryGraph/i18n/dicts.js +14 -0
  18. package/build/cjs/components/QueryGraph/i18n/dicts.js.map +1 -0
  19. package/build/cjs/components/QueryGraph/i18n/en.json +26 -0
  20. package/build/cjs/components/QueryGraph/i18n/index.d.ts +6 -0
  21. package/build/cjs/components/QueryGraph/i18n/index.js +11 -0
  22. package/build/cjs/components/QueryGraph/i18n/index.js.map +1 -0
  23. package/build/cjs/components/QueryGraph/i18n/ru.json +26 -0
  24. package/build/cjs/components/QueryGraph/index.d.ts +2 -0
  25. package/build/cjs/components/QueryGraph/index.js +13 -0
  26. package/build/cjs/components/QueryGraph/index.js.map +1 -0
  27. package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.d.ts +24 -0
  28. package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.js +309 -0
  29. package/build/cjs/components/QueryGraph/internal/QueryGraphCanvasBlock.js.map +1 -0
  30. package/build/cjs/components/QueryGraph/internal/QueryGraphPopup.d.ts +5 -0
  31. package/build/cjs/components/QueryGraph/internal/QueryGraphPopup.js +242 -0
  32. package/build/cjs/components/QueryGraph/internal/QueryGraphPopup.js.map +1 -0
  33. package/build/cjs/components/QueryGraph/internal/queryGraphIcons.d.ts +12 -0
  34. package/build/cjs/components/QueryGraph/internal/queryGraphIcons.js +161 -0
  35. package/build/cjs/components/QueryGraph/internal/queryGraphIcons.js.map +1 -0
  36. package/build/cjs/components/QueryGraph/internal/useQueryGraphLayout.d.ts +22 -0
  37. package/build/cjs/components/QueryGraph/internal/useQueryGraphLayout.js +60 -0
  38. package/build/cjs/components/QueryGraph/internal/useQueryGraphLayout.js.map +1 -0
  39. package/build/cjs/components/QueryGraph/story/largeGraphData.d.ts +3 -0
  40. package/build/cjs/components/QueryGraph/story/largeGraphData.js +227 -0
  41. package/build/cjs/components/QueryGraph/story/largeGraphData.js.map +1 -0
  42. package/build/cjs/components/index.d.ts +2 -0
  43. package/build/cjs/components/index.js +9 -1
  44. package/build/cjs/components/index.js.map +1 -1
  45. package/build/cjs/helpers/buildColumnsFromKeys.d.ts +1 -1
  46. package/build/cjs/helpers/buildColumnsFromKeys.js.map +1 -1
  47. package/build/cjs/index.d.ts +1 -0
  48. package/build/cjs/index.js +11 -0
  49. package/build/cjs/index.js.map +1 -1
  50. package/build/cjs/modules/ClustersList/ClustersList.d.ts +1 -1
  51. package/build/cjs/modules/ClustersList/ClustersList.js +4 -3
  52. package/build/cjs/modules/ClustersList/ClustersList.js.map +1 -1
  53. package/build/cjs/modules/HistoryHeader/HistoryHeader.js +4 -3
  54. package/build/cjs/modules/HistoryHeader/HistoryHeader.js.map +1 -1
  55. package/build/cjs/modules/HistoryRow/HistoryRow.js +12 -7
  56. package/build/cjs/modules/HistoryRow/HistoryRow.js.map +1 -1
  57. package/build/cjs/modules/HistorySearchRow/HistorySearchRow.js +8 -5
  58. package/build/cjs/modules/HistorySearchRow/HistorySearchRow.js.map +1 -1
  59. package/build/cjs/modules/HistorySearchRow/helpers/resolveMonacoLanguage.d.ts +1 -1
  60. package/build/cjs/modules/HistorySearchRow/helpers/resolveMonacoLanguage.js +5 -5
  61. package/build/cjs/modules/HistorySearchRow/helpers/resolveMonacoLanguage.js.map +1 -1
  62. package/build/cjs/modules/NavigationDetail/NavigationDetail.d.ts +1 -1
  63. package/build/cjs/modules/NavigationDetail/NavigationDetail.js +2 -2
  64. package/build/cjs/modules/NavigationDetail/NavigationDetail.js.map +1 -1
  65. package/build/cjs/modules/NavigationHeader/NavigationHeader.d.ts +1 -1
  66. package/build/cjs/modules/NavigationHeader/NavigationHeader.js +2 -2
  67. package/build/cjs/modules/NavigationHeader/NavigationHeader.js.map +1 -1
  68. package/build/cjs/modules/NavigationItemsList/NavigationItemsList.d.ts +1 -1
  69. package/build/cjs/modules/NavigationItemsList/NavigationItemsList.js +4 -3
  70. package/build/cjs/modules/NavigationItemsList/NavigationItemsList.js.map +1 -1
  71. package/build/cjs/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.d.ts +1 -1
  72. package/build/cjs/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.js +2 -2
  73. package/build/cjs/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.js.map +1 -1
  74. package/build/cjs/modules/NavigationMeta/NavigationMeta.js +4 -3
  75. package/build/cjs/modules/NavigationMeta/NavigationMeta.js.map +1 -1
  76. package/build/cjs/modules/NavigationMeta/i18n/index.d.ts +2 -2
  77. package/build/cjs/modules/NavigationPreview/NavigationPreview.d.ts +1 -1
  78. package/build/cjs/modules/NavigationPreview/NavigationPreview.js +6 -4
  79. package/build/cjs/modules/NavigationPreview/NavigationPreview.js.map +1 -1
  80. package/build/cjs/modules/NavigationPreview/helpers/buildPreviewColumns.d.ts +1 -1
  81. package/build/cjs/modules/NavigationPreview/helpers/buildPreviewColumns.js.map +1 -1
  82. package/build/cjs/modules/NavigationSchema/NavigationSchema.d.ts +1 -1
  83. package/build/cjs/modules/NavigationSchema/NavigationSchema.js +4 -3
  84. package/build/cjs/modules/NavigationSchema/NavigationSchema.js.map +1 -1
  85. package/build/cjs/modules/NavigationSchema/helpers/buildSchemaColumns.d.ts +1 -1
  86. package/build/cjs/modules/NavigationSchema/helpers/buildSchemaColumns.js.map +1 -1
  87. package/build/cjs/modules/NavigationView/NavigationView.d.ts +1 -1
  88. package/build/cjs/modules/NavigationView/NavigationView.js +4 -3
  89. package/build/cjs/modules/NavigationView/NavigationView.js.map +1 -1
  90. package/build/cjs/modules/NavigationView/helpers/buildViewColumns.d.ts +1 -1
  91. package/build/cjs/modules/NavigationView/helpers/buildViewColumns.js.map +1 -1
  92. package/build/cjs/modules/NavigationView/internal/NavigationViewSectionItem.d.ts +1 -1
  93. package/build/cjs/modules/NavigationView/internal/NavigationViewSectionItem.js +4 -3
  94. package/build/cjs/modules/NavigationView/internal/NavigationViewSectionItem.js.map +1 -1
  95. package/build/cjs/modules/QueriesList/QueriesList.js +2 -2
  96. package/build/cjs/modules/QueriesList/QueriesList.js.map +1 -1
  97. package/build/cjs/modules/QueryProgress/QueryProgress.css +64 -0
  98. package/build/cjs/modules/QueryProgress/QueryProgress.css.map +1 -0
  99. package/build/cjs/modules/QueryProgress/QueryProgress.d.ts +4 -0
  100. package/build/cjs/modules/QueryProgress/QueryProgress.js +135 -0
  101. package/build/cjs/modules/QueryProgress/QueryProgress.js.map +1 -0
  102. package/build/cjs/modules/QueryProgress/QueryProgress.stories.d.ts +7 -0
  103. package/build/cjs/modules/QueryProgress/QueryProgress.stories.js +38 -0
  104. package/build/cjs/modules/QueryProgress/QueryProgress.stories.js.map +1 -0
  105. package/build/cjs/modules/QueryProgress/i18n/dicts.d.ts +25 -0
  106. package/build/cjs/modules/QueryProgress/i18n/dicts.js +14 -0
  107. package/build/cjs/modules/QueryProgress/i18n/dicts.js.map +1 -0
  108. package/build/cjs/modules/QueryProgress/i18n/en.json +11 -0
  109. package/build/cjs/modules/QueryProgress/i18n/index.d.ts +6 -0
  110. package/build/cjs/modules/QueryProgress/i18n/index.js +11 -0
  111. package/build/cjs/modules/QueryProgress/i18n/index.js.map +1 -0
  112. package/build/cjs/modules/QueryProgress/i18n/ru.json +11 -0
  113. package/build/cjs/modules/QueryProgress/index.d.ts +2 -0
  114. package/build/cjs/modules/QueryProgress/index.js +13 -0
  115. package/build/cjs/modules/QueryProgress/index.js.map +1 -0
  116. package/build/cjs/modules/QueryStatistics/i18n/index.d.ts +2 -2
  117. package/build/cjs/modules/RowsList/RowsList.js +4 -3
  118. package/build/cjs/modules/RowsList/RowsList.js.map +1 -1
  119. package/build/cjs/modules/SavedQueryRow/SavedQueryRow.d.ts +2 -2
  120. package/build/cjs/modules/SavedQueryRow/SavedQueryRow.js +6 -4
  121. package/build/cjs/modules/SavedQueryRow/SavedQueryRow.js.map +1 -1
  122. package/build/cjs/modules/SavedQuerySearchRow/SavedQuerySearchRow.d.ts +2 -2
  123. package/build/cjs/modules/SavedQuerySearchRow/SavedQuerySearchRow.js +4 -3
  124. package/build/cjs/modules/SavedQuerySearchRow/SavedQuerySearchRow.js.map +1 -1
  125. package/build/cjs/modules/TutorialRow/TutorialRow.d.ts +4 -2
  126. package/build/cjs/modules/TutorialRow/TutorialRow.js +5 -3
  127. package/build/cjs/modules/TutorialRow/TutorialRow.js.map +1 -1
  128. package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.d.ts +4 -2
  129. package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.js +7 -4
  130. package/build/cjs/modules/TutorialSearchRow/TutorialSearchRow.js.map +1 -1
  131. package/build/cjs/modules/index.d.ts +2 -0
  132. package/build/cjs/modules/index.js +8 -0
  133. package/build/cjs/modules/index.js.map +1 -1
  134. package/build/cjs/types/queryGraph.d.ts +87 -0
  135. package/build/cjs/types/queryGraph.js +6 -0
  136. package/build/cjs/types/queryGraph.js.map +1 -0
  137. package/build/cjs/widgets/DashboardCharts/DashboardCharts.js +8 -6
  138. package/build/cjs/widgets/DashboardCharts/DashboardCharts.js.map +1 -1
  139. package/build/cjs/widgets/DashboardCharts/types.d.ts +3 -3
  140. package/build/cjs/widgets/DashboardCharts/types.js.map +1 -1
  141. package/build/cjs/widgets/QueriesHistory/QueriesHistory.js +2 -2
  142. package/build/cjs/widgets/QueriesHistory/QueriesHistory.js.map +1 -1
  143. package/build/cjs/widgets/QueriesHistory/internal/HistoryRowContent.js +6 -5
  144. package/build/cjs/widgets/QueriesHistory/internal/HistoryRowContent.js.map +1 -1
  145. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.d.ts +1 -1
  146. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.js +13 -9
  147. package/build/cjs/widgets/QueriesNavigation/QueriesNavigation.js.map +1 -1
  148. package/build/cjs/widgets/QueriesNavigation/helpers/createEmptyDetailConfig.js +2 -2
  149. package/build/cjs/widgets/QueriesNavigation/helpers/createEmptyDetailConfig.js.map +1 -1
  150. package/build/cjs/widgets/QueriesNavigation/helpers/createTableDetailConfig.js +8 -5
  151. package/build/cjs/widgets/QueriesNavigation/helpers/createTableDetailConfig.js.map +1 -1
  152. package/build/cjs/widgets/QueryResults/QueryResults.js +2 -2
  153. package/build/cjs/widgets/QueryResults/QueryResults.js.map +1 -1
  154. package/build/cjs/widgets/QueryResults/i18n/index.d.ts +2 -2
  155. package/build/cjs/widgets/QueryResults/internal/QueryResultsSchema.js +4 -3
  156. package/build/cjs/widgets/QueryResults/internal/QueryResultsSchema.js.map +1 -1
  157. package/build/cjs/widgets/SavedQueries/SavedQueries.d.ts +2 -2
  158. package/build/cjs/widgets/SavedQueries/SavedQueries.js +2 -2
  159. package/build/cjs/widgets/SavedQueries/SavedQueries.js.map +1 -1
  160. package/build/cjs/widgets/SavedQueries/SavedQueryRowContent.d.ts +2 -2
  161. package/build/cjs/widgets/SavedQueries/SavedQueryRowContent.js +6 -5
  162. package/build/cjs/widgets/SavedQueries/SavedQueryRowContent.js.map +1 -1
  163. package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.d.ts +3 -3
  164. package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.js +12 -8
  165. package/build/cjs/widgets/TutorialsHistory/TutorialRowContent.js.map +1 -1
  166. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.d.ts +8 -3
  167. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js +19 -7
  168. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
  169. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.stories.d.ts +5 -0
  170. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.stories.js +244 -1
  171. package/build/cjs/widgets/TutorialsHistory/TutorialsHistory.stories.js.map +1 -1
  172. package/build/esm/components/QueryGraph/QueryGraph.css +70 -0
  173. package/build/esm/components/QueryGraph/QueryGraph.css.map +1 -0
  174. package/build/esm/components/QueryGraph/QueryGraph.d.ts +4 -0
  175. package/build/esm/components/QueryGraph/QueryGraph.js +510 -0
  176. package/build/esm/components/QueryGraph/QueryGraph.js.map +1 -0
  177. package/build/esm/components/QueryGraph/QueryGraph.scss +81 -0
  178. package/build/esm/components/QueryGraph/QueryGraph.stories.d.ts +16 -0
  179. package/build/esm/components/QueryGraph/QueryGraph.stories.js +331 -0
  180. package/build/esm/components/QueryGraph/QueryGraph.stories.js.map +1 -0
  181. package/build/esm/components/QueryGraph/helpers/layout.d.ts +9 -0
  182. package/build/esm/components/QueryGraph/helpers/layout.js +128 -0
  183. package/build/esm/components/QueryGraph/helpers/layout.js.map +1 -0
  184. package/build/esm/components/QueryGraph/helpers/presentation.d.ts +18 -0
  185. package/build/esm/components/QueryGraph/helpers/presentation.js +35 -0
  186. package/build/esm/components/QueryGraph/helpers/presentation.js.map +1 -0
  187. package/build/esm/components/QueryGraph/i18n/dicts.d.ts +55 -0
  188. package/build/esm/components/QueryGraph/i18n/dicts.js +7 -0
  189. package/build/esm/components/QueryGraph/i18n/dicts.js.map +1 -0
  190. package/build/esm/components/QueryGraph/i18n/en.json +26 -0
  191. package/build/esm/components/QueryGraph/i18n/index.d.ts +6 -0
  192. package/build/esm/components/QueryGraph/i18n/index.js +4 -0
  193. package/build/esm/components/QueryGraph/i18n/index.js.map +1 -0
  194. package/build/esm/components/QueryGraph/i18n/ru.json +26 -0
  195. package/build/esm/components/QueryGraph/index.d.ts +2 -0
  196. package/build/esm/components/QueryGraph/index.js +2 -0
  197. package/build/esm/components/QueryGraph/index.js.map +1 -0
  198. package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.d.ts +24 -0
  199. package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.js +301 -0
  200. package/build/esm/components/QueryGraph/internal/QueryGraphCanvasBlock.js.map +1 -0
  201. package/build/esm/components/QueryGraph/internal/QueryGraphPopup.d.ts +5 -0
  202. package/build/esm/components/QueryGraph/internal/QueryGraphPopup.js +234 -0
  203. package/build/esm/components/QueryGraph/internal/QueryGraphPopup.js.map +1 -0
  204. package/build/esm/components/QueryGraph/internal/queryGraphIcons.d.ts +12 -0
  205. package/build/esm/components/QueryGraph/internal/queryGraphIcons.js +150 -0
  206. package/build/esm/components/QueryGraph/internal/queryGraphIcons.js.map +1 -0
  207. package/build/esm/components/QueryGraph/internal/useQueryGraphLayout.d.ts +22 -0
  208. package/build/esm/components/QueryGraph/internal/useQueryGraphLayout.js +53 -0
  209. package/build/esm/components/QueryGraph/internal/useQueryGraphLayout.js.map +1 -0
  210. package/build/esm/components/QueryGraph/story/largeGraphData.d.ts +3 -0
  211. package/build/esm/components/QueryGraph/story/largeGraphData.js +220 -0
  212. package/build/esm/components/QueryGraph/story/largeGraphData.js.map +1 -0
  213. package/build/esm/components/index.d.ts +2 -0
  214. package/build/esm/components/index.js +1 -0
  215. package/build/esm/components/index.js.map +1 -1
  216. package/build/esm/helpers/buildColumnsFromKeys.d.ts +1 -1
  217. package/build/esm/helpers/buildColumnsFromKeys.js.map +1 -1
  218. package/build/esm/index.d.ts +1 -0
  219. package/build/esm/index.js +1 -0
  220. package/build/esm/index.js.map +1 -1
  221. package/build/esm/modules/ClustersList/ClustersList.d.ts +1 -1
  222. package/build/esm/modules/ClustersList/ClustersList.js +2 -1
  223. package/build/esm/modules/ClustersList/ClustersList.js.map +1 -1
  224. package/build/esm/modules/HistoryHeader/HistoryHeader.js +2 -1
  225. package/build/esm/modules/HistoryHeader/HistoryHeader.js.map +1 -1
  226. package/build/esm/modules/HistoryRow/HistoryRow.js +6 -1
  227. package/build/esm/modules/HistoryRow/HistoryRow.js.map +1 -1
  228. package/build/esm/modules/HistorySearchRow/HistorySearchRow.js +4 -1
  229. package/build/esm/modules/HistorySearchRow/HistorySearchRow.js.map +1 -1
  230. package/build/esm/modules/HistorySearchRow/helpers/resolveMonacoLanguage.d.ts +1 -1
  231. package/build/esm/modules/HistorySearchRow/helpers/resolveMonacoLanguage.js +1 -1
  232. package/build/esm/modules/HistorySearchRow/helpers/resolveMonacoLanguage.js.map +1 -1
  233. package/build/esm/modules/NavigationDetail/NavigationDetail.d.ts +1 -1
  234. package/build/esm/modules/NavigationDetail/NavigationDetail.js +1 -1
  235. package/build/esm/modules/NavigationDetail/NavigationDetail.js.map +1 -1
  236. package/build/esm/modules/NavigationHeader/NavigationHeader.d.ts +1 -1
  237. package/build/esm/modules/NavigationHeader/NavigationHeader.js +1 -1
  238. package/build/esm/modules/NavigationHeader/NavigationHeader.js.map +1 -1
  239. package/build/esm/modules/NavigationItemsList/NavigationItemsList.d.ts +1 -1
  240. package/build/esm/modules/NavigationItemsList/NavigationItemsList.js +2 -1
  241. package/build/esm/modules/NavigationItemsList/NavigationItemsList.js.map +1 -1
  242. package/build/esm/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.d.ts +1 -1
  243. package/build/esm/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.js +1 -1
  244. package/build/esm/modules/NavigationItemsList/internal/NavigationItemsListEmptyState.js.map +1 -1
  245. package/build/esm/modules/NavigationMeta/NavigationMeta.js +2 -1
  246. package/build/esm/modules/NavigationMeta/NavigationMeta.js.map +1 -1
  247. package/build/esm/modules/NavigationMeta/i18n/index.d.ts +2 -2
  248. package/build/esm/modules/NavigationPreview/NavigationPreview.d.ts +1 -1
  249. package/build/esm/modules/NavigationPreview/NavigationPreview.js +3 -1
  250. package/build/esm/modules/NavigationPreview/NavigationPreview.js.map +1 -1
  251. package/build/esm/modules/NavigationPreview/helpers/buildPreviewColumns.d.ts +1 -1
  252. package/build/esm/modules/NavigationPreview/helpers/buildPreviewColumns.js.map +1 -1
  253. package/build/esm/modules/NavigationSchema/NavigationSchema.d.ts +1 -1
  254. package/build/esm/modules/NavigationSchema/NavigationSchema.js +2 -1
  255. package/build/esm/modules/NavigationSchema/NavigationSchema.js.map +1 -1
  256. package/build/esm/modules/NavigationSchema/helpers/buildSchemaColumns.d.ts +1 -1
  257. package/build/esm/modules/NavigationSchema/helpers/buildSchemaColumns.js.map +1 -1
  258. package/build/esm/modules/NavigationView/NavigationView.d.ts +1 -1
  259. package/build/esm/modules/NavigationView/NavigationView.js +2 -1
  260. package/build/esm/modules/NavigationView/NavigationView.js.map +1 -1
  261. package/build/esm/modules/NavigationView/helpers/buildViewColumns.d.ts +1 -1
  262. package/build/esm/modules/NavigationView/helpers/buildViewColumns.js.map +1 -1
  263. package/build/esm/modules/NavigationView/internal/NavigationViewSectionItem.d.ts +1 -1
  264. package/build/esm/modules/NavigationView/internal/NavigationViewSectionItem.js +2 -1
  265. package/build/esm/modules/NavigationView/internal/NavigationViewSectionItem.js.map +1 -1
  266. package/build/esm/modules/QueriesList/QueriesList.js +1 -1
  267. package/build/esm/modules/QueriesList/QueriesList.js.map +1 -1
  268. package/build/esm/modules/QueryProgress/QueryProgress.css +64 -0
  269. package/build/esm/modules/QueryProgress/QueryProgress.css.map +1 -0
  270. package/build/esm/modules/QueryProgress/QueryProgress.d.ts +4 -0
  271. package/build/esm/modules/QueryProgress/QueryProgress.js +127 -0
  272. package/build/esm/modules/QueryProgress/QueryProgress.js.map +1 -0
  273. package/build/esm/modules/QueryProgress/QueryProgress.scss +72 -0
  274. package/build/esm/modules/QueryProgress/QueryProgress.stories.d.ts +7 -0
  275. package/build/esm/modules/QueryProgress/QueryProgress.stories.js +31 -0
  276. package/build/esm/modules/QueryProgress/QueryProgress.stories.js.map +1 -0
  277. package/build/esm/modules/QueryProgress/i18n/dicts.d.ts +25 -0
  278. package/build/esm/modules/QueryProgress/i18n/dicts.js +7 -0
  279. package/build/esm/modules/QueryProgress/i18n/dicts.js.map +1 -0
  280. package/build/esm/modules/QueryProgress/i18n/en.json +11 -0
  281. package/build/esm/modules/QueryProgress/i18n/index.d.ts +6 -0
  282. package/build/esm/modules/QueryProgress/i18n/index.js +4 -0
  283. package/build/esm/modules/QueryProgress/i18n/index.js.map +1 -0
  284. package/build/esm/modules/QueryProgress/i18n/ru.json +11 -0
  285. package/build/esm/modules/QueryProgress/index.d.ts +2 -0
  286. package/build/esm/modules/QueryProgress/index.js +2 -0
  287. package/build/esm/modules/QueryProgress/index.js.map +1 -0
  288. package/build/esm/modules/QueryStatistics/i18n/index.d.ts +2 -2
  289. package/build/esm/modules/RowsList/RowsList.js +2 -1
  290. package/build/esm/modules/RowsList/RowsList.js.map +1 -1
  291. package/build/esm/modules/SavedQueryRow/SavedQueryRow.d.ts +2 -2
  292. package/build/esm/modules/SavedQueryRow/SavedQueryRow.js +3 -1
  293. package/build/esm/modules/SavedQueryRow/SavedQueryRow.js.map +1 -1
  294. package/build/esm/modules/SavedQuerySearchRow/SavedQuerySearchRow.d.ts +2 -2
  295. package/build/esm/modules/SavedQuerySearchRow/SavedQuerySearchRow.js +2 -1
  296. package/build/esm/modules/SavedQuerySearchRow/SavedQuerySearchRow.js.map +1 -1
  297. package/build/esm/modules/TutorialRow/TutorialRow.d.ts +4 -2
  298. package/build/esm/modules/TutorialRow/TutorialRow.js +4 -2
  299. package/build/esm/modules/TutorialRow/TutorialRow.js.map +1 -1
  300. package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.d.ts +4 -2
  301. package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.js +5 -2
  302. package/build/esm/modules/TutorialSearchRow/TutorialSearchRow.js.map +1 -1
  303. package/build/esm/modules/index.d.ts +2 -0
  304. package/build/esm/modules/index.js +1 -0
  305. package/build/esm/modules/index.js.map +1 -1
  306. package/build/esm/types/queryGraph.d.ts +87 -0
  307. package/build/esm/types/queryGraph.js +2 -0
  308. package/build/esm/types/queryGraph.js.map +1 -0
  309. package/build/esm/widgets/DashboardCharts/DashboardCharts.js +4 -2
  310. package/build/esm/widgets/DashboardCharts/DashboardCharts.js.map +1 -1
  311. package/build/esm/widgets/DashboardCharts/types.d.ts +3 -3
  312. package/build/esm/widgets/DashboardCharts/types.js.map +1 -1
  313. package/build/esm/widgets/QueriesHistory/QueriesHistory.js +1 -1
  314. package/build/esm/widgets/QueriesHistory/QueriesHistory.js.map +1 -1
  315. package/build/esm/widgets/QueriesHistory/internal/HistoryRowContent.js +3 -2
  316. package/build/esm/widgets/QueriesHistory/internal/HistoryRowContent.js.map +1 -1
  317. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.d.ts +1 -1
  318. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.js +6 -2
  319. package/build/esm/widgets/QueriesNavigation/QueriesNavigation.js.map +1 -1
  320. package/build/esm/widgets/QueriesNavigation/helpers/createEmptyDetailConfig.js +1 -1
  321. package/build/esm/widgets/QueriesNavigation/helpers/createEmptyDetailConfig.js.map +1 -1
  322. package/build/esm/widgets/QueriesNavigation/helpers/createTableDetailConfig.js +4 -1
  323. package/build/esm/widgets/QueriesNavigation/helpers/createTableDetailConfig.js.map +1 -1
  324. package/build/esm/widgets/QueryResults/QueryResults.js +1 -1
  325. package/build/esm/widgets/QueryResults/QueryResults.js.map +1 -1
  326. package/build/esm/widgets/QueryResults/i18n/index.d.ts +2 -2
  327. package/build/esm/widgets/QueryResults/internal/QueryResultsSchema.js +2 -1
  328. package/build/esm/widgets/QueryResults/internal/QueryResultsSchema.js.map +1 -1
  329. package/build/esm/widgets/SavedQueries/SavedQueries.d.ts +2 -2
  330. package/build/esm/widgets/SavedQueries/SavedQueries.js +1 -1
  331. package/build/esm/widgets/SavedQueries/SavedQueries.js.map +1 -1
  332. package/build/esm/widgets/SavedQueries/SavedQueryRowContent.d.ts +2 -2
  333. package/build/esm/widgets/SavedQueries/SavedQueryRowContent.js +3 -2
  334. package/build/esm/widgets/SavedQueries/SavedQueryRowContent.js.map +1 -1
  335. package/build/esm/widgets/TutorialsHistory/TutorialRowContent.d.ts +3 -3
  336. package/build/esm/widgets/TutorialsHistory/TutorialRowContent.js +9 -5
  337. package/build/esm/widgets/TutorialsHistory/TutorialRowContent.js.map +1 -1
  338. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.d.ts +8 -3
  339. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js +16 -4
  340. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.js.map +1 -1
  341. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.stories.d.ts +5 -0
  342. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.stories.js +244 -1
  343. package/build/esm/widgets/TutorialsHistory/TutorialsHistory.stories.js.map +1 -1
  344. package/package.json +84 -5
@@ -0,0 +1,510 @@
1
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import "core-js/modules/es.error.cause.js";
4
+ import "core-js/modules/es.error.to-string.js";
5
+ import "core-js/modules/es.array.concat.js";
6
+ import "core-js/modules/es.array.find.js";
7
+ import "core-js/modules/es.array.flat-map.js";
8
+ import "core-js/modules/es.array.join.js";
9
+ import "core-js/modules/es.array.map.js";
10
+ import "core-js/modules/es.array.unscopables.flat-map.js";
11
+ import "core-js/modules/es.function.name.js";
12
+ import "core-js/modules/es.iterator.constructor.js";
13
+ import "core-js/modules/es.iterator.find.js";
14
+ import "core-js/modules/es.iterator.flat-map.js";
15
+ import "core-js/modules/es.iterator.map.js";
16
+ import "core-js/modules/es.object.to-string.js";
17
+ import "core-js/modules/es.string.trim.js";
18
+ import React, { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
19
+ import { BezierMultipointConnection, ECanDrag, GraphState } from '@gravity-ui/graph';
20
+ import { GraphCanvas, useGraph, useGraphEvent } from '@gravity-ui/graph/react';
21
+ import { MagnifierMinus, MagnifierPlus, SquareDashed } from '@gravity-ui/icons';
22
+ import { Button, Icon, Loader, Text, Tooltip, useThemeValue } from '@gravity-ui/uikit';
23
+ import cn from 'bem-cn-lite';
24
+ import { createQueryGraphConnections, getQueryGraphNodeSize, validateQueryGraph } from "./helpers/layout";
25
+ import i18n from "./i18n";
26
+ import { QueryGraphCanvasBlock } from "./internal/QueryGraphCanvasBlock";
27
+ import { QueryGraphPopup } from "./internal/QueryGraphPopup";
28
+ import { getQueryGraphNodeIconSvgs } from "./internal/queryGraphIcons";
29
+ import { useQueryGraphLayout } from "./internal/useQueryGraphLayout";
30
+ import "./QueryGraph.css";
31
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
32
+ var block = cn('qp-query-graph');
33
+ var FIT_PADDING = 120;
34
+ var ZOOM_STEP = 0.08;
35
+ var renderEmptyBlock = function renderEmptyBlock() {
36
+ return /*#__PURE__*/_jsx(React.Fragment, {});
37
+ };
38
+ export function QueryGraph(_ref) {
39
+ var nodes = _ref.nodes,
40
+ edges = _ref.edges,
41
+ loading = _ref.loading,
42
+ errorContent = _ref.errorContent,
43
+ className = _ref.className,
44
+ _ref$autoCenter = _ref.autoCenter,
45
+ autoCenter = _ref$autoCenter === void 0 ? true : _ref$autoCenter,
46
+ _ref$active = _ref.active,
47
+ active = _ref$active === void 0 ? true : _ref$active,
48
+ _ref$largeGraphThresh = _ref.largeGraphThreshold,
49
+ largeGraphThreshold = _ref$largeGraphThresh === void 0 ? 250 : _ref$largeGraphThresh,
50
+ renderNodePopup = _ref.renderNodePopup,
51
+ onNodeClick = _ref.onNodeClick,
52
+ onError = _ref.onError;
53
+ var _useState = useState(false),
54
+ _useState2 = _slicedToArray(_useState, 2),
55
+ showLargeGraph = _useState2[0],
56
+ setShowLargeGraph = _useState2[1];
57
+ var nodesRef = useRef(nodes);
58
+ var edgesRef = useRef(edges);
59
+ nodesRef.current = nodes;
60
+ edgesRef.current = edges;
61
+ var structureKey = useMemo(function () {
62
+ return "".concat(nodes.map(function (_ref2) {
63
+ var id = _ref2.id,
64
+ kind = _ref2.kind;
65
+ return "".concat(id, ":").concat(kind);
66
+ }).join('|'), "::").concat(edges.map(function (_ref3) {
67
+ var id = _ref3.id,
68
+ source = _ref3.source,
69
+ target = _ref3.target;
70
+ return "".concat(id, ":").concat(source, ":").concat(target);
71
+ }).join('|'));
72
+ }, [edges, nodes]);
73
+ var validationError = useMemo(function () {
74
+ try {
75
+ validateQueryGraph(nodesRef.current, edgesRef.current);
76
+ return undefined;
77
+ } catch (nextError) {
78
+ return nextError instanceof Error ? nextError : new Error('Unable to build query graph');
79
+ }
80
+ // Only graph structure affects validation.
81
+ // eslint-disable-next-line react-hooks/exhaustive-deps
82
+ }, [structureKey]);
83
+ useEffect(function () {
84
+ if (validationError) onError === null || onError === void 0 || onError(validationError);
85
+ }, [onError, validationError]);
86
+ var shouldConfirm = largeGraphThreshold !== false && nodes.length > largeGraphThreshold;
87
+ if (loading) return /*#__PURE__*/_jsx(State, {
88
+ className: className,
89
+ children: /*#__PURE__*/_jsx(Loader, {
90
+ size: "m"
91
+ })
92
+ });
93
+ if (errorContent) return /*#__PURE__*/_jsx(State, {
94
+ className: className,
95
+ children: /*#__PURE__*/_jsx(Text, {
96
+ color: "danger",
97
+ children: errorContent
98
+ })
99
+ });
100
+ if (validationError) return /*#__PURE__*/_jsx(State, {
101
+ className: className,
102
+ children: /*#__PURE__*/_jsx(Text, {
103
+ color: "danger",
104
+ children: validationError.message
105
+ })
106
+ });
107
+ if (!nodes.length) return /*#__PURE__*/_jsx(State, {
108
+ className: className,
109
+ children: /*#__PURE__*/_jsx(Text, {
110
+ color: "secondary",
111
+ children: i18n('context_empty')
112
+ })
113
+ });
114
+ if (shouldConfirm && !showLargeGraph) {
115
+ return /*#__PURE__*/_jsx(State, {
116
+ className: className,
117
+ children: /*#__PURE__*/_jsxs("div", {
118
+ className: block('large-graph'),
119
+ children: [/*#__PURE__*/_jsx(Text, {
120
+ children: i18n('context_large-graph', {
121
+ count: nodes.length
122
+ })
123
+ }), /*#__PURE__*/_jsx(Button, {
124
+ view: "action",
125
+ onClick: function onClick() {
126
+ return setShowLargeGraph(true);
127
+ },
128
+ children: i18n('action_show-graph')
129
+ })]
130
+ })
131
+ });
132
+ }
133
+ return /*#__PURE__*/_jsx(QueryGraphWithLayout, {
134
+ nodes: nodes,
135
+ edges: edges,
136
+ structureKey: structureKey,
137
+ autoCenter: autoCenter,
138
+ active: active,
139
+ renderNodePopup: renderNodePopup,
140
+ onNodeClick: onNodeClick,
141
+ onError: onError,
142
+ className: className
143
+ });
144
+ }
145
+ function QueryGraphWithLayout(_ref4) {
146
+ var nodes = _ref4.nodes,
147
+ edges = _ref4.edges,
148
+ structureKey = _ref4.structureKey,
149
+ autoCenter = _ref4.autoCenter,
150
+ active = _ref4.active,
151
+ renderNodePopup = _ref4.renderNodePopup,
152
+ onNodeClick = _ref4.onNodeClick,
153
+ onError = _ref4.onError,
154
+ className = _ref4.className;
155
+ var _useState3 = useState(),
156
+ _useState4 = _slicedToArray(_useState3, 2),
157
+ popup = _useState4[0],
158
+ setPopup = _useState4[1];
159
+ var rootRef = useRef(null);
160
+ var nodesRef = useRef(nodes);
161
+ var edgesRef = useRef(edges);
162
+ nodesRef.current = nodes;
163
+ edgesRef.current = edges;
164
+ var layoutBlocks = useMemo(function () {
165
+ return nodesRef.current.map(function (node) {
166
+ return _objectSpread({
167
+ id: node.id
168
+ }, getQueryGraphNodeSize(node));
169
+ });
170
+ },
171
+ // Node status and presentation do not affect layout.
172
+ // eslint-disable-next-line react-hooks/exhaustive-deps
173
+ [structureKey]);
174
+ var layoutConnections = useMemo(function () {
175
+ return edgesRef.current.map(function (edge) {
176
+ return {
177
+ id: edge.id,
178
+ sourceBlockId: edge.source,
179
+ targetBlockId: edge.target
180
+ };
181
+ });
182
+ },
183
+ // Only graph structure affects layout.
184
+ // eslint-disable-next-line react-hooks/exhaustive-deps
185
+ [structureKey]);
186
+ var _useQueryGraphLayout = useQueryGraphLayout({
187
+ structureKey: structureKey,
188
+ blocks: layoutBlocks,
189
+ connections: layoutConnections,
190
+ onError: onError
191
+ }),
192
+ result = _useQueryGraphLayout.result,
193
+ resolvedStructureKey = _useQueryGraphLayout.resolvedStructureKey,
194
+ isInitialLoading = _useQueryGraphLayout.isInitialLoading,
195
+ error = _useQueryGraphLayout.error;
196
+ var graphBlocks = useMemo(function () {
197
+ return nodes.flatMap(function (node) {
198
+ var position = result === null || result === void 0 ? void 0 : result.blocks[node.id];
199
+ if (!position) return [];
200
+ var _getQueryGraphNodeIco = getQueryGraphNodeIconSvgs(node),
201
+ iconSvg = _getQueryGraphNodeIco.iconSvg,
202
+ fallbackIconSvg = _getQueryGraphNodeIco.fallbackIconSvg,
203
+ iconColorToken = _getQueryGraphNodeIco.iconColorToken,
204
+ fallbackIconColorToken = _getQueryGraphNodeIco.fallbackIconColorToken;
205
+ return [_objectSpread(_objectSpread({
206
+ id: node.id,
207
+ is: 'query-node',
208
+ name: node.name,
209
+ selected: false,
210
+ anchors: [],
211
+ meta: {
212
+ node: node,
213
+ iconSvg: iconSvg,
214
+ fallbackIconSvg: fallbackIconSvg,
215
+ iconColorToken: iconColorToken,
216
+ fallbackIconColorToken: fallbackIconColorToken
217
+ }
218
+ }, getQueryGraphNodeSize(node)), position)];
219
+ });
220
+ }, [nodes, result]);
221
+ var graphConnections = useMemo(function () {
222
+ return createQueryGraphConnections(edges, result === null || result === void 0 ? void 0 : result.edges);
223
+ }, [edges, result]);
224
+ if (error) return /*#__PURE__*/_jsx(State, {
225
+ className: className,
226
+ children: /*#__PURE__*/_jsx(Text, {
227
+ color: "danger",
228
+ children: error.message
229
+ })
230
+ });
231
+ if (isInitialLoading || !result || !resolvedStructureKey) return /*#__PURE__*/_jsx(State, {
232
+ className: className,
233
+ children: /*#__PURE__*/_jsx(Loader, {
234
+ size: "m"
235
+ })
236
+ });
237
+ return (
238
+ /*#__PURE__*/
239
+ // The renderer is declared below to keep the public component and its states together.
240
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
241
+ _jsx(QueryGraphRenderer, {
242
+ ref: rootRef,
243
+ blocks: graphBlocks,
244
+ connections: graphConnections,
245
+ nodes: nodes,
246
+ structureKey: resolvedStructureKey,
247
+ autoCenter: autoCenter,
248
+ active: active,
249
+ popup: popup,
250
+ setPopup: setPopup,
251
+ renderNodePopup: renderNodePopup,
252
+ onNodeClick: onNodeClick,
253
+ className: className
254
+ })
255
+ );
256
+ }
257
+ var QueryGraphRenderer = /*#__PURE__*/React.forwardRef(function QueryGraphRendererComponent(_ref5, forwardedRef) {
258
+ var blocks = _ref5.blocks,
259
+ connections = _ref5.connections,
260
+ nodes = _ref5.nodes,
261
+ structureKey = _ref5.structureKey,
262
+ autoCenter = _ref5.autoCenter,
263
+ active = _ref5.active,
264
+ popup = _ref5.popup,
265
+ setPopup = _ref5.setPopup,
266
+ renderNodePopup = _ref5.renderNodePopup,
267
+ onNodeClick = _ref5.onNodeClick,
268
+ className = _ref5.className;
269
+ var rootRef = useRef(null);
270
+ useImperativeHandle(forwardedRef, function () {
271
+ return rootRef.current;
272
+ });
273
+ var attachedRef = useRef(false);
274
+ var centeredRef = useRef(false);
275
+ var previousActiveRef = useRef(false);
276
+ var previousStructureRef = useRef(structureKey);
277
+ var _useState5 = useState(false),
278
+ _useState6 = _slicedToArray(_useState5, 2),
279
+ attached = _useState6[0],
280
+ setAttached = _useState6[1];
281
+ var _useState7 = useState(),
282
+ _useState8 = _slicedToArray(_useState7, 2),
283
+ hoveredNodeId = _useState8[0],
284
+ setHoveredNodeId = _useState8[1];
285
+ var themeValue = useThemeValue();
286
+ var _useGraph = useGraph({
287
+ name: 'query-graph',
288
+ settings: {
289
+ connection: BezierMultipointConnection,
290
+ canDrag: ECanDrag.NONE,
291
+ canDragCamera: true,
292
+ canZoomCamera: true,
293
+ canCreateNewConnections: false,
294
+ useBezierConnections: true,
295
+ bezierConnectionDirection: 'horizontal',
296
+ showConnectionArrows: true,
297
+ useBlocksAnchors: false,
298
+ blockComponents: {
299
+ 'query-node': QueryGraphCanvasBlock
300
+ }
301
+ }
302
+ }),
303
+ graph = _useGraph.graph,
304
+ api = _useGraph.api,
305
+ setEntities = _useGraph.setEntities,
306
+ start = _useGraph.start,
307
+ stop = _useGraph.stop;
308
+ var _useState9 = useState(graph.cameraService.getCameraState().scale),
309
+ _useState0 = _slicedToArray(_useState9, 2),
310
+ scale = _useState0[0],
311
+ setScale = _useState0[1];
312
+ var _graph$cameraService$ = graph.cameraService.getCameraState(),
313
+ scaleMin = _graph$cameraService$.scaleMin,
314
+ scaleMax = _graph$cameraService$.scaleMax;
315
+ useGraphEvent(graph, 'camera-change', function (_ref6) {
316
+ var nextScale = _ref6.scale;
317
+ return setScale(nextScale);
318
+ });
319
+ useGraphEvent(graph, 'mouseenter', function (_ref7) {
320
+ var _state$meta;
321
+ var target = _ref7.target;
322
+ var state = target === null || target === void 0 ? void 0 : target.state;
323
+ if (state !== null && state !== void 0 && (_state$meta = state.meta) !== null && _state$meta !== void 0 && _state$meta.node) setHoveredNodeId(state.meta.node.id);
324
+ });
325
+ useGraphEvent(graph, 'mouseleave', function (_ref8) {
326
+ var _state$meta2;
327
+ var target = _ref8.target;
328
+ var state = target === null || target === void 0 ? void 0 : target.state;
329
+ if (state !== null && state !== void 0 && (_state$meta2 = state.meta) !== null && _state$meta2 !== void 0 && _state$meta2.node) setHoveredNodeId(undefined);
330
+ });
331
+ useEffect(function () {
332
+ if (!rootRef.current) return;
333
+ var background = getComputedStyle(rootRef.current).getPropertyValue('--g-color-base-background').trim();
334
+ var connection = getComputedStyle(rootRef.current).getPropertyValue('--g-color-line-generic-accent').trim();
335
+ if (!background || !connection) return;
336
+ var colors = api.getGraphColors();
337
+ api.updateGraphColors(_objectSpread(_objectSpread({}, colors), {}, {
338
+ canvas: _objectSpread(_objectSpread({}, colors.canvas), {}, {
339
+ belowLayerBackground: background,
340
+ layerBackground: background,
341
+ border: background,
342
+ dots: background
343
+ }),
344
+ connection: _objectSpread(_objectSpread({}, colors.connection), {}, {
345
+ background: connection
346
+ })
347
+ }));
348
+ }, [api, themeValue]);
349
+ var visibleConnections = useMemo(function () {
350
+ return connections.map(function (connection) {
351
+ return _objectSpread(_objectSpread({}, connection), {}, {
352
+ selected: Boolean(hoveredNodeId && (connection.sourceBlockId === hoveredNodeId || connection.targetBlockId === hoveredNodeId))
353
+ });
354
+ });
355
+ }, [connections, hoveredNodeId]);
356
+ useEffect(function () {
357
+ return setEntities({
358
+ blocks: blocks,
359
+ connections: visibleConnections
360
+ });
361
+ }, [blocks, setEntities, visibleConnections]);
362
+ useEffect(function () {
363
+ if (!attachedRef.current) return;
364
+ if (active) start();else stop();
365
+ }, [active, start, stop]);
366
+ useEffect(function () {
367
+ var changed = previousStructureRef.current !== structureKey;
368
+ var becameActive = active && !previousActiveRef.current;
369
+ var frame;
370
+ if (attached && active && (!centeredRef.current || becameActive || autoCenter && changed)) {
371
+ frame = requestAnimationFrame(function () {
372
+ api.zoomToViewPort({
373
+ padding: FIT_PADDING
374
+ });
375
+ centeredRef.current = true;
376
+ });
377
+ }
378
+ previousActiveRef.current = Boolean(active);
379
+ previousStructureRef.current = structureKey;
380
+ setPopup(undefined);
381
+ return function () {
382
+ if (frame !== undefined) cancelAnimationFrame(frame);
383
+ };
384
+ }, [active, api, attached, autoCenter, setPopup, structureKey]);
385
+ var handleClick = function handleClick(_ref9) {
386
+ var _state$meta3;
387
+ var target = _ref9.target,
388
+ sourceEvent = _ref9.sourceEvent;
389
+ var state = target === null || target === void 0 ? void 0 : target.state;
390
+ if (!(state !== null && state !== void 0 && (_state$meta3 = state.meta) !== null && _state$meta3 !== void 0 && _state$meta3.node) || !rootRef.current) {
391
+ setPopup(undefined);
392
+ return;
393
+ }
394
+ var mouseEvent = sourceEvent;
395
+ var rect = rootRef.current.getBoundingClientRect();
396
+ var left = Math.min(Math.max(16, mouseEvent.clientX - rect.left + 12), rect.width - 456);
397
+ var top = Math.min(Math.max(16, mouseEvent.clientY - rect.top + 12), rect.height - 240);
398
+ setPopup({
399
+ nodeId: state.meta.node.id,
400
+ left: Math.max(16, left),
401
+ top: Math.max(16, top)
402
+ });
403
+ onNodeClick === null || onNodeClick === void 0 || onNodeClick(state.meta.node, mouseEvent);
404
+ };
405
+ var selectedNode = popup ? nodes.find(function (node) {
406
+ return node.id === popup.nodeId;
407
+ }) : undefined;
408
+ var defaultContent = selectedNode ? /*#__PURE__*/_jsx(QueryGraphPopup, {
409
+ node: selectedNode
410
+ }) : null;
411
+ var popupContent = null;
412
+ if (selectedNode) {
413
+ popupContent = renderNodePopup ? renderNodePopup({
414
+ node: selectedNode,
415
+ defaultContent: defaultContent
416
+ }) : defaultContent;
417
+ }
418
+ return /*#__PURE__*/_jsxs("div", {
419
+ ref: rootRef,
420
+ className: block(null, className),
421
+ children: [/*#__PURE__*/_jsx(GraphCanvas, {
422
+ graph: graph,
423
+ className: block('canvas'),
424
+ click: handleClick,
425
+ renderBlock: renderEmptyBlock,
426
+ onStateChanged: function onStateChanged(_ref0) {
427
+ var state = _ref0.state;
428
+ if (state === GraphState.ATTACHED) {
429
+ if (active) start();
430
+ attachedRef.current = true;
431
+ setAttached(true);
432
+ }
433
+ }
434
+ }), /*#__PURE__*/_jsxs("div", {
435
+ className: block('toolbox'),
436
+ children: [/*#__PURE__*/_jsx(Tooltip, {
437
+ content: i18n('action_zoom-in'),
438
+ placement: "right",
439
+ children: /*#__PURE__*/_jsx(Button, {
440
+ view: "raised",
441
+ pin: "round-brick",
442
+ "aria-label": i18n('action_zoom-in'),
443
+ disabled: scale >= scaleMax,
444
+ onClick: function onClick() {
445
+ return changeZoom(graph, ZOOM_STEP);
446
+ },
447
+ children: /*#__PURE__*/_jsx(Icon, {
448
+ data: MagnifierPlus
449
+ })
450
+ })
451
+ }), /*#__PURE__*/_jsx(Tooltip, {
452
+ content: i18n('action_fit'),
453
+ placement: "right",
454
+ children: /*#__PURE__*/_jsx(Button, {
455
+ view: "raised",
456
+ pin: "brick-brick",
457
+ "aria-label": i18n('action_fit'),
458
+ onClick: function onClick() {
459
+ return api.zoomToViewPort({
460
+ padding: FIT_PADDING
461
+ });
462
+ },
463
+ children: /*#__PURE__*/_jsx(Icon, {
464
+ data: SquareDashed
465
+ })
466
+ })
467
+ }), /*#__PURE__*/_jsx(Tooltip, {
468
+ content: i18n('action_zoom-out'),
469
+ placement: "right",
470
+ children: /*#__PURE__*/_jsx(Button, {
471
+ view: "raised",
472
+ pin: "brick-round",
473
+ "aria-label": i18n('action_zoom-out'),
474
+ disabled: scale <= scaleMin,
475
+ onClick: function onClick() {
476
+ return changeZoom(graph, -ZOOM_STEP);
477
+ },
478
+ children: /*#__PURE__*/_jsx(Icon, {
479
+ data: MagnifierMinus
480
+ })
481
+ })
482
+ })]
483
+ }), popup && popupContent !== null && /*#__PURE__*/_jsx("div", {
484
+ className: block('popup'),
485
+ style: {
486
+ left: popup.left,
487
+ top: popup.top
488
+ },
489
+ children: popupContent
490
+ })]
491
+ });
492
+ });
493
+ function changeZoom(graph, delta) {
494
+ var camera = graph.cameraService;
495
+ var state = camera.getCameraState();
496
+ var nextScale = Math.min(state.scaleMax, Math.max(state.scaleMin, state.scale + delta));
497
+ camera.zoom(state.width / 2, state.height / 2, nextScale);
498
+ }
499
+ function State(_ref1) {
500
+ var className = _ref1.className,
501
+ children = _ref1.children;
502
+ return /*#__PURE__*/_jsx("div", {
503
+ className: block(null, className),
504
+ children: /*#__PURE__*/_jsx("div", {
505
+ className: block('state'),
506
+ children: children
507
+ })
508
+ });
509
+ }
510
+ // #sourceMappingURL=QueryGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useImperativeHandle","useMemo","useRef","useState","BezierMultipointConnection","ECanDrag","GraphState","GraphCanvas","useGraph","useGraphEvent","MagnifierMinus","MagnifierPlus","SquareDashed","Button","Icon","Loader","Text","Tooltip","useThemeValue","cn","createQueryGraphConnections","getQueryGraphNodeSize","validateQueryGraph","i18n","QueryGraphCanvasBlock","QueryGraphPopup","getQueryGraphNodeIconSvgs","useQueryGraphLayout","jsx","_jsx","jsxs","_jsxs","block","FIT_PADDING","ZOOM_STEP","renderEmptyBlock","Fragment","QueryGraph","_ref","nodes","edges","loading","errorContent","className","_ref$autoCenter","autoCenter","_ref$active","active","_ref$largeGraphThresh","largeGraphThreshold","renderNodePopup","onNodeClick","onError","_useState","_useState2","_slicedToArray","showLargeGraph","setShowLargeGraph","nodesRef","edgesRef","current","structureKey","concat","map","_ref2","id","kind","join","_ref3","source","target","validationError","undefined","nextError","Error","shouldConfirm","length","State","children","size","color","message","count","view","onClick","QueryGraphWithLayout","_ref4","_useState3","_useState4","popup","setPopup","rootRef","layoutBlocks","node","_objectSpread","layoutConnections","edge","sourceBlockId","targetBlockId","_useQueryGraphLayout","blocks","connections","result","resolvedStructureKey","isInitialLoading","error","graphBlocks","flatMap","position","_getQueryGraphNodeIco","iconSvg","fallbackIconSvg","iconColorToken","fallbackIconColorToken","is","name","selected","anchors","meta","graphConnections","QueryGraphRenderer","ref","forwardRef","QueryGraphRendererComponent","_ref5","forwardedRef","attachedRef","centeredRef","previousActiveRef","previousStructureRef","_useState5","_useState6","attached","setAttached","_useState7","_useState8","hoveredNodeId","setHoveredNodeId","themeValue","_useGraph","settings","connection","canDrag","NONE","canDragCamera","canZoomCamera","canCreateNewConnections","useBezierConnections","bezierConnectionDirection","showConnectionArrows","useBlocksAnchors","blockComponents","graph","api","setEntities","start","stop","_useState9","cameraService","getCameraState","scale","_useState0","setScale","_graph$cameraService$","scaleMin","scaleMax","_ref6","nextScale","_ref7","_state$meta","state","_ref8","_state$meta2","background","getComputedStyle","getPropertyValue","trim","colors","getGraphColors","updateGraphColors","canvas","belowLayerBackground","layerBackground","border","dots","visibleConnections","Boolean","changed","becameActive","frame","requestAnimationFrame","zoomToViewPort","padding","cancelAnimationFrame","handleClick","_ref9","_state$meta3","sourceEvent","mouseEvent","rect","getBoundingClientRect","left","Math","min","max","clientX","width","top","clientY","height","nodeId","selectedNode","find","defaultContent","popupContent","click","renderBlock","onStateChanged","_ref0","ATTACHED","content","placement","pin","disabled","changeZoom","data","style","delta","camera","zoom","_ref1"],"sources":["QueryGraph.tsx"],"sourcesContent":["import React, {useEffect, useImperativeHandle, useMemo, useRef, useState} from 'react';\nimport {\n BezierMultipointConnection,\n ECanDrag,\n GraphState,\n type TMultipointConnection,\n} from '@gravity-ui/graph';\nimport {GraphCanvas, useGraph, useGraphEvent} from '@gravity-ui/graph/react';\nimport {MagnifierMinus, MagnifierPlus, SquareDashed} from '@gravity-ui/icons';\nimport {Button, Icon, Loader, Text, Tooltip, useThemeValue} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\n\nimport type {QueryGraphNode, QueryGraphProps} from '../../types/queryGraph';\nimport {\n createQueryGraphConnections,\n getQueryGraphNodeSize,\n validateQueryGraph,\n} from './helpers/layout';\nimport i18n from './i18n';\nimport {type QueryGraphBlock, QueryGraphCanvasBlock} from './internal/QueryGraphCanvasBlock';\nimport {QueryGraphPopup} from './internal/QueryGraphPopup';\nimport {getQueryGraphNodeIconSvgs} from './internal/queryGraphIcons';\nimport {useQueryGraphLayout} from './internal/useQueryGraphLayout';\n\nimport './QueryGraph.scss';\n\nconst block = cn('qp-query-graph');\nconst FIT_PADDING = 120;\nconst ZOOM_STEP = 0.08;\nconst renderEmptyBlock = () => <React.Fragment />;\n\ntype PopupState = {nodeId: string; left: number; top: number};\n\nexport function QueryGraph({\n nodes,\n edges,\n loading,\n errorContent,\n className,\n autoCenter = true,\n active = true,\n largeGraphThreshold = 250,\n renderNodePopup,\n onNodeClick,\n onError,\n}: QueryGraphProps) {\n const [showLargeGraph, setShowLargeGraph] = useState(false);\n const nodesRef = useRef(nodes);\n const edgesRef = useRef(edges);\n nodesRef.current = nodes;\n edgesRef.current = edges;\n\n const structureKey = useMemo(\n () =>\n `${nodes.map(({id, kind}) => `${id}:${kind}`).join('|')}::${edges\n .map(({id, source, target}) => `${id}:${source}:${target}`)\n .join('|')}`,\n [edges, nodes],\n );\n\n const validationError = useMemo(() => {\n try {\n validateQueryGraph(nodesRef.current, edgesRef.current);\n return undefined;\n } catch (nextError) {\n return nextError instanceof Error\n ? nextError\n : new Error('Unable to build query graph');\n }\n // Only graph structure affects validation.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [structureKey]);\n useEffect(() => {\n if (validationError) onError?.(validationError);\n }, [onError, validationError]);\n\n const shouldConfirm = largeGraphThreshold !== false && nodes.length > largeGraphThreshold;\n if (loading)\n return (\n <State className={className}>\n <Loader size=\"m\" />\n </State>\n );\n if (errorContent)\n return (\n <State className={className}>\n <Text color=\"danger\">{errorContent}</Text>\n </State>\n );\n if (validationError)\n return (\n <State className={className}>\n <Text color=\"danger\">{validationError.message}</Text>\n </State>\n );\n if (!nodes.length)\n return (\n <State className={className}>\n <Text color=\"secondary\">{i18n('context_empty')}</Text>\n </State>\n );\n if (shouldConfirm && !showLargeGraph) {\n return (\n <State className={className}>\n <div className={block('large-graph')}>\n <Text>{i18n('context_large-graph', {count: nodes.length})}</Text>\n <Button view=\"action\" onClick={() => setShowLargeGraph(true)}>\n {i18n('action_show-graph')}\n </Button>\n </div>\n </State>\n );\n }\n\n return (\n <QueryGraphWithLayout\n nodes={nodes}\n edges={edges}\n structureKey={structureKey}\n autoCenter={autoCenter}\n active={active}\n renderNodePopup={renderNodePopup}\n onNodeClick={onNodeClick}\n onError={onError}\n className={className}\n />\n );\n}\n\ntype QueryGraphWithLayoutProps = Pick<\n QueryGraphProps,\n | 'nodes'\n | 'edges'\n | 'autoCenter'\n | 'active'\n | 'renderNodePopup'\n | 'onNodeClick'\n | 'onError'\n | 'className'\n> & {structureKey: string};\n\nfunction QueryGraphWithLayout({\n nodes,\n edges,\n structureKey,\n autoCenter,\n active,\n renderNodePopup,\n onNodeClick,\n onError,\n className,\n}: QueryGraphWithLayoutProps) {\n const [popup, setPopup] = useState<PopupState>();\n const rootRef = useRef<HTMLDivElement>(null);\n const nodesRef = useRef(nodes);\n const edgesRef = useRef(edges);\n nodesRef.current = nodes;\n edgesRef.current = edges;\n\n const layoutBlocks = useMemo(\n () =>\n nodesRef.current.map((node) => ({\n id: node.id,\n ...getQueryGraphNodeSize(node),\n })),\n // Node status and presentation do not affect layout.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [structureKey],\n );\n const layoutConnections = useMemo(\n () =>\n edgesRef.current.map((edge) => ({\n id: edge.id,\n sourceBlockId: edge.source,\n targetBlockId: edge.target,\n })),\n // Only graph structure affects layout.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [structureKey],\n );\n const {result, resolvedStructureKey, isInitialLoading, error} = useQueryGraphLayout({\n structureKey,\n blocks: layoutBlocks,\n connections: layoutConnections,\n onError,\n });\n\n const graphBlocks = useMemo<QueryGraphBlock[]>(\n () =>\n nodes.flatMap((node) => {\n const position = result?.blocks[node.id];\n if (!position) return [];\n const {iconSvg, fallbackIconSvg, iconColorToken, fallbackIconColorToken} =\n getQueryGraphNodeIconSvgs(node);\n return [\n {\n id: node.id,\n is: 'query-node',\n name: node.name,\n selected: false,\n anchors: [],\n meta: {\n node,\n iconSvg,\n fallbackIconSvg,\n iconColorToken,\n fallbackIconColorToken,\n },\n ...getQueryGraphNodeSize(node),\n ...position,\n },\n ];\n }),\n [nodes, result],\n );\n const graphConnections = useMemo<TMultipointConnection[]>(\n () => createQueryGraphConnections(edges, result?.edges),\n [edges, result],\n );\n\n if (error)\n return (\n <State className={className}>\n <Text color=\"danger\">{error.message}</Text>\n </State>\n );\n if (isInitialLoading || !result || !resolvedStructureKey)\n return (\n <State className={className}>\n <Loader size=\"m\" />\n </State>\n );\n\n return (\n // The renderer is declared below to keep the public component and its states together.\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n <QueryGraphRenderer\n ref={rootRef}\n blocks={graphBlocks}\n connections={graphConnections}\n nodes={nodes}\n structureKey={resolvedStructureKey}\n autoCenter={autoCenter}\n active={active}\n popup={popup}\n setPopup={setPopup}\n renderNodePopup={renderNodePopup}\n onNodeClick={onNodeClick}\n className={className}\n />\n );\n}\n\ntype RendererProps = Pick<\n QueryGraphProps,\n 'autoCenter' | 'active' | 'renderNodePopup' | 'onNodeClick' | 'className'\n> & {\n blocks: QueryGraphBlock[];\n connections: TMultipointConnection[];\n nodes: QueryGraphNode[];\n structureKey: string;\n popup?: PopupState;\n setPopup: React.Dispatch<React.SetStateAction<PopupState | undefined>>;\n};\n\nconst QueryGraphRenderer = React.forwardRef<HTMLDivElement, RendererProps>(\n function QueryGraphRendererComponent(\n {\n blocks,\n connections,\n nodes,\n structureKey,\n autoCenter,\n active,\n popup,\n setPopup,\n renderNodePopup,\n onNodeClick,\n className,\n },\n forwardedRef,\n ) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n useImperativeHandle(forwardedRef, () => rootRef.current as HTMLDivElement);\n const attachedRef = useRef(false);\n const centeredRef = useRef(false);\n const previousActiveRef = useRef(false);\n const previousStructureRef = useRef(structureKey);\n const [attached, setAttached] = useState(false);\n const [hoveredNodeId, setHoveredNodeId] = useState<string>();\n const themeValue = useThemeValue();\n const {graph, api, setEntities, start, stop} = useGraph({\n name: 'query-graph',\n settings: {\n connection: BezierMultipointConnection,\n canDrag: ECanDrag.NONE,\n canDragCamera: true,\n canZoomCamera: true,\n canCreateNewConnections: false,\n useBezierConnections: true,\n bezierConnectionDirection: 'horizontal',\n showConnectionArrows: true,\n useBlocksAnchors: false,\n blockComponents: {'query-node': QueryGraphCanvasBlock},\n },\n });\n const [scale, setScale] = useState(graph.cameraService.getCameraState().scale);\n const {scaleMin, scaleMax} = graph.cameraService.getCameraState();\n useGraphEvent(graph, 'camera-change', ({scale: nextScale}) => setScale(nextScale));\n useGraphEvent(graph, 'mouseenter', ({target}) => {\n const state = (target as {state?: QueryGraphBlock} | undefined)?.state;\n if (state?.meta?.node) setHoveredNodeId(state.meta.node.id);\n });\n useGraphEvent(graph, 'mouseleave', ({target}) => {\n const state = (target as {state?: QueryGraphBlock} | undefined)?.state;\n if (state?.meta?.node) setHoveredNodeId(undefined);\n });\n\n useEffect(() => {\n if (!rootRef.current) return;\n\n const background = getComputedStyle(rootRef.current)\n .getPropertyValue('--g-color-base-background')\n .trim();\n const connection = getComputedStyle(rootRef.current)\n .getPropertyValue('--g-color-line-generic-accent')\n .trim();\n if (!background || !connection) return;\n\n const colors = api.getGraphColors();\n api.updateGraphColors({\n ...colors,\n canvas: {\n ...colors.canvas,\n belowLayerBackground: background,\n layerBackground: background,\n border: background,\n dots: background,\n },\n connection: {\n ...colors.connection,\n background: connection,\n },\n });\n }, [api, themeValue]);\n\n const visibleConnections = useMemo(\n () =>\n connections.map((connection) => ({\n ...connection,\n selected: Boolean(\n hoveredNodeId &&\n (connection.sourceBlockId === hoveredNodeId ||\n connection.targetBlockId === hoveredNodeId),\n ),\n })),\n [connections, hoveredNodeId],\n );\n useEffect(\n () => setEntities({blocks, connections: visibleConnections}),\n [blocks, setEntities, visibleConnections],\n );\n useEffect(() => {\n if (!attachedRef.current) return;\n if (active) start();\n else stop();\n }, [active, start, stop]);\n useEffect(() => {\n const changed = previousStructureRef.current !== structureKey;\n const becameActive = active && !previousActiveRef.current;\n let frame: number | undefined;\n if (\n attached &&\n active &&\n (!centeredRef.current || becameActive || (autoCenter && changed))\n ) {\n frame = requestAnimationFrame(() => {\n api.zoomToViewPort({padding: FIT_PADDING});\n centeredRef.current = true;\n });\n }\n previousActiveRef.current = Boolean(active);\n previousStructureRef.current = structureKey;\n setPopup(undefined);\n return () => {\n if (frame !== undefined) cancelAnimationFrame(frame);\n };\n }, [active, api, attached, autoCenter, setPopup, structureKey]);\n\n const handleClick: NonNullable<React.ComponentProps<typeof GraphCanvas>['click']> = ({\n target,\n sourceEvent,\n }) => {\n const state = (target as {state?: QueryGraphBlock; isBlock?: boolean} | undefined)\n ?.state;\n if (!state?.meta?.node || !rootRef.current) {\n setPopup(undefined);\n return;\n }\n const mouseEvent = sourceEvent as MouseEvent;\n const rect = rootRef.current.getBoundingClientRect();\n const left = Math.min(\n Math.max(16, mouseEvent.clientX - rect.left + 12),\n rect.width - 456,\n );\n const top = Math.min(\n Math.max(16, mouseEvent.clientY - rect.top + 12),\n rect.height - 240,\n );\n setPopup({\n nodeId: state.meta.node.id,\n left: Math.max(16, left),\n top: Math.max(16, top),\n });\n onNodeClick?.(state.meta.node, mouseEvent);\n };\n\n const selectedNode = popup ? nodes.find((node) => node.id === popup.nodeId) : undefined;\n const defaultContent = selectedNode ? <QueryGraphPopup node={selectedNode} /> : null;\n let popupContent: React.ReactNode = null;\n if (selectedNode) {\n popupContent = renderNodePopup\n ? renderNodePopup({node: selectedNode, defaultContent})\n : defaultContent;\n }\n\n return (\n <div ref={rootRef} className={block(null, className)}>\n <GraphCanvas\n graph={graph}\n className={block('canvas')}\n click={handleClick}\n renderBlock={renderEmptyBlock}\n onStateChanged={({state}) => {\n if (state === GraphState.ATTACHED) {\n if (active) start();\n attachedRef.current = true;\n setAttached(true);\n }\n }}\n />\n <div className={block('toolbox')}>\n <Tooltip content={i18n('action_zoom-in')} placement=\"right\">\n <Button\n view=\"raised\"\n pin=\"round-brick\"\n aria-label={i18n('action_zoom-in')}\n disabled={scale >= scaleMax}\n onClick={() => changeZoom(graph, ZOOM_STEP)}\n >\n <Icon data={MagnifierPlus} />\n </Button>\n </Tooltip>\n <Tooltip content={i18n('action_fit')} placement=\"right\">\n <Button\n view=\"raised\"\n pin=\"brick-brick\"\n aria-label={i18n('action_fit')}\n onClick={() => api.zoomToViewPort({padding: FIT_PADDING})}\n >\n <Icon data={SquareDashed} />\n </Button>\n </Tooltip>\n <Tooltip content={i18n('action_zoom-out')} placement=\"right\">\n <Button\n view=\"raised\"\n pin=\"brick-round\"\n aria-label={i18n('action_zoom-out')}\n disabled={scale <= scaleMin}\n onClick={() => changeZoom(graph, -ZOOM_STEP)}\n >\n <Icon data={MagnifierMinus} />\n </Button>\n </Tooltip>\n </div>\n {popup && popupContent !== null && (\n <div className={block('popup')} style={{left: popup.left, top: popup.top}}>\n {popupContent}\n </div>\n )}\n </div>\n );\n },\n);\n\nfunction changeZoom(graph: ReturnType<typeof useGraph>['graph'], delta: number) {\n const camera = graph.cameraService;\n const state = camera.getCameraState();\n const nextScale = Math.min(state.scaleMax, Math.max(state.scaleMin, state.scale + delta));\n camera.zoom(state.width / 2, state.height / 2, nextScale);\n}\n\nfunction State({className, children}: {className?: string; children: React.ReactNode}) {\n return (\n <div className={block(null, className)}>\n <div className={block('state')}>{children}</div>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ .qp-query-graph {
2
+ position: relative;
3
+ min-height: 360px;
4
+ height: 100%;
5
+ overflow: hidden;
6
+ background: var(--g-color-base-background);
7
+
8
+ &__canvas {
9
+ width: 100%;
10
+ height: 100%;
11
+ min-height: 360px;
12
+ }
13
+
14
+ &__toolbox {
15
+ position: absolute;
16
+ z-index: 4;
17
+ top: var(--g-spacing-4);
18
+ left: var(--g-spacing-4);
19
+ display: flex;
20
+ width: 28px;
21
+ flex-direction: column;
22
+ }
23
+
24
+ &__popup {
25
+ position: absolute;
26
+ z-index: 5;
27
+ width: min(440px, calc(100% - var(--g-spacing-8)));
28
+ max-height: calc(100% - var(--g-spacing-8));
29
+ overflow: auto;
30
+ padding: var(--g-spacing-4);
31
+ border: 1px solid var(--g-color-line-generic);
32
+ border-radius: var(--g-border-radius-l);
33
+ box-shadow: 0 4px 24px var(--g-color-sfx-shadow);
34
+ background: var(--g-color-base-float);
35
+ }
36
+
37
+ &__popup-content,
38
+ &__jobs,
39
+ &__schemas,
40
+ &__details {
41
+ display: flex;
42
+ flex-direction: column;
43
+ gap: var(--g-spacing-3);
44
+ }
45
+
46
+ &__popup-title {
47
+ display: flex;
48
+ align-items: center;
49
+ gap: var(--g-spacing-2);
50
+
51
+ > div {
52
+ display: flex;
53
+ min-width: 0;
54
+ flex-direction: column;
55
+ }
56
+ }
57
+
58
+ &__detail-row {
59
+ display: flex;
60
+ justify-content: space-between;
61
+ gap: var(--g-spacing-3);
62
+ }
63
+
64
+ &__state {
65
+ height: 100%;
66
+ min-height: 360px;
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ padding: var(--g-spacing-6);
71
+ text-align: center;
72
+ }
73
+
74
+ &__large-graph {
75
+ display: flex;
76
+ max-width: 480px;
77
+ flex-direction: column;
78
+ align-items: center;
79
+ gap: var(--g-spacing-4);
80
+ }
81
+ }