@jetbrains/ring-ui-built 7.0.0-beta.1 → 7.0.0-beta.11

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 (349) hide show
  1. package/components/_helpers/_rollupPluginBabelHelpers.js +1 -504
  2. package/components/_helpers/anchor.js +7 -10
  3. package/components/_helpers/button__classes.js +23 -20
  4. package/components/_helpers/caption.js +11 -21
  5. package/components/_helpers/card.js +91 -123
  6. package/components/_helpers/dialog__body-scroll-preventer.js +10 -17
  7. package/components/_helpers/header.js +1 -1
  8. package/components/_helpers/icon__svg.js +27 -29
  9. package/components/_helpers/input.js +151 -193
  10. package/components/_helpers/query-assist__suggestions.js +79 -94
  11. package/components/_helpers/select__filter.js +56 -75
  12. package/components/_helpers/services-link.js +23 -39
  13. package/components/_helpers/sidebar.js +91 -102
  14. package/components/_helpers/tab-link.js +8 -12
  15. package/components/_helpers/theme.js +61 -51
  16. package/components/_helpers/title.js +59 -84
  17. package/components/alert/alert.d.ts +7 -24
  18. package/components/alert/alert.js +111 -179
  19. package/components/alert/container.d.ts +0 -5
  20. package/components/alert/container.js +32 -44
  21. package/components/alert-service/alert-service.js +104 -162
  22. package/components/analytics/analytics.js +12 -20
  23. package/components/analytics/analytics__custom-plugin.js +52 -68
  24. package/components/auth/auth.js +2 -31
  25. package/components/auth/auth__core.d.ts +4 -4
  26. package/components/auth/auth__core.js +755 -1433
  27. package/components/auth/background-flow.js +84 -121
  28. package/components/auth/down-notification.js +32 -79
  29. package/components/auth/iframe-flow.js +71 -125
  30. package/components/auth/request-builder.js +46 -77
  31. package/components/auth/response-parser.js +84 -112
  32. package/components/auth/storage.js +162 -324
  33. package/components/auth/token-validator.js +132 -227
  34. package/components/auth/window-flow.js +84 -121
  35. package/components/auth-dialog/auth-dialog.d.ts +0 -18
  36. package/components/auth-dialog/auth-dialog.js +107 -176
  37. package/components/auth-dialog-service/auth-dialog-service.js +12 -33
  38. package/components/avatar/avatar-example-datauri.js +1 -1
  39. package/components/avatar/avatar.d.ts +0 -13
  40. package/components/avatar/avatar.js +94 -136
  41. package/components/avatar/fallback-avatar.d.ts +1 -10
  42. package/components/avatar/fallback-avatar.js +20 -40
  43. package/components/badge/badge.d.ts +0 -10
  44. package/components/badge/badge.js +32 -48
  45. package/components/breadcrumbs/breadcrumbs.js +13 -17
  46. package/components/button/button.d.ts +0 -21
  47. package/components/button/button.js +68 -104
  48. package/components/button/button__classes.d.ts +1 -1
  49. package/components/button-group/button-group.d.ts +0 -5
  50. package/components/button-group/button-group.js +27 -41
  51. package/components/button-group/caption.d.ts +0 -4
  52. package/components/button-group/caption.js +0 -1
  53. package/components/button-set/button-set.d.ts +0 -6
  54. package/components/button-set/button-set.js +19 -33
  55. package/components/button-toolbar/button-toolbar.d.ts +0 -6
  56. package/components/button-toolbar/button-toolbar.js +17 -31
  57. package/components/caret/caret.js +184 -211
  58. package/components/checkbox/checkbox.d.ts +0 -19
  59. package/components/checkbox/checkbox.js +69 -104
  60. package/components/clipboard/clipboard-fallback.js +7 -7
  61. package/components/clipboard/clipboard.js +36 -129
  62. package/components/code/code.d.ts +0 -12
  63. package/components/code/code.js +83 -163
  64. package/components/collapse/collapse-content.js +42 -60
  65. package/components/collapse/collapse-context.js +2 -2
  66. package/components/collapse/collapse-control.js +12 -12
  67. package/components/collapse/collapse.js +12 -17
  68. package/components/collapse/consts.js +4 -4
  69. package/components/collapse/utils.js +1 -3
  70. package/components/confirm/confirm.d.ts +0 -14
  71. package/components/confirm/confirm.js +68 -112
  72. package/components/confirm-service/confirm-service.js +25 -47
  73. package/components/content-layout/content-layout.d.ts +0 -7
  74. package/components/content-layout/content-layout.js +41 -63
  75. package/components/content-layout/sidebar.d.ts +0 -9
  76. package/components/content-layout/sidebar.js +1 -2
  77. package/components/contenteditable/contenteditable.d.ts +1 -22
  78. package/components/contenteditable/contenteditable.js +37 -60
  79. package/components/control-help/control-help.js +5 -3
  80. package/components/control-label/control-label.js +9 -14
  81. package/components/data-list/data-list.d.ts +0 -2
  82. package/components/data-list/data-list.js +115 -179
  83. package/components/data-list/data-list.mock.js +3 -6
  84. package/components/data-list/item.js +119 -165
  85. package/components/data-list/selection.js +77 -135
  86. package/components/data-list/title.d.ts +2 -2
  87. package/components/data-list/title.js +2 -12
  88. package/components/date-picker/consts.d.ts +0 -2
  89. package/components/date-picker/consts.js +16 -24
  90. package/components/date-picker/date-input.d.ts +0 -20
  91. package/components/date-picker/date-input.js +100 -148
  92. package/components/date-picker/date-picker.d.ts +0 -29
  93. package/components/date-picker/date-picker.js +143 -224
  94. package/components/date-picker/date-popup.d.ts +0 -22
  95. package/components/date-picker/date-popup.js +282 -352
  96. package/components/date-picker/day.d.ts +0 -14
  97. package/components/date-picker/day.js +72 -109
  98. package/components/date-picker/month-names.d.ts +1 -11
  99. package/components/date-picker/month-names.js +42 -72
  100. package/components/date-picker/month-slider.d.ts +0 -9
  101. package/components/date-picker/month-slider.js +43 -71
  102. package/components/date-picker/month.d.ts +1 -9
  103. package/components/date-picker/month.js +18 -30
  104. package/components/date-picker/months.d.ts +1 -9
  105. package/components/date-picker/months.js +45 -55
  106. package/components/date-picker/weekdays.d.ts +2 -8
  107. package/components/date-picker/weekdays.js +12 -25
  108. package/components/date-picker/years.d.ts +0 -6
  109. package/components/date-picker/years.js +77 -104
  110. package/components/dialog/dialog.d.ts +0 -20
  111. package/components/dialog/dialog.js +153 -211
  112. package/components/dialog/dialog__body-scroll-preventer.js +0 -3
  113. package/components/dropdown/anchor.d.ts +1 -8
  114. package/components/dropdown/anchor.js +0 -7
  115. package/components/dropdown/dropdown.d.ts +4 -22
  116. package/components/dropdown/dropdown.js +134 -176
  117. package/components/dropdown-menu/dropdown-menu.js +51 -103
  118. package/components/editable-heading/editable-heading.js +69 -118
  119. package/components/error-bubble/error-bubble.d.ts +0 -6
  120. package/components/error-bubble/error-bubble.js +30 -60
  121. package/components/error-message/error-message.d.ts +0 -10
  122. package/components/error-message/error-message.js +34 -59
  123. package/components/footer/footer.js +28 -44
  124. package/components/form/form.js +1 -1
  125. package/components/global/compose.js +1 -8
  126. package/components/global/composeRefs.d.ts +0 -3
  127. package/components/global/composeRefs.js +8 -15
  128. package/components/global/controls-height.js +2 -2
  129. package/components/global/create-stateful-context.d.ts +0 -4
  130. package/components/global/create-stateful-context.js +14 -17
  131. package/components/global/data-tests.js +7 -12
  132. package/components/global/dom.js +49 -82
  133. package/components/global/focus-sensor-hoc.js +95 -122
  134. package/components/global/fuzzy-highlight.js +23 -34
  135. package/components/global/get-event-key.js +8 -8
  136. package/components/global/get-uid.js +3 -7
  137. package/components/global/inject-styles.js +7 -14
  138. package/components/global/listeners.js +28 -47
  139. package/components/global/memoize.js +6 -10
  140. package/components/global/normalize-indent.js +19 -46
  141. package/components/global/promise-with-timeout.js +6 -8
  142. package/components/global/react-dom-renderer.d.ts +0 -5
  143. package/components/global/react-dom-renderer.js +29 -45
  144. package/components/global/rerender-hoc.d.ts +2 -2
  145. package/components/global/rerender-hoc.js +16 -32
  146. package/components/global/schedule-raf.js +4 -4
  147. package/components/global/sniffer.js +1 -1
  148. package/components/global/theme.d.ts +8 -2
  149. package/components/global/theme.js +2 -20
  150. package/components/global/trivial-template-tag.js +4 -9
  151. package/components/global/typescript-utils.js +2 -6
  152. package/components/global/url.js +20 -23
  153. package/components/global/use-event-callback.js +7 -4
  154. package/components/grid/col.d.ts +0 -14
  155. package/components/grid/col.js +27 -53
  156. package/components/grid/grid.d.ts +0 -5
  157. package/components/grid/grid.js +20 -32
  158. package/components/grid/row.d.ts +0 -18
  159. package/components/grid/row.js +23 -47
  160. package/components/group/group.d.ts +0 -5
  161. package/components/group/group.js +18 -27
  162. package/components/header/header-icon.d.ts +0 -22
  163. package/components/header/header-icon.js +20 -37
  164. package/components/header/header.d.ts +0 -7
  165. package/components/header/header.js +30 -74
  166. package/components/header/links.d.ts +2 -0
  167. package/components/header/links.js +20 -0
  168. package/components/header/logo.d.ts +0 -4
  169. package/components/header/logo.js +15 -30
  170. package/components/header/profile.d.ts +1 -39
  171. package/components/header/profile.js +126 -191
  172. package/components/header/services-link.d.ts +0 -10
  173. package/components/header/services-link.js +1 -4
  174. package/components/header/services.d.ts +0 -14
  175. package/components/header/services.js +65 -110
  176. package/components/header/smart-profile.d.ts +0 -9
  177. package/components/header/smart-profile.js +116 -205
  178. package/components/header/smart-services.d.ts +0 -4
  179. package/components/header/smart-services.js +72 -141
  180. package/components/header/tray.d.ts +0 -5
  181. package/components/header/tray.js +21 -35
  182. package/components/heading/heading.js +21 -26
  183. package/components/http/http.js +162 -319
  184. package/components/http/http.mock.js +50 -98
  185. package/components/hub-source/hub-source.js +77 -182
  186. package/components/hub-source/hub-source__user.js +9 -37
  187. package/components/hub-source/hub-source__users-groups.js +34 -60
  188. package/components/i18n/i18n-context.js +7 -8
  189. package/components/i18n/i18n.js +3 -6
  190. package/components/icon/icon.d.ts +0 -11
  191. package/components/icon/icon.js +60 -85
  192. package/components/icon/icon__svg.d.ts +0 -8
  193. package/components/icon/icon__svg.js +0 -6
  194. package/components/icon/index.js +0 -6
  195. package/components/input/input-legacy.js +1 -1
  196. package/components/input/input.js +2 -14
  197. package/components/input-size/input-size.js +1 -1
  198. package/components/island/adaptive-island-hoc.d.ts +0 -1
  199. package/components/island/adaptive-island-hoc.js +30 -39
  200. package/components/island/content.d.ts +0 -10
  201. package/components/island/content.js +99 -119
  202. package/components/island/header.js +55 -73
  203. package/components/island/island.d.ts +0 -9
  204. package/components/island/island.js +25 -41
  205. package/components/island-legacy/content-legacy.d.ts +0 -5
  206. package/components/island-legacy/content-legacy.js +16 -27
  207. package/components/island-legacy/header-legacy.d.ts +0 -5
  208. package/components/island-legacy/header-legacy.js +19 -30
  209. package/components/island-legacy/island-legacy.d.ts +0 -5
  210. package/components/island-legacy/island-legacy.js +16 -27
  211. package/components/link/clickableLink.d.ts +0 -9
  212. package/components/link/clickableLink.js +33 -51
  213. package/components/link/link.d.ts +0 -25
  214. package/components/link/link.js +47 -68
  215. package/components/list/consts.js +2 -2
  216. package/components/list/list.d.ts +0 -32
  217. package/components/list/list.js +399 -516
  218. package/components/list/list__custom.js +51 -78
  219. package/components/list/list__hint.d.ts +0 -4
  220. package/components/list/list__hint.js +8 -21
  221. package/components/list/list__item.js +147 -211
  222. package/components/list/list__link.js +39 -59
  223. package/components/list/list__separator.js +15 -30
  224. package/components/list/list__title.js +25 -41
  225. package/components/list/list__users-groups-source.js +55 -123
  226. package/components/loader/loader.d.ts +0 -10
  227. package/components/loader/loader.js +38 -70
  228. package/components/loader/loader__core.js +123 -184
  229. package/components/loader-inline/loader-inline.d.ts +0 -6
  230. package/components/loader-inline/loader-inline.js +24 -38
  231. package/components/loader-screen/loader-screen.d.ts +0 -6
  232. package/components/loader-screen/loader-screen.js +24 -46
  233. package/components/login-dialog/login-dialog.d.ts +0 -11
  234. package/components/login-dialog/login-dialog.js +94 -145
  235. package/components/login-dialog/service.js +11 -33
  236. package/components/markdown/markdown.js +16 -29
  237. package/components/message/message.js +171 -218
  238. package/components/old-browsers-message/old-browsers-message.js +11 -14
  239. package/components/old-browsers-message/old-browsers-message__stop.js +1 -4
  240. package/components/old-browsers-message/white-list.js +8 -13
  241. package/components/pager/pager.js +211 -275
  242. package/components/panel/panel.d.ts +0 -5
  243. package/components/panel/panel.js +16 -27
  244. package/components/permissions/permissions.js +118 -161
  245. package/components/permissions/permissions__cache.js +191 -218
  246. package/components/popup/popup.consts.js +1 -1
  247. package/components/popup/popup.js +237 -329
  248. package/components/popup/popup.target.js +9 -12
  249. package/components/popup/position.js +94 -101
  250. package/components/popup-menu/popup-menu.js +31 -76
  251. package/components/progress-bar/progress-bar.d.ts +19 -33
  252. package/components/progress-bar/progress-bar.js +55 -99
  253. package/components/query-assist/query-assist.d.ts +63 -93
  254. package/components/query-assist/query-assist.js +585 -748
  255. package/components/query-assist/query-assist__suggestions.js +2 -28
  256. package/components/radio/radio.d.ts +0 -8
  257. package/components/radio/radio.js +15 -35
  258. package/components/radio/radio__item.d.ts +0 -9
  259. package/components/radio/radio__item.js +52 -72
  260. package/components/scrollable-section/scrollable-section.js +53 -0
  261. package/components/select/select.d.ts +3 -0
  262. package/components/select/select.js +714 -863
  263. package/components/select/select__filter.js +2 -29
  264. package/components/select/select__popup.js +317 -465
  265. package/components/shortcuts/core.js +147 -195
  266. package/components/shortcuts/shortcut-title.js +6 -10
  267. package/components/shortcuts/shortcuts-hoc.d.ts +0 -5
  268. package/components/shortcuts/shortcuts-hoc.js +23 -46
  269. package/components/shortcuts/shortcuts.d.ts +0 -8
  270. package/components/shortcuts/shortcuts.js +41 -72
  271. package/components/slider/slider.js +93 -113
  272. package/components/slider/slider.utils.js +16 -23
  273. package/components/storage/storage.d.ts +2 -3
  274. package/components/storage/storage.js +2 -46
  275. package/components/storage/storage__local.js +89 -148
  276. package/components/style.css +1 -1
  277. package/components/tab-trap/tab-trap.js +35 -61
  278. package/components/table/cell.d.ts +0 -6
  279. package/components/table/cell.js +11 -27
  280. package/components/table/disable-hover-hoc.d.ts +0 -1
  281. package/components/table/disable-hover-hoc.js +27 -42
  282. package/components/table/header-cell.d.ts +0 -10
  283. package/components/table/header-cell.js +59 -85
  284. package/components/table/header.d.ts +1 -23
  285. package/components/table/header.js +89 -126
  286. package/components/table/multitable.d.ts +0 -4
  287. package/components/table/multitable.js +83 -93
  288. package/components/table/row-with-focus-sensor.d.ts +2 -2
  289. package/components/table/row-with-focus-sensor.js +26 -60
  290. package/components/table/row.js +170 -235
  291. package/components/table/selection-adapter.js +2 -2
  292. package/components/table/selection-shortcuts-hoc.js +102 -126
  293. package/components/table/selection.js +150 -217
  294. package/components/table/simple-table.d.ts +0 -44
  295. package/components/table/simple-table.js +18 -59
  296. package/components/table/smart-table.d.ts +0 -48
  297. package/components/table/smart-table.js +41 -83
  298. package/components/table/table.d.ts +0 -2
  299. package/components/table/table.js +269 -377
  300. package/components/tabs/collapsible-more.d.ts +1 -9
  301. package/components/tabs/collapsible-more.js +47 -97
  302. package/components/tabs/collapsible-tab.js +32 -44
  303. package/components/tabs/collapsible-tabs.d.ts +2 -29
  304. package/components/tabs/collapsible-tabs.js +89 -161
  305. package/components/tabs/custom-item.d.ts +1 -7
  306. package/components/tabs/custom-item.js +4 -7
  307. package/components/tabs/dumb-tabs.d.ts +0 -11
  308. package/components/tabs/dumb-tabs.js +60 -104
  309. package/components/tabs/smart-tabs.d.ts +0 -6
  310. package/components/tabs/smart-tabs.js +29 -68
  311. package/components/tabs/tab-link.d.ts +0 -8
  312. package/components/tabs/tab-link.js +1 -4
  313. package/components/tabs/tab.d.ts +0 -8
  314. package/components/tabs/tab.js +14 -32
  315. package/components/tabs/tabs.js +1 -28
  316. package/components/tag/tag.d.ts +0 -19
  317. package/components/tag/tag.js +120 -179
  318. package/components/tags-input/tags-input.d.ts +7 -33
  319. package/components/tags-input/tags-input.js +224 -339
  320. package/components/tags-list/tags-list.d.ts +0 -13
  321. package/components/tags-list/tags-list.js +45 -74
  322. package/components/text/text.d.ts +0 -7
  323. package/components/text/text.js +27 -43
  324. package/components/toggle/toggle.d.ts +0 -15
  325. package/components/toggle/toggle.js +52 -77
  326. package/components/tooltip/tooltip.d.ts +4 -10
  327. package/components/tooltip/tooltip.js +105 -137
  328. package/components/user-agreement/service.d.ts +2 -1
  329. package/components/user-agreement/service.js +260 -405
  330. package/components/user-agreement/user-agreement.d.ts +0 -18
  331. package/components/user-agreement/user-agreement.js +92 -138
  332. package/components/user-card/card.d.ts +0 -35
  333. package/components/user-card/card.js +2 -27
  334. package/components/user-card/smart-user-card-tooltip.d.ts +0 -5
  335. package/components/user-card/smart-user-card-tooltip.js +52 -108
  336. package/components/user-card/tooltip.d.ts +0 -9
  337. package/components/user-card/tooltip.js +35 -74
  338. package/components/user-card/user-card.js +1 -26
  339. package/package.json +4 -6
  340. package/components/global/prop-types.d.ts +0 -4
  341. package/components/global/prop-types.js +0 -9
  342. package/components/global/react-render-adapter.d.ts +0 -1
  343. package/components/global/react-render-adapter.js +0 -6
  344. package/components/header/scrollable-section.js +0 -47
  345. package/components/header/tray-icon.d.ts +0 -1
  346. package/components/header/tray-icon.js +0 -26
  347. package/components/storage/storage__fallback.d.ts +0 -79
  348. package/components/storage/storage__fallback.js +0 -253
  349. /package/components/{header → scrollable-section}/scrollable-section.d.ts +0 -0
