@ytsaurus/ui 1.8.0 → 1.10.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 (159) hide show
  1. package/README.md +0 -1
  2. package/build/cjs/shared/constants/settings-types.d.ts +7 -1
  3. package/build/cjs/shared/constants/settings-types.js.map +1 -1
  4. package/build/cjs/shared/constants/settings.d.ts +1 -0
  5. package/build/cjs/shared/constants/settings.js +1 -0
  6. package/build/cjs/shared/constants/settings.js.map +1 -1
  7. package/build/cjs/ui/components/Icon/Icon.d.ts +1 -0
  8. package/build/cjs/ui/components/Icon/importGravityIcons.d.ts +1 -0
  9. package/build/cjs/ui/components/Icon/importGravityIcons.js +18 -1
  10. package/build/cjs/ui/components/Icon/importGravityIcons.js.map +1 -1
  11. package/build/cjs/ui/containers/SettingsMenu/SettingsMenuItem.d.ts +2 -0
  12. package/build/cjs/ui/containers/SettingsMenu/SettingsMenuItem.js +10 -4
  13. package/build/cjs/ui/containers/SettingsMenu/SettingsMenuItem.js.map +1 -1
  14. package/build/cjs/ui/containers/SettingsPanel/settings-description.js +1 -2
  15. package/build/cjs/ui/containers/SettingsPanel/settings-description.js.map +1 -1
  16. package/build/cjs/ui/hooks/use-prevent-unload.d.ts +3 -0
  17. package/build/cjs/ui/hooks/use-prevent-unload.js +25 -0
  18. package/build/cjs/ui/hooks/use-prevent-unload.js.map +1 -0
  19. package/build/cjs/ui/pages/components/tabs/node/NodeLocations/NodeLocations.js +27 -13
  20. package/build/cjs/ui/pages/components/tabs/node/NodeLocations/NodeLocations.js.map +1 -1
  21. package/build/cjs/ui/pages/components/tabs/nodes/NodeCard/NodeCard.d.ts +1 -0
  22. package/build/cjs/ui/pages/components/tabs/nodes/NodeCard/NodeCard.js +12 -1
  23. package/build/cjs/ui/pages/components/tabs/nodes/NodeCard/NodeCard.js.map +1 -1
  24. package/build/cjs/ui/pages/query-tracker/QueriesListSidebarToggleButton/QueriesListSidebarToggleButton.d.ts +2 -0
  25. package/build/cjs/ui/pages/query-tracker/QueriesListSidebarToggleButton/QueriesListSidebarToggleButton.js +28 -0
  26. package/build/cjs/ui/pages/query-tracker/QueriesListSidebarToggleButton/QueriesListSidebarToggleButton.js.map +1 -0
  27. package/build/cjs/ui/pages/query-tracker/QueryEditor/QueryEditor.d.ts +1 -7
  28. package/build/cjs/ui/pages/query-tracker/QueryEditor/QueryEditor.js +4 -34
  29. package/build/cjs/ui/pages/query-tracker/QueryEditor/QueryEditor.js.map +1 -1
  30. package/build/cjs/ui/pages/query-tracker/QueryResults/hooks/useQueryResultTabs.js +5 -3
  31. package/build/cjs/ui/pages/query-tracker/QueryResults/hooks/useQueryResultTabs.js.map +1 -1
  32. package/build/cjs/ui/pages/query-tracker/QueryTracker/QueryTracker.js +11 -11
  33. package/build/cjs/ui/pages/query-tracker/QueryTracker/QueryTracker.js.map +1 -1
  34. package/build/cjs/ui/pages/query-tracker/QueryTrackerTopRow/index.js +3 -2
  35. package/build/cjs/ui/pages/query-tracker/QueryTrackerTopRow/index.js.map +1 -1
  36. package/build/cjs/ui/pages/query-tracker/hooks/QueriesList/index.d.ts +4 -0
  37. package/build/cjs/ui/pages/query-tracker/hooks/QueriesList/index.js +14 -1
  38. package/build/cjs/ui/pages/query-tracker/hooks/QueriesList/index.js.map +1 -1
  39. package/build/cjs/ui/pages/query-tracker/module/query/actions.d.ts +1 -1
  40. package/build/cjs/ui/pages/query-tracker/module/query/actions.js.map +1 -1
  41. package/build/cjs/ui/pages/query-tracker/module/query/reducer.d.ts +1 -0
  42. package/build/cjs/ui/pages/query-tracker/module/query/reducer.js +6 -1
  43. package/build/cjs/ui/pages/query-tracker/module/query/reducer.js.map +1 -1
  44. package/build/cjs/ui/pages/query-tracker/module/query/selectors.d.ts +1 -0
  45. package/build/cjs/ui/pages/query-tracker/module/query/selectors.js +4 -1
  46. package/build/cjs/ui/pages/query-tracker/module/query/selectors.js.map +1 -1
  47. package/build/cjs/ui/pages/query-tracker/module/settings/selector.d.ts +839 -0
  48. package/build/cjs/ui/pages/query-tracker/module/settings/selector.js +12 -0
  49. package/build/cjs/ui/pages/query-tracker/module/settings/selector.js.map +1 -0
  50. package/build/cjs/ui/store/actions/settings/index.d.ts +3 -2
  51. package/build/cjs/ui/store/actions/settings/index.js +8 -2
  52. package/build/cjs/ui/store/actions/settings/index.js.map +1 -1
  53. package/build/cjs/ui/store/reducers/global/cluster-ui-config.d.ts +0 -1
  54. package/build/cjs/ui/store/reducers/global/cluster-ui-config.js.map +1 -1
  55. package/build/cjs/ui/store/selectors/global/index.d.ts +0 -840
  56. package/build/cjs/ui/store/selectors/global/index.js +2 -8
  57. package/build/cjs/ui/store/selectors/global/index.js.map +1 -1
  58. package/build/cjs/ui/store/selectors/navigation/content/table.d.ts +1 -1
  59. package/build/cjs/ui/store/selectors/navigation/content/table.js +2 -3
  60. package/build/cjs/ui/store/selectors/navigation/content/table.js.map +1 -1
  61. package/build/cjs/ui/store/selectors/settings-base.d.ts +3 -0
  62. package/build/cjs/ui/store/selectors/settings-base.js +10 -0
  63. package/build/cjs/ui/store/selectors/settings-base.js.map +1 -0
  64. package/build/esm/shared/constants/settings-types.d.ts +7 -1
  65. package/build/esm/shared/constants/settings-types.js.map +1 -1
  66. package/build/esm/shared/constants/settings.d.ts +1 -0
  67. package/build/esm/shared/constants/settings.js +2 -1
  68. package/build/esm/shared/constants/settings.js.map +1 -1
  69. package/build/esm/ui/components/Icon/Icon.d.ts +1 -0
  70. package/build/esm/ui/components/Icon/importGravityIcons.d.ts +1 -0
  71. package/build/esm/ui/components/Icon/importGravityIcons.js +18 -1
  72. package/build/esm/ui/components/Icon/importGravityIcons.js.map +1 -1
  73. package/build/esm/ui/containers/SettingsMenu/SettingsMenuItem.d.ts +2 -0
  74. package/build/esm/ui/containers/SettingsMenu/SettingsMenuItem.js +11 -5
  75. package/build/esm/ui/containers/SettingsMenu/SettingsMenuItem.js.map +1 -1
  76. package/build/esm/ui/containers/SettingsPanel/settings-description.js +2 -3
  77. package/build/esm/ui/containers/SettingsPanel/settings-description.js.map +1 -1
  78. package/build/esm/ui/hooks/use-prevent-unload.d.ts +3 -0
  79. package/build/esm/ui/hooks/use-prevent-unload.js +19 -0
  80. package/build/esm/ui/hooks/use-prevent-unload.js.map +1 -0
  81. package/build/esm/ui/pages/components/tabs/node/NodeLocations/NodeLocations.js +28 -13
  82. package/build/esm/ui/pages/components/tabs/node/NodeLocations/NodeLocations.js.map +1 -1
  83. package/build/esm/ui/pages/components/tabs/nodes/NodeCard/NodeCard.d.ts +1 -0
  84. package/build/esm/ui/pages/components/tabs/nodes/NodeCard/NodeCard.js +12 -1
  85. package/build/esm/ui/pages/components/tabs/nodes/NodeCard/NodeCard.js.map +1 -1
  86. package/build/esm/ui/pages/query-tracker/QueriesListSidebarToggleButton/QueriesListSidebarToggleButton.d.ts +2 -0
  87. package/build/esm/ui/pages/query-tracker/QueriesListSidebarToggleButton/QueriesListSidebarToggleButton.js +21 -0
  88. package/build/esm/ui/pages/query-tracker/QueriesListSidebarToggleButton/QueriesListSidebarToggleButton.js.map +1 -0
  89. package/build/esm/ui/pages/query-tracker/QueryEditor/QueryEditor.d.ts +1 -7
  90. package/build/esm/ui/pages/query-tracker/QueryEditor/QueryEditor.js +4 -34
  91. package/build/esm/ui/pages/query-tracker/QueryEditor/QueryEditor.js.map +1 -1
  92. package/build/esm/ui/pages/query-tracker/QueryResults/hooks/useQueryResultTabs.js +5 -3
  93. package/build/esm/ui/pages/query-tracker/QueryResults/hooks/useQueryResultTabs.js.map +1 -1
  94. package/build/esm/ui/pages/query-tracker/QueryTracker/QueryTracker.js +11 -11
  95. package/build/esm/ui/pages/query-tracker/QueryTracker/QueryTracker.js.map +1 -1
  96. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/index.js +4 -2
  97. package/build/esm/ui/pages/query-tracker/QueryTrackerTopRow/index.js.map +1 -1
  98. package/build/esm/ui/pages/query-tracker/hooks/QueriesList/index.d.ts +4 -0
  99. package/build/esm/ui/pages/query-tracker/hooks/QueriesList/index.js +13 -0
  100. package/build/esm/ui/pages/query-tracker/hooks/QueriesList/index.js.map +1 -1
  101. package/build/esm/ui/pages/query-tracker/module/query/actions.d.ts +1 -1
  102. package/build/esm/ui/pages/query-tracker/module/query/actions.js.map +1 -1
  103. package/build/esm/ui/pages/query-tracker/module/query/reducer.d.ts +1 -0
  104. package/build/esm/ui/pages/query-tracker/module/query/reducer.js +6 -1
  105. package/build/esm/ui/pages/query-tracker/module/query/reducer.js.map +1 -1
  106. package/build/esm/ui/pages/query-tracker/module/query/selectors.d.ts +1 -0
  107. package/build/esm/ui/pages/query-tracker/module/query/selectors.js +3 -0
  108. package/build/esm/ui/pages/query-tracker/module/query/selectors.js.map +1 -1
  109. package/build/esm/ui/pages/query-tracker/module/settings/selector.d.ts +839 -0
  110. package/build/esm/ui/pages/query-tracker/module/settings/selector.js +6 -0
  111. package/build/esm/ui/pages/query-tracker/module/settings/selector.js.map +1 -0
  112. package/build/esm/ui/store/actions/settings/index.d.ts +3 -2
  113. package/build/esm/ui/store/actions/settings/index.js +7 -2
  114. package/build/esm/ui/store/actions/settings/index.js.map +1 -1
  115. package/build/esm/ui/store/reducers/global/cluster-ui-config.d.ts +0 -1
  116. package/build/esm/ui/store/reducers/global/cluster-ui-config.js.map +1 -1
  117. package/build/esm/ui/store/selectors/global/index.d.ts +0 -840
  118. package/build/esm/ui/store/selectors/global/index.js +0 -6
  119. package/build/esm/ui/store/selectors/global/index.js.map +1 -1
  120. package/build/esm/ui/store/selectors/navigation/content/table.d.ts +1 -1
  121. package/build/esm/ui/store/selectors/navigation/content/table.js +2 -3
  122. package/build/esm/ui/store/selectors/navigation/content/table.js.map +1 -1
  123. package/build/esm/ui/store/selectors/settings-base.d.ts +3 -0
  124. package/build/esm/ui/store/selectors/settings-base.js +4 -0
  125. package/build/esm/ui/store/selectors/settings-base.js.map +1 -0
  126. package/dist/public/build/assets-manifest.json +22 -22
  127. package/dist/public/build/css/{225.b92ccff1.chunk.css → 150.81172525.chunk.css} +1 -1
  128. package/dist/public/build/css/{225.b92ccff1.chunk.css.map → 150.81172525.chunk.css.map} +1 -1
  129. package/dist/public/build/css/{622.fd3f4ea8.chunk.css → 869.8f91d9da.chunk.css} +1 -1
  130. package/dist/public/build/css/{622.fd3f4ea8.chunk.css.map → 869.8f91d9da.chunk.css.map} +1 -1
  131. package/dist/public/build/css/{315.6f50c50a.chunk.css → 934.adfa96ce.chunk.css} +1 -1
  132. package/dist/public/build/css/{315.6f50c50a.chunk.css.map → 934.adfa96ce.chunk.css.map} +1 -1
  133. package/dist/public/build/js/150.911decab.chunk.js +2 -0
  134. package/dist/public/build/js/150.911decab.chunk.js.map +1 -0
  135. package/dist/public/build/js/869.3cf341b5.chunk.js +3 -0
  136. package/dist/public/build/js/869.3cf341b5.chunk.js.map +1 -0
  137. package/dist/public/build/js/925.ef88f4d2.chunk.js +2 -0
  138. package/dist/public/build/js/{925.88573496.chunk.js.map → 925.ef88f4d2.chunk.js.map} +1 -1
  139. package/dist/public/build/js/934.fb5e730e.chunk.js +2 -0
  140. package/dist/public/build/js/934.fb5e730e.chunk.js.map +1 -0
  141. package/dist/public/build/js/main.ff54db3c.js +3 -0
  142. package/dist/public/build/js/{main.f963eaee.js.map → main.ff54db3c.js.map} +1 -1
  143. package/dist/public/build/js/{runtime.f4dc30b7.js → runtime.fea34b4d.js} +2 -2
  144. package/dist/public/build/js/{runtime.f4dc30b7.js.map → runtime.fea34b4d.js.map} +1 -1
  145. package/dist/public/build/manifest.json +18 -18
  146. package/dist/shared/constants/settings-types.d.ts +7 -1
  147. package/dist/shared/constants/settings.d.ts +1 -0
  148. package/dist/shared/constants/settings.js +1 -0
  149. package/package.json +2 -2
  150. package/dist/public/build/js/225.1200e703.chunk.js +0 -2
  151. package/dist/public/build/js/225.1200e703.chunk.js.map +0 -1
  152. package/dist/public/build/js/315.332b1ef1.chunk.js +0 -2
  153. package/dist/public/build/js/315.332b1ef1.chunk.js.map +0 -1
  154. package/dist/public/build/js/622.137ced51.chunk.js +0 -3
  155. package/dist/public/build/js/622.137ced51.chunk.js.map +0 -1
  156. package/dist/public/build/js/925.88573496.chunk.js +0 -2
  157. package/dist/public/build/js/main.f963eaee.js +0 -3
  158. /package/dist/public/build/js/{622.137ced51.chunk.js.LICENSE.txt → 869.3cf341b5.chunk.js.LICENSE.txt} +0 -0
  159. /package/dist/public/build/js/{main.f963eaee.js.LICENSE.txt → main.ff54db3c.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[925],{64696:(e,s,a)=>{a.r(s),a.d(s,{default:()=>N}),a(89526);var l=a(10440),r=a(46869),i=a(8819),c=a(46562),t=a(92070),n=a(6370),d=a(29648),u=a(80703),o=a(32140),h=a(68053),v=a(67557);function m(e){var s,a,l=e.className,r=e.cluster,i=e.path,n=(0,t.v9)(h.Sw),m=(0,t.v9)(h.r8),x=null===(s=(0,t.v9)(h.pm))||void 0===s?void 0:s.id,j="";return x&&!m?(j=(0,o.N)(r,x),a="action"):(j=(0,o.p)(r,n,{path:i,useDraft:!0}),a="outlined"),(0,v.jsx)(u.Z,{routed:!0,url:j,children:(0,v.jsx)(d.z,{className:l,view:a,size:"l",title:"Open Queries page",children:(0,v.jsx)(c.Z,{awesome:"external-link",size:16})})})}var x=a(64814),j=a(89442),p=(0,l.Z)("query-widget");function N(e){var s=e.onClose,a=(0,t.v9)(n.SY),l=(0,t.v9)(x.DW);return(0,v.jsx)("div",{className:p(),children:(0,v.jsxs)(j.v,{children:[(0,v.jsxs)("div",{className:p("header"),children:[(0,v.jsx)(i.O,{className:p("meta-form"),cluster:a,path:l}),(0,v.jsxs)("div",{className:p("header-controls"),children:[(0,v.jsx)("div",{className:p("header-control-left"),children:(0,v.jsx)(m,{className:p("control"),cluster:a,path:l})}),(0,v.jsx)("div",{className:p("header-control-right"),children:(0,v.jsx)(d.z,{view:"flat",className:p("control"),onClick:s,size:"l",children:(0,v.jsx)(c.Z,{awesome:"times",size:16})})})]})]}),(0,v.jsx)(r.Z,{})]})})}}}]);
