@jetbrains/ring-ui-built 7.0.0-beta.2 → 7.0.0-beta.4

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 (336) 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 +15 -13
  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/icon__svg.js +27 -29
  8. package/components/_helpers/input.js +150 -192
  9. package/components/_helpers/query-assist__suggestions.js +78 -93
  10. package/components/_helpers/select__filter.js +56 -75
  11. package/components/_helpers/services-link.js +23 -39
  12. package/components/_helpers/sidebar.js +91 -102
  13. package/components/_helpers/tab-link.js +8 -12
  14. package/components/_helpers/theme.js +42 -51
  15. package/components/_helpers/title.js +59 -84
  16. package/components/alert/alert.d.ts +7 -24
  17. package/components/alert/alert.js +111 -179
  18. package/components/alert/container.d.ts +0 -5
  19. package/components/alert/container.js +32 -44
  20. package/components/alert-service/alert-service.js +104 -162
  21. package/components/analytics/analytics.js +12 -20
  22. package/components/analytics/analytics__custom-plugin.js +52 -68
  23. package/components/auth/auth.js +2 -28
  24. package/components/auth/auth__core.d.ts +4 -4
  25. package/components/auth/auth__core.js +753 -1431
  26. package/components/auth/background-flow.js +84 -121
  27. package/components/auth/down-notification.js +31 -78
  28. package/components/auth/iframe-flow.js +70 -124
  29. package/components/auth/request-builder.js +46 -77
  30. package/components/auth/response-parser.js +84 -112
  31. package/components/auth/storage.js +160 -319
  32. package/components/auth/token-validator.js +132 -227
  33. package/components/auth/window-flow.js +84 -121
  34. package/components/auth-dialog/auth-dialog.d.ts +0 -18
  35. package/components/auth-dialog/auth-dialog.js +106 -175
  36. package/components/auth-dialog-service/auth-dialog-service.js +10 -31
  37. package/components/avatar/avatar-example-datauri.js +1 -1
  38. package/components/avatar/avatar.d.ts +0 -13
  39. package/components/avatar/avatar.js +94 -136
  40. package/components/avatar/fallback-avatar.d.ts +1 -10
  41. package/components/avatar/fallback-avatar.js +20 -40
  42. package/components/badge/badge.d.ts +0 -10
  43. package/components/badge/badge.js +32 -48
  44. package/components/breadcrumbs/breadcrumbs.js +13 -17
  45. package/components/button/button.d.ts +0 -21
  46. package/components/button/button.js +67 -101
  47. package/components/button-group/button-group.d.ts +0 -5
  48. package/components/button-group/button-group.js +27 -41
  49. package/components/button-group/caption.d.ts +0 -4
  50. package/components/button-group/caption.js +0 -1
  51. package/components/button-set/button-set.d.ts +0 -6
  52. package/components/button-set/button-set.js +19 -33
  53. package/components/button-toolbar/button-toolbar.d.ts +0 -6
  54. package/components/button-toolbar/button-toolbar.js +17 -31
  55. package/components/caret/caret.js +184 -211
  56. package/components/checkbox/checkbox.d.ts +0 -19
  57. package/components/checkbox/checkbox.js +69 -104
  58. package/components/clipboard/clipboard-fallback.js +7 -7
  59. package/components/clipboard/clipboard.js +36 -129
  60. package/components/code/code.d.ts +0 -12
  61. package/components/code/code.js +83 -163
  62. package/components/collapse/collapse-content.js +42 -60
  63. package/components/collapse/collapse-context.js +2 -2
  64. package/components/collapse/collapse-control.js +12 -12
  65. package/components/collapse/collapse.js +12 -17
  66. package/components/collapse/consts.js +4 -4
  67. package/components/collapse/utils.js +1 -3
  68. package/components/confirm/confirm.d.ts +0 -14
  69. package/components/confirm/confirm.js +67 -111
  70. package/components/confirm-service/confirm-service.js +23 -45
  71. package/components/content-layout/content-layout.d.ts +0 -7
  72. package/components/content-layout/content-layout.js +41 -63
  73. package/components/content-layout/sidebar.d.ts +0 -9
  74. package/components/content-layout/sidebar.js +1 -2
  75. package/components/contenteditable/contenteditable.d.ts +1 -22
  76. package/components/contenteditable/contenteditable.js +37 -60
  77. package/components/control-help/control-help.js +5 -3
  78. package/components/control-label/control-label.js +9 -14
  79. package/components/data-list/data-list.d.ts +0 -2
  80. package/components/data-list/data-list.js +115 -179
  81. package/components/data-list/data-list.mock.js +3 -6
  82. package/components/data-list/item.js +118 -164
  83. package/components/data-list/selection.js +77 -135
  84. package/components/data-list/title.d.ts +2 -2
  85. package/components/data-list/title.js +2 -12
  86. package/components/date-picker/consts.d.ts +0 -2
  87. package/components/date-picker/consts.js +16 -24
  88. package/components/date-picker/date-input.d.ts +0 -20
  89. package/components/date-picker/date-input.js +99 -147
  90. package/components/date-picker/date-picker.d.ts +0 -29
  91. package/components/date-picker/date-picker.js +143 -224
  92. package/components/date-picker/date-popup.d.ts +0 -22
  93. package/components/date-picker/date-popup.js +281 -351
  94. package/components/date-picker/day.d.ts +0 -14
  95. package/components/date-picker/day.js +72 -109
  96. package/components/date-picker/month-names.d.ts +1 -11
  97. package/components/date-picker/month-names.js +42 -72
  98. package/components/date-picker/month-slider.d.ts +0 -9
  99. package/components/date-picker/month-slider.js +43 -71
  100. package/components/date-picker/month.d.ts +1 -9
  101. package/components/date-picker/month.js +18 -30
  102. package/components/date-picker/months.d.ts +1 -9
  103. package/components/date-picker/months.js +45 -55
  104. package/components/date-picker/weekdays.d.ts +2 -8
  105. package/components/date-picker/weekdays.js +12 -25
  106. package/components/date-picker/years.d.ts +0 -6
  107. package/components/date-picker/years.js +77 -104
  108. package/components/dialog/dialog.d.ts +0 -20
  109. package/components/dialog/dialog.js +152 -210
  110. package/components/dialog/dialog__body-scroll-preventer.js +0 -3
  111. package/components/dropdown/anchor.d.ts +1 -8
  112. package/components/dropdown/anchor.js +0 -7
  113. package/components/dropdown/dropdown.d.ts +4 -22
  114. package/components/dropdown/dropdown.js +134 -176
  115. package/components/dropdown-menu/dropdown-menu.js +51 -103
  116. package/components/editable-heading/editable-heading.js +69 -118
  117. package/components/error-bubble/error-bubble.d.ts +0 -6
  118. package/components/error-bubble/error-bubble.js +29 -60
  119. package/components/error-message/error-message.d.ts +0 -10
  120. package/components/error-message/error-message.js +34 -59
  121. package/components/footer/footer.js +27 -43
  122. package/components/global/compose.js +1 -8
  123. package/components/global/composeRefs.d.ts +0 -3
  124. package/components/global/composeRefs.js +8 -15
  125. package/components/global/controls-height.js +2 -2
  126. package/components/global/create-stateful-context.d.ts +0 -4
  127. package/components/global/create-stateful-context.js +14 -17
  128. package/components/global/data-tests.js +7 -12
  129. package/components/global/dom.js +49 -82
  130. package/components/global/focus-sensor-hoc.js +95 -122
  131. package/components/global/fuzzy-highlight.js +23 -34
  132. package/components/global/get-event-key.js +8 -8
  133. package/components/global/get-uid.js +3 -7
  134. package/components/global/inject-styles.js +7 -14
  135. package/components/global/listeners.js +28 -47
  136. package/components/global/memoize.js +6 -10
  137. package/components/global/normalize-indent.js +19 -46
  138. package/components/global/promise-with-timeout.js +6 -8
  139. package/components/global/react-dom-renderer.d.ts +0 -5
  140. package/components/global/react-dom-renderer.js +29 -45
  141. package/components/global/rerender-hoc.js +16 -32
  142. package/components/global/schedule-raf.js +4 -4
  143. package/components/global/sniffer.js +1 -1
  144. package/components/global/theme.d.ts +1 -0
  145. package/components/global/theme.js +2 -20
  146. package/components/global/trivial-template-tag.js +4 -9
  147. package/components/global/typescript-utils.js +2 -6
  148. package/components/global/url.js +20 -23
  149. package/components/global/use-event-callback.js +7 -4
  150. package/components/grid/col.d.ts +0 -14
  151. package/components/grid/col.js +26 -53
  152. package/components/grid/grid.d.ts +0 -5
  153. package/components/grid/grid.js +18 -32
  154. package/components/grid/row.d.ts +0 -18
  155. package/components/grid/row.js +22 -47
  156. package/components/group/group.d.ts +0 -5
  157. package/components/group/group.js +16 -27
  158. package/components/header/header-icon.d.ts +0 -22
  159. package/components/header/header-icon.js +19 -36
  160. package/components/header/header.d.ts +0 -7
  161. package/components/header/header.js +30 -71
  162. package/components/header/links.js +6 -3
  163. package/components/header/logo.d.ts +0 -4
  164. package/components/header/logo.js +15 -30
  165. package/components/header/profile.d.ts +1 -39
  166. package/components/header/profile.js +125 -190
  167. package/components/header/services-link.d.ts +0 -10
  168. package/components/header/services-link.js +1 -4
  169. package/components/header/services.d.ts +0 -14
  170. package/components/header/services.js +65 -110
  171. package/components/header/smart-profile.d.ts +0 -9
  172. package/components/header/smart-profile.js +119 -205
  173. package/components/header/smart-services.d.ts +0 -4
  174. package/components/header/smart-services.js +72 -141
  175. package/components/header/tray.d.ts +0 -5
  176. package/components/header/tray.js +21 -35
  177. package/components/heading/heading.js +21 -26
  178. package/components/http/http.js +162 -319
  179. package/components/http/http.mock.js +50 -98
  180. package/components/hub-source/hub-source.js +77 -182
  181. package/components/hub-source/hub-source__user.js +9 -37
  182. package/components/hub-source/hub-source__users-groups.js +34 -60
  183. package/components/i18n/i18n-context.js +7 -8
  184. package/components/i18n/i18n.js +3 -6
  185. package/components/icon/icon.d.ts +0 -11
  186. package/components/icon/icon.js +60 -85
  187. package/components/icon/icon__svg.d.ts +0 -8
  188. package/components/icon/icon__svg.js +0 -6
  189. package/components/icon/index.js +0 -6
  190. package/components/input/input.js +1 -13
  191. package/components/island/adaptive-island-hoc.d.ts +0 -1
  192. package/components/island/adaptive-island-hoc.js +30 -39
  193. package/components/island/content.d.ts +0 -10
  194. package/components/island/content.js +99 -119
  195. package/components/island/header.js +55 -73
  196. package/components/island/island.d.ts +0 -9
  197. package/components/island/island.js +25 -41
  198. package/components/island-legacy/content-legacy.d.ts +0 -5
  199. package/components/island-legacy/content-legacy.js +16 -27
  200. package/components/island-legacy/header-legacy.d.ts +0 -5
  201. package/components/island-legacy/header-legacy.js +19 -30
  202. package/components/island-legacy/island-legacy.d.ts +0 -5
  203. package/components/island-legacy/island-legacy.js +16 -27
  204. package/components/link/clickableLink.d.ts +0 -9
  205. package/components/link/clickableLink.js +33 -51
  206. package/components/link/link.d.ts +0 -25
  207. package/components/link/link.js +47 -68
  208. package/components/list/consts.js +2 -2
  209. package/components/list/list.d.ts +0 -32
  210. package/components/list/list.js +399 -516
  211. package/components/list/list__custom.js +51 -78
  212. package/components/list/list__hint.d.ts +0 -4
  213. package/components/list/list__hint.js +8 -21
  214. package/components/list/list__item.js +147 -211
  215. package/components/list/list__link.js +39 -59
  216. package/components/list/list__separator.js +15 -30
  217. package/components/list/list__title.js +25 -41
  218. package/components/list/list__users-groups-source.js +55 -123
  219. package/components/loader/loader.d.ts +0 -10
  220. package/components/loader/loader.js +38 -70
  221. package/components/loader/loader__core.js +123 -184
  222. package/components/loader-inline/loader-inline.d.ts +0 -6
  223. package/components/loader-inline/loader-inline.js +24 -38
  224. package/components/loader-screen/loader-screen.d.ts +0 -6
  225. package/components/loader-screen/loader-screen.js +24 -46
  226. package/components/login-dialog/login-dialog.d.ts +0 -11
  227. package/components/login-dialog/login-dialog.js +93 -144
  228. package/components/login-dialog/service.js +9 -31
  229. package/components/markdown/markdown.js +16 -29
  230. package/components/message/message.js +170 -217
  231. package/components/old-browsers-message/old-browsers-message.js +11 -14
  232. package/components/old-browsers-message/old-browsers-message__stop.js +1 -4
  233. package/components/old-browsers-message/white-list.js +8 -13
  234. package/components/pager/pager.js +212 -277
  235. package/components/panel/panel.d.ts +0 -5
  236. package/components/panel/panel.js +16 -27
  237. package/components/permissions/permissions.js +118 -161
  238. package/components/permissions/permissions__cache.js +191 -218
  239. package/components/popup/popup.consts.js +1 -1
  240. package/components/popup/popup.js +237 -329
  241. package/components/popup/popup.target.js +9 -12
  242. package/components/popup/position.js +94 -101
  243. package/components/popup-menu/popup-menu.js +31 -76
  244. package/components/progress-bar/progress-bar.d.ts +19 -33
  245. package/components/progress-bar/progress-bar.js +55 -99
  246. package/components/query-assist/query-assist.d.ts +63 -93
  247. package/components/query-assist/query-assist.js +583 -746
  248. package/components/query-assist/query-assist__suggestions.js +2 -28
  249. package/components/radio/radio.d.ts +0 -8
  250. package/components/radio/radio.js +15 -35
  251. package/components/radio/radio__item.d.ts +0 -9
  252. package/components/radio/radio__item.js +52 -72
  253. package/components/scrollable-section/scrollable-section.js +22 -32
  254. package/components/select/select.js +693 -858
  255. package/components/select/select__filter.js +1 -28
  256. package/components/select/select__popup.js +317 -465
  257. package/components/shortcuts/core.js +147 -195
  258. package/components/shortcuts/shortcut-title.js +6 -10
  259. package/components/shortcuts/shortcuts-hoc.d.ts +0 -5
  260. package/components/shortcuts/shortcuts-hoc.js +23 -46
  261. package/components/shortcuts/shortcuts.d.ts +0 -8
  262. package/components/shortcuts/shortcuts.js +41 -72
  263. package/components/slider/slider.js +93 -113
  264. package/components/slider/slider.utils.js +16 -23
  265. package/components/storage/storage.js +3 -28
  266. package/components/storage/storage__fallback.js +137 -210
  267. package/components/storage/storage__local.js +89 -148
  268. package/components/style.css +1 -1
  269. package/components/tab-trap/tab-trap.js +35 -61
  270. package/components/table/cell.d.ts +0 -6
  271. package/components/table/cell.js +11 -27
  272. package/components/table/disable-hover-hoc.d.ts +0 -1
  273. package/components/table/disable-hover-hoc.js +27 -42
  274. package/components/table/header-cell.d.ts +0 -10
  275. package/components/table/header-cell.js +59 -85
  276. package/components/table/header.d.ts +0 -15
  277. package/components/table/header.js +89 -126
  278. package/components/table/multitable.d.ts +0 -4
  279. package/components/table/multitable.js +83 -93
  280. package/components/table/row-with-focus-sensor.d.ts +2 -2
  281. package/components/table/row-with-focus-sensor.js +25 -60
  282. package/components/table/row.js +169 -235
  283. package/components/table/selection-adapter.js +2 -2
  284. package/components/table/selection-shortcuts-hoc.js +102 -126
  285. package/components/table/selection.js +150 -217
  286. package/components/table/simple-table.d.ts +0 -44
  287. package/components/table/simple-table.js +17 -59
  288. package/components/table/smart-table.d.ts +0 -48
  289. package/components/table/smart-table.js +40 -83
  290. package/components/table/table.d.ts +0 -2
  291. package/components/table/table.js +268 -377
  292. package/components/tabs/collapsible-more.d.ts +1 -9
  293. package/components/tabs/collapsible-more.js +47 -97
  294. package/components/tabs/collapsible-tab.js +32 -44
  295. package/components/tabs/collapsible-tabs.d.ts +2 -29
  296. package/components/tabs/collapsible-tabs.js +89 -161
  297. package/components/tabs/custom-item.d.ts +1 -7
  298. package/components/tabs/custom-item.js +4 -7
  299. package/components/tabs/dumb-tabs.d.ts +0 -11
  300. package/components/tabs/dumb-tabs.js +60 -104
  301. package/components/tabs/smart-tabs.d.ts +0 -6
  302. package/components/tabs/smart-tabs.js +29 -68
  303. package/components/tabs/tab-link.d.ts +0 -8
  304. package/components/tabs/tab-link.js +1 -4
  305. package/components/tabs/tab.d.ts +0 -8
  306. package/components/tabs/tab.js +14 -32
  307. package/components/tabs/tabs.js +1 -28
  308. package/components/tag/tag.d.ts +0 -19
  309. package/components/tag/tag.js +120 -179
  310. package/components/tags-input/tags-input.d.ts +7 -33
  311. package/components/tags-input/tags-input.js +223 -338
  312. package/components/tags-list/tags-list.d.ts +0 -13
  313. package/components/tags-list/tags-list.js +45 -74
  314. package/components/text/text.d.ts +0 -7
  315. package/components/text/text.js +27 -43
  316. package/components/toggle/toggle.d.ts +0 -15
  317. package/components/toggle/toggle.js +51 -76
  318. package/components/tooltip/tooltip.d.ts +0 -9
  319. package/components/tooltip/tooltip.js +109 -150
  320. package/components/user-agreement/service.js +259 -401
  321. package/components/user-agreement/user-agreement.d.ts +0 -18
  322. package/components/user-agreement/user-agreement.js +91 -137
  323. package/components/user-card/card.d.ts +0 -35
  324. package/components/user-card/card.js +1 -26
  325. package/components/user-card/smart-user-card-tooltip.d.ts +0 -5
  326. package/components/user-card/smart-user-card-tooltip.js +52 -108
  327. package/components/user-card/tooltip.d.ts +0 -9
  328. package/components/user-card/tooltip.js +35 -74
  329. package/components/user-card/user-card.js +1 -26
  330. package/package.json +1 -2
  331. package/components/global/prop-types.d.ts +0 -4
  332. package/components/global/prop-types.js +0 -9
  333. package/components/global/react-render-adapter.d.ts +0 -1
  334. package/components/global/react-render-adapter.js +0 -6
  335. package/components/header/tray-icon.d.ts +0 -1
  336. package/components/header/tray-icon.js +0 -26
@@ -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
  */