@jetbrains/ring-ui 4.2.9 → 4.2.10

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 (315) hide show
  1. package/dist/_helpers/_rollupPluginBabelHelpers.js +34 -0
  2. package/dist/_helpers/anchor.js +33 -0
  3. package/dist/_helpers/badge.js +3 -0
  4. package/dist/_helpers/button-group.js +3 -0
  5. package/dist/_helpers/button-set.js +3 -0
  6. package/dist/_helpers/button-toolbar.js +3 -0
  7. package/dist/_helpers/button__classes.js +39 -0
  8. package/dist/_helpers/card.js +75 -0
  9. package/dist/_helpers/checkbox.js +3 -0
  10. package/dist/_helpers/date-picker.js +3 -0
  11. package/dist/_helpers/dialog__body-scroll-preventer.js +58 -0
  12. package/dist/_helpers/error-message.js +3 -0
  13. package/dist/_helpers/footer.js +121 -0
  14. package/dist/_helpers/grid.js +3 -0
  15. package/dist/_helpers/group.js +3 -0
  16. package/dist/_helpers/header.js +3 -0
  17. package/dist/_helpers/icon.js +3 -0
  18. package/dist/_helpers/inject-styles.js +22 -0
  19. package/dist/_helpers/input.js +3 -0
  20. package/dist/_helpers/island.js +3 -0
  21. package/dist/_helpers/link.js +3 -0
  22. package/dist/_helpers/list.js +3 -0
  23. package/dist/_helpers/loader-screen.js +3 -0
  24. package/dist/_helpers/panel.js +3 -0
  25. package/dist/_helpers/query-assist__suggestions.js +95 -0
  26. package/dist/_helpers/radio.js +3 -0
  27. package/dist/_helpers/select__filter.js +77 -0
  28. package/dist/_helpers/services-link.js +40 -0
  29. package/dist/_helpers/sidebar.js +126 -0
  30. package/dist/_helpers/table.js +3 -0
  31. package/dist/_helpers/tabs.js +3 -0
  32. package/dist/_helpers/title.js +100 -0
  33. package/dist/alert/alert.js +262 -0
  34. package/dist/alert/container.js +48 -0
  35. package/dist/alert-service/alert-service.js +173 -0
  36. package/dist/analytics/analytics.js +118 -0
  37. package/dist/analytics/analytics__custom-plugin.js +128 -0
  38. package/dist/analytics/analytics__fus-plugin.js +102 -0
  39. package/dist/analytics/analytics__ga-plugin.js +75 -0
  40. package/dist/analytics/analytics__plugin-utils.js +80 -0
  41. package/dist/analytics-ng/analytics-ng.js +95 -0
  42. package/dist/auth/auth.js +96 -0
  43. package/dist/auth/auth__core.js +1065 -0
  44. package/dist/auth/background-flow.js +123 -0
  45. package/dist/auth/down-notification.js +117 -0
  46. package/dist/auth/iframe-flow.js +153 -0
  47. package/dist/auth/landing-entry.js +5 -0
  48. package/dist/auth/landing.js +90 -0
  49. package/dist/auth/request-builder.js +76 -0
  50. package/dist/auth/response-parser.js +118 -0
  51. package/dist/auth/storage.js +283 -0
  52. package/dist/auth/token-validator.js +180 -0
  53. package/dist/auth/window-flow.js +134 -0
  54. package/dist/auth-dialog/auth-dialog.js +180 -0
  55. package/dist/auth-dialog-service/auth-dialog-service.js +71 -0
  56. package/dist/auth-ng/auth-ng.js +206 -0
  57. package/dist/auth-ng/auth-ng.mock.js +33 -0
  58. package/dist/autofocus-ng/autofocus-ng.js +51 -0
  59. package/dist/avatar/avatar-example-datauri.js +4 -0
  60. package/dist/avatar/avatar.js +163 -0
  61. package/dist/avatar/fallback-avatar.js +142 -0
  62. package/dist/avatar-editor-ng/avatar-editor-ng.js +167 -0
  63. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +3 -0
  64. package/dist/avatar-ng/avatar-ng.js +21 -0
  65. package/dist/badge/badge.js +51 -0
  66. package/dist/badge-ng/badge-ng.js +18 -0
  67. package/dist/breadcrumb-ng/breadcrumb-ng.js +37 -0
  68. package/dist/button/button.js +125 -0
  69. package/dist/button/button__classes.js +5 -0
  70. package/dist/button-group/button-group.js +30 -0
  71. package/dist/button-group/caption.js +24 -0
  72. package/dist/button-group-ng/button-group-ng.js +39 -0
  73. package/dist/button-ng/button-ng.js +217 -0
  74. package/dist/button-set/button-set.js +26 -0
  75. package/dist/button-set-ng/button-set-ng.js +19 -0
  76. package/dist/button-toolbar/button-toolbar.js +29 -0
  77. package/dist/button-toolbar-ng/button-toolbar-ng.js +24 -0
  78. package/dist/caret/caret.js +266 -0
  79. package/dist/checkbox/checkbox.js +110 -0
  80. package/dist/checkbox-ng/checkbox-ng.js +38 -0
  81. package/dist/code/code.js +137 -0
  82. package/dist/compiler-ng/compiler-ng.js +53 -0
  83. package/dist/confirm/confirm.js +127 -0
  84. package/dist/confirm-ng/confirm-ng.js +69 -0
  85. package/dist/confirm-service/confirm-service.js +117 -0
  86. package/dist/content-layout/content-layout.js +66 -0
  87. package/dist/content-layout/sidebar.js +7 -0
  88. package/dist/contenteditable/contenteditable.js +78 -0
  89. package/dist/data-list/data-list.js +208 -0
  90. package/dist/data-list/data-list.mock.js +191 -0
  91. package/dist/data-list/item.js +229 -0
  92. package/dist/data-list/selection.js +102 -0
  93. package/dist/data-list/title.js +20 -0
  94. package/dist/data-list-ng/data-list-ng.js +62 -0
  95. package/dist/date-picker/consts.js +69 -0
  96. package/dist/date-picker/date-input.js +175 -0
  97. package/dist/date-picker/date-picker.js +367 -0
  98. package/dist/date-picker/date-popup.js +483 -0
  99. package/dist/date-picker/day.js +120 -0
  100. package/dist/date-picker/formats.js +3 -0
  101. package/dist/date-picker/month-names.js +100 -0
  102. package/dist/date-picker/month-slider.js +84 -0
  103. package/dist/date-picker/month.js +55 -0
  104. package/dist/date-picker/months.js +122 -0
  105. package/dist/date-picker/weekdays.js +32 -0
  106. package/dist/date-picker/years.js +110 -0
  107. package/dist/dialog/dialog.js +205 -0
  108. package/dist/dialog/dialog__body-scroll-preventer.js +3 -0
  109. package/dist/dialog-ng/dialog-ng.js +604 -0
  110. package/dist/dialog-ng/dialog-ng__template.js +3 -0
  111. package/dist/docked-panel-ng/docked-panel-ng.js +171 -0
  112. package/dist/dropdown/anchor.js +19 -0
  113. package/dist/dropdown/dropdown.js +236 -0
  114. package/dist/dropdown-menu/dropdown-menu.js +177 -0
  115. package/dist/error-bubble/error-bubble.js +59 -0
  116. package/dist/error-message/error-message.js +57 -0
  117. package/dist/error-message-ng/error-message-ng.js +35 -0
  118. package/dist/footer/footer.js +12 -0
  119. package/dist/footer-ng/footer-ng.js +64 -0
  120. package/dist/form-ng/form-ng.js +167 -0
  121. package/dist/global/angular-component-factory.js +84 -0
  122. package/dist/global/compose.js +9 -0
  123. package/dist/global/composeRefs.js +15 -0
  124. package/dist/global/conic-gradient.js +35 -0
  125. package/dist/global/create-stateful-context.js +55 -0
  126. package/dist/global/data-tests.js +24 -0
  127. package/dist/global/dom.js +125 -0
  128. package/dist/global/focus-sensor-hoc.js +146 -0
  129. package/dist/global/fuzzy-highlight.js +67 -0
  130. package/dist/global/get-event-key.js +111 -0
  131. package/dist/global/get-uid.js +15 -0
  132. package/dist/global/inject-styles.js +15 -0
  133. package/dist/global/linear-function.js +17 -0
  134. package/dist/global/listeners.js +44 -0
  135. package/dist/global/memoize.js +20 -0
  136. package/dist/global/normalize-indent.js +30 -0
  137. package/dist/global/promise-with-timeout.js +17 -0
  138. package/dist/global/radial-gradient-mask.js +38 -0
  139. package/dist/global/react-dom-renderer.js +46 -0
  140. package/dist/global/react-render-adapter.js +41 -0
  141. package/dist/global/rerender-hoc.js +55 -0
  142. package/dist/global/ring-angular-component.js +24 -0
  143. package/dist/global/schedule-raf.js +31 -0
  144. package/dist/global/sniffer.js +6 -0
  145. package/dist/global/supports-css.js +22 -0
  146. package/dist/global/theme.js +54 -0
  147. package/dist/global/trivial-template-tag.js +17 -0
  148. package/dist/global/url.js +165 -0
  149. package/dist/global/variables_dark.js +57 -0
  150. package/dist/grid/col.js +60 -0
  151. package/dist/grid/grid.js +33 -0
  152. package/dist/grid/row.js +64 -0
  153. package/dist/group/group.js +31 -0
  154. package/dist/group-ng/group-ng.js +11 -0
  155. package/dist/header/header.js +150 -0
  156. package/dist/header/logo.js +40 -0
  157. package/dist/header/profile.js +219 -0
  158. package/dist/header/services-link.js +12 -0
  159. package/dist/header/services.js +138 -0
  160. package/dist/header/smart-profile.js +233 -0
  161. package/dist/header/smart-services.js +163 -0
  162. package/dist/header/tray-icon.js +47 -0
  163. package/dist/header/tray.js +31 -0
  164. package/dist/heading/heading.js +73 -0
  165. package/dist/http/http.js +218 -0
  166. package/dist/http/http.mock.js +67 -0
  167. package/dist/hub-source/hub-source.js +130 -0
  168. package/dist/hub-source/hub-source__user.js +30 -0
  169. package/dist/hub-source/hub-source__users-groups.js +63 -0
  170. package/dist/icon/icon.js +105 -0
  171. package/dist/icon/icon__constants.js +33 -0
  172. package/dist/icon/icon__svg.js +83 -0
  173. package/dist/icon/index.js +12 -0
  174. package/dist/icon-ng/icon-ng.js +91 -0
  175. package/dist/input/input.js +230 -0
  176. package/dist/input-ng/input-ng.js +111 -0
  177. package/dist/island/adaptive-island-hoc.js +48 -0
  178. package/dist/island/content.js +160 -0
  179. package/dist/island/header.js +84 -0
  180. package/dist/island/island.js +51 -0
  181. package/dist/island-legacy/content-legacy.js +26 -0
  182. package/dist/island-legacy/header-legacy.js +28 -0
  183. package/dist/island-legacy/island-legacy.js +28 -0
  184. package/dist/island-ng/island-content-ng.js +42 -0
  185. package/dist/island-ng/island-header-ng.js +26 -0
  186. package/dist/island-ng/island-ng-class-fixer.js +11 -0
  187. package/dist/island-ng/island-ng.js +25 -0
  188. package/dist/link/clickableLink.js +64 -0
  189. package/dist/link/link.js +115 -0
  190. package/dist/link-ng/link-ng.js +22 -0
  191. package/dist/list/consts.js +26 -0
  192. package/dist/list/list.js +822 -0
  193. package/dist/list/list__custom.js +86 -0
  194. package/dist/list/list__hint.js +26 -0
  195. package/dist/list/list__item.js +206 -0
  196. package/dist/list/list__link.js +65 -0
  197. package/dist/list/list__separator.js +30 -0
  198. package/dist/list/list__title.js +39 -0
  199. package/dist/list/list__users-groups-source.js +130 -0
  200. package/dist/loader/loader.js +71 -0
  201. package/dist/loader/loader__core.js +273 -0
  202. package/dist/loader-inline/inject-styles.js +13 -0
  203. package/dist/loader-inline/loader-inline.js +58 -0
  204. package/dist/loader-inline-ng/loader-inline-ng.js +44 -0
  205. package/dist/loader-ng/loader-ng.js +44 -0
  206. package/dist/loader-screen/loader-screen.js +44 -0
  207. package/dist/loader-screen-ng/loader-screen-ng.js +95 -0
  208. package/dist/login-dialog/login-dialog.js +188 -0
  209. package/dist/login-dialog/service.js +72 -0
  210. package/dist/markdown/code.js +31 -0
  211. package/dist/markdown/heading.js +23 -0
  212. package/dist/markdown/link.js +31 -0
  213. package/dist/markdown/markdown.js +74 -0
  214. package/dist/message/message.js +235 -0
  215. package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
  216. package/dist/old-browsers-message/old-browsers-message.js +101 -0
  217. package/dist/old-browsers-message/old-browsers-message__stop.js +5 -0
  218. package/dist/old-browsers-message/white-list.js +34 -0
  219. package/dist/pager/pager.js +365 -0
  220. package/dist/pager-ng/pager-ng.js +100 -0
  221. package/dist/panel/panel.js +31 -0
  222. package/dist/panel-ng/panel-ng.js +17 -0
  223. package/dist/permissions/permissions.js +200 -0
  224. package/dist/permissions/permissions__cache.js +272 -0
  225. package/dist/permissions-ng/permissions-ng.js +277 -0
  226. package/dist/place-under-ng/place-under-ng.js +158 -0
  227. package/dist/popup/popup.consts.js +41 -0
  228. package/dist/popup/popup.js +396 -0
  229. package/dist/popup/popup.target.js +26 -0
  230. package/dist/popup/position.js +280 -0
  231. package/dist/popup-menu/popup-menu.js +117 -0
  232. package/dist/progress-bar/progress-bar.js +114 -0
  233. package/dist/progress-bar-ng/progress-bar-ng.js +17 -0
  234. package/dist/promised-click-ng/promised-click-ng.js +128 -0
  235. package/dist/proxy-attrs/proxy-attrs.js +21 -0
  236. package/dist/query-assist/query-assist.js +1096 -0
  237. package/dist/query-assist/query-assist__suggestions.js +49 -0
  238. package/dist/query-assist-ng/query-assist-ng.js +86 -0
  239. package/dist/radio/radio.js +42 -0
  240. package/dist/radio/radio__item.js +78 -0
  241. package/dist/radio-ng/radio-ng.js +47 -0
  242. package/dist/save-field-ng/save-field-ng.js +337 -0
  243. package/dist/save-field-ng/save-field-ng__template.js +3 -0
  244. package/dist/select/select.js +1357 -0
  245. package/dist/select/select__filter.js +56 -0
  246. package/dist/select/select__popup.js +553 -0
  247. package/dist/select-ng/select-ng.js +637 -0
  248. package/dist/select-ng/select-ng__lazy.js +169 -0
  249. package/dist/select-ng/select-ng__options.js +145 -0
  250. package/dist/shortcuts/core.js +245 -0
  251. package/dist/shortcuts/shortcut-title.js +51 -0
  252. package/dist/shortcuts/shortcuts-hoc.js +42 -0
  253. package/dist/shortcuts/shortcuts.js +72 -0
  254. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +123 -0
  255. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +3 -0
  256. package/dist/shortcuts-ng/shortcuts-ng.js +262 -0
  257. package/dist/sidebar-ng/sidebar-ng.js +113 -0
  258. package/dist/sidebar-ng/sidebar-ng__button-template.js +3 -0
  259. package/dist/sidebar-ng/sidebar-ng__template.js +3 -0
  260. package/dist/storage/storage.js +59 -0
  261. package/dist/storage/storage__fallback.js +215 -0
  262. package/dist/storage/storage__local.js +154 -0
  263. package/dist/style.css +1 -0
  264. package/dist/tab-trap/tab-trap.js +177 -0
  265. package/dist/table/cell.js +26 -0
  266. package/dist/table/disable-hover-hoc.js +54 -0
  267. package/dist/table/header-cell.js +92 -0
  268. package/dist/table/header.js +193 -0
  269. package/dist/table/multitable.js +141 -0
  270. package/dist/table/row-with-focus-sensor.js +83 -0
  271. package/dist/table/row.js +278 -0
  272. package/dist/table/selection-adapter.js +16 -0
  273. package/dist/table/selection-shortcuts-hoc.js +215 -0
  274. package/dist/table/selection.js +223 -0
  275. package/dist/table/smart-table.js +125 -0
  276. package/dist/table/table.js +409 -0
  277. package/dist/table-legacy-ng/table-legacy-ng.js +468 -0
  278. package/dist/table-legacy-ng/table-legacy-ng__pager.js +120 -0
  279. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
  280. package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
  281. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +57 -0
  282. package/dist/table-ng/smart-table-ng.js +68 -0
  283. package/dist/table-ng/table-ng.js +67 -0
  284. package/dist/tabs/collapsible-more.js +198 -0
  285. package/dist/tabs/collapsible-tab.js +91 -0
  286. package/dist/tabs/collapsible-tabs.js +362 -0
  287. package/dist/tabs/custom-item.js +13 -0
  288. package/dist/tabs/dumb-tabs.js +164 -0
  289. package/dist/tabs/smart-tabs.js +106 -0
  290. package/dist/tabs/tab-link.js +42 -0
  291. package/dist/tabs/tab.js +33 -0
  292. package/dist/tabs/tabs.js +71 -0
  293. package/dist/tabs-ng/tabs-ng.js +194 -0
  294. package/dist/tabs-ng/tabs-ng__template.js +3 -0
  295. package/dist/tag/tag.js +197 -0
  296. package/dist/tags-input/tags-input.js +482 -0
  297. package/dist/tags-input-ng/tags-input-ng.js +93 -0
  298. package/dist/tags-list/tags-list.js +95 -0
  299. package/dist/template-ng/template-ng.js +71 -0
  300. package/dist/text/text.js +36 -0
  301. package/dist/theme-ng/theme-ng.js +45 -0
  302. package/dist/title-ng/title-ng.js +114 -0
  303. package/dist/toggle/toggle.js +78 -0
  304. package/dist/toggle-ng/toggle-ng.js +18 -0
  305. package/dist/tooltip/tooltip.js +209 -0
  306. package/dist/tooltip-ng/tooltip-ng.js +104 -0
  307. package/dist/user-agreement/service.js +412 -0
  308. package/dist/user-agreement/toolbox.eula.js +3 -0
  309. package/dist/user-agreement/user-agreement.js +169 -0
  310. package/dist/user-card/card.js +19 -0
  311. package/dist/user-card/smart-user-card-tooltip.js +114 -0
  312. package/dist/user-card/tooltip.js +95 -0
  313. package/dist/user-card/user-card.js +51 -0
  314. package/dist/user-card-ng/user-card-ng.js +62 -0
  315. package/package.json +2 -2