@@ -1,6 +1,5 @@
1
- import { _ as _defineProperty, b as _createClass, e as _classCallCheck } from '../_helpers/_rollupPluginBabelHelpers.js';
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
2
  import 'core-js/modules/es.array.reduce.js';
3
- import 'core-js/modules/es.object.to-string.js';
4
3
 
5
4
  /**
6
5
  * Converts an array of cached permissions to a a map of a permission key
@@ -15,242 +14,216 @@ import 'core-js/modules/es.object.to-string.js';
15
14
  * @return {object} permission cache
16
15
  * @private
17
16
  */
18
- var PermissionCache = /*#__PURE__*/function () {
19
- function PermissionCache(permissions, namesConverter) {
20
- _classCallCheck(this, PermissionCache);
17
+ class PermissionCache {
18
+ /**
19
+ * Convert an array of projects to a set of project ids.
20
+ *
21
+ * @param {object[]=} projects
22
+ * @return {object} a set of project ids
23
+ * @private
24
+ */
25
+ static _toProjectIdSet(projects) {
26
+ let projectIdSet = null;
27
+ if (projects) {
28
+ projectIdSet = {};
29
+ for (let i = 0; i < projects.length; i++) {
30
+ projectIdSet[projects[i].id] = true;
31
+ }
32
+ }
33
+ return projectIdSet;
34
+ }
35
+ constructor(permissions, namesConverter) {
21
36
  _defineProperty(this, "namesConverter", void 0);
22
37
  _defineProperty(this, "_permissions", void 0);
23
38
  _defineProperty(this, "permissionCache", void 0);
24
- this.namesConverter = namesConverter || function (key) {
25
- return key;
26
- };
39
+ this.namesConverter = namesConverter || (key => key);
27
40
  this.set(permissions);
28
41
  }
29
- return _createClass(PermissionCache, [{
30
- key: "set",
31
- value: function set(permissions) {
32
- var _this = this;
33
- var permissionCache = (permissions || []).reduce(function (_permissionCache, permission) {
34
- var key = _this.namesConverter(permission.permission.key);
35
- if (key) {
36
- _permissionCache[key] = {
37
- global: permission.global,
38
- projectIdSet: _this.constructor._toProjectIdSet(permission.projects)
39
- };
40
- }
41
- return _permissionCache;
42
- }, {});
43
- this._permissions = permissions;
44
- this.permissionCache = permissionCache;
45
- return this;
46
- }
47
- }, {
48
- key: "get",
49
- value: function get() {
50
- return this._permissions;
51
- }
52
- /**
53
- * Checks if the current user has the given permissions in the project with the given id.
54
- *
55
- * @param {string} permissions space separated list of permissions
56
- * @param {string=} projectId optional projectId. If absent the method checks
57
- * if the given permission is granted in any project.
58
- *
59
- * @return {boolean}
60
- */
61
- }, {
62
- key: "has",
63
- value: function has(permissions, projectId) {
64
- var lexems = this.lex(permissions);
65
- if (lexems.length === 0) {
66
- return true;
67
- }
68
- try {
69
- return this.or(lexems, projectId);
70
- } catch (e) {
71
- return false;
42
+ set(permissions) {
43
+ const permissionCache = (permissions || []).reduce((_permissionCache, permission) => {
44
+ const key = this.namesConverter(permission.permission.key);
45
+ if (key) {
46
+ _permissionCache[key] = {
47
+ global: permission.global,
48
+ projectIdSet: this.constructor._toProjectIdSet(permission.projects)
49
+ };
72
50
  }
51
+ return _permissionCache;
52
+ }, {});
53
+ this._permissions = permissions;
54
+ this.permissionCache = permissionCache;
55
+ return this;
56
+ }
57
+ get() {
58
+ return this._permissions;
59
+ }
60
+ /**
61
+ * Checks if the current user has the given permissions in the project with the given id.
62
+ *
63
+ * @param {string} permissions space separated list of permissions
64
+ * @param {string=} projectId optional projectId. If absent the method checks
65
+ * if the given permission is granted in any project.
66
+ *
67
+ * @return {boolean}
68
+ */
69
+ has(permissions, projectId) {
70
+ const lexems = this.lex(permissions);
71
+ if (lexems.length === 0) {
72
+ return true;
73
73
  }
74
- /**
75
- * Lexes permission query string to an array of lexems.
76
- *
77
- * @param {string} query
78
- * @return {string[]}
79
- */
80
- }, {
81
- key: "lex",
82
- value: function lex(query) {
83
- var lexems = [];
84
- if (query) {
85
- var currentIdentifier = '';
86
- for (var i = 0; i < query.length; i++) {
87
- switch (query.charAt(i)) {
88
- case ' ':
89
- case '\t':
90
- case '\n':
91
- case '\r':
92
- // Finish current token
93
- if (currentIdentifier) {
94
- lexems.push(currentIdentifier);
95
- currentIdentifier = '';
96
- }
97
- // Skip space
98
- break;
99
- case '(':
100
- case ')':
101
- case '&':
102
- case '|':
103
- case '!':
104
- // Finish current token
105
- if (currentIdentifier) {
106
- lexems.push(currentIdentifier);
107
- currentIdentifier = '';
108
- }
109
- // Append operator
110
- lexems.push(query.charAt(i));
111
- break;
112
- default:
113
- currentIdentifier += query.charAt(i);
114
- break;
115
- }
116
- }
117
- if (currentIdentifier) {
118
- lexems.push(currentIdentifier);
119
- }
120
- }
121
- return lexems;
74
+ try {
75
+ return this.or(lexems, projectId);
76
+ } catch (e) {
77
+ return false;
122
78
  }
123
- /*
124
- or -> and ( '|' and )*
125
- and -> not ( '&'? not )*
126
- not -> '!'* term
127
- term -> '(' or ')' | permission
128
- permission -> [^()&|!\s]+
129
- */
130
- /**
131
- * @param {string[]} lexems
132
- * @param {string=} projectId
133
- * @return {boolean}
134
- */
135
- }, {
136
- key: "or",
137
- value: function or(lexems, projectId) {
138
- var result = this.and(lexems, projectId);
139
- while (lexems.length > 0 && lexems[0] !== ')') {
140
- if (lexems.shift() !== '|') {
141
- throw new Error('Operator \'|\' was expected');
79
+ }
80
+ /**
81
+ * Lexes permission query string to an array of lexems.
82
+ *
83
+ * @param {string} query
84
+ * @return {string[]}
85
+ */
86
+ lex(query) {
87
+ const lexems = [];
88
+ if (query) {
89
+ let currentIdentifier = '';
90
+ for (let i = 0; i < query.length; i++) {
91
+ switch (query.charAt(i)) {
92
+ case ' ':
93
+ case '\t':
94
+ case '\n':
95
+ case '\r':
96
+ // Finish current token
97
+ if (currentIdentifier) {
98
+ lexems.push(currentIdentifier);
99
+ currentIdentifier = '';
100
+ }
101
+ // Skip space
102
+ break;
103
+ case '(':
104
+ case ')':
105
+ case '&':
106
+ case '|':
107
+ case '!':
108
+ // Finish current token
109
+ if (currentIdentifier) {
110
+ lexems.push(currentIdentifier);
111
+ currentIdentifier = '';
112
+ }
113
+ // Append operator
114
+ lexems.push(query.charAt(i));
115
+ break;
116
+ default:
117
+ currentIdentifier += query.charAt(i);
118
+ break;
142
119
  }
143
- result = this.and(lexems, projectId) || result;
144
120
  }
145
- return result;
121
+ if (currentIdentifier) {
122
+ lexems.push(currentIdentifier);
123
+ }
146
124
  }
147
- /**
148
- * @param {string[]} lexems
149
- * @param {string=} projectId
150
- * @return {boolean}
151
- */
152
- }, {
153
- key: "and",
154
- value: function and(lexems, projectId) {
155
- var result = this.not(lexems, projectId);
156
- while (lexems.length > 0 && lexems[0] !== ')' && lexems[0] !== '|') {
157
- // Expect optional '&'
158
- if (lexems[0] === '&') {
159
- lexems.shift();
160
- }
161
- result = this.not(lexems, projectId) && result;
125
+ return lexems;
126
+ }
127
+ /*
128
+ or -> and ( '|' and )*
129
+ and -> not ( '&'? not )*
130
+ not -> '!'* term
131
+ term -> '(' or ')' | permission
132
+ permission -> [^()&|!\s]+
133
+ */
134
+ /**
135
+ * @param {string[]} lexems
136
+ * @param {string=} projectId
137
+ * @return {boolean}
138
+ */
139
+ or(lexems, projectId) {
140
+ let result = this.and(lexems, projectId);
141
+ while (lexems.length > 0 && lexems[0] !== ')') {
142
+ if (lexems.shift() !== '|') {
143
+ throw new Error('Operator \'|\' was expected');
162
144
  }
163
- return result;
145
+ result = this.and(lexems, projectId) || result;
164
146
  }
165
- /**
166
- * @param {string[]} lexems
167
- * @param {string=} projectId
168
- * @return {boolean}
169
- */
170
- }, {
171
- key: "not",
172
- value: function not(lexems, projectId) {
173
- var notCounter = 0;
174
- while (lexems.length > 0 && lexems[0] === '!') {
175
- ++notCounter;
147
+ return result;
148
+ }
149
+ /**
150
+ * @param {string[]} lexems
151
+ * @param {string=} projectId
152
+ * @return {boolean}
153
+ */
154
+ and(lexems, projectId) {
155
+ let result = this.not(lexems, projectId);
156
+ while (lexems.length > 0 && lexems[0] !== ')' && lexems[0] !== '|') {
157
+ // Expect optional '&'
158
+ if (lexems[0] === '&') {
176
159
  lexems.shift();
177
160
  }
178
- var result = this.term(lexems, projectId);
179
- return notCounter % 2 === 0 ? result : !result;
161
+ result = this.not(lexems, projectId) && result;
180
162
  }
181
- /**
182
- * @param {string[]} lexems
183
- * @param {string=} projectId
184
- * @return {boolean}
185
- */
186
- }, {
187
- key: "term",
188
- value: function term(lexems, projectId) {
189
- if (lexems.length === 0) {
190
- throw new Error('Operand was expected');
191
- }
192
- var t = lexems.shift();
193
- var result;
194
- // Nested parenthesized expression
195
- if (t === '(') {
196
- result = this.or(lexems, projectId);
197
- // Expect ')'
198
- if (lexems.shift() !== ')') {
199
- throw new Error('Operator \')\' was expected');
200
- }
201
- } else {
202
- result = t != null && this.testPermission(t, projectId);
203
- }
204
- return result;
163
+ return result;
164
+ }
165
+ /**
166
+ * @param {string[]} lexems
167
+ * @param {string=} projectId
168
+ * @return {boolean}
169
+ */
170
+ not(lexems, projectId) {
171
+ let notCounter = 0;
172
+ while (lexems.length > 0 && lexems[0] === '!') {
173
+ ++notCounter;
174
+ lexems.shift();
205
175
  }
206
- /**
207
- * @param {string} permissionName
208
- * @param {string=} projectId
209
- * @return {boolean}
210
- */
211
- }, {
212
- key: "testPermission",
213
- value: function testPermission(permissionName, projectId) {
214
- var permissionCache = this.permissionCache;
215
- var convertedName = this.namesConverter(permissionName);
216
- var cachedPermission = (permissionCache === null || permissionCache === void 0 ? void 0 : permissionCache[permissionName]) || convertedName && (permissionCache === null || permissionCache === void 0 ? void 0 : permissionCache[convertedName]);
217
- // Hasn't the permission in any project
218
- if (!cachedPermission) {
219
- return false;
220
- }
221
- // The permission is global or is given in the global project
222
- if (cachedPermission.global) {
223
- return true;
224
- }
225
- if (projectId) {
226
- // if projectId is specified check that the permission is given in the project
227
- return cachedPermission.projectIdSet != null && projectId in cachedPermission.projectIdSet;
228
- } else {
229
- return true;
230
- }
176
+ const result = this.term(lexems, projectId);
177
+ return notCounter % 2 === 0 ? result : !result;
178
+ }
179
+ /**
180
+ * @param {string[]} lexems
181
+ * @param {string=} projectId
182
+ * @return {boolean}
183
+ */
184
+ term(lexems, projectId) {
185
+ if (lexems.length === 0) {
186
+ throw new Error('Operand was expected');
231
187
  }
232
- }], [{
233
- key: "_toProjectIdSet",
234
- value:
235
- /**
236
- * Convert an array of projects to a set of project ids.
237
- *
238
- * @param {object[]=} projects
239
- * @return {object} a set of project ids
240
- * @private
241
- */
242
- function _toProjectIdSet(projects) {
243
- var projectIdSet = null;
244
- if (projects) {
245
- projectIdSet = {};
246
- for (var i = 0; i < projects.length; i++) {
247
- projectIdSet[projects[i].id] = true;
248
- }
188
+ const t = lexems.shift();
189
+ let result;
190
+ // Nested parenthesized expression
191
+ if (t === '(') {
192
+ result = this.or(lexems, projectId);
193
+ // Expect ')'
194
+ if (lexems.shift() !== ')') {
195
+ throw new Error('Operator \')\' was expected');
249
196
  }
250
- return projectIdSet;
197
+ } else {
198
+ result = t != null && this.testPermission(t, projectId);
199
+ }
200
+ return result;
201
+ }
202
+ /**
203
+ * @param {string} permissionName
204
+ * @param {string=} projectId
205
+ * @return {boolean}
206
+ */
207
+ testPermission(permissionName, projectId) {
208
+ const permissionCache = this.permissionCache;
209
+ const convertedName = this.namesConverter(permissionName);
210
+ const cachedPermission = (permissionCache === null || permissionCache === void 0 ? void 0 : permissionCache[permissionName]) || convertedName && (permissionCache === null || permissionCache === void 0 ? void 0 : permissionCache[convertedName]);
211
+ // Hasn't the permission in any project
212
+ if (!cachedPermission) {
213
+ return false;
251
214
  }
252
- }]);
253
- }();
215
+ // The permission is global or is given in the global project
216
+ if (cachedPermission.global) {
217
+ return true;
218
+ }
219
+ if (projectId) {
220
+ // if projectId is specified check that the permission is given in the project
221
+ return cachedPermission.projectIdSet != null && projectId in cachedPermission.projectIdSet;
222
+ } else {
223
+ return true;
224
+ }
225
+ }
226
+ }
254
227
  _defineProperty(PermissionCache, "GLOBAL_PROJECT_ID", 'global');
255
228
 
256
229
  export { PermissionCache as default };
@@ -17,7 +17,7 @@ var Directions;
17
17
  * When positioning a popup, directions will be tried in the listed order.
18
18
  * @type {Array.<string>}
19
19
  */
20
- var DEFAULT_DIRECTIONS = [Directions.BOTTOM_RIGHT, Directions.BOTTOM_LEFT, Directions.TOP_LEFT, Directions.TOP_RIGHT, Directions.RIGHT_TOP, Directions.RIGHT_BOTTOM, Directions.LEFT_TOP, Directions.LEFT_BOTTOM];
20
+ const DEFAULT_DIRECTIONS = [Directions.BOTTOM_RIGHT, Directions.BOTTOM_LEFT, Directions.TOP_LEFT, Directions.TOP_RIGHT, Directions.RIGHT_TOP, Directions.RIGHT_BOTTOM, Directions.LEFT_TOP, Directions.LEFT_BOTTOM];
21
21
  /**
22
22
  * @enum {number}
23
23
  */