2
+ //# sourceMappingURL=925.ef88f4d2.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"js/925.88573496.chunk.js","mappings":"4QAcO,SAASA,EAAsBC,GAAqC,IAADC,EAKlEC,EALgCC,EAASH,EAATG,UAAWC,EAAOJ,EAAPI,QAASC,EAAIL,EAAJK,KAClDC,GAASC,EAAAA,EAAAA,IAAYC,EAAAA,IACrBC,GAAWF,EAAAA,EAAAA,IAAYG,EAAAA,IACvBC,EAA+B,QAAxBV,GAAGM,EAAAA,EAAAA,IAAYK,EAAAA,WAAS,IAAAX,OAAA,EAArBA,EAAuBY,GACnCC,EAAM,GAYV,OAVIH,IAAYF,GACZK,GAAMC,EAAAA,EAAAA,GAAeX,EAASO,GAC9BT,EAAa,WAEbY,GAAME,EAAAA,EAAAA,GAAkBZ,EAASE,EAAQ,CACrCD,KAAAA,EACAY,UAAU,IAEdf,EAAa,aAGbgB,EAAAA,EAAAA,KAACC,EAAAA,EAAI,CAACC,QAAM,EAACN,IAAKA,EAAIO,UAClBH,EAAAA,EAAAA,KAACI,EAAAA,EAAM,CAACnB,UAAWA,EAAWoB,KAAMrB,EAAYsB,KAAK,IAAIC,MAAM,oBAAmBJ,UAC9EH,EAAAA,EAAAA,KAACQ,EAAAA,EAAI,CAACC,QAAQ,gBAAgBH,KAAM,QAIpD,C,0BCxBMI,GAAQC,EAAAA,EAAAA,GAAG,gBAIF,SAASC,EAAW9B,GAA+B,IAA7B+B,EAAO/B,EAAP+B,QAC3B3B,GAAUG,EAAAA,EAAAA,IAAYyB,EAAAA,IACtB3B,GAAOE,EAAAA,EAAAA,IAAY0B,EAAAA,IACzB,OACIf,EAAAA,EAAAA,KAAA,OAAKf,UAAWyB,IAAQP,UACpBa,EAAAA,EAAAA,MAACC,EAAAA,EAAc,CAAAd,SAAA,EACXa,EAAAA,EAAAA,MAAA,OAAK/B,UAAWyB,EAAM,UAAUP,SAAA,EAC5BH,EAAAA,EAAAA,KAACkB,EAAAA,EAAa,CAACjC,UAAWyB,EAAM,aAAcxB,QAASA,EAASC,KAAMA,KACtE6B,EAAAA,EAAAA,MAAA,OAAK/B,UAAWyB,EAAM,mBAAmBP,SAAA,EACrCH,EAAAA,EAAAA,KAAA,OAAKf,UAAWyB,EAAM,uBAAuBP,UACzCH,EAAAA,EAAAA,KAACnB,EAAsB,CACnBI,UAAWyB,EAAM,WACjBxB,QAASA,EACTC,KAAMA,OAGda,EAAAA,EAAAA,KAAA,OAAKf,UAAWyB,EAAM,wBAAwBP,UAC1CH,EAAAA,EAAAA,KAACI,EAAAA,EAAM,CACHC,KAAK,OACLpB,UAAWyB,EAAM,WACjBS,QAASN,EACTP,KAAK,IAAGH,UAERH,EAAAA,EAAAA,KAACQ,EAAAA,EAAI,CAACC,QAAQ,QAAQH,KAAM,gBAK5CN,EAAAA,EAAAA,KAACoB,EAAAA,EAAW,QAI5B,C","sources":["webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryTrackerOpenButton/QueryTrackerOpenButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryWidget/index.tsx"],"sourcesContent":["import React from 'react';\nimport {Button, ButtonProps} from '@gravity-ui/uikit';\nimport Link from '../../../components/Link/Link';\nimport Icon from '../../../components/Icon/Icon';\nimport {createNewQueryUrl, createQueryUrl} from '../utils/navigation';\nimport {getQuery, getQueryEngine, isQueryDraftEditted} from '../module/query/selectors';\nimport {useSelector} from 'react-redux';\n\ninterface Props {\n className?: string;\n cluster: string;\n path: string;\n}\n\nexport function QueryTrackerOpenButton({className, cluster, path}: Props) {\n const engine = useSelector(getQueryEngine);\n const isEdited = useSelector(isQueryDraftEditted);\n const queryId = useSelector(getQuery)?.id;\n let url = '';\n let buttonView: ButtonProps['view'];\n if (queryId && !isEdited) {\n url = createQueryUrl(cluster, queryId);\n buttonView = 'action';\n } else {\n url = createNewQueryUrl(cluster, engine, {\n path,\n useDraft: true,\n });\n buttonView = 'outlined';\n }\n return (\n <Link routed url={url}>\n <Button className={className} view={buttonView} size=\"l\" title=\"Open Queries page\">\n <Icon awesome=\"external-link\" size={16} />\n </Button>\n </Link>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport QueryEditor from '../QueryEditor/QueryEditor';\nimport {QueryMetaForm} from '../QueryTrackerTopRow/QueryMetaForm/QueryMetaForm';\nimport Icon from '../../../components/Icon/Icon';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../../../store/selectors/global';\nimport {Button} from '@gravity-ui/uikit';\nimport {QueryTrackerOpenButton} from '../QueryTrackerOpenButton/QueryTrackerOpenButton';\nimport {getPath} from '../../../store/selectors/navigation';\nimport {QueriesPooling} from '../hooks/QueriesPooling/context';\nimport './index.scss';\n\nconst block = cn('query-widget');\n\nexport type QueryWidgetProps = {onClose: () => void};\n\nexport default function QueryWidget({onClose}: QueryWidgetProps) {\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n return (\n <div className={block()}>\n <QueriesPooling>\n <div className={block('header')}>\n <QueryMetaForm className={block('meta-form')} cluster={cluster} path={path} />\n <div className={block('header-controls')}>\n <div className={block('header-control-left')}>\n <QueryTrackerOpenButton\n className={block('control')}\n cluster={cluster}\n path={path}\n />\n </div>\n <div className={block('header-control-right')}>\n <Button\n view=\"flat\"\n className={block('control')}\n onClick={onClose}\n size=\"l\"\n >\n <Icon awesome=\"times\" size={16} />\n </Button>\n </div>\n </div>\n </div>\n <QueryEditor />\n </QueriesPooling>\n </div>\n );\n}\n"],"names":["QueryTrackerOpenButton","_ref","_useSelector","buttonView","className","cluster","path","engine","useSelector","getQueryEngine","isEdited","isQueryDraftEditted","queryId","getQuery","id","url","createQueryUrl","createNewQueryUrl","useDraft","_jsx","Link","routed","children","Button","view","size","title","Icon","awesome","block","cn","QueryWidget","onClose","getCluster","getPath","_jsxs","QueriesPooling","QueryMetaForm","onClick","QueryEditor"],"sourceRoot":""}
1
+ {"version":3,"file":"js/925.ef88f4d2.chunk.js","mappings":"8QAcO,SAASA,EAAsBC,GAAqC,IAADC,EAKlEC,EALgCC,EAASH,EAATG,UAAWC,EAAOJ,EAAPI,QAASC,EAAIL,EAAJK,KAClDC,GAASC,EAAAA,EAAAA,IAAYC,EAAAA,IACrBC,GAAWF,EAAAA,EAAAA,IAAYG,EAAAA,IACvBC,EAA+B,QAAxBV,GAAGM,EAAAA,EAAAA,IAAYK,EAAAA,WAAS,IAAAX,OAAA,EAArBA,EAAuBY,GACnCC,EAAM,GAYV,OAVIH,IAAYF,GACZK,GAAMC,EAAAA,EAAAA,GAAeX,EAASO,GAC9BT,EAAa,WAEbY,GAAME,EAAAA,EAAAA,GAAkBZ,EAASE,EAAQ,CACrCD,KAAAA,EACAY,UAAU,IAEdf,EAAa,aAGbgB,EAAAA,EAAAA,KAACC,EAAAA,EAAI,CAACC,QAAM,EAACN,IAAKA,EAAIO,UAClBH,EAAAA,EAAAA,KAACI,EAAAA,EAAM,CAACnB,UAAWA,EAAWoB,KAAMrB,EAAYsB,KAAK,IAAIC,MAAM,oBAAmBJ,UAC9EH,EAAAA,EAAAA,KAACQ,EAAAA,EAAI,CAACC,QAAQ,gBAAgBH,KAAM,QAIpD,C,0BCxBMI,GAAQC,EAAAA,EAAAA,GAAG,gBAIF,SAASC,EAAW9B,GAA+B,IAA7B+B,EAAO/B,EAAP+B,QAC3B3B,GAAUG,EAAAA,EAAAA,IAAYyB,EAAAA,IACtB3B,GAAOE,EAAAA,EAAAA,IAAY0B,EAAAA,IACzB,OACIf,EAAAA,EAAAA,KAAA,OAAKf,UAAWyB,IAAQP,UACpBa,EAAAA,EAAAA,MAACC,EAAAA,EAAc,CAAAd,SAAA,EACXa,EAAAA,EAAAA,MAAA,OAAK/B,UAAWyB,EAAM,UAAUP,SAAA,EAC5BH,EAAAA,EAAAA,KAACkB,EAAAA,EAAa,CAACjC,UAAWyB,EAAM,aAAcxB,QAASA,EAASC,KAAMA,KACtE6B,EAAAA,EAAAA,MAAA,OAAK/B,UAAWyB,EAAM,mBAAmBP,SAAA,EACrCH,EAAAA,EAAAA,KAAA,OAAKf,UAAWyB,EAAM,uBAAuBP,UACzCH,EAAAA,EAAAA,KAACnB,EAAsB,CACnBI,UAAWyB,EAAM,WACjBxB,QAASA,EACTC,KAAMA,OAGda,EAAAA,EAAAA,KAAA,OAAKf,UAAWyB,EAAM,wBAAwBP,UAC1CH,EAAAA,EAAAA,KAACI,EAAAA,EAAM,CACHC,KAAK,OACLpB,UAAWyB,EAAM,WACjBS,QAASN,EACTP,KAAK,IAAGH,UAERH,EAAAA,EAAAA,KAACQ,EAAAA,EAAI,CAACC,QAAQ,QAAQH,KAAM,gBAK5CN,EAAAA,EAAAA,KAACoB,EAAAA,EAAW,QAI5B,C","sources":["webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryTrackerOpenButton/QueryTrackerOpenButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryWidget/index.tsx"],"sourcesContent":["import React from 'react';\nimport {Button, ButtonProps} from '@gravity-ui/uikit';\nimport Link from '../../../components/Link/Link';\nimport Icon from '../../../components/Icon/Icon';\nimport {createNewQueryUrl, createQueryUrl} from '../utils/navigation';\nimport {getQuery, getQueryEngine, isQueryDraftEditted} from '../module/query/selectors';\nimport {useSelector} from 'react-redux';\n\ninterface Props {\n className?: string;\n cluster: string;\n path: string;\n}\n\nexport function QueryTrackerOpenButton({className, cluster, path}: Props) {\n const engine = useSelector(getQueryEngine);\n const isEdited = useSelector(isQueryDraftEditted);\n const queryId = useSelector(getQuery)?.id;\n let url = '';\n let buttonView: ButtonProps['view'];\n if (queryId && !isEdited) {\n url = createQueryUrl(cluster, queryId);\n buttonView = 'action';\n } else {\n url = createNewQueryUrl(cluster, engine, {\n path,\n useDraft: true,\n });\n buttonView = 'outlined';\n }\n return (\n <Link routed url={url}>\n <Button className={className} view={buttonView} size=\"l\" title=\"Open Queries page\">\n <Icon awesome=\"external-link\" size={16} />\n </Button>\n </Link>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport QueryEditor from '../QueryEditor/QueryEditor';\nimport {QueryMetaForm} from '../QueryTrackerTopRow/QueryMetaForm/QueryMetaForm';\nimport Icon from '../../../components/Icon/Icon';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../../../store/selectors/global';\nimport {Button} from '@gravity-ui/uikit';\nimport {QueryTrackerOpenButton} from '../QueryTrackerOpenButton/QueryTrackerOpenButton';\nimport {getPath} from '../../../store/selectors/navigation';\nimport {QueriesPooling} from '../hooks/QueriesPooling/context';\nimport './index.scss';\n\nconst block = cn('query-widget');\n\nexport type QueryWidgetProps = {onClose: () => void};\n\nexport default function QueryWidget({onClose}: QueryWidgetProps) {\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n return (\n <div className={block()}>\n <QueriesPooling>\n <div className={block('header')}>\n <QueryMetaForm className={block('meta-form')} cluster={cluster} path={path} />\n <div className={block('header-controls')}>\n <div className={block('header-control-left')}>\n <QueryTrackerOpenButton\n className={block('control')}\n cluster={cluster}\n path={path}\n />\n </div>\n <div className={block('header-control-right')}>\n <Button\n view=\"flat\"\n className={block('control')}\n onClick={onClose}\n size=\"l\"\n >\n <Icon awesome=\"times\" size={16} />\n </Button>\n </div>\n </div>\n </div>\n <QueryEditor />\n </QueriesPooling>\n </div>\n );\n}\n"],"names":["QueryTrackerOpenButton","_ref","_useSelector","buttonView","className","cluster","path","engine","useSelector","getQueryEngine","isEdited","isQueryDraftEditted","queryId","getQuery","id","url","createQueryUrl","createNewQueryUrl","useDraft","_jsx","Link","routed","children","Button","view","size","title","Icon","awesome","block","cn","QueryWidget","onClose","getCluster","getPath","_jsxs","QueriesPooling","QueryMetaForm","onClick","QueryEditor"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[934],{62934:(e,n,t)=>{t.r(n),t.d(n,{default:()=>Te});var a=t(23680),i=t(19677),r=t(89526),s=t(92070),l=t(97282),o=t(48777),u=t(46869),c=t(89442),d=t(71083),f=t(3302),v=function(e){var n=e.shouldListen,t=(0,r.useCallback)((function(e){e.preventDefault(),e.returnValue=!0}),[]);(0,r.useEffect)((function(){return n&&window.addEventListener("beforeunload",t),function(){return window.removeEventListener("beforeunload",t)}}),[n])},m=t(54645),h=t(68053),x=t(20240),p=t(10440),y=t(48872),j=t(72055),g=t.n(j),b=t(61661),N=t(33183),Z=t(55925),w=t(79236),k=t(48770),C=t(11011),q=t(85464),I=t(32583),S=t(15395),T=t(80726),L=function(){var e=(0,s.v9)(w.B5),n=(0,s.v9)(w.Dh),t=(0,s.I0)();return[e,n,(0,r.useCallback)((function(e,n){t((0,Z.Rb)((0,x.Z)({},e,n)))}),[t])]},M=t(23484),E=t(69473),A=t(32140),V=t(6370),R=function(){var e=(0,s.v9)(h.pm),n=(0,s.v9)(V.SY),t=(0,l.k6)(),a=(0,r.useCallback)((function(e){t.push((0,A.N)(n,e.id))}),[t]);return[null==e?void 0:e.id,a]},z=t(19961),_=t(61580),H=t(92881),D=t(46562),F=t(98383),P=t(67557);function J(e){var n,t=e.query,s=e.className,l=(0,r.useState)(void 0),o=(0,a.Z)(l,2),u=o[0],c=o[1],f=(0,r.useState)(!1),v=(0,a.Z)(f,2),m=v[0],h=v[1],x=t.state,p=(0,F.O)(),y=(0,r.useMemo)((function(){var e;return{name:(null===(e=t.annotations)||void 0===e?void 0:e.title)||""}}),[null===(n=t.annotations)||void 0===n?void 0:n.title]);return"completed"===x||"failed"===x||"draft"===x?(0,P.jsxs)("div",{className:s,onClick:function(e){e.stopPropagation()},onKeyDown:function(e){e.stopPropagation()},children:[(0,P.jsx)(H.Z,{onClick:function(){h(!0)},view:"flat-secondary",size:"m",width:"auto",children:(0,P.jsx)(D.Z,{awesome:"pencil"})}),m?(0,P.jsx)(_.mf,{pristineSubmittable:!0,visible:m,modal:!0,headerProps:{title:"Edit query name"},footerProps:{textApply:"Save"},onClose:function(){c(void 0),h(!1)},onAdd:function(e){return(n=e.getState().values.name,p((0,d.rq)(t.id,(0,i.Z)((0,i.Z)({},t.annotations),{},{title:n})))).catch((function(e){throw c(e),e}));var n},initialValues:y,fields:[{name:"name",type:"text",required:!0,caption:"Name",extras:{placeholder:"Enter query name"}}].concat((0,z.Z)((0,_.Lg)([u])))}):null]}):null}var U=t(47021),B=(0,p.Z)("queries-history-list"),O=(0,p.Z)("query-history-item");var Q={name:"Name",align:"left",className:O("name_row"),render:function(e){var n,t=e.row,a=null===(n=t.annotations)||void 0===n?void 0:n.title;return(0,P.jsxs)("div",{className:O("name"),title:a,children:[(0,P.jsx)(k.s,{className:O("status-icon"),status:t.state}),(0,P.jsx)(N.x,{className:O("name-container"),color:a?"primary":"secondary",ellipsis:!0,children:a||"No name"}),(0,P.jsx)(J,{className:O("name-edit"),query:t})]})}},G={name:"Type",align:"center",width:60,render:function(e){var n=e.row;return(0,P.jsx)(N.x,{variant:"body-1",color:"secondary",children:n.engine in I.cf?I.cf[n.engine]:n.engine})}},Y={name:"Duration",align:"left",width:100,render:function(e){var n=e.row;return n.state===d.oZ.RUNNING?b.Z.format.NO_VALUE:(0,P.jsx)(E.c,{query:n})}},K={name:"Started",align:"left",width:120,render:function(e){var n=e.row;return(0,P.jsx)(N.x,{variant:"body-1",color:"secondary",children:(0,q.sR)(n.start_time)})}},W={name:"Author",align:"left",width:120,className:O("author_row"),render:function(e){var n=e.row;return(0,P.jsx)(N.x,{variant:"body-1",ellipsis:!0,title:n.user,children:n.user})}},X=[Q,G,Y,K],$=[Q,G,Y,W,K],ee={displayIndices:!1,sortable:!1,stickyHead:T.Z.MOVING,syncHeadOnResize:!0};function ne(){var e,n,t,i,l=(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:5e3,n=(0,s.I0)();(0,r.useEffect)((function(){var t;return function a(){t=setTimeout((function(){n((0,Z.NA)(a))}),e)}(),function(){t&&clearTimeout(t)}}),[e,n])}(),e=(0,r.useContext)(c.M),n=(0,s.v9)(w.ui),t=(0,s.I0)(),i=(0,r.useMemo)((function(){return function(e){t({type:U.v,data:e})}}),[t]),(0,r.useEffect)((function(){null!=n&&n.length&&e.watch(n,i)}),[e,i,n]),(0,m.Fz)()),o=(0,a.Z)(l,2),u=o[0],d=o[1],f=L(),v=(0,a.Z)(f,1)[0],h=(0,s.v9)(w.Jw),x=(0,m.dV)(),p=x.first,y=x.last,j=x.goBack,b=x.goNext,N=x.goFirst,k=R(),q=(0,a.Z)(k,2),I=q[0],T=q[1],E=(0,r.useState)([]),A=(0,a.Z)(E,2),V=A[0],z=A[1],_=(0,r.useRef)(null);(0,r.useEffect)((function(){d&&null!=u&&u.length||z(v.user===M.lJ.My?X:$)}),[u,z,v.user,d]),(0,r.useEffect)((function(){null!=_&&_.current&&(_.current.scrollTop=0)}),[_,h]);var H=(0,r.useCallback)((function(e){return O({selected:e.id===I})}),[I]);return(0,P.jsx)("div",{className:B(),children:(0,P.jsxs)("div",{className:B("list-wrapper"),ref:_,children:[(0,P.jsx)(S.ZP,{className:B("list"),loading:d,columns:V,data:u,useThemeYT:!0,rowKey:function(e){return e.id},onRowClick:T,disableRightGap:!0,settings:ee,rowClassName:H}),(0,P.jsx)("div",{className:B("pagination"),children:(!p||!y)&&(0,P.jsx)(C.Z,{size:"m",first:{handler:N,disabled:p},previous:{handler:j,disabled:p},next:{handler:b,disabled:y},last:{handler:g(),disabled:!0}})})]})})}var te=t(13044),ae=t(20608),ie=t(67290);const re=function(e){return(0,P.jsx)("svg",(0,i.Z)((0,i.Z)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 14"},e),{},{children:(0,P.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M6.836 2.202 1.74 4.386a.396.396 0 0 0 0 .728l5.096 2.184a2.5 2.5 0 0 0 .985.202h.358a2.5 2.5 0 0 0 .985-.202l5.096-2.184a.396.396 0 0 0 0-.728L9.164 2.202A2.5 2.5 0 0 0 8.179 2h-.358a2.5 2.5 0 0 0-.985.202ZM1.5 6.642l1.5.644v3.228a2 2 0 0 0 1.106 1.789l.806.403a7 7 0 0 0 6.193.033l.909-.442a2 2 0 0 0 1.125-1.798V7.226l1.712-.734a1.896 1.896 0 0 0 0-3.484L9.755.823A4 4 0 0 0 8.179.5h-.358a4 4 0 0 0-1.576.323L1.15 3.008A1.896 1.896 0 0 0 0 4.75v4.5a.75.75 0 0 0 1.5 0V6.643Zm3 3.872V7.929l1.745.748A4 4 0 0 0 7.821 9h.358a4 4 0 0 0 1.576-.323l1.884-.808v2.63a.5.5 0 0 1-.282.45l-.909.442a5.5 5.5 0 0 1-4.865-.027l-.807-.403a.5.5 0 0 1-.276-.447Z",clipRule:"evenodd"})}))};var se=(0,p.Z)("query-tutorial-item"),le=(0,p.Z)("queries-tutorial-list");function oe(e){var n,t;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(te.J,{className:se("icon"),data:re}),(0,P.jsx)(N.x,{className:se("text"),ellipsis:!0,title:null==e||null===(n=e.annotations)||void 0===n?void 0:n.title,children:(null==e||null===(t=e.annotations)||void 0===t?void 0:t.title)||"No name"})]})}function ue(e){var n=e.className,t=(0,m.Fz)(),i=(0,a.Z)(t,2),s=i[0],l=i[1],o=R(),u=(0,a.Z)(o,2),c=u[0],d=u[1],f=(0,r.useMemo)((function(){return s.findIndex((function(e){return e.id===c}))}),[c,s]),v=(0,r.useMemo)((function(){return function(e){return function(n){var t;return(null==n||null===(t=n.annotations)||void 0===t||null===(t=t.title)||void 0===t?void 0:t.toLocaleLowerCase().includes(e.toLocaleLowerCase()))||!1}}}),[]);return(0,P.jsxs)("div",{className:le(null,n),children:[(0,P.jsx)(ae.a,{className:le("list",{loading:l}),filterable:!0,filterClassName:le("filter"),filterPlaceholder:"Filter by name",filterItem:v,virtualized:!1,selectedItemIndex:f,sortable:!1,itemHeight:32,itemClassName:se(),items:l?[]:s,renderItem:oe,onItemClick:d}),l&&(0,P.jsx)("div",{className:le("loader"),children:(0,P.jsx)(ie.a,{size:"l"})})]})}var ce=t(26530),de="__all";function fe(e){var n=e.value,t=e.onChange,a=e.className,i=e.engines,s=void 0===i?d.Sl:i,l=(0,r.useMemo)((function(){return[{value:de,content:"All"}].concat((0,z.Z)(s.map((function(e){return{value:e,content:I.cf[e]}}))))}),[s]),o=(0,r.useCallback)((function(e){t(e===de?void 0:e)}),[t]);return(0,P.jsx)(ce.E,{className:a,options:l,value:n||de,onUpdate:o})}var ve=t(64436),me=t(76897),he=t.n(me);function xe(e){var n=e.value,t=e.placeholder,i=e.onChange,s=e.delay,l=void 0===s?200:s,o=(0,r.useState)(n||""),u=(0,a.Z)(o,2),c=u[0],d=u[1],f=(0,r.useMemo)((function(){return he()((function(e){i(e)}),l)}),[i,l]);return(0,r.useEffect)((function(){return f(c),function(){f.cancel()}}),[c,f]),(0,P.jsx)(ve.o,{placeholder:t,value:c,onBlur:function(){return f.flush()},onUpdate:d})}var pe,ye=[{value:M.lJ.My,content:"My"},{value:M.lJ.All,content:"All"}],je=(0,p.Z)("queries-history-filter");function ge(e){var n=e.className,t=L(),i=(0,a.Z)(t,3),s=i[0],l=i[1],o=i[2],u=(0,r.useCallback)((function(e){o("user",e)}),[o]),c=(0,r.useCallback)((function(e){o("engine",e)}),[o]),d=(0,r.useCallback)((function(e){o("filter",e||void 0)}),[o]);return(0,P.jsxs)("div",{className:je(null,n),children:[(0,P.jsxs)("div",{className:je("row"),children:[l===M.jk.History&&(0,P.jsx)(ce.E,{className:je("row-item"),options:ye,value:(null==s?void 0:s.user)||M.lJ.My,onUpdate:u}),(0,P.jsx)(fe,{className:je("row-item"),value:null==s?void 0:s.engine,onChange:c})]}),l===M.jk.History&&(0,P.jsx)("div",{className:je("row"),children:(0,P.jsx)(xe,{placeholder:"Search in query name and body",value:null==s?void 0:s.filter,onChange:d})})]})}var be=(0,p.Z)("queires-list"),Ne=(pe={},(0,x.Z)(pe,M.jk.History,"History"),(0,x.Z)(pe,M.jk.Tutorials,"Tutorials"),pe),Ze=function(){var e=(0,s.I0)(),n=(0,s.v9)(w.Dh),t=(0,r.useCallback)((function(n){e((0,Z._O)(n))}),[e]);return[(0,r.useMemo)((function(){return M.xD.map((function(e){return{id:e,title:Ne[e]}}))}),[]),(n||M.jk.History).toString(),t]};function we(){var e=Ze(),n=(0,a.Z)(e,3),t=n[0],i=n[1],l=n[2],o=(0,s.I0)();return(0,r.useEffect)((function(){o((0,Z.x9)())}),[]),(0,P.jsxs)("div",{className:be(),children:[(0,P.jsx)(y.m,{className:be("tabs"),items:t,activeTab:i,onSelectTab:l}),(0,P.jsxs)("div",{className:be("content"),children:[(0,P.jsx)(ge,{className:be("filter")}),i===M.jk.History&&(0,P.jsx)(ne,{}),i===M.jk.Tutorials&&(0,P.jsx)(ue,{className:be("list-content")})]})]})}var ke=(0,p.Z)("query-tracker-page"),Ce=[23,77],qe=380;function Ie(){var e=(0,s.I0)(),n=(0,s.v9)(h.ey);return(0,r.useEffect)((function(){var t=n.engine&&(0,d.iC)(n.engine)?n.engine:d.qq.YQL;n.cluster&&n.path?(n.useDraft&&e({type:f.bb,data:{params:(0,i.Z)((0,i.Z)({},n),{},{useDraft:void 0})}}),e((0,f.Ns)(t,n.cluster,n.path,{useDraft:!0}))):e((0,f.Vk)(t))}),[e]),null}function Se(e){var n=(0,s.I0)();return(0,r.useEffect)((function(){n({type:f.bb,data:{params:{}}}),e.match.params.queryId?n((0,f.T0)(e.match.params.queryId)):n((0,f.Vk)())}),[n,e.match.params.queryId]),null}function Te(e){var n=e.match,t=(0,m.T4)().isQueriesListSidebarVisible,i=(0,s.v9)(h.Ud);v({shouldListen:i});var d=(0,r.useState)(Ce),x=(0,a.Z)(d,2),p=x[0],y=x[1],j=(0,r.useMemo)((function(){return function(){return p}}),[p]),g=(0,s.I0)(),b=(0,r.useCallback)((function(e){return g((0,f.Pw)(e)),!0}),[g]);return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsxs)(l.rs,{children:[(0,P.jsx)(l.AW,{exact:!0,path:n.path,component:Ie}),(0,P.jsx)(l.AW,{path:"".concat(n.path,"/:queryId"),component:Se})]}),(0,P.jsx)(c.v,{children:(0,P.jsxs)(o.Z,{className:ke("container"),direction:o.Z.HORIZONTAL,onResizeEnd:y,minSize:qe,getInitialSizes:j,children:[t?(0,P.jsx)(we,{}):null,(0,P.jsx)(u.Z,{onStartQuery:b})]})})]})}},54645:(e,n,t)=>{t.d(n,{T4:()=>f,dV:()=>d,Fz:()=>c});var a=t(89526),i=t(92070),r=t(71083),s=t(79236),l=t(55925),o=t(80645),u=(0,t(13806).P1)((function(e){return e.settings.data}),(function(e){return Boolean(e["global::queryTracker::queriesListSidebarVisibilityMode"])}));function c(){return[(0,i.v9)(s.MR),(0,i.v9)(s.Mv)]}var d=function(){var e=(0,i.I0)(),n=(0,i.v9)(s.qn),t=(0,i.v9)(s.wI),o=(0,a.useCallback)((function(){e((0,l.hJ)(r.u8.PAST))}),[e]),u=(0,a.useCallback)((function(){e((0,l.hJ)(r.u8.FUTURE))}),[e]),c=(0,a.useCallback)((function(){e((0,l.z8)())}),[e]);return{first:!(null!=n&&n.cursorTime),last:!t,currentCursorTime:null==n?void 0:n.cursorTime,goNext:o,goBack:u,goFirst:c}},f=function(){var e=(0,i.I0)(),n=(0,i.v9)(u);return{isQueriesListSidebarVisible:n,toggleQueriesListSideBarToggle:function(){e((0,o.gb)("global::queryTracker::queriesListSidebarVisibilityMode",!n))}}}}}]);
2
+ //# sourceMappingURL=934.fb5e730e.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/934.fb5e730e.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/hooks/use-prevent-unload.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/hooks/QueryListFilter/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/hooks/Query/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueriesList/EditQueryNameModal/EditQueryNameModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueriesList/QueriesHistoryList/index.tsx","webpack://@ytsaurus/ui/./img/svg/learn.svg","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueriesList/QueriesTutorialList/index.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueriesList/QueriesListFilter/QueryEngineFilter.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueriesList/QueriesListFilter/QueryTextFilter.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueriesList/QueriesListFilter/index.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueriesList/index.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryTracker/QueryTracker.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/module/settings/selector.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/settings-base.ts","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/hooks/QueriesList/index.ts"],"sourcesContent":["import {useCallback, useEffect} from 'react';\n\nexport const usePreventUnload = ({shouldListen}: {shouldListen: boolean}) => {\n const beforeUnloadHandler = useCallback((e: BeforeUnloadEvent) => {\n e.preventDefault();\n\n // Included for legacy support, e.g. Chrome/Edge < 119\n e.returnValue = true;\n }, []);\n\n useEffect(() => {\n if (shouldListen) {\n window.addEventListener('beforeunload', beforeUnloadHandler);\n }\n\n return () => window.removeEventListener('beforeunload', beforeUnloadHandler);\n }, [shouldListen]);\n};\n","import {useDispatch, useSelector} from 'react-redux';\nimport {useCallback} from 'react';\nimport {applyFilter} from '../../module/queries_list/actions';\nimport {getQueriesListFilter, getQueriesListMode} from '../../module/queries_list/selectors';\nimport {QueriesListFilter, QueriesListMode} from '../../module/queries_list/types';\n\nexport const useQuriesHistoryFilter = (): [\n QueriesListFilter,\n QueriesListMode,\n <K extends keyof QueriesListFilter>(filter: K, value: QueriesListFilter[K]) => void,\n] => {\n const filter = useSelector(getQueriesListFilter);\n const filterPreset = useSelector(getQueriesListMode);\n const dispatch = useDispatch();\n const setFilter = useCallback(\n function setFilter<K extends keyof QueriesListFilter>(\n name: K,\n value: QueriesListFilter[K],\n ) {\n dispatch(\n applyFilter({\n [name]: value,\n }),\n );\n },\n [dispatch],\n );\n return [filter, filterPreset, setFilter];\n};\n","import {useCallback} from 'react';\nimport {useSelector} from 'react-redux';\nimport {useHistory} from 'react-router';\nimport {createQueryUrl} from '../../utils/navigation';\nimport {QueryItem} from '../../module/api';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getQuery} from '../../module/query/selectors';\n\nexport const useQueryNavigation = (): [QueryItem['id'] | undefined, (id: QueryItem) => void] => {\n const selectedItem = useSelector(getQuery);\n const cluster = useSelector(getCluster);\n const history = useHistory();\n\n const goToQuery = useCallback(\n (item: QueryItem) => {\n history.push(createQueryUrl(cluster, item.id));\n },\n [history],\n );\n\n return [selectedItem?.id, goToQuery];\n};\n","import React, {useMemo, useState} from 'react';\nimport {YTDFDialog, makeErrorFields} from '../../../../components/Dialog/Dialog';\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\nimport _ from 'lodash';\nimport {QueryItem, setQueryName} from '../../module/api';\nimport {useThunkDispatch} from '../../../../store/thunkDispatch';\n\nexport interface Props {\n query: QueryItem;\n className?: string;\n}\n\ninterface FormValues {\n name: string;\n}\n\nexport default function EditQueryNameModal({query, className}: Props) {\n const [error, setError] = useState(undefined);\n const [visible, setVisible] = useState(false);\n const {state} = query;\n\n const dispatch = useThunkDispatch();\n\n const initialValues = useMemo(() => {\n return {\n name: query.annotations?.title || '',\n };\n }, [query.annotations?.title]);\n\n const handleSubmit = (name: string) => {\n return dispatch(setQueryName(query.id, {...query.annotations, title: name}));\n };\n\n return state === 'completed' || state === 'failed' || state === 'draft' ? (\n <div\n className={className}\n onClick={(event) => {\n event.stopPropagation();\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n }}\n >\n <Button\n onClick={() => {\n setVisible(true);\n }}\n view={'flat-secondary'}\n size={'m'}\n width={'auto'}\n >\n <Icon awesome=\"pencil\"></Icon>\n </Button>\n {visible ? (\n <YTDFDialog<FormValues>\n pristineSubmittable\n visible={visible}\n modal={true}\n headerProps={{title: 'Edit query name'}}\n footerProps={{textApply: 'Save'}}\n onClose={() => {\n setError(undefined);\n setVisible(false);\n }}\n onAdd={(form) => {\n const {name} = form.getState().values;\n return handleSubmit(name).catch((err) => {\n setError(err);\n throw err;\n });\n }}\n initialValues={initialValues}\n fields={[\n {\n name: 'name',\n type: 'text',\n required: true,\n caption: 'Name',\n extras: {\n placeholder: 'Enter query name',\n },\n },\n ...makeErrorFields([error]),\n ]}\n />\n ) : null}\n </div>\n ) : null;\n}\n","import hammer from '../../../../common/hammer';\nimport {Text} from '@gravity-ui/uikit';\nimport block from 'bem-cn-lite';\nimport React, {useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {QueryItem, QueryStatus} from '../../module/api';\nimport {refreshQueriesListIfNeeded} from '../../module/queries_list/actions';\nimport {getQueriesListTimestamp, getUncompletedItems} from '../../module/queries_list/selectors';\nimport {QueryStatusIcon} from '../../QueryStatus';\n\nimport './index.scss';\nimport Pagination from '../../../../components/Pagination/Pagination';\nimport {noop} from 'lodash';\nimport {QueriesPoolingContext} from '../../hooks/QueriesPooling/context';\nimport {formatDateCompact} from '../../../../components/common/Timeline/util';\nimport {QueryEnginesNames} from '../../utils/query';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport DataTable, {Column, Settings} from '@gravity-ui/react-data-table';\nimport {useQuriesHistoryFilter} from '../../hooks/QueryListFilter';\nimport {QueriesListAuthorFilter} from '../../module/queries_list/types';\nimport {QueryDuration} from '../../QueryDuration';\nimport {useQueryNavigation} from '../../hooks/Query';\nimport {useQueriesPagination, useQueryList} from '../../hooks/QueriesList';\nimport EditQueryNameModal from '../EditQueryNameModal/EditQueryNameModal';\nimport {UPDATE_QUERIES_LIST} from '../../module/query-tracker-contants';\n\nconst b = block('queries-history-list');\n\nconst itemBlock = block('query-history-item');\n\nfunction useQueriesHistoryUpdate() {\n const pollingContext = useContext(QueriesPoolingContext);\n const uncompletedItems = useSelector(getUncompletedItems);\n const dispatch = useDispatch();\n\n const queryListUpdateHandler = useMemo(\n () => (items: QueryItem[]) => {\n dispatch({\n type: UPDATE_QUERIES_LIST,\n data: items,\n });\n },\n [dispatch],\n );\n\n useEffect(\n function pollingEffect() {\n if (!uncompletedItems?.length) {\n return;\n }\n pollingContext.watch(uncompletedItems, queryListUpdateHandler);\n },\n [pollingContext, queryListUpdateHandler, uncompletedItems],\n );\n}\n\nfunction useRefreshHistoryList(timeout = 5000) {\n // Naive history list's polling impl\n const dispatch = useDispatch();\n useEffect(() => {\n let timer: ReturnType<typeof setTimeout>;\n function start() {\n timer = setTimeout(() => {\n dispatch(refreshQueriesListIfNeeded(start));\n }, timeout);\n }\n\n start();\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n }, [timeout, dispatch]);\n}\n\nfunction useQueryHistoryList() {\n useRefreshHistoryList();\n useQueriesHistoryUpdate();\n return useQueryList();\n}\n\nconst NameColumns: Column<QueryItem> = {\n name: 'Name',\n align: 'left',\n className: itemBlock('name_row'),\n render: ({row}) => {\n const name = row.annotations?.title;\n return (\n <div className={itemBlock('name')} title={name}>\n <QueryStatusIcon className={itemBlock('status-icon')} status={row.state} />\n <Text\n className={itemBlock('name-container')}\n color={name ? 'primary' : 'secondary'}\n ellipsis\n >\n {name || 'No name'}\n </Text>\n <EditQueryNameModal className={itemBlock('name-edit')} query={row} />\n </div>\n );\n },\n};\n\nconst TypeColumns: Column<QueryItem> = {\n name: 'Type',\n align: 'center',\n width: 60,\n render: ({row}) => {\n return (\n <Text variant=\"body-1\" color=\"secondary\">\n {row.engine in QueryEnginesNames ? QueryEnginesNames[row.engine] : row.engine}\n </Text>\n );\n },\n};\n\nconst DurationColumns: Column<QueryItem> = {\n name: 'Duration',\n align: 'left',\n width: 100,\n render: ({row}) => {\n if (row.state === QueryStatus.RUNNING) {\n return hammer.format.NO_VALUE;\n }\n return <QueryDuration query={row} />;\n },\n};\n\nconst StartedColumns: Column<QueryItem> = {\n name: 'Started',\n align: 'left',\n width: 120,\n render: ({row}) => {\n return (\n <Text variant=\"body-1\" color=\"secondary\">\n {formatDateCompact(row.start_time)}\n </Text>\n );\n },\n};\n\nconst AuthorColumns: Column<QueryItem> = {\n name: 'Author',\n align: 'left',\n width: 120,\n className: itemBlock('author_row'),\n render: ({row}) => {\n return (\n <Text variant=\"body-1\" ellipsis title={row.user}>\n {row.user}\n </Text>\n );\n },\n};\n\nconst MyColumns: Column<QueryItem>[] = [NameColumns, TypeColumns, DurationColumns, StartedColumns];\nconst AllColumns: Column<QueryItem>[] = [\n NameColumns,\n TypeColumns,\n DurationColumns,\n AuthorColumns,\n StartedColumns,\n];\n\nconst tableSettings: Settings = {\n displayIndices: false,\n sortable: false,\n stickyHead: DataTable.MOVING,\n syncHeadOnResize: true,\n};\n\nexport function QueriesHistoryList() {\n const [items, isLoading] = useQueryHistoryList();\n\n const [filter] = useQuriesHistoryFilter();\n\n const timestamp = useSelector(getQueriesListTimestamp);\n\n const {first, last, goBack, goNext, goFirst} = useQueriesPagination();\n\n const [selectedId, goToQuery] = useQueryNavigation();\n\n const [columns, setColumns] = useState<Column<QueryItem>[]>([]);\n\n const scrollElemRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!isLoading || !items?.length) {\n setColumns(filter.user === QueriesListAuthorFilter.My ? MyColumns : AllColumns);\n }\n }, [items, setColumns, filter.user, isLoading]);\n\n useEffect(() => {\n if (scrollElemRef?.current) {\n scrollElemRef.current.scrollTop = 0;\n }\n }, [scrollElemRef, timestamp]);\n\n const setClassName = useCallback(\n (item: QueryItem) => {\n return itemBlock({\n selected: item.id === selectedId,\n });\n },\n [selectedId],\n );\n\n return (\n <div className={b()}>\n <div className={b('list-wrapper')} ref={scrollElemRef}>\n <DataTableYT\n className={b('list')}\n loading={isLoading}\n columns={columns}\n data={items}\n useThemeYT={true}\n rowKey={(row) => row.id}\n onRowClick={goToQuery}\n disableRightGap={true}\n settings={tableSettings}\n rowClassName={setClassName}\n />\n <div className={b('pagination')}>\n {(!first || !last) && (\n <Pagination\n size=\"m\"\n first={{\n handler: goFirst,\n disabled: first,\n }}\n previous={{\n handler: goBack,\n disabled: first,\n }}\n next={{\n handler: goNext,\n disabled: last,\n }}\n last={{\n handler: noop,\n disabled: true,\n }}\n />\n )}\n </div>\n </div>\n </div>\n );\n}\n","const SvgLearn = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 14\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M6.836 2.202 1.74 4.386a.396.396 0 0 0 0 .728l5.096 2.184a2.5 2.5 0 0 0 .985.202h.358a2.5 2.5 0 0 0 .985-.202l5.096-2.184a.396.396 0 0 0 0-.728L9.164 2.202A2.5 2.5 0 0 0 8.179 2h-.358a2.5 2.5 0 0 0-.985.202ZM1.5 6.642l1.5.644v3.228a2 2 0 0 0 1.106 1.789l.806.403a7 7 0 0 0 6.193.033l.909-.442a2 2 0 0 0 1.125-1.798V7.226l1.712-.734a1.896 1.896 0 0 0 0-3.484L9.755.823A4 4 0 0 0 8.179.5h-.358a4 4 0 0 0-1.576.323L1.15 3.008A1.896 1.896 0 0 0 0 4.75v4.5a.75.75 0 0 0 1.5 0V6.643Zm3 3.872V7.929l1.745.748A4 4 0 0 0 7.821 9h.358a4 4 0 0 0 1.576-.323l1.884-.808v2.63a.5.5 0 0 1-.282.45l-.909.442a5.5 5.5 0 0 1-4.865-.027l-.807-.403a.5.5 0 0 1-.276-.447Z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgLearn;","import React, {useMemo} from 'react';\nimport cn from 'bem-cn-lite';\nimport {Icon, List, ListItemData, Loader, Text} from '@gravity-ui/uikit';\nimport {QueryItem} from '../../module/api';\nimport {useQueryList} from '../../hooks/QueriesList';\nimport {useQueryNavigation} from '../../hooks/Query';\nimport tutorialIcon from '../../../../../../img/svg/learn.svg';\nimport './index.scss';\n\nconst itemCn = cn('query-tutorial-item');\nconst block = cn('queries-tutorial-list');\n\nfunction renderItem(item: QueryItem) {\n return (\n <>\n <Icon className={itemCn('icon')} data={tutorialIcon} />\n <Text className={itemCn('text')} ellipsis title={item?.annotations?.title}>\n {item?.annotations?.title || 'No name'}\n </Text>\n </>\n );\n}\n\nexport function QueriesTutorialList({className}: {className: string}) {\n const [items, isLoading] = useQueryList();\n\n const [selectedId, goToQuery] = useQueryNavigation();\n\n const selectedIndex = useMemo(() => {\n return items.findIndex((query) => query.id === selectedId);\n }, [selectedId, items]);\n\n const tutorialFilter = useMemo(() => {\n return (filter: string) => {\n return (item: ListItemData<QueryItem>) => {\n return (\n item?.annotations?.title\n ?.toLocaleLowerCase()\n .includes(filter.toLocaleLowerCase()) || false\n );\n };\n };\n }, []);\n\n return (\n <div className={block(null, className)}>\n <List\n className={block('list', {loading: isLoading})}\n filterable={true}\n filterClassName={block('filter')}\n filterPlaceholder={'Filter by name'}\n filterItem={tutorialFilter}\n virtualized={false}\n selectedItemIndex={selectedIndex}\n sortable={false}\n itemHeight={32}\n itemClassName={itemCn()}\n items={isLoading ? [] : items}\n renderItem={renderItem}\n onItemClick={goToQuery}\n />\n {isLoading && (\n <div className={block('loader')}>\n <Loader size=\"l\" />\n </div>\n )}\n </div>\n );\n}\n","import React, {useCallback, useMemo} from 'react';\nimport {ControlGroupOption, RadioButton} from '@gravity-ui/uikit';\nimport {Engines, QueryEngine} from '../../module/api';\nimport {QueryEnginesNames} from '../../utils/query';\n\nconst ALL_ENGINE_KEY = '__all';\n\nexport function QueryEngineFilter({\n value,\n onChange,\n className,\n engines = Engines,\n}: {\n engines?: QueryEngine[];\n value?: QueryEngine;\n className?: string;\n onChange: (value?: QueryEngine) => void;\n}) {\n const enginesList = useMemo<ControlGroupOption[]>(() => {\n return [\n {\n value: ALL_ENGINE_KEY,\n content: 'All',\n },\n ...engines.map((engine) => {\n return {\n value: engine,\n content: QueryEnginesNames[engine],\n };\n }),\n ];\n }, [engines]);\n\n const onChangeEngineFilter = useCallback(\n (engine: string) => {\n onChange(engine === ALL_ENGINE_KEY ? undefined : (engine as QueryEngine));\n },\n [onChange],\n );\n return (\n <RadioButton\n className={className}\n options={enginesList}\n value={value || ALL_ENGINE_KEY}\n onUpdate={onChangeEngineFilter}\n />\n );\n}\n","import {TextInput} from '@gravity-ui/uikit';\nimport debounce from 'lodash/debounce';\nimport React, {useEffect, useMemo, useState} from 'react';\n\nexport type QueryTextFilterProps = {\n value?: string;\n placeholder: string;\n onChange: (value?: string) => void;\n delay?: number;\n};\n\nexport function QueryTextFilter({value, placeholder, onChange, delay = 200}: QueryTextFilterProps) {\n const [pattern, setPattern] = useState<string>(value || '');\n\n const debouncedChange = useMemo(() => {\n return debounce((value: string) => {\n onChange(value);\n }, delay);\n }, [onChange, delay]);\n\n useEffect(() => {\n debouncedChange(pattern);\n return () => {\n debouncedChange.cancel();\n };\n }, [pattern, debouncedChange]);\n\n return (\n <TextInput\n placeholder={placeholder}\n value={pattern}\n onBlur={() => debouncedChange.flush()}\n onUpdate={setPattern}\n />\n );\n}\n","import React, {useCallback} from 'react';\nimport block from 'bem-cn-lite';\nimport {ControlGroupOption, RadioButton} from '@gravity-ui/uikit';\nimport {QueriesListAuthorFilter, QueriesListMode} from '../../module/queries_list/types';\n\nimport './index.scss';\nimport {QueryEngineFilter} from './QueryEngineFilter';\nimport {QueryEngine} from '../../module/api';\nimport {QueryTextFilter} from './QueryTextFilter';\nimport {useQuriesHistoryFilter} from '../../hooks/QueryListFilter';\n\nconst AuthorFilter: ControlGroupOption[] = [\n {\n value: QueriesListAuthorFilter.My,\n content: 'My',\n },\n {\n value: QueriesListAuthorFilter.All,\n content: 'All',\n },\n];\n\nconst b = block('queries-history-filter');\n\ntype QueriesHistoryListFilterProps = {\n className?: string;\n};\nexport function QueriesHistoryListFilter({className}: QueriesHistoryListFilterProps) {\n const [filter, filterViewMode, onChange] = useQuriesHistoryFilter();\n\n const onChangeAuthorFilter = useCallback(\n (user: string) => {\n onChange('user', user as QueriesListAuthorFilter);\n },\n [onChange],\n );\n const onChangeEngineFilter = useCallback(\n (engine?: QueryEngine) => {\n onChange('engine', engine);\n },\n [onChange],\n );\n const onChangeTextFilter = useCallback(\n (text?: string) => {\n onChange('filter', text || undefined);\n },\n [onChange],\n );\n return (\n <div className={b(null, className)}>\n <div className={b('row')}>\n {filterViewMode === QueriesListMode.History && (\n <RadioButton\n className={b('row-item')}\n options={AuthorFilter}\n value={filter?.user || QueriesListAuthorFilter.My}\n onUpdate={onChangeAuthorFilter}\n />\n )}\n <QueryEngineFilter\n className={b('row-item')}\n value={filter?.engine}\n onChange={onChangeEngineFilter}\n />\n </div>\n {filterViewMode === QueriesListMode.History && (\n <div className={b('row')}>\n <QueryTextFilter\n placeholder=\"Search in query name and body\"\n value={filter?.filter}\n onChange={onChangeTextFilter}\n />\n </div>\n )}\n </div>\n );\n}\n","// import {Tabs} from '@gravity-ui/uikit';\nimport React, {useCallback, useEffect, useMemo} from 'react';\nimport block from 'bem-cn-lite';\nimport {Tabs, TabsItemProps} from '@gravity-ui/uikit';\nimport {QueriesHistoryList} from './QueriesHistoryList';\n\nimport {getQueriesListMode} from '../module/queries_list/selectors';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {QueriesListMode, QueriesListModes} from '../module/queries_list/types';\nimport {applyListMode, requestQueriesList} from '../module/queries_list/actions';\n\nimport './index.scss';\nimport {QueriesTutorialList} from './QueriesTutorialList';\nimport {QueriesHistoryListFilter} from './QueriesListFilter';\n\nconst b = block('queires-list');\n\nconst TabNames = {\n [QueriesListMode.History]: 'History',\n [QueriesListMode.Tutorials]: 'Tutorials',\n};\n\nconst useQueryTabs = (): [TabsItemProps[], string, (tab: string) => void] => {\n const dispatch = useDispatch();\n const selectedTab = useSelector(getQueriesListMode);\n const setTab = useCallback(\n (tab: string) => {\n dispatch(applyListMode(tab as QueriesListMode));\n },\n [dispatch],\n );\n\n const tabOptions = useMemo<TabsItemProps[]>(() => {\n return QueriesListModes.map((tab) => {\n return {\n id: tab as unknown as string,\n title: TabNames[tab],\n };\n });\n }, []);\n return [tabOptions, (selectedTab || QueriesListMode.History).toString(), setTab];\n};\n\nexport function QueriesList() {\n const [tabs, tab, setTab] = useQueryTabs();\n\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(requestQueriesList());\n }, []);\n\n return (\n <div className={b()}>\n <Tabs className={b('tabs')} items={tabs} activeTab={tab} onSelectTab={setTab} />\n <div className={b('content')}>\n <QueriesHistoryListFilter className={b('filter')} />\n\n {tab === QueriesListMode.History && <QueriesHistoryList />}\n {tab === QueriesListMode.Tutorials && (\n <QueriesTutorialList className={b('list-content')} />\n )}\n </div>\n </div>\n );\n}\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Route, Switch} from 'react-router';\nimport FlexSplitPane from '../../../components/FlexSplitPane/FlexSplitPane';\nimport QueryEditor from '../QueryEditor/QueryEditor';\nimport {QueriesPooling} from '../hooks/QueriesPooling/context';\nimport {QueryEngine, isEngine} from '../module/api';\nimport {\n SET_QUERY_PARAMS,\n createEmptyQuery,\n createQueryFromTablePath,\n goToQuery,\n loadQuery,\n} from '../module/query/actions';\nimport {usePreventUnload} from '../../../hooks/use-prevent-unload';\nimport {useQueriesListSidebarToggle} from '../hooks/QueriesList';\nimport {getDirtySinceLastSubmit, getQueryGetParams} from '../module/query/selectors';\nimport {QueriesList} from '../QueriesList';\n\nimport cn from 'bem-cn-lite';\n\nimport './QueryTracker.scss';\n\nconst b = cn('query-tracker-page');\n\ntype Props = {\n match: {\n path: string;\n params: {\n queryId?: string;\n };\n };\n location: {\n search: string;\n };\n};\n\nconst initialSizes = [23, 77];\nconst minSize = 380; // see history list's cells size\n\nfunction QueryPageDraft() {\n const dispatch = useDispatch();\n const routeParams = useSelector(getQueryGetParams);\n\n useEffect(() => {\n const engine =\n routeParams.engine && isEngine(routeParams.engine)\n ? (routeParams.engine as QueryEngine)\n : QueryEngine.YQL;\n if (routeParams.cluster && routeParams.path) {\n if (routeParams.useDraft) {\n dispatch({\n type: SET_QUERY_PARAMS,\n data: {\n params: {\n ...routeParams,\n useDraft: undefined,\n },\n },\n });\n }\n dispatch(\n createQueryFromTablePath(engine, routeParams.cluster, routeParams.path, {\n useDraft: true,\n }),\n );\n } else {\n dispatch(createEmptyQuery(engine));\n }\n }, [dispatch]);\n return null;\n}\n\nfunction QueryPage(props: Props) {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch({\n type: SET_QUERY_PARAMS,\n data: {\n params: {},\n },\n });\n if (props.match.params.queryId) {\n dispatch(loadQuery(props.match.params.queryId));\n } else {\n dispatch(createEmptyQuery());\n }\n }, [dispatch, props.match.params.queryId]);\n return null;\n}\n\nexport default function QueryTracker({match}: Props) {\n const {isQueriesListSidebarVisible} = useQueriesListSidebarToggle();\n const isQueryStateDirty = useSelector(getDirtySinceLastSubmit);\n usePreventUnload({shouldListen: isQueryStateDirty});\n const [sizes, setSize] = useState(initialSizes);\n const getSize = useMemo(() => {\n return () => sizes;\n }, [sizes]);\n const dispatch = useDispatch();\n\n const goToCreatedQuery = useCallback(\n (queryId: string) => {\n dispatch(goToQuery(queryId));\n return true;\n },\n [dispatch],\n );\n\n return (\n <>\n <Switch>\n <Route exact path={match.path} component={QueryPageDraft} />\n <Route path={`${match.path}/:queryId`} component={QueryPage} />\n </Switch>\n <QueriesPooling>\n <FlexSplitPane\n className={b('container')}\n direction={FlexSplitPane.HORIZONTAL}\n onResizeEnd={setSize}\n minSize={minSize}\n getInitialSizes={getSize}\n >\n {isQueriesListSidebarVisible ? <QueriesList /> : null}\n <QueryEditor onStartQuery={goToCreatedQuery} />\n </FlexSplitPane>\n </QueriesPooling>\n </>\n );\n}\n","import {createSelector} from 'reselect';\nimport {getSettingsData} from '../../../../store/selectors/settings-base';\n\nexport const getSettingQueryTrackerQueriesListSidebarVisibilityMode = createSelector(\n getSettingsData,\n (settings) => Boolean(settings['global::queryTracker::queriesListSidebarVisibilityMode']),\n);\n","import {Settings} from '../../../shared/constants/settings-types';\nimport {RootState} from '../../store/reducers';\n\nexport const getSettingsData = (state: RootState) => state.settings.data as Settings;\n","import {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {QueriesHistoryCursorDirection, QueryItem} from '../../module/api';\nimport {\n getQueriesList,\n getQueriesListCursor,\n hasQueriesListMore,\n isQueriesListLoading,\n} from '../../module/queries_list/selectors';\nimport {loadNextQueriesList, resetCursor} from '../../module/queries_list/actions';\nimport {setSettingByKey} from '../../../../store/actions/settings';\nimport {getSettingQueryTrackerQueriesListSidebarVisibilityMode} from '../../module/settings/selector';\n\nexport function useQueryList(): [QueryItem[], boolean] {\n const items = useSelector(getQueriesList);\n const isLoading = useSelector(isQueriesListLoading);\n\n return [items, isLoading];\n}\n\nexport const useQueriesPagination = () => {\n const dispatch = useDispatch();\n const cursor = useSelector(getQueriesListCursor);\n const hasNext = useSelector(hasQueriesListMore);\n\n const goNext = useCallback(() => {\n dispatch(loadNextQueriesList(QueriesHistoryCursorDirection.PAST));\n }, [dispatch]);\n\n const goBack = useCallback(() => {\n dispatch(loadNextQueriesList(QueriesHistoryCursorDirection.FUTURE));\n }, [dispatch]);\n\n const reset = useCallback(() => {\n dispatch(resetCursor());\n }, [dispatch]);\n\n return {\n first: !cursor?.cursorTime,\n last: !hasNext,\n currentCursorTime: cursor?.cursorTime,\n goNext,\n goBack,\n goFirst: reset,\n };\n};\n\nexport const useQueriesListSidebarToggle = () => {\n const dispatch = useDispatch();\n const isQueriesListSidebarVisible = useSelector(\n getSettingQueryTrackerQueriesListSidebarVisibilityMode,\n );\n\n const toggleQueriesListSideBarToggle = () => {\n dispatch(\n setSettingByKey<boolean>(\n 'global::queryTracker::queriesListSidebarVisibilityMode',\n !isQueriesListSidebarVisible,\n ),\n );\n };\n\n return {\n isQueriesListSidebarVisible,\n toggleQueriesListSideBarToggle,\n };\n};\n"],"names":["usePreventUnload","_ref","shouldListen","beforeUnloadHandler","useCallback","e","preventDefault","returnValue","useEffect","window","addEventListener","removeEventListener","useQuriesHistoryFilter","filter","useSelector","getQueriesListFilter","filterPreset","getQueriesListMode","dispatch","useDispatch","name","value","applyFilter","_defineProperty","useQueryNavigation","selectedItem","getQuery","cluster","getCluster","history","useHistory","goToQuery","item","push","createQueryUrl","id","EditQueryNameModal","_query$annotations2","query","className","_useState","useState","undefined","_useState2","_slicedToArray","error","setError","_useState3","_useState4","visible","setVisible","state","useThunkDispatch","initialValues","useMemo","_query$annotations","annotations","title","_jsxs","onClick","event","stopPropagation","onKeyDown","children","_jsx","Button","view","size","width","Icon","awesome","YTDFDialog","pristineSubmittable","modal","headerProps","footerProps","textApply","onClose","onAdd","form","getState","values","setQueryName","_objectSpread","err","fields","type","required","caption","extras","placeholder","concat","_toConsumableArray","makeErrorFields","b","block","itemBlock","NameColumns","align","render","_row$annotations","row","QueryStatusIcon","status","Text","color","ellipsis","TypeColumns","_ref2","variant","engine","QueryEnginesNames","DurationColumns","_ref3","QueryStatus","RUNNING","hammer","format","NO_VALUE","QueryDuration","StartedColumns","_ref4","formatDateCompact","start_time","AuthorColumns","_ref5","user","MyColumns","AllColumns","tableSettings","displayIndices","sortable","stickyHead","DataTable","MOVING","syncHeadOnResize","QueriesHistoryList","pollingContext","uncompletedItems","queryListUpdateHandler","_useQueryHistoryList","timeout","arguments","length","timer","start","setTimeout","refreshQueriesListIfNeeded","clearTimeout","useRefreshHistoryList","useContext","QueriesPoolingContext","getUncompletedItems","items","UPDATE_QUERIES_LIST","data","watch","useQueryList","_useQueryHistoryList2","isLoading","_useQuriesHistoryFilt","timestamp","getQueriesListTimestamp","_useQueriesPagination","useQueriesPagination","first","last","goBack","goNext","goFirst","_useQueryNavigation","_useQueryNavigation2","selectedId","columns","setColumns","scrollElemRef","useRef","QueriesListAuthorFilter","My","current","scrollTop","setClassName","selected","ref","DataTableYT","loading","useThemeYT","rowKey","onRowClick","disableRightGap","settings","rowClassName","Pagination","handler","disabled","previous","next","_noop","props","xmlns","fill","viewBox","fillRule","d","clipRule","itemCn","cn","renderItem","_item$annotations","_item$annotations2","_Fragment","tutorialIcon","QueriesTutorialList","_useQueryList","_useQueryList2","selectedIndex","findIndex","tutorialFilter","_item$annotations3","toLocaleLowerCase","includes","List","filterable","filterClassName","filterPlaceholder","filterItem","virtualized","selectedItemIndex","itemHeight","itemClassName","onItemClick","Loader","ALL_ENGINE_KEY","QueryEngineFilter","onChange","_ref$engines","engines","Engines","enginesList","content","map","onChangeEngineFilter","RadioButton","options","onUpdate","QueryTextFilter","_ref$delay","delay","pattern","setPattern","debouncedChange","debounce","cancel","TextInput","onBlur","flush","AuthorFilter","All","QueriesHistoryListFilter","_useQuriesHistoryFilt2","filterViewMode","onChangeAuthorFilter","onChangeTextFilter","text","QueriesListMode","History","TabNames","_TabNames","Tutorials","useQueryTabs","selectedTab","setTab","tab","applyListMode","QueriesListModes","toString","QueriesList","_useQueryTabs","_useQueryTabs2","tabs","requestQueriesList","Tabs","activeTab","onSelectTab","initialSizes","minSize","QueryPageDraft","routeParams","getQueryGetParams","isEngine","QueryEngine","YQL","path","useDraft","SET_QUERY_PARAMS","params","createQueryFromTablePath","createEmptyQuery","QueryPage","match","queryId","loadQuery","QueryTracker","isQueriesListSidebarVisible","useQueriesListSidebarToggle","isQueryStateDirty","getDirtySinceLastSubmit","sizes","setSize","getSize","goToCreatedQuery","Switch","Route","exact","component","QueriesPooling","FlexSplitPane","direction","HORIZONTAL","onResizeEnd","getInitialSizes","QueryEditor","onStartQuery","getSettingQueryTrackerQueriesListSidebarVisibilityMode","createSelector","Boolean","getQueriesList","isQueriesListLoading","cursor","getQueriesListCursor","hasNext","hasQueriesListMore","loadNextQueriesList","QueriesHistoryCursorDirection","PAST","FUTURE","reset","resetCursor","cursorTime","currentCursorTime","toggleQueriesListSideBarToggle","setSettingByKey"],"sourceRoot":""}