@jetbrains/ring-ui 4.1.0-beta.9 → 4.1.1

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 (354) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +17 -15
  3. package/babel.config.js +3 -2
  4. package/components/alert/alert.js +9 -3
  5. package/components/alert/container.css +1 -1
  6. package/components/alert-service/alert-service.examples.css +18 -0
  7. package/components/alert-service/alert-service.examples.js +21 -0
  8. package/components/alert-service/alert-service.js +10 -3
  9. package/components/analytics/analytics__fus-plugin.js +1 -1
  10. package/components/auth/auth.test.js +14 -7
  11. package/components/auth/auth__core.js +64 -33
  12. package/components/auth-dialog/auth-dialog.js +1 -0
  13. package/components/avatar/avatar.css +4 -1
  14. package/components/avatar/avatar.examples.js +3 -2
  15. package/components/avatar/avatar.js +31 -6
  16. package/components/avatar/fallback-avatar.js +136 -0
  17. package/components/avatar-editor-ng/avatar-editor-ng.css +2 -2
  18. package/components/avatar-editor-ng/avatar-editor-ng.js +2 -1
  19. package/components/avatar-editor-ng/{avatar-editor-ng.html → avatar-editor-ng__template.js} +2 -2
  20. package/components/button/button.css +2 -2
  21. package/components/button/button.js +4 -1
  22. package/components/button-group/button-group.js +1 -1
  23. package/components/button-group/caption.js +1 -1
  24. package/components/button-ng/button-ng.js +1 -1
  25. package/components/button-set-ng/button-set-ng.js +3 -1
  26. package/components/checkbox/checkbox.css +1 -1
  27. package/components/code/code.js +1 -1
  28. package/components/confirm/confirm.js +1 -0
  29. package/components/confirm-service/confirm-service.js +5 -5
  30. package/components/content-layout/content-layout.css +1 -1
  31. package/components/data-list/data-list.css +1 -1
  32. package/components/date-picker/date-input.js +5 -4
  33. package/components/date-picker/date-picker.css +34 -22
  34. package/components/date-picker/date-picker.js +16 -14
  35. package/components/date-picker/date-popup.js +22 -7
  36. package/components/date-picker/month-names.js +8 -5
  37. package/components/date-picker/month.js +6 -2
  38. package/components/date-picker/weekdays.js +10 -2
  39. package/components/dialog/dialog.examples.js +3 -1
  40. package/components/dialog/dialog.js +5 -2
  41. package/components/dialog/dialog.test.js +1 -1
  42. package/components/dialog/dialog__body-scroll-preventer.js +2 -2
  43. package/components/dialog-ng/dialog-ng.js +7 -8
  44. package/components/dialog-ng/{dialog-ng.html → dialog-ng__template.js} +2 -2
  45. package/components/dropdown/dropdown.examples.js +36 -1
  46. package/components/dropdown-menu/dropdown-menu.examples.js +47 -0
  47. package/components/dropdown-menu/dropdown-menu.js +117 -0
  48. package/components/dropdown-menu/dropdown-menu.test.js +76 -0
  49. package/components/error-bubble/error-bubble-legacy.css +1 -1
  50. package/components/error-bubble/error-bubble.css +1 -1
  51. package/components/error-bubble/error-bubble.examples.js +1 -1
  52. package/components/error-page/error-page.css +2 -2
  53. package/components/footer-ng/footer-ng.js +13 -3
  54. package/components/form/form.css +2 -2
  55. package/components/form-ng/form-ng.js +3 -1
  56. package/components/global/global.css +1 -1
  57. package/components/global/theme.js +1 -1
  58. package/components/global/variables.css +8 -1
  59. package/components/grid/grid.css +10 -9
  60. package/components/header/header.css +1 -1
  61. package/components/header/header.examples.js +7 -8
  62. package/components/header/profile.js +10 -11
  63. package/components/http/http.js +1 -1
  64. package/components/icon/icon.css +5 -4
  65. package/components/island/island.css +4 -3
  66. package/components/island-legacy/island-legacy.css +3 -1
  67. package/components/list/list.js +6 -1
  68. package/components/list/list__custom.js +9 -3
  69. package/components/list/list__item.js +8 -2
  70. package/components/list/list__link.js +2 -1
  71. package/components/loader-inline/loader-inline.css +1 -1
  72. package/components/loader-screen/loader-screen.css +1 -1
  73. package/components/message/message.css +1 -1
  74. package/components/message/message.examples.js +8 -5
  75. package/components/pager/pager.js +5 -3
  76. package/components/permissions/permissions.js +1 -1
  77. package/components/progress-bar/progress-bar.css +1 -1
  78. package/components/progress-bar/progress-bar.examples.js +3 -3
  79. package/components/progress-bar/progress-bar.js +5 -2
  80. package/components/progress-bar/progress-bar.test.js +12 -13
  81. package/components/progress-bar-ng/progress-bar-ng.examples.js +3 -3
  82. package/components/query-assist/query-assist.css +13 -3
  83. package/components/query-assist/query-assist.examples.js +3 -1
  84. package/components/query-assist/query-assist.js +56 -12
  85. package/components/query-assist/query-assist.test.js +37 -5
  86. package/components/save-field-ng/save-field-ng.css +0 -3
  87. package/components/save-field-ng/save-field-ng.js +3 -1
  88. package/components/save-field-ng/{save-field-ng.html → save-field-ng__template.js} +2 -2
  89. package/components/select/select.css +12 -7
  90. package/components/select/select.examples.js +13 -0
  91. package/components/select/select.js +30 -43
  92. package/components/select/select.test.js +4 -5
  93. package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
  94. package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -1
  95. package/components/shortcuts-hint-ng/{shortcuts-hint-ng.html → shortcuts-hint-ng__template.js} +2 -2
  96. package/components/sidebar/sidebar.css +1 -0
  97. package/components/sidebar-ng/sidebar-ng.js +6 -2
  98. package/components/sidebar-ng/{sidebar-ng__button.html → sidebar-ng__button-template.js} +2 -2
  99. package/components/sidebar-ng/{sidebar-ng.html → sidebar-ng__template.js} +2 -2
  100. package/components/table/row.js +2 -1
  101. package/components/table/table.css +2 -1
  102. package/components/table-legacy/table-legacy.css +2 -2
  103. package/components/table-legacy/table-legacy__toolbar.css +2 -2
  104. package/components/table-legacy-ng/table-legacy-ng.js +38 -5
  105. package/components/table-legacy-ng/table-legacy-ng__pager.js +7 -1
  106. package/components/tabs/collapsible-tab.js +2 -2
  107. package/components/tabs/collapsible-tabs.js +4 -8
  108. package/components/tabs/tab-link.js +4 -2
  109. package/components/tabs/tabs.css +27 -0
  110. package/components/tabs-ng/tabs-ng.js +4 -2
  111. package/components/tabs-ng/{tabs-ng.html → tabs-ng__template.js} +6 -2
  112. package/components/tag/tag.css +5 -2
  113. package/components/tag/tag.examples.js +3 -0
  114. package/components/tag/tag.js +19 -16
  115. package/components/tags-input/tag-input.examples.js +1 -1
  116. package/components/tags-input/tags-input.js +5 -2
  117. package/components/template-ng/template-ng.js +1 -1
  118. package/components/tooltip/tooltip.js +7 -2
  119. package/components/user-agreement/user-agreement.css +1 -1
  120. package/components/user-agreement/user-agreement.examples.js +7 -4
  121. package/components/user-agreement/user-agreement.js +1 -0
  122. package/package.json +75 -78
  123. package/webpack.config.js +14 -10
  124. package/components/button-set-ng/button-set-ng.html +0 -1
  125. package/components/footer-ng/footer-ng.html +0 -13
  126. package/components/form-ng/form-ng__error-bubble.html +0 -3
  127. package/components/table-legacy-ng/table-legacy-ng.html +0 -4
  128. package/components/table-legacy-ng/table-legacy-ng__column.html +0 -12
  129. package/components/table-legacy-ng/table-legacy-ng__header.html +0 -4
  130. package/components/table-legacy-ng/table-legacy-ng__pager.html +0 -7
  131. package/components/table-legacy-ng/table-legacy-ng__row.html +0 -12
  132. package/components/table-legacy-ng/table-legacy-ng__title.html +0 -9
  133. package/dist/_helpers/_rollupPluginBabelHelpers.js +0 -127
  134. package/dist/_helpers/anchor.js +0 -33
  135. package/dist/_helpers/badge.js +0 -3
  136. package/dist/_helpers/button__classes.js +0 -39
  137. package/dist/_helpers/caption.js +0 -25
  138. package/dist/_helpers/card.js +0 -77
  139. package/dist/_helpers/date-picker.js +0 -3
  140. package/dist/_helpers/dialog__body-scroll-preventer.js +0 -56
  141. package/dist/_helpers/grid.js +0 -3
  142. package/dist/_helpers/header.js +0 -3
  143. package/dist/_helpers/icon__svg.js +0 -83
  144. package/dist/_helpers/inject-styles.js +0 -22
  145. package/dist/_helpers/island.js +0 -3
  146. package/dist/_helpers/list.js +0 -3
  147. package/dist/_helpers/query-assist__suggestions.js +0 -95
  148. package/dist/_helpers/select__filter.js +0 -78
  149. package/dist/_helpers/services-link.js +0 -42
  150. package/dist/_helpers/sidebar.js +0 -127
  151. package/dist/_helpers/table.js +0 -3
  152. package/dist/_helpers/tabs.js +0 -3
  153. package/dist/_helpers/title.js +0 -99
  154. package/dist/alert/alert.js +0 -254
  155. package/dist/alert/container.js +0 -50
  156. package/dist/alert-service/alert-service.js +0 -159
  157. package/dist/analytics/analytics.js +0 -116
  158. package/dist/analytics/analytics__custom-plugin.js +0 -127
  159. package/dist/analytics/analytics__fus-plugin.js +0 -101
  160. package/dist/analytics/analytics__ga-plugin.js +0 -66
  161. package/dist/analytics/analytics__plugin-utils.js +0 -79
  162. package/dist/auth/auth.js +0 -90
  163. package/dist/auth/auth__core.js +0 -987
  164. package/dist/auth/background-flow.js +0 -123
  165. package/dist/auth/down-notification.js +0 -111
  166. package/dist/auth/iframe-flow.js +0 -147
  167. package/dist/auth/landing-entry.js +0 -5
  168. package/dist/auth/landing.js +0 -84
  169. package/dist/auth/request-builder.js +0 -75
  170. package/dist/auth/response-parser.js +0 -117
  171. package/dist/auth/storage.js +0 -279
  172. package/dist/auth/token-validator.js +0 -176
  173. package/dist/auth/window-flow.js +0 -133
  174. package/dist/auth-dialog/auth-dialog.js +0 -132
  175. package/dist/auth-dialog-service/auth-dialog-service.js +0 -67
  176. package/dist/avatar/avatar-example-datauri.js +0 -26
  177. package/dist/avatar/avatar.js +0 -155
  178. package/dist/badge/badge.js +0 -52
  179. package/dist/button/button.js +0 -117
  180. package/dist/button/button__classes.js +0 -5
  181. package/dist/button-group/button-group.js +0 -30
  182. package/dist/button-group/caption.js +0 -5
  183. package/dist/button-set/button-set.js +0 -27
  184. package/dist/button-toolbar/button-toolbar.js +0 -30
  185. package/dist/caret/caret.js +0 -264
  186. package/dist/checkbox/checkbox.js +0 -110
  187. package/dist/confirm/confirm.js +0 -122
  188. package/dist/confirm-service/confirm-service.js +0 -112
  189. package/dist/content-layout/content-layout.js +0 -67
  190. package/dist/content-layout/sidebar.js +0 -6
  191. package/dist/contenteditable/contenteditable.js +0 -81
  192. package/dist/data-list/data-list.js +0 -203
  193. package/dist/data-list/data-list.mock.js +0 -190
  194. package/dist/data-list/item.js +0 -225
  195. package/dist/data-list/selection.js +0 -101
  196. package/dist/data-list/title.js +0 -16
  197. package/dist/date-picker/consts.js +0 -70
  198. package/dist/date-picker/date-input.js +0 -169
  199. package/dist/date-picker/date-picker.js +0 -356
  200. package/dist/date-picker/date-popup.js +0 -459
  201. package/dist/date-picker/day.js +0 -119
  202. package/dist/date-picker/formats.js +0 -3
  203. package/dist/date-picker/month-names.js +0 -92
  204. package/dist/date-picker/month-slider.js +0 -83
  205. package/dist/date-picker/month.js +0 -48
  206. package/dist/date-picker/months.js +0 -121
  207. package/dist/date-picker/weekdays.js +0 -24
  208. package/dist/date-picker/years.js +0 -109
  209. package/dist/dialog/dialog.js +0 -197
  210. package/dist/dialog/dialog__body-scroll-preventer.js +0 -2
  211. package/dist/dropdown/anchor.js +0 -16
  212. package/dist/dropdown/dropdown.js +0 -236
  213. package/dist/error-bubble/error-bubble.js +0 -59
  214. package/dist/error-message/error-message.js +0 -55
  215. package/dist/footer/footer.js +0 -127
  216. package/dist/global/angular-component-factory.js +0 -83
  217. package/dist/global/compose.js +0 -9
  218. package/dist/global/composeRefs.js +0 -15
  219. package/dist/global/conic-gradient.js +0 -37
  220. package/dist/global/create-stateful-context.js +0 -54
  221. package/dist/global/data-tests.js +0 -22
  222. package/dist/global/dom.js +0 -124
  223. package/dist/global/focus-sensor-hoc.js +0 -147
  224. package/dist/global/fuzzy-highlight.js +0 -67
  225. package/dist/global/get-event-key.js +0 -111
  226. package/dist/global/get-uid.js +0 -15
  227. package/dist/global/inject-styles.js +0 -17
  228. package/dist/global/linear-function.js +0 -18
  229. package/dist/global/listeners.js +0 -42
  230. package/dist/global/memoize.js +0 -18
  231. package/dist/global/normalize-indent.js +0 -28
  232. package/dist/global/promise-with-timeout.js +0 -13
  233. package/dist/global/radial-gradient-mask.js +0 -49
  234. package/dist/global/react-dom-renderer.js +0 -45
  235. package/dist/global/rerender-hoc.js +0 -53
  236. package/dist/global/ring-angular-component.js +0 -24
  237. package/dist/global/schedule-raf.js +0 -31
  238. package/dist/global/sniffer.js +0 -6
  239. package/dist/global/supports-css.js +0 -20
  240. package/dist/global/theme.js +0 -56
  241. package/dist/global/trivial-template-tag.js +0 -15
  242. package/dist/global/url.js +0 -163
  243. package/dist/global/variables_dark.js +0 -57
  244. package/dist/grid/col.js +0 -62
  245. package/dist/grid/grid.js +0 -35
  246. package/dist/grid/row.js +0 -66
  247. package/dist/group/group.js +0 -34
  248. package/dist/header/header.js +0 -144
  249. package/dist/header/logo.js +0 -39
  250. package/dist/header/profile.js +0 -212
  251. package/dist/header/services-link.js +0 -10
  252. package/dist/header/services.js +0 -135
  253. package/dist/header/smart-profile.js +0 -227
  254. package/dist/header/smart-services.js +0 -159
  255. package/dist/header/tray-icon.js +0 -45
  256. package/dist/header/tray.js +0 -33
  257. package/dist/heading/heading.js +0 -76
  258. package/dist/http/http.js +0 -216
  259. package/dist/http/http.mock.js +0 -65
  260. package/dist/hub-source/hub-source.js +0 -130
  261. package/dist/hub-source/hub-source__user.js +0 -28
  262. package/dist/hub-source/hub-source__users-groups.js +0 -62
  263. package/dist/icon/icon.js +0 -105
  264. package/dist/icon/icon__constants.js +0 -33
  265. package/dist/icon/icon__svg.js +0 -6
  266. package/dist/icon/index.js +0 -9
  267. package/dist/input/input.js +0 -231
  268. package/dist/island/adaptive-island-hoc.js +0 -48
  269. package/dist/island/content.js +0 -158
  270. package/dist/island/header.js +0 -85
  271. package/dist/island/island.js +0 -53
  272. package/dist/island-legacy/content-legacy.js +0 -28
  273. package/dist/island-legacy/header-legacy.js +0 -30
  274. package/dist/island-legacy/island-legacy.js +0 -30
  275. package/dist/link/clickableLink.js +0 -65
  276. package/dist/link/link.js +0 -118
  277. package/dist/list/consts.js +0 -26
  278. package/dist/list/list.js +0 -800
  279. package/dist/list/list__custom.js +0 -82
  280. package/dist/list/list__hint.js +0 -26
  281. package/dist/list/list__item.js +0 -197
  282. package/dist/list/list__link.js +0 -65
  283. package/dist/list/list__separator.js +0 -30
  284. package/dist/list/list__title.js +0 -39
  285. package/dist/list/list__users-groups-source.js +0 -124
  286. package/dist/loader/loader.js +0 -72
  287. package/dist/loader/loader__core.js +0 -272
  288. package/dist/loader-inline/inject-styles.js +0 -11
  289. package/dist/loader-inline/loader-inline.js +0 -58
  290. package/dist/loader-screen/loader-screen.js +0 -46
  291. package/dist/login-dialog/login-dialog.js +0 -184
  292. package/dist/login-dialog/service.js +0 -67
  293. package/dist/message/message.js +0 -232
  294. package/dist/old-browsers-message/old-browsers-message.js +0 -101
  295. package/dist/old-browsers-message/old-browsers-message__stop.js +0 -5
  296. package/dist/old-browsers-message/white-list.js +0 -34
  297. package/dist/pager/pager.js +0 -352
  298. package/dist/panel/panel.js +0 -34
  299. package/dist/permissions/permissions.js +0 -200
  300. package/dist/permissions/permissions__cache.js +0 -272
  301. package/dist/popup/popup.consts.js +0 -41
  302. package/dist/popup/popup.js +0 -389
  303. package/dist/popup/popup.target.js +0 -27
  304. package/dist/popup/position.js +0 -280
  305. package/dist/popup-menu/popup-menu.js +0 -108
  306. package/dist/progress-bar/progress-bar.js +0 -111
  307. package/dist/proxy-attrs/proxy-attrs.js +0 -19
  308. package/dist/query-assist/query-assist.js +0 -1023
  309. package/dist/query-assist/query-assist__suggestions.js +0 -43
  310. package/dist/radio/radio.js +0 -39
  311. package/dist/radio/radio__item.js +0 -82
  312. package/dist/select/select.js +0 -1335
  313. package/dist/select/select__filter.js +0 -49
  314. package/dist/select/select__popup.js +0 -541
  315. package/dist/shortcuts/core.js +0 -245
  316. package/dist/shortcuts/shortcut-title.js +0 -51
  317. package/dist/shortcuts/shortcuts-hoc.js +0 -43
  318. package/dist/shortcuts/shortcuts.js +0 -72
  319. package/dist/storage/storage.js +0 -55
  320. package/dist/storage/storage__fallback.js +0 -214
  321. package/dist/storage/storage__local.js +0 -150
  322. package/dist/style.css +0 -1
  323. package/dist/tab-trap/tab-trap.js +0 -178
  324. package/dist/table/cell.js +0 -25
  325. package/dist/table/disable-hover-hoc.js +0 -53
  326. package/dist/table/header-cell.js +0 -91
  327. package/dist/table/header.js +0 -189
  328. package/dist/table/multitable.js +0 -140
  329. package/dist/table/row-with-focus-sensor.js +0 -79
  330. package/dist/table/row.js +0 -270
  331. package/dist/table/selection-adapter.js +0 -14
  332. package/dist/table/selection-shortcuts-hoc.js +0 -212
  333. package/dist/table/selection.js +0 -221
  334. package/dist/table/smart-table.js +0 -113
  335. package/dist/table/table.js +0 -405
  336. package/dist/tabs/collapsible-more.js +0 -193
  337. package/dist/tabs/collapsible-tab.js +0 -90
  338. package/dist/tabs/collapsible-tabs.js +0 -361
  339. package/dist/tabs/custom-item.js +0 -13
  340. package/dist/tabs/dumb-tabs.js +0 -159
  341. package/dist/tabs/smart-tabs.js +0 -102
  342. package/dist/tabs/tab-link.js +0 -35
  343. package/dist/tabs/tab.js +0 -32
  344. package/dist/tabs/tabs.js +0 -65
  345. package/dist/tag/tag.js +0 -190
  346. package/dist/tags-input/tags-input.js +0 -474
  347. package/dist/tags-list/tags-list.js +0 -94
  348. package/dist/text/text.js +0 -38
  349. package/dist/toggle/toggle.js +0 -80
  350. package/dist/tooltip/tooltip.js +0 -205
  351. package/dist/user-card/card.js +0 -14
  352. package/dist/user-card/smart-user-card-tooltip.js +0 -112
  353. package/dist/user-card/tooltip.js +0 -91
  354. package/dist/user-card/user-card.js +0 -46
