@jetbrains/ring-ui-built 6.0.32 → 6.0.34
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.
- package/components/_helpers/_rollupPluginBabelHelpers.js +567 -1
- package/components/_helpers/anchor.js +6 -7
- package/components/_helpers/button__classes.js +14 -16
- package/components/_helpers/caption.js +20 -14
- package/components/_helpers/card.js +105 -95
- package/components/_helpers/dialog__body-scroll-preventer.js +19 -11
- package/components/_helpers/icon__svg.js +25 -22
- package/components/_helpers/input.js +176 -146
- package/components/_helpers/query-assist__suggestions.js +90 -74
- package/components/_helpers/select__filter.js +69 -48
- package/components/_helpers/services-link.js +37 -29
- package/components/_helpers/sidebar.js +107 -99
- package/components/_helpers/tab-link.js +7 -7
- package/components/_helpers/theme.js +40 -31
- package/components/_helpers/title.js +72 -57
- package/components/alert/alert.js +202 -150
- package/components/alert/container.js +41 -32
- package/components/alert-service/alert-service.js +170 -105
- package/components/analytics/analytics.js +22 -12
- package/components/analytics/analytics__custom-plugin.js +75 -54
- package/components/auth/auth.js +36 -4
- package/components/auth/auth__core.js +1471 -746
- package/components/auth/background-flow.js +127 -87
- package/components/auth/down-notification.js +73 -30
- package/components/auth/iframe-flow.js +133 -75
- package/components/auth/request-builder.js +82 -46
- package/components/auth/response-parser.js +116 -86
- package/components/auth/storage.js +334 -171
- package/components/auth/token-validator.js +242 -137
- package/components/auth/window-flow.js +134 -92
- package/components/auth-dialog/auth-dialog.js +172 -114
- package/components/auth-dialog-service/auth-dialog-service.js +31 -8
- package/components/avatar/avatar-example-datauri.js +1 -23
- package/components/avatar/avatar.js +152 -119
- package/components/avatar/fallback-avatar.js +38 -22
- package/components/badge/badge.js +45 -35
- package/components/button/button.js +107 -86
- package/components/button-group/button-group.js +33 -19
- package/components/button-set/button-set.js +32 -20
- package/components/button-toolbar/button-toolbar.js +31 -19
- package/components/caret/caret.js +220 -186
- package/components/checkbox/checkbox.js +101 -76
- package/components/clipboard/clipboard-fallback.js +10 -10
- package/components/clipboard/clipboard.js +132 -35
- package/components/code/code.js +166 -92
- package/components/collapse/collapse-content.js +64 -42
- package/components/collapse/collapse-context.js +2 -2
- package/components/collapse/collapse-control.js +14 -12
- package/components/collapse/collapse.js +17 -11
- package/components/collapse/consts.js +4 -4
- package/components/collapse/utils.js +3 -1
- package/components/confirm/confirm.js +104 -66
- package/components/confirm-service/confirm-service.js +59 -37
- package/components/content-layout/content-layout.js +64 -43
- package/components/content-layout/sidebar.js +1 -0
- package/components/contenteditable/contenteditable.js +59 -50
- package/components/control-label/control-label.js +9 -9
- package/components/data-list/data-list.js +182 -129
- package/components/data-list/data-list.mock.js +6 -2
- package/components/data-list/item.js +170 -143
- package/components/data-list/selection.js +136 -76
- package/components/data-list/title.js +12 -1
- package/components/date-picker/consts.js +26 -19
- package/components/date-picker/date-input.js +144 -113
- package/components/date-picker/date-picker.js +282 -227
- package/components/date-picker/date-popup.js +395 -350
- package/components/date-picker/day.js +116 -87
- package/components/date-picker/month-names.js +66 -43
- package/components/date-picker/month-slider.js +76 -51
- package/components/date-picker/month.js +25 -16
- package/components/date-picker/months.js +50 -43
- package/components/date-picker/weekdays.js +22 -12
- package/components/date-picker/years.js +110 -83
- package/components/dialog/dialog.js +190 -142
- package/components/dialog/dialog__body-scroll-preventer.js +4 -0
- package/components/dropdown/anchor.js +9 -0
- package/components/dropdown/dropdown.js +213 -182
- package/components/dropdown-menu/dropdown-menu.js +97 -71
- package/components/editable-heading/editable-heading.js +127 -75
- package/components/error-bubble/error-bubble.js +60 -31
- package/components/error-message/error-message.js +59 -39
- package/components/footer/footer.js +30 -27
- package/components/global/compose.js +10 -1
- package/components/global/composeRefs.js +12 -7
- package/components/global/controls-height.js +2 -2
- package/components/global/create-stateful-context.js +15 -15
- package/components/global/data-tests.js +14 -6
- package/components/global/dom.js +86 -47
- package/components/global/focus-sensor-hoc.js +132 -122
- package/components/global/fuzzy-highlight.js +36 -22
- package/components/global/get-event-key.js +8 -8
- package/components/global/get-uid.js +8 -4
- package/components/global/inject-styles.js +15 -10
- package/components/global/listeners.js +51 -27
- package/components/global/memoize.js +12 -6
- package/components/global/normalize-indent.js +50 -19
- package/components/global/promise-with-timeout.js +8 -6
- package/components/global/prop-types.js +5 -3
- package/components/global/react-dom-renderer.js +44 -28
- package/components/global/react-render-adapter.js +1 -1
- package/components/global/rerender-hoc.js +30 -12
- package/components/global/schedule-raf.js +6 -5
- package/components/global/sniffer.js +1 -1
- package/components/global/theme.js +22 -0
- package/components/global/trivial-template-tag.js +10 -3
- package/components/global/typescript-utils.js +6 -2
- package/components/global/url.js +26 -20
- package/components/global/use-event-callback.js +4 -6
- package/components/grid/col.js +52 -35
- package/components/grid/grid.js +31 -17
- package/components/grid/row.js +47 -35
- package/components/group/group.js +25 -17
- package/components/header/header.js +78 -33
- package/components/header/logo.js +36 -20
- package/components/header/profile.js +199 -166
- package/components/header/services-link.js +4 -0
- package/components/header/services.js +116 -73
- package/components/header/smart-profile.js +203 -111
- package/components/header/smart-services.js +113 -62
- package/components/header/tray-icon.js +37 -21
- package/components/header/tray.js +32 -21
- package/components/heading/heading.js +25 -24
- package/components/http/http.d.ts +1 -2
- package/components/http/http.js +345 -203
- package/components/http/http.mock.d.ts +1 -5
- package/components/http/http.mock.js +101 -49
- package/components/hub-source/hub-source.js +190 -83
- package/components/hub-source/hub-source__user.js +44 -11
- package/components/hub-source/hub-source__users-groups.js +65 -37
- package/components/i18n/i18n-context.js +10 -7
- package/components/i18n/i18n.js +10 -7
- package/components/icon/icon.js +93 -76
- package/components/icon/icon__svg.js +8 -0
- package/components/icon/index.js +8 -0
- package/components/input/input.js +13 -0
- package/components/island/adaptive-island-hoc.js +43 -30
- package/components/island/content.js +132 -115
- package/components/island/header.js +70 -57
- package/components/island/island.js +40 -28
- package/components/island-legacy/content-legacy.js +25 -17
- package/components/island-legacy/header-legacy.js +27 -19
- package/components/island-legacy/island-legacy.js +25 -17
- package/components/link/clickableLink.js +59 -44
- package/components/link/link.js +68 -57
- package/components/list/consts.js +2 -2
- package/components/list/list.js +698 -611
- package/components/list/list__custom.js +62 -44
- package/components/list/list__hint.js +19 -10
- package/components/list/list__item.js +174 -133
- package/components/list/list__link.js +50 -37
- package/components/list/list__separator.js +24 -14
- package/components/list/list__title.js +32 -22
- package/components/list/list__users-groups-source.js +126 -54
- package/components/loader/loader.js +74 -43
- package/components/loader/loader__core.js +263 -198
- package/components/loader-inline/loader-inline.js +35 -23
- package/components/loader-screen/loader-screen.js +46 -25
- package/components/login-dialog/login-dialog.js +158 -111
- package/components/login-dialog/service.js +34 -8
- package/components/markdown/markdown.js +23 -15
- package/components/message/message.js +203 -161
- package/components/old-browsers-message/old-browsers-message.js +18 -11
- package/components/old-browsers-message/old-browsers-message__stop.js +7 -0
- package/components/old-browsers-message/white-list.js +17 -9
- package/components/pager/pager.js +271 -212
- package/components/panel/panel.js +25 -17
- package/components/permissions/permissions.js +172 -127
- package/components/permissions/permissions__cache.js +224 -194
- package/components/popup/popup.consts.js +1 -1
- package/components/popup/popup.js +343 -284
- package/components/popup/popup.target.js +8 -9
- package/components/popup/position.js +106 -96
- package/components/popup-menu/popup-menu.js +81 -44
- package/components/progress-bar/progress-bar.js +104 -87
- package/components/query-assist/query-assist.js +916 -838
- package/components/query-assist/query-assist__suggestions.js +30 -1
- package/components/radio/radio.js +34 -19
- package/components/radio/radio__item.js +69 -52
- package/components/select/select.js +957 -852
- package/components/select/select__filter.js +30 -0
- package/components/select/select__popup.js +487 -373
- package/components/shortcuts/core.js +217 -166
- package/components/shortcuts/shortcut-title.js +11 -6
- package/components/shortcuts/shortcuts-hoc.js +45 -19
- package/components/shortcuts/shortcuts.js +75 -50
- package/components/slider/slider.js +122 -99
- package/components/slider/slider.utils.js +24 -14
- package/components/storage/storage.js +33 -4
- package/components/storage/storage__fallback.js +224 -149
- package/components/storage/storage__local.js +153 -90
- package/components/tab-trap/tab-trap.js +153 -122
- package/components/table/cell.js +26 -14
- package/components/table/disable-hover-hoc.js +51 -33
- package/components/table/header-cell.js +89 -64
- package/components/table/header.js +132 -104
- package/components/table/multitable.js +125 -107
- package/components/table/row-with-focus-sensor.js +69 -25
- package/components/table/row.js +216 -175
- package/components/table/selection-adapter.js +3 -1
- package/components/table/selection-shortcuts-hoc.js +181 -180
- package/components/table/selection.js +226 -156
- package/components/table/smart-table.js +88 -50
- package/components/table/table.js +358 -289
- package/components/tabs/collapsible-more.js +79 -46
- package/components/tabs/collapsible-tab.js +38 -31
- package/components/tabs/collapsible-tabs.js +153 -88
- package/components/tabs/custom-item.js +2 -4
- package/components/tabs/dumb-tabs.js +117 -74
- package/components/tabs/smart-tabs.js +69 -29
- package/components/tabs/tab-link.js +5 -1
- package/components/tabs/tab.js +31 -19
- package/components/tabs/tabs.js +31 -0
- package/components/tag/tag.js +173 -133
- package/components/tags-input/tags-input.js +427 -329
- package/components/tags-list/tags-list.js +78 -57
- package/components/text/text.js +39 -28
- package/components/toggle/toggle.js +70 -56
- package/components/tooltip/tooltip.js +190 -146
- package/components/user-agreement/service.js +371 -228
- package/components/user-agreement/toolbox.eula.js +1 -160
- package/components/user-agreement/user-agreement.js +120 -85
- package/components/user-card/card.js +29 -0
- package/components/user-card/smart-user-card-tooltip.js +111 -51
- package/components/user-card/tooltip.js +84 -47
- package/components/user-card/user-card.js +29 -0
- package/package.json +1 -2
@@ -1,3 +1,7 @@
|
|
1
|
+
import { _ as _defineProperty, b as _createClass, f as _classCallCheck } from '../_helpers/_rollupPluginBabelHelpers.js';
|
2
|
+
import 'core-js/modules/es.array.reduce.js';
|
3
|
+
import 'core-js/modules/es.object.to-string.js';
|
4
|
+
|
1
5
|
/**
|
2
6
|
* Converts an array of cached permissions to a a map of a permission key
|
3
7
|
* to the respective cached permission.
|
@@ -11,216 +15,242 @@
|
|
11
15
|
* @return {object} permission cache
|
12
16
|
* @private
|
13
17
|
*/
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
static _toProjectIdSet(projects) {
|
24
|
-
let projectIdSet = null;
|
25
|
-
if (projects) {
|
26
|
-
projectIdSet = {};
|
27
|
-
for (let i = 0; i < projects.length; i++) {
|
28
|
-
projectIdSet[projects[i].id] = true;
|
29
|
-
}
|
30
|
-
}
|
31
|
-
return projectIdSet;
|
32
|
-
}
|
33
|
-
namesConverter;
|
34
|
-
constructor(permissions, namesConverter) {
|
35
|
-
this.namesConverter = namesConverter || (key => key);
|
18
|
+
var PermissionCache = /*#__PURE__*/function () {
|
19
|
+
function PermissionCache(permissions, namesConverter) {
|
20
|
+
_classCallCheck(this, PermissionCache);
|
21
|
+
_defineProperty(this, "namesConverter", void 0);
|
22
|
+
_defineProperty(this, "_permissions", void 0);
|
23
|
+
_defineProperty(this, "permissionCache", void 0);
|
24
|
+
this.namesConverter = namesConverter || function (key) {
|
25
|
+
return key;
|
26
|
+
};
|
36
27
|
this.set(permissions);
|
37
28
|
}
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
get() {
|
56
|
-
return this._permissions;
|
57
|
-
}
|
58
|
-
/**
|
59
|
-
* Checks if the current user has the given permissions in the project with the given id.
|
60
|
-
*
|
61
|
-
* @param {string} permissions space separated list of permissions
|
62
|
-
* @param {string=} projectId optional projectId. If absent the method checks
|
63
|
-
* if the given permission is granted in any project.
|
64
|
-
*
|
65
|
-
* @return {boolean}
|
66
|
-
*/
|
67
|
-
has(permissions, projectId) {
|
68
|
-
const lexems = this.lex(permissions);
|
69
|
-
if (lexems.length === 0) {
|
70
|
-
return true;
|
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;
|
71
46
|
}
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
return
|
47
|
+
}, {
|
48
|
+
key: "get",
|
49
|
+
value: function get() {
|
50
|
+
return this._permissions;
|
76
51
|
}
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
case '\n':
|
93
|
-
case '\r':
|
94
|
-
// Finish current token
|
95
|
-
if (currentIdentifier) {
|
96
|
-
lexems.push(currentIdentifier);
|
97
|
-
currentIdentifier = '';
|
98
|
-
}
|
99
|
-
// Skip space
|
100
|
-
break;
|
101
|
-
case '(':
|
102
|
-
case ')':
|
103
|
-
case '&':
|
104
|
-
case '|':
|
105
|
-
case '!':
|
106
|
-
// Finish current token
|
107
|
-
if (currentIdentifier) {
|
108
|
-
lexems.push(currentIdentifier);
|
109
|
-
currentIdentifier = '';
|
110
|
-
}
|
111
|
-
// Append operator
|
112
|
-
lexems.push(query.charAt(i));
|
113
|
-
break;
|
114
|
-
default:
|
115
|
-
currentIdentifier += query.charAt(i);
|
116
|
-
break;
|
117
|
-
}
|
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;
|
118
67
|
}
|
119
|
-
|
120
|
-
|
68
|
+
try {
|
69
|
+
return this.or(lexems, projectId);
|
70
|
+
} catch (e) {
|
71
|
+
return false;
|
121
72
|
}
|
122
73
|
}
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
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
|
+
}
|
142
120
|
}
|
143
|
-
|
121
|
+
return lexems;
|
144
122
|
}
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
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');
|
142
|
+
}
|
143
|
+
result = this.and(lexems, projectId) || result;
|
158
144
|
}
|
159
|
-
|
145
|
+
return result;
|
160
146
|
}
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
* @param {string[]} lexems
|
179
|
-
* @param {string=} projectId
|
180
|
-
* @return {boolean}
|
181
|
-
*/
|
182
|
-
term(lexems, projectId) {
|
183
|
-
if (lexems.length === 0) {
|
184
|
-
throw new Error('Operand was expected');
|
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;
|
162
|
+
}
|
163
|
+
return result;
|
185
164
|
}
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
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;
|
176
|
+
lexems.shift();
|
194
177
|
}
|
195
|
-
|
196
|
-
|
178
|
+
var result = this.term(lexems, projectId);
|
179
|
+
return notCounter % 2 === 0 ? result : !result;
|
197
180
|
}
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
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;
|
212
205
|
}
|
213
|
-
|
214
|
-
|
215
|
-
|
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
|
+
}
|
216
231
|
}
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
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
|
+
}
|
249
|
+
}
|
250
|
+
return projectIdSet;
|
222
251
|
}
|
223
|
-
}
|
224
|
-
}
|
252
|
+
}]);
|
253
|
+
}();
|
254
|
+
_defineProperty(PermissionCache, "GLOBAL_PROJECT_ID", 'global');
|
225
255
|
|
226
256
|
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
|
-
|
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];
|
21
21
|
/**
|
22
22
|
* @enum {number}
|
23
23
|
*/
|