@@ -0,0 +1,218 @@
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import 'core-js/modules/web.dom-collections.iterator.js';
3
+ import ExtendableError from 'es6-error';
4
+ import { encodeURL, joinBaseURLAndPath } from '../global/url.js';
5
+ import 'core-js/modules/es.string.replace.js';
6
+
7
+ /**
8
+ * @name HTTP
9
+ */
10
+
11
+ const TOKEN_TYPE = 'Bearer';
12
+ const STATUS_OK_IF_MORE_THAN = 200;
13
+ const STATUS_BAD_IF_MORE_THAN = 300;
14
+ const defaultFetchConfig = {
15
+ headers: {
16
+ 'Content-Type': 'application/json',
17
+ Accept: 'application/json'
18
+ },
19
+ credentials: 'same-origin'
20
+ };
21
+ class HTTPError extends ExtendableError {
22
+ constructor(response) {
23
+ let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
24
+ super("".concat(response.status, " ").concat(response.statusText || ''));
25
+ this.data = data;
26
+ this.status = response.status;
27
+ }
28
+
29
+ }
30
+ const CODE = {
31
+ UNAUTHORIZED: 401
32
+ };
33
+ class HTTP {
34
+ constructor(_auth, _baseUrl) {
35
+ var _this = this;
36
+
37
+ let _fetchConfig = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
38
+
39
+ _defineProperty(this, "baseUrl", null);
40
+
41
+ _defineProperty(this, "_requestsMeta", new WeakMap());
42
+
43
+ _defineProperty(this, "setAuth", auth => {
44
+ this.requestToken = () => auth.requestToken();
45
+
46
+ this.shouldRefreshToken = auth.constructor.shouldRefreshToken;
47
+
48
+ this.forceTokenUpdate = () => auth.forceTokenUpdate();
49
+ });
50
+
51
+ _defineProperty(this, "setBaseUrl", baseUrl => {
52
+ this.baseUrl = baseUrl;
53
+ });
54
+
55
+ _defineProperty(this, "fetch", async function (url) {
56
+ let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
57
+ const {
58
+ body,
59
+ query = {},
60
+ ...fetchConfig
61
+ } = params;
62
+ const response = await _this._fetch(_this._makeRequestUrl(url, query), { ...fetchConfig,
63
+ body: body ? JSON.stringify(body) : body
64
+ });
65
+ return _this._processResponse(response);
66
+ });
67
+
68
+ _defineProperty(this, "request", async (url, params) => {
69
+ let token = await this.requestToken();
70
+ let response = await this._performRequest(url, token, params);
71
+
72
+ try {
73
+ // Wait for result to catch an HTTP error
74
+ return await this._processResponse(response);
75
+ } catch (error) {
76
+ if (!(error instanceof HTTPError)) {
77
+ throw error;
78
+ }
79
+
80
+ const shouldRefreshToken = error.data.error !== undefined ? this.shouldRefreshToken(error.data.error) : false;
81
+
82
+ if (shouldRefreshToken) {
83
+ token = await this.forceTokenUpdate();
84
+ response = await this._performRequest(url, token, params);
85
+ return this._processResponse(response);
86
+ }
87
+
88
+ throw error;
89
+ }
90
+ });
91
+
92
+ _defineProperty(this, "getMetaForResponse", response => this._requestsMeta.get(response));
93
+
94
+ _defineProperty(this, "get", (url, params) => this.request(url, {
95
+ method: 'GET',
96
+ ...params
97
+ }));
98
+
99
+ _defineProperty(this, "post", (url, params) => this.request(url, {
100
+ method: 'POST',
101
+ ...params
102
+ }));
103
+
104
+ if (_auth) {
105
+ this.setAuth(_auth);
106
+ }
107
+
108
+ this.setBaseUrl(_baseUrl);
109
+ const {
110
+ headers,
111
+ ...defaultConfig
112
+ } = defaultFetchConfig;
113
+ this.fetchConfig = { ...defaultConfig,
114
+ ..._fetchConfig,
115
+ headers: { ...headers,
116
+ ..._fetchConfig.headers
117
+ }
118
+ };
119
+ }
120
+
121
+ _fetch() {
122
+ return fetch(...arguments);
123
+ }
124
+
125
+ _makeRequestUrl(url, queryObject) {
126
+ const urlWithQuery = encodeURL(url, queryObject);
127
+ return joinBaseURLAndPath(this.baseUrl, urlWithQuery);
128
+ }
129
+
130
+ _performRequest(url, token) {
131
+ let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
132
+ const {
133
+ headers,
134
+ body,
135
+ query = {},
136
+ sendRawBody,
137
+ ...fetchConfig
138
+ } = params;
139
+ const combinedHeaders = { ...this.fetchConfig.headers,
140
+ ...(token ? {
141
+ Authorization: "".concat(TOKEN_TYPE, " ").concat(token)
142
+ } : {}),
143
+ ...headers
144
+ };
145
+ Object.keys(combinedHeaders).forEach(key => {
146
+ if (combinedHeaders[key] === null || combinedHeaders[key] === undefined) {
147
+ Reflect.deleteProperty(combinedHeaders, key);
148
+ }
149
+ });
150
+ return this._fetch(this._makeRequestUrl(url, query), { ...this.fetchConfig,
151
+ headers: combinedHeaders,
152
+ ...fetchConfig,
153
+ body: body && !sendRawBody ? JSON.stringify(body) : body
154
+ });
155
+ }
156
+
157
+ _storeRequestMeta(parsedResponse, rawResponse) {
158
+ const {
159
+ headers,
160
+ ok,
161
+ redirected,
162
+ status,
163
+ statusText,
164
+ type,
165
+ url
166
+ } = rawResponse;
167
+
168
+ this._requestsMeta.set(parsedResponse, {
169
+ headers,
170
+ ok,
171
+ redirected,
172
+ status,
173
+ statusText,
174
+ type,
175
+ url
176
+ });
177
+ }
178
+
179
+ async _processResponse(response) {
180
+ const contentType = response.headers.get('content-type');
181
+ const isJson = contentType && contentType.indexOf('application/json') !== -1;
182
+
183
+ if (HTTP._isErrorStatus(response.status)) {
184
+ let resJson;
185
+
186
+ try {
187
+ resJson = await (isJson ? response.json() : response.text());
188
+ } catch (err) {// noop
189
+ }
190
+
191
+ throw new HTTPError(response, resJson);
192
+ }
193
+
194
+ try {
195
+ const parsedResponse = await (isJson ? response.json() : {
196
+ data: await response.text()
197
+ });
198
+
199
+ this._storeRequestMeta(parsedResponse, response);
200
+
201
+ return parsedResponse;
202
+ } catch (err) {
203
+ return response;
204
+ }
205
+ }
206
+
207
+ static _isErrorStatus(status) {
208
+ return status < STATUS_OK_IF_MORE_THAN || status >= STATUS_BAD_IF_MORE_THAN;
209
+ }
210
+
211
+ async authorizedFetch() {
212
+ const response = await this._performRequest(...arguments);
213
+ return this._processResponse(response);
214
+ }
215
+
216
+ }
217
+
218
+ export { CODE, HTTPError, HTTP as default, defaultFetchConfig };
@@ -0,0 +1,67 @@
1
+ import 'core-js/modules/web.dom-collections.iterator.js';
2
+ import HTTP from './http.js';
3
+ import '../_helpers/_rollupPluginBabelHelpers.js';
4
+ import 'es6-error';
5
+ import '../global/url.js';
6
+ import 'core-js/modules/es.string.replace.js';
7
+
8
+ const authMock = {
9
+ requestToken: () => 'mock token',
10
+ shouldRefreshToken: () => false,
11
+ forceTokenUpdate: async () => {}
12
+ };
13
+ class HTTPMock extends HTTP {
14
+ constructor() {
15
+ super(authMock);
16
+ this.defaultResponse = null;
17
+ this.requests = [];
18
+ this.responsesByUrlMap = new Map();
19
+ }
20
+
21
+ _fetch(url, params) {
22
+ this.requests = [...this.requests, {
23
+ url,
24
+ params: { ...params,
25
+ body: params.body ? JSON.parse(params.body) : params.body
26
+ }
27
+ }];
28
+ return {
29
+ status: 200,
30
+ headers: new Headers({
31
+ 'content-type': 'application/json'
32
+ }),
33
+ json: () => this._getResponseForUrl(url) || this.defaultResponse
34
+ };
35
+ }
36
+
37
+ respondDefault(response) {
38
+ this.defaultResponse = response;
39
+ }
40
+
41
+ respondForUrl(url, response) {
42
+ this.responsesByUrlMap.set(url, response);
43
+ }
44
+
45
+ _getResponseForUrl(urlToMatch) {
46
+ const urls = this.responsesByUrlMap.keys();
47
+
48
+ for (const url of urls) {
49
+ if (url === urlToMatch) {
50
+ return this.responsesByUrlMap.get(url);
51
+ }
52
+
53
+ if (url.test && url.test(urlToMatch)) {
54
+ return this.responsesByUrlMap.get(url);
55
+ }
56
+ }
57
+
58
+ return null;
59
+ }
60
+
61
+ getRequestsByUrlPart(url) {
62
+ return this.requests.filter(it => it.url.indexOf(url) !== -1);
63
+ }
64
+
65
+ }
66
+
67
+ export { HTTPMock as default };
@@ -0,0 +1,130 @@
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+
3
+ const defaultOptions = {
4
+ searchMax: 20,
5
+ searchSideThreshold: 100,
6
+ queryFormatter: query => "".concat(query, " or ").concat(query, "*")
7
+ };
8
+ /**
9
+ * HubSource is designed to speed up search requests for small installations.
10
+ * If there are less than "searchSideThreshold" items, it uses client-side filtering
11
+ * of cached results to greatly increase search speed. Useful for completion and
12
+ * select data source.
13
+ */
14
+
15
+ class HubSource {
16
+ constructor(auth, relativeUrl, options) {
17
+ this.http = auth.http;
18
+ this.relativeUrl = relativeUrl;
19
+ this.options = Object.assign({}, defaultOptions, options);
20
+ this.storedData = null;
21
+ this.isClientSideSearch = null;
22
+ this.filterFn = null;
23
+ }
24
+
25
+ makeRequest(queryParams) {
26
+ return this.http.get(this.relativeUrl, {
27
+ query: queryParams
28
+ });
29
+ }
30
+
31
+ async makeCachedRequest(params) {
32
+ if (this.storedData) {
33
+ return this.storedData;
34
+ }
35
+
36
+ const res = await this.makeRequest(params);
37
+ this.storedData = res;
38
+ return res;
39
+ }
40
+
41
+ static mergeParams(params, toMerge) {
42
+ return Object.assign({}, params, toMerge);
43
+ }
44
+
45
+ checkIsClientSideSearch(res) {
46
+ return res.total <= this.options.searchSideThreshold;
47
+ }
48
+
49
+ getDefaultFilterFn(query) {
50
+ if (!query) {
51
+ return () => true;
52
+ }
53
+
54
+ return it => it.name.toLowerCase().indexOf(query.toLowerCase()) !== -1;
55
+ }
56
+
57
+ formatQuery(query) {
58
+ return query ? this.options.queryFormatter(query) : '';
59
+ }
60
+
61
+ static validateInputParams(params) {
62
+ if (params.top) {
63
+ throw new Error('HubSource: params.top should not be filled, configure "options.searchMax" instead');
64
+ }
65
+
66
+ if (params.query) {
67
+ throw new Error('HubSource: params.query should not be filled, configure "options.queryFormatter" instead');
68
+ }
69
+ }
70
+
71
+ processResults(res) {
72
+ const items = res[this.relativeUrl] || [];
73
+
74
+ if (this.isClientSideSearch) {
75
+ return items.filter(it => this.filterFn(it)).slice(0, this.options.searchMax);
76
+ }
77
+
78
+ return items;
79
+ }
80
+
81
+ async sideDetectionRequest(params, query) {
82
+ const res = await this.makeCachedRequest(HubSource.mergeParams(params, {
83
+ $top: this.options.searchSideThreshold
84
+ }));
85
+ this.isClientSideSearch = this.checkIsClientSideSearch(res);
86
+
87
+ if (!this.isClientSideSearch) {
88
+ return this.doServerSideSearch(params, query);
89
+ }
90
+
91
+ return res;
92
+ }
93
+
94
+ doClientSideSearch(params) {
95
+ return this.makeCachedRequest(HubSource.mergeParams(params, {
96
+ $top: this.constructor.TOP_ALL
97
+ }));
98
+ }
99
+
100
+ doServerSideSearch(params, query) {
101
+ return this.makeRequest(HubSource.mergeParams(params, {
102
+ query: this.formatQuery(query),
103
+ $top: this.options.searchMax
104
+ }));
105
+ }
106
+
107
+ getValueFromSuitableSource(query, params) {
108
+ if (this.isClientSideSearch === null) {
109
+ return this.sideDetectionRequest(params, query);
110
+ }
111
+
112
+ if (this.isClientSideSearch) {
113
+ return this.doClientSideSearch(params);
114
+ }
115
+
116
+ return this.doServerSideSearch(params, query);
117
+ }
118
+
119
+ async get(query, params, filterFn) {
120
+ HubSource.validateInputParams(params);
121
+ this.filterFn = filterFn || this.getDefaultFilterFn(query);
122
+ const res = await this.getValueFromSuitableSource(query, params);
123
+ return this.processResults(res);
124
+ }
125
+
126
+ }
127
+
128
+ _defineProperty(HubSource, "TOP_ALL", -1);
129
+
130
+ export { HubSource as default };
@@ -0,0 +1,30 @@
1
+ import HTTP from '../http/http.js';
2
+ import '../_helpers/_rollupPluginBabelHelpers.js';
3
+ import 'core-js/modules/web.dom-collections.iterator.js';
4
+ import 'es6-error';
5
+ import '../global/url.js';
6
+ import 'core-js/modules/es.string.replace.js';
7
+
8
+ const DEFAULT_FIELDS = 'id,name,login,banned,banReason,profile(email/email,avatar/url)';
9
+ function convertUserForCard(hubUser) {
10
+ let serverUri = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
11
+ return {
12
+ name: hubUser.name,
13
+ login: hubUser.login,
14
+ banned: hubUser.banned,
15
+ banReason: hubUser.banReason,
16
+ email: hubUser.profile.email && hubUser.profile.email.email,
17
+ avatarUrl: hubUser.profile.avatar.url,
18
+ href: "".concat(serverUri, "users/").concat(hubUser.id)
19
+ };
20
+ }
21
+ function createHubUserCardSource(auth, userId) {
22
+ let fields = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_FIELDS;
23
+ const http = new HTTP(auth);
24
+ return async function getHubUser() {
25
+ const hubUser = await http.get("".concat(auth.config.serverUri, "api/rest/users/").concat(userId, "?fields=").concat(fields));
26
+ return convertUserForCard(hubUser, auth.config.serverUri);
27
+ };
28
+ }
29
+
30
+ export { convertUserForCard, createHubUserCardSource };
@@ -0,0 +1,63 @@
1
+ import 'core-js/modules/web.dom-collections.iterator.js';
2
+ import HubSource from './hub-source.js';
3
+ import '../_helpers/_rollupPluginBabelHelpers.js';
4
+
5
+ const defaultOptions = {
6
+ searchMax: 20,
7
+ searchSideThreshold: 200
8
+ };
9
+ class HubSourceUsersGroups {
10
+ constructor(auth, options) {
11
+ this.auth = auth;
12
+ this.options = Object.assign({}, defaultOptions, options);
13
+ this.usersSource = new HubSource(auth, 'users', {
14
+ searchMax: this.options.searchMax,
15
+ searchSideThreshold: this.options.searchSideThreshold,
16
+ queryFormatter: query => "nameStartsWith: ".concat(HubSourceUsersGroups.wrapMultiwordQuery(query), " or loginStartsWith: ").concat(HubSourceUsersGroups.wrapMultiwordQuery(query))
17
+ });
18
+ this.groupsSource = new HubSource(auth, 'usergroups', {
19
+ searchMax: this.options.searchMax,
20
+ searchSideThreshold: this.options.searchSideThreshold
21
+ });
22
+ }
23
+
24
+ static wrapMultiwordQuery(query) {
25
+ if (query && query.indexOf(' ') !== -1) {
26
+ return "{".concat(query, "}");
27
+ }
28
+
29
+ return query;
30
+ }
31
+
32
+ createUsersFilterFn(query) {
33
+ if (!query) {
34
+ return () => true;
35
+ }
36
+
37
+ const normalizedQuery = query.toLowerCase();
38
+ return it => it.name.toLowerCase().indexOf(normalizedQuery) !== -1 || it.login.toLowerCase().indexOf(normalizedQuery) !== -1;
39
+ }
40
+
41
+ getUsers() {
42
+ let query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
43
+ return this.usersSource.get(query, {
44
+ fields: 'id,name,login,total,profile/avatar/url',
45
+ orderBy: 'name'
46
+ }, this.createUsersFilterFn(query));
47
+ }
48
+
49
+ getGroups() {
50
+ let query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
51
+ return this.groupsSource.get(query, {
52
+ fields: 'id,name,total,userCount,iconUrl',
53
+ orderBy: 'name'
54
+ });
55
+ }
56
+
57
+ getUserAndGroups(query) {
58
+ return Promise.all([this.getUsers(query), this.getGroups(query)]);
59
+ }
60
+
61
+ }
62
+
63
+ export { HubSourceUsersGroups as default };
@@ -0,0 +1,105 @@
1
+ import { _ as _defineProperty, a as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import React, { PureComponent } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import classNames from 'classnames';
5
+ import deprecate from 'util-deprecate';
6
+ import { Color, Size } from './icon__constants.js';
7
+ export { Size } from './icon__constants.js';
8
+ import { m as modules_29747b80 } from '../_helpers/icon.js';
9
+ import IconSVG from './icon__svg.js';
10
+ import 'core-js/modules/es.string.replace.js';
11
+ import '../global/memoize.js';
12
+ import 'core-js/modules/web.dom-collections.iterator.js';
13
+
14
+ const warnSize = deprecate(() => {}, "`size`, `width` and `height` props are not recommended to use in Ring UI `Icon` component. The intrinsic sizes of SVG icon (`width` and `height` SVG attributes) are used instead.\n\nWe strongly recommend to use icons handcrafted for particular sizes. If your icon doesn't exist in the desired size, please ask your designer to draw one. \"Responsive\" checkmark should be unchecked when exporting icon.'");
15
+ class Icon extends PureComponent {
16
+ warnSize() {
17
+ if (this.props.suppressSizeWarning) {
18
+ return;
19
+ }
20
+
21
+ warnSize();
22
+ }
23
+
24
+ getStyle() {
25
+ const {
26
+ size,
27
+ width,
28
+ height
29
+ } = this.props;
30
+
31
+ if (width || height) {
32
+ this.warnSize();
33
+ return {
34
+ width,
35
+ height
36
+ };
37
+ }
38
+
39
+ if (size) {
40
+ this.warnSize();
41
+ return {
42
+ width: size,
43
+ height: size
44
+ };
45
+ }
46
+
47
+ return null;
48
+ }
49
+
50
+ render() {
51
+ const {
52
+ className,
53
+ size,
54
+ color,
55
+ loading,
56
+ glyph: Glyph,
57
+ width,
58
+ height,
59
+ suppressSizeWarning,
60
+ ...restProps
61
+ } = this.props;
62
+
63
+ if (!Glyph) {
64
+ return null;
65
+ }
66
+
67
+ const classes = classNames(modules_29747b80.icon, {
68
+ [modules_29747b80[color]]: !!color,
69
+ [modules_29747b80.loading]: loading
70
+ }, className);
71
+ return /*#__PURE__*/React.createElement("span", _extends({}, restProps, {
72
+ className: classes
73
+ }), typeof Glyph === 'string' ? /*#__PURE__*/React.createElement(IconSVG, {
74
+ src: Glyph,
75
+ style: this.getStyle()
76
+ }) : /*#__PURE__*/React.createElement(Glyph, {
77
+ className: modules_29747b80.glyph,
78
+ style: this.getStyle()
79
+ }));
80
+ }
81
+
82
+ }
83
+
84
+ _defineProperty(Icon, "propTypes", {
85
+ className: PropTypes.string,
86
+ color: PropTypes.string,
87
+ glyph: PropTypes.oneOfType([PropTypes.string, PropTypes.elementType]).isRequired,
88
+ height: PropTypes.number,
89
+ size: PropTypes.number,
90
+ width: PropTypes.number,
91
+ loading: PropTypes.bool,
92
+ suppressSizeWarning: PropTypes.bool
93
+ });
94
+
95
+ _defineProperty(Icon, "defaultProps", {
96
+ className: '',
97
+ color: Color.DEFAULT,
98
+ glyph: ''
99
+ });
100
+
101
+ _defineProperty(Icon, "Color", Color);
102
+
103
+ _defineProperty(Icon, "Size", Size);
104
+
105
+ export { Icon as default };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Commonly used icon colors.
3
+ * @enum {string}
4
+ */
5
+ const Color = {
6
+ BLUE: 'blue',
7
+ DEFAULT: '',
8
+ GRAY: 'gray',
9
+ GREEN: 'green',
10
+ MAGENTA: 'magenta',
11
+ RED: 'red',
12
+ WHITE: 'white'
13
+ };
14
+ /**
15
+ * @enum {number}
16
+ */
17
+
18
+ const Size = {
19
+ Size12: 12,
20
+ Size14: 14,
21
+ Size16: 16,
22
+ Size18: 18,
23
+ Size20: 20,
24
+ Size24: 24,
25
+ Size32: 32,
26
+ Size40: 40,
27
+ Size48: 48,
28
+ Size64: 64,
29
+ Size96: 96,
30
+ Size128: 128
31
+ };
32
+
33
+ export { Color, Size };