@@ -1,123 +0,0 @@
1
- import AuthResponseParser from './response-parser.js';
2
- import '../_helpers/_rollupPluginBabelHelpers.js';
3
- import 'es6-error';
4
- import '../global/url.js';
5
-
6
- const HUB_AUTH_PAGE_OPENED = 'HUB_AUTH_PAGE_OPENED';
7
- class BackgroundFlow {
8
- constructor(requestBuilder, storage, timeout) {
9
- this._requestBuilder = requestBuilder;
10
- this._storage = storage;
11
- this._timeout = timeout;
12
- }
13
- /**
14
- * Creates a hidden iframe
15
- * @return {HTMLIFrameElement}
16
- * @private
17
- */
18
-
19
-
20
- _createHiddenFrame() {
21
- const iframe = document.createElement('iframe');
22
- iframe.style.border = iframe.style.width = iframe.style.height = '0px';
23
- iframe.style.visibility = 'hidden';
24
- iframe.style.position = 'fixed';
25
- iframe.style.left = '-10000px';
26
- window.document.body.appendChild(iframe);
27
- return iframe;
28
- }
29
- /**
30
- * Redirects the given iframe to the given URL
31
- * @param {HTMLIFrameElement} iframe
32
- * @param {string} url
33
- * @private
34
- */
35
-
36
-
37
- _redirectFrame(iframe, url) {
38
- iframe.src = `${url}&rnd=${Math.random()}`;
39
- }
40
- /**
41
- * Refreshes the access token in an iframe.
42
- *
43
- * @return {Promise.<string>} promise that is resolved to access the token when it is loaded in a background iframe. The
44
- * promise is rejected if no token was received after {@link BackgroundToken.BACKGROUND_TIMEOUT} ms.
45
- */
46
-
47
-
48
- async _load() {
49
- const authRequest = await this._requestBuilder. // eslint-disable-next-line camelcase
50
- prepareAuthRequest({
51
- request_credentials: 'silent'
52
- }, {
53
- nonRedirect: true
54
- });
55
- return new Promise((resolve, reject) => {
56
- function onMessage(e) {
57
- if (e.data === HUB_AUTH_PAGE_OPENED) {
58
- reject(new Error('Failed to obtain/refresh token in background'));
59
- cleanUp();
60
- }
61
- }
62
-
63
- window.addEventListener('message', onMessage);
64
-
65
- const iframe = this._createHiddenFrame();
66
-
67
- let cleanRun;
68
- const timeout = setTimeout(() => {
69
- reject(new Error('Failed to refresh authorization'));
70
- cleanUp();
71
- }, this._timeout);
72
-
73
- const removeTokenListener = this._storage.onTokenChange(token => {
74
- if (token) {
75
- cleanUp();
76
- resolve(token.accessToken);
77
- }
78
- });
79
-
80
- const removeStateListener = this._storage.onStateChange(authRequest.stateId, state => {
81
- if (state && state.error) {
82
- cleanUp();
83
- reject(new AuthResponseParser.AuthError(state));
84
- }
85
- });
86
-
87
- function cleanUp() {
88
- if (cleanRun) {
89
- return;
90
- }
91
-
92
- cleanRun = true;
93
- clearTimeout(timeout);
94
- removeStateListener();
95
- removeTokenListener();
96
- window.removeEventListener('message', onMessage);
97
- window.document.body.removeChild(iframe);
98
- }
99
-
100
- this._redirectFrame(iframe, authRequest.url);
101
- });
102
- }
103
-
104
- authorize() {
105
- if (this._promise) {
106
- return this._promise;
107
- }
108
-
109
- const resetPromise = () => {
110
- this._promise = null;
111
- };
112
-
113
- this._promise = this._load();
114
-
115
- this._promise.then(resetPromise, resetPromise);
116
-
117
- return this._promise;
118
- }
119
-
120
- }
121
-
122
- export default BackgroundFlow;
123
- export { HUB_AUTH_PAGE_OPENED };
@@ -1,111 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import alertService from '../alert-service/alert-service.js';
4
- import Alert from '../alert/alert.js';
5
- import Link from '../link/link.js';
6
- import Group from '../group/group.js';
7
- import '../_helpers/_rollupPluginBabelHelpers.js';
8
- import 'react-dom';
9
- import '../global/get-uid.js';
10
- import '../alert/container.js';
11
- import 'classnames';
12
- import '@jetbrains/icons/exception';
13
- import '@jetbrains/icons/checkmark';
14
- import '@jetbrains/icons/warning';
15
- import '@jetbrains/icons/close';
16
- import '../icon/icon.js';
17
- import 'util-deprecate';
18
- import '../icon/icon__constants.js';
19
- import '../_helpers/icon__svg.js';
20
- import '../global/memoize.js';
21
- import '../loader-inline/loader-inline.js';
22
- import '../global/theme.js';
23
- import '../global/data-tests.js';
24
- import '../_helpers/inject-styles.js';
25
- import '../global/conic-gradient.js';
26
- import 'conic-gradient';
27
- import '../global/supports-css.js';
28
- import '../global/inject-styles.js';
29
- import '../global/radial-gradient-mask.js';
30
- import '../global/dom.js';
31
- import 'focus-visible';
32
- import '../link/clickableLink.js';
33
-
34
- var modules_c87dd562 = {"unit":"8px","title":"downNotification_title__dc35b944","error":"downNotification_error__dc35b944"};
35
-
36
- let key = null;
37
-
38
- function renderAlert(message) {
39
- let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Alert.Type.WARNING;
40
- const existingAlert = alertService.showingAlerts.filter(alert => alert.key === key)[0];
41
-
42
- if (!existingAlert) {
43
- key = alertService.addAlert(message, type, 0, {
44
- closeable: false
45
- });
46
- } else {
47
- existingAlert.message = message;
48
- existingAlert.type = type;
49
- alertService.renderAlerts();
50
- }
51
- }
52
-
53
- function Message(_ref) {
54
- let {
55
- translations,
56
- onCheckAgain
57
- } = _ref;
58
- const {
59
- backendIsNotAvailable,
60
- checkAgain,
61
- errorMessage
62
- } = translations;
63
- return /*#__PURE__*/React.createElement("div", {
64
- "data-test": "ring-backend-down-notification"
65
- }, /*#__PURE__*/React.createElement(Group, null, /*#__PURE__*/React.createElement("div", {
66
- className: modules_c87dd562.title
67
- }, backendIsNotAvailable)), /*#__PURE__*/React.createElement("span", {
68
- className: modules_c87dd562.error
69
- }, errorMessage, " "), /*#__PURE__*/React.createElement(Link, {
70
- onClick: onCheckAgain,
71
- "data-test": "check-again"
72
- }, checkAgain));
73
- }
74
-
75
- Message.propTypes = {
76
- translations: PropTypes.shape({
77
- backendIsNotAvailable: PropTypes.string,
78
- checkAgain: PropTypes.string,
79
- errorMessage: PropTypes.string
80
- }),
81
- onCheckAgain: PropTypes.func
82
- };
83
- function onBackendDown(_ref2) {
84
- let {
85
- onCheckAgain,
86
- translations
87
- } = _ref2;
88
-
89
- async function checkAgainWithoutClosing(e) {
90
- // Alert has weird behaviour of handling clicks by "a" tags
91
- e.stopPropagation();
92
-
93
- try {
94
- renderAlert('Connecting...', Alert.Type.LOADING);
95
- await onCheckAgain();
96
- } catch (err) {
97
- renderAlert( /*#__PURE__*/React.createElement(Message, {
98
- translations: translations,
99
- onCheckAgain: checkAgainWithoutClosing
100
- }));
101
- }
102
- }
103
-
104
- renderAlert( /*#__PURE__*/React.createElement(Message, {
105
- translations: translations,
106
- onCheckAgain: checkAgainWithoutClosing
107
- }));
108
- return () => alertService.remove(key);
109
- }
110
-
111
- export default onBackendDown;
@@ -1,147 +0,0 @@
1
- import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import React from 'react';
3
- import showAuthDialog from '../login-dialog/service.js';
4
- import Link from '../link/link.js';
5
- import AuthResponseParser from './response-parser.js';
6
- import 'react-dom';
7
- import '../login-dialog/login-dialog.js';
8
- import 'prop-types';
9
- import '../dialog/dialog.js';
10
- import 'classnames';
11
- import '@jetbrains/icons/close';
12
- import '../island/island.js';
13
- import '../global/data-tests.js';
14
- import '../island/adaptive-island-hoc.js';
15
- import '../global/linear-function.js';
16
- import '../_helpers/island.js';
17
- import '../island/header.js';
18
- import '../island/content.js';
19
- import 'element-resize-detector';
20
- import '../global/schedule-raf.js';
21
- import '../global/get-uid.js';
22
- import '../shortcuts/shortcuts.js';
23
- import '../shortcuts/core.js';
24
- import 'combokeys';
25
- import '../global/sniffer.js';
26
- import 'sniffr';
27
- import '../tab-trap/tab-trap.js';
28
- import '../global/dom.js';
29
- import '../button/button.js';
30
- import 'focus-visible';
31
- import '@jetbrains/icons/chevron-10px';
32
- import '../icon/icon.js';
33
- import 'util-deprecate';
34
- import '../icon/icon__constants.js';
35
- import '../_helpers/icon__svg.js';
36
- import '../global/memoize.js';
37
- import '../global/theme.js';
38
- import '../link/clickableLink.js';
39
- import '../_helpers/button__classes.js';
40
- import '../popup/popup.target.js';
41
- import '../_helpers/dialog__body-scroll-preventer.js';
42
- import 'scrollbar-width';
43
- import '../loader-screen/loader-screen.js';
44
- import '../loader/loader.js';
45
- import '../loader/loader__core.js';
46
- import './background-flow.js';
47
- import 'es6-error';
48
- import '../global/url.js';
49
-
50
- class IFrameFlow {
51
- constructor(requestBuilder, storage, translations) {
52
- _defineProperty(this, "hideDialog", null);
53
-
54
- _defineProperty(this, "_reset", () => {
55
- this._promise = null;
56
- this.hideDialog = null;
57
- });
58
-
59
- this._requestBuilder = requestBuilder;
60
- this._storage = storage;
61
- this._translations = translations;
62
-
63
- this._reset();
64
- }
65
- /**
66
- * Initiates authorization in window
67
- */
68
-
69
-
70
- async _load() {
71
- const authRequest = await this._requestBuilder.prepareAuthRequest( // eslint-disable-next-line camelcase
72
- {
73
- request_credentials: 'required',
74
- auth_mode: 'bypass_to_login'
75
- }, {
76
- nonRedirect: false
77
- });
78
-
79
- const renderFallbackLink = () => /*#__PURE__*/React.createElement(Link, {
80
- href: authRequest.url,
81
- target: "_self"
82
- }, this._translations.nothingHappensLink);
83
-
84
- return new Promise((resolve, reject) => {
85
- this.hideDialog = showAuthDialog({
86
- url: authRequest.url,
87
- loader: true,
88
- onCancel: () => {
89
- // eslint-disable-next-line no-use-before-define
90
- cleanUp();
91
- this.stop();
92
- },
93
- renderFallbackLink
94
- });
95
- this.reject = reject;
96
-
97
- const removeTokenListener = this._storage.onTokenChange(token => {
98
- if (token) {
99
- // eslint-disable-next-line no-use-before-define
100
- cleanUp();
101
- resolve(token.accessToken);
102
- }
103
- });
104
-
105
- const removeStateListener = this._storage.onStateChange(authRequest.stateId, state => {
106
- if (state && state.error) {
107
- // eslint-disable-next-line no-use-before-define
108
- cleanUp();
109
- reject(new AuthResponseParser.AuthError(state));
110
- }
111
- });
112
-
113
- const cleanUp = () => {
114
- this.hideDialog();
115
- removeStateListener();
116
- removeTokenListener();
117
- };
118
- });
119
- }
120
-
121
- stop() {
122
- if (this.hideDialog) {
123
- this.hideDialog();
124
- }
125
-
126
- if (this.reject) {
127
- this.reject('Login form closed');
128
- }
129
-
130
- this._reset();
131
- }
132
-
133
- authorize() {
134
- if (this._promise !== null && this._loginWindow !== null && this._loginWindow.closed !== true) {
135
- return this._promise;
136
- }
137
-
138
- this._promise = this._load();
139
-
140
- this._promise.then(this._reset, this._reset);
141
-
142
- return this._promise;
143
- }
144
-
145
- }
146
-
147
- export default IFrameFlow;
@@ -1,5 +0,0 @@
1
- import '!!file-loader?publicPath=../../&name=auth-landing.html!extricate-loader!interpolate-loader!./landing.html';
2
-
3
- var landingEntry = 'auth-landing.html';
4
-
5
- export default landingEntry;
@@ -1,84 +0,0 @@
1
- import TokenValidator from './token-validator.js';
2
- import AuthResponseParser from './response-parser.js';
3
- import './auth.js';
4
- import AuthStorage from './storage.js';
5
- import { DEFAULT_EXPIRES_TIMEOUT } from './auth__core.js';
6
- import '../_helpers/_rollupPluginBabelHelpers.js';
7
- import 'es6-error';
8
- import '../http/http.js';
9
- import '../global/url.js';
10
- import './window-flow.js';
11
- import './down-notification.js';
12
- import 'react';
13
- import 'prop-types';
14
- import '../alert-service/alert-service.js';
15
- import 'react-dom';
16
- import '../global/get-uid.js';
17
- import '../alert/alert.js';
18
- import 'classnames';
19
- import '@jetbrains/icons/exception';
20
- import '@jetbrains/icons/checkmark';
21
- import '@jetbrains/icons/warning';
22
- import '@jetbrains/icons/close';
23
- import '../icon/icon.js';
24
- import 'util-deprecate';
25
- import '../icon/icon__constants.js';
26
- import '../_helpers/icon__svg.js';
27
- import '../global/memoize.js';
28
- import '../loader-inline/loader-inline.js';
29
- import '../global/theme.js';
30
- import '../global/data-tests.js';
31
- import '../_helpers/inject-styles.js';
32
- import '../global/conic-gradient.js';
33
- import 'conic-gradient';
34
- import '../global/supports-css.js';
35
- import '../global/inject-styles.js';
36
- import '../global/radial-gradient-mask.js';
37
- import '../global/dom.js';
38
- import '../alert/container.js';
39
- import '../link/link.js';
40
- import 'focus-visible';
41
- import '../link/clickableLink.js';
42
- import '../group/group.js';
43
- import '../global/listeners.js';
44
- import '../global/promise-with-timeout.js';
45
- import '../storage/storage.js';
46
- import '../storage/storage__local.js';
47
- import '../storage/storage__fallback.js';
48
- import 'deep-equal';
49
- import './request-builder.js';
50
- import 'simply-uuid';
51
- import './background-flow.js';
52
-
53
- const parser = new AuthResponseParser();
54
- const authResponse = parser.getAuthResponseFromURL();
55
- async function parseAndStoreResponse(clientId) {
56
- const storage = new AuthStorage({
57
- messagePrefix: `${clientId}-message-`,
58
- stateKeyPrefix: `${clientId}-states-`,
59
- tokenKey: `${clientId}-token`,
60
- userKey: `${clientId}-user-`
61
- });
62
-
63
- if (!authResponse) {
64
- return;
65
- }
66
-
67
- const {
68
- state: stateId,
69
- scope,
70
- expiresIn,
71
- accessToken
72
- } = authResponse;
73
- const newState = (await (stateId && this._storage.getState(stateId))) || {};
74
- const scopes = scope ? scope.split(' ') : newState.scopes || [];
75
- const effectiveExpiresIn = expiresIn ? parseInt(expiresIn, 10) : DEFAULT_EXPIRES_TIMEOUT;
76
- const expires = TokenValidator._epoch() + effectiveExpiresIn;
77
- await storage.saveToken({
78
- accessToken,
79
- scopes,
80
- expires
81
- });
82
- }
83
-
84
- export default parseAndStoreResponse;
@@ -1,75 +0,0 @@
1
- import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import uuid from 'simply-uuid';
3
- import { encodeURL } from '../global/url.js';
4
-
5
- class AuthRequestBuilder {
6
- /**
7
- * @param {{
8
- * authorization: string,
9
- * redirectUri: string?,
10
- * requestCredentials: string?,
11
- * clientId: string?,
12
- * scopes: string[]
13
- * }} config
14
- * @param {AuthStorage} storage
15
- */
16
- constructor(config, storage) {
17
- this.config = config;
18
- this.storage = storage;
19
- }
20
- /**
21
- * @return {string} random string used for state
22
- */
23
-
24
-
25
- /**
26
- * Save state and build an auth server redirect URL.
27
- *
28
- * @param {object=} extraParams additional query parameters for auth request
29
- * @param {object=} extraState additional state parameters to save
30
- * @return {Promise.<string>} promise that is resolved to authURL
31
- */
32
- async prepareAuthRequest(extraParams, extraState) {
33
- const stateId = AuthRequestBuilder._uuid();
34
-
35
- const scopes = this.config.scopes.map(scope => encodeURIComponent(scope));
36
- /* eslint-disable camelcase */
37
-
38
- const request = Object.assign({
39
- response_type: 'token',
40
- state: stateId,
41
- redirect_uri: this.config.redirectUri,
42
- request_credentials: this.config.requestCredentials,
43
- client_id: this.config.clientId,
44
- scope: scopes.join(' ')
45
- }, extraParams || {});
46
- /* eslint-enable camelcase */
47
-
48
- const authURL = encodeURL(this.config.authorization, request);
49
- const state = Object.assign({
50
- restoreLocation: window.location.href,
51
- scopes: this.config.scopes
52
- }, extraState || {});
53
- await this._saveState(stateId, state);
54
- return {
55
- url: authURL,
56
- stateId
57
- };
58
- }
59
- /**
60
- * @param {string} id
61
- * @param {StoredState} storedState
62
- * @return {Promise}
63
- * @private
64
- */
65
-
66
-
67
- _saveState(id, storedState) {
68
- return this.storage.saveState(id, storedState);
69
- }
70
-
71
- }
72
-
73
- _defineProperty(AuthRequestBuilder, "_uuid", uuid.generate);
74
-
75
- export default AuthRequestBuilder;
@@ -1,117 +0,0 @@
1
- import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import ExtendableError from 'es6-error';
3
- import { parseQueryString } from '../global/url.js';
4
-
5
- /**
6
- * @typedef {Object} AuthResponse
7
- * @property {?string} accessToken
8
- * @property {?string} state
9
- * @property {?string} token_type
10
- * @property {?string} expiresIn
11
- * @property {?string} scope
12
- * @property {?string} error
13
- */
14
-
15
- class AuthResponseParser {
16
- constructor() {
17
- this._authResponse = this.readAuthResponseFromURL();
18
- }
19
-
20
- static convertKey(key) {
21
- return key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
22
- }
23
- /**
24
- * Check if the hash contains an access token.
25
- * If it does, return auth response. Otherwise return undefined.
26
- * Always clears the hash part of the URL.
27
- *
28
- * @throws {Error} if the auth server returned an error
29
- * @return {?AuthResponse}
30
- */
31
-
32
-
33
- getAuthResponseFromURL() {
34
- return this.validateAuthResponse(this._authResponse);
35
- }
36
- /**
37
- * Validates given authResponse.
38
- * If it contains a token - returns the token, if an error is found - throws the error,
39
- * otherwise - null
40
- * Always clears the hash part of the URL.
41
- *
42
- * @param authResponse {AuthResponse} parsed authResponse
43
- * @throws {Error} if the auth server returned an error
44
- * @return {?AuthResponse}
45
- */
46
-
47
-
48
- validateAuthResponse(authResponse) {
49
- // Check for errors
50
- if (authResponse.error) {
51
- throw new AuthResponseParser.AuthError(authResponse);
52
- } // If there is no token in the hash
53
-
54
-
55
- if (!authResponse.accessToken) {
56
- return null;
57
- }
58
-
59
- return authResponse;
60
- }
61
- /**
62
- * Reads the current accessToken from the URL.
63
- * Doesn't modify URL
64
- *
65
- * @return {AuthResponse}
66
- */
67
-
68
-
69
- readAuthResponseFromURL() {
70
- const authResponse = {};
71
- const rawAuthResponse = parseQueryString(this.getHash());
72
- Object.keys(rawAuthResponse).forEach(key => {
73
- if (key.indexOf('_') !== -1) {
74
- authResponse[AuthResponseParser.convertKey(key)] = rawAuthResponse[key];
75
- return;
76
- }
77
-
78
- authResponse[key] = rawAuthResponse[key];
79
- });
80
- return authResponse;
81
- }
82
- /**
83
- * @return {string} part of the URL after # sign.
84
- * @private
85
- */
86
-
87
-
88
- getHash() {
89
- // Because of stupid Firefox bug — https://bugzilla.mozilla.org/show_bug.cgi?id=483304
90
- const location = this.getLocation();
91
- return location && location.replace(/^[^#]*#?/, '');
92
- }
93
- /**
94
- * Current page location.
95
- * @return {string}
96
- */
97
-
98
-
99
- getLocation() {
100
- return window.location.toString();
101
- }
102
-
103
- }
104
-
105
- _defineProperty(AuthResponseParser, "AuthError", class AuthError extends ExtendableError {
106
- // Supports weird IE 11 failing test issue
107
- constructor() {
108
- let authResponse = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
109
- super(authResponse.errorDescription);
110
- this.code = authResponse.error;
111
- this.uri = authResponse.errorUri;
112
- this.stateId = authResponse.state;
113
- }
114
-
115
- });
116
-
117
- export default AuthResponseParser;