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

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