@jetbrains/ring-ui-built 6.0.30 → 6.0.32
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 +7 -629
- package/components/_helpers/anchor.js +7 -6
- package/components/_helpers/button__classes.js +16 -14
- package/components/_helpers/caption.js +14 -20
- package/components/_helpers/card.js +95 -105
- package/components/_helpers/dialog__body-scroll-preventer.js +11 -19
- package/components/_helpers/icon__svg.js +22 -25
- package/components/_helpers/input.js +146 -177
- package/components/_helpers/query-assist__suggestions.js +74 -90
- package/components/_helpers/select__filter.js +48 -69
- package/components/_helpers/services-link.js +29 -37
- package/components/_helpers/sidebar.js +99 -107
- package/components/_helpers/tab-link.js +7 -7
- package/components/_helpers/theme.js +31 -40
- package/components/_helpers/title.js +57 -72
- package/components/alert/alert.js +150 -202
- package/components/alert/container.js +32 -41
- package/components/alert-service/alert-service.js +105 -170
- package/components/analytics/analytics.js +12 -22
- package/components/analytics/analytics__custom-plugin.js +54 -75
- package/components/auth/auth.js +4 -36
- package/components/auth/auth__core.js +746 -1471
- package/components/auth/background-flow.js +87 -127
- package/components/auth/down-notification.js +30 -73
- package/components/auth/iframe-flow.js +75 -133
- package/components/auth/request-builder.js +46 -82
- package/components/auth/response-parser.js +86 -116
- package/components/auth/storage.js +171 -334
- package/components/auth/token-validator.js +137 -242
- package/components/auth/window-flow.js +92 -134
- package/components/auth-dialog/auth-dialog.js +114 -172
- package/components/auth-dialog-service/auth-dialog-service.js +8 -31
- package/components/avatar/avatar-example-datauri.js +23 -1
- package/components/avatar/avatar.js +119 -152
- package/components/avatar/fallback-avatar.js +22 -38
- package/components/badge/badge.js +35 -45
- package/components/button/button.js +86 -107
- package/components/button-group/button-group.js +19 -33
- package/components/button-set/button-set.js +20 -32
- package/components/button-toolbar/button-toolbar.js +19 -31
- package/components/caret/caret.js +186 -220
- package/components/checkbox/checkbox.js +76 -101
- package/components/clipboard/clipboard-fallback.js +10 -10
- package/components/clipboard/clipboard.js +35 -132
- package/components/code/code.js +92 -166
- package/components/collapse/collapse-content.js +42 -64
- package/components/collapse/collapse-context.js +2 -2
- package/components/collapse/collapse-control.js +12 -14
- package/components/collapse/collapse.js +11 -17
- package/components/collapse/consts.js +4 -4
- package/components/collapse/utils.js +1 -3
- package/components/confirm/confirm.js +66 -104
- package/components/confirm-service/confirm-service.js +37 -59
- package/components/content-layout/content-layout.js +43 -64
- package/components/content-layout/sidebar.js +0 -1
- package/components/contenteditable/contenteditable.js +50 -59
- package/components/control-label/control-label.js +9 -9
- package/components/data-list/data-list.js +129 -182
- package/components/data-list/data-list.mock.js +2 -6
- package/components/data-list/item.js +143 -170
- package/components/data-list/selection.js +76 -136
- package/components/data-list/title.js +1 -12
- package/components/date-picker/consts.js +19 -26
- package/components/date-picker/date-input.js +113 -144
- package/components/date-picker/date-picker.js +227 -282
- package/components/date-picker/date-popup.js +350 -395
- package/components/date-picker/day.js +87 -116
- package/components/date-picker/month-names.js +43 -66
- package/components/date-picker/month-slider.js +51 -76
- package/components/date-picker/month.js +16 -25
- package/components/date-picker/months.js +43 -50
- package/components/date-picker/weekdays.js +12 -22
- package/components/date-picker/years.js +83 -110
- package/components/dialog/dialog.js +142 -190
- package/components/dialog/dialog__body-scroll-preventer.js +0 -4
- package/components/dropdown/anchor.js +0 -9
- package/components/dropdown/dropdown.js +182 -213
- package/components/dropdown-menu/dropdown-menu.js +71 -97
- package/components/editable-heading/editable-heading.js +75 -127
- package/components/error-bubble/error-bubble.js +31 -60
- package/components/error-message/error-message.js +39 -59
- package/components/footer/footer.js +27 -30
- package/components/global/compose.js +1 -10
- package/components/global/composeRefs.js +7 -12
- package/components/global/controls-height.js +2 -2
- package/components/global/create-stateful-context.js +15 -15
- package/components/global/data-tests.js +6 -14
- package/components/global/dom.js +47 -86
- package/components/global/focus-sensor-hoc.js +122 -132
- package/components/global/fuzzy-highlight.js +22 -36
- package/components/global/get-event-key.js +8 -8
- package/components/global/get-uid.js +4 -8
- package/components/global/inject-styles.js +10 -15
- package/components/global/listeners.js +27 -51
- package/components/global/memoize.js +6 -12
- package/components/global/normalize-indent.js +19 -50
- package/components/global/promise-with-timeout.js +6 -8
- package/components/global/prop-types.js +3 -5
- package/components/global/react-dom-renderer.js +28 -44
- package/components/global/react-render-adapter.js +1 -1
- package/components/global/rerender-hoc.js +12 -30
- package/components/global/schedule-raf.js +5 -6
- package/components/global/sniffer.js +1 -1
- package/components/global/theme.js +0 -22
- package/components/global/trivial-template-tag.js +3 -10
- package/components/global/typescript-utils.js +2 -6
- package/components/global/url.js +20 -26
- package/components/global/use-event-callback.js +6 -4
- package/components/grid/col.js +35 -52
- package/components/grid/grid.js +17 -31
- package/components/grid/row.js +35 -47
- package/components/group/group.js +17 -25
- package/components/header/header.js +33 -78
- package/components/header/logo.js +20 -36
- package/components/header/profile.js +166 -199
- package/components/header/services-link.js +0 -4
- package/components/header/services.js +73 -116
- package/components/header/smart-profile.js +111 -203
- package/components/header/smart-services.js +62 -113
- package/components/header/tray-icon.js +21 -37
- package/components/header/tray.js +21 -32
- package/components/heading/heading.js +24 -25
- package/components/http/http.d.ts +1 -3
- package/components/http/http.js +203 -353
- package/components/http/http.mock.js +49 -101
- package/components/hub-source/hub-source.js +83 -190
- package/components/hub-source/hub-source__user.js +11 -44
- package/components/hub-source/hub-source__users-groups.js +37 -65
- package/components/i18n/i18n-context.js +7 -10
- package/components/i18n/i18n.js +7 -10
- package/components/icon/icon.js +76 -93
- package/components/icon/icon__svg.js +0 -8
- package/components/icon/index.js +0 -8
- package/components/input/input.js +0 -13
- package/components/island/adaptive-island-hoc.js +30 -43
- package/components/island/content.js +115 -132
- package/components/island/header.js +57 -70
- package/components/island/island.js +28 -40
- package/components/island-legacy/content-legacy.js +17 -25
- package/components/island-legacy/header-legacy.js +19 -27
- package/components/island-legacy/island-legacy.js +17 -25
- package/components/link/clickableLink.js +44 -59
- package/components/link/link.js +57 -68
- package/components/list/consts.js +2 -2
- package/components/list/list.js +611 -698
- package/components/list/list__custom.js +44 -62
- package/components/list/list__hint.js +10 -19
- package/components/list/list__item.js +133 -174
- package/components/list/list__link.js +37 -50
- package/components/list/list__separator.js +14 -24
- package/components/list/list__title.js +22 -32
- package/components/list/list__users-groups-source.js +54 -126
- package/components/loader/loader.js +43 -74
- package/components/loader/loader__core.js +198 -263
- package/components/loader-inline/loader-inline.js +23 -35
- package/components/loader-screen/loader-screen.js +25 -46
- package/components/login-dialog/login-dialog.js +111 -158
- package/components/login-dialog/service.js +8 -34
- package/components/markdown/markdown.js +15 -23
- package/components/message/message.js +161 -203
- package/components/old-browsers-message/old-browsers-message.js +11 -18
- package/components/old-browsers-message/old-browsers-message__stop.js +0 -7
- package/components/old-browsers-message/white-list.js +8 -16
- package/components/pager/pager.js +212 -271
- package/components/panel/panel.js +17 -25
- package/components/permissions/permissions.js +127 -172
- package/components/permissions/permissions__cache.js +194 -224
- package/components/popup/popup.consts.js +1 -1
- package/components/popup/popup.js +284 -343
- package/components/popup/popup.target.js +9 -8
- package/components/popup/position.js +96 -106
- package/components/popup-menu/popup-menu.js +44 -80
- package/components/progress-bar/progress-bar.js +87 -104
- package/components/query-assist/query-assist.js +838 -916
- package/components/query-assist/query-assist__suggestions.js +1 -30
- package/components/radio/radio.js +19 -34
- package/components/radio/radio__item.js +52 -69
- package/components/select/select.js +852 -957
- package/components/select/select__filter.js +0 -30
- package/components/select/select__popup.js +373 -487
- package/components/shortcuts/core.js +166 -217
- package/components/shortcuts/shortcut-title.js +6 -11
- package/components/shortcuts/shortcuts-hoc.js +19 -45
- package/components/shortcuts/shortcuts.js +50 -75
- package/components/slider/slider.js +99 -122
- package/components/slider/slider.utils.js +14 -24
- package/components/storage/storage.js +4 -33
- package/components/storage/storage__fallback.js +149 -224
- package/components/storage/storage__local.js +90 -153
- package/components/style.css +1 -1
- package/components/tab-trap/tab-trap.js +122 -153
- package/components/table/cell.js +14 -26
- package/components/table/disable-hover-hoc.js +33 -51
- package/components/table/header-cell.js +64 -89
- package/components/table/header.js +104 -132
- package/components/table/multitable.js +107 -125
- package/components/table/row-with-focus-sensor.js +25 -69
- package/components/table/row.js +175 -216
- package/components/table/selection-adapter.js +1 -3
- package/components/table/selection-shortcuts-hoc.js +180 -181
- package/components/table/selection.js +156 -226
- package/components/table/smart-table.js +50 -88
- package/components/table/table.js +289 -358
- package/components/tabs/collapsible-more.js +46 -79
- package/components/tabs/collapsible-tab.js +31 -38
- package/components/tabs/collapsible-tabs.js +88 -153
- package/components/tabs/custom-item.js +4 -2
- package/components/tabs/dumb-tabs.js +74 -117
- package/components/tabs/smart-tabs.js +29 -69
- package/components/tabs/tab-link.js +1 -5
- package/components/tabs/tab.js +19 -31
- package/components/tabs/tabs.js +0 -31
- package/components/tag/tag.js +133 -173
- package/components/tags-input/tags-input.js +329 -427
- package/components/tags-list/tags-list.js +57 -78
- package/components/text/text.js +28 -39
- package/components/toggle/toggle.js +56 -70
- package/components/tooltip/tooltip.js +146 -190
- package/components/user-agreement/service.js +228 -371
- package/components/user-agreement/toolbox.eula.js +160 -1
- package/components/user-agreement/user-agreement.js +85 -120
- package/components/user-card/card.js +0 -29
- package/components/user-card/smart-user-card-tooltip.js +51 -111
- package/components/user-card/tooltip.js +47 -84
- package/components/user-card/user-card.js +0 -29
- package/package.json +1 -1
@@ -1,248 +1,197 @@
|
|
1
|
-
import { b as _createClass, f as _classCallCheck, _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
|
2
|
-
import 'core-js/modules/es.array.concat.js';
|
3
|
-
import 'core-js/modules/es.array.find-index.js';
|
4
|
-
import 'core-js/modules/es.array.includes.js';
|
5
|
-
import 'core-js/modules/es.array.map.js';
|
6
|
-
import 'core-js/modules/es.array.slice.js';
|
7
|
-
import 'core-js/modules/es.array.splice.js';
|
8
|
-
import 'core-js/modules/es.object.assign.js';
|
9
|
-
import 'core-js/modules/es.regexp.exec.js';
|
10
|
-
import 'core-js/modules/es.string.includes.js';
|
11
|
-
import 'core-js/modules/es.string.match.js';
|
12
1
|
import Combokeys from 'combokeys';
|
13
2
|
import sniffr from '../global/sniffer.js';
|
14
3
|
import 'sniffr';
|
15
4
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
_defineProperty(this, "combokeys", new Combokeys(document.documentElement));
|
28
|
-
_defineProperty(this, "trigger", function (combo) {
|
29
|
-
return _this.combokeys.trigger(combo);
|
30
|
-
});
|
31
|
-
_defineProperty(this, "_dispatcher", function (e, key) {
|
32
|
-
var currentScope;
|
33
|
-
for (var i = _this._scopeChain.length - 1; i >= 0; i--) {
|
34
|
-
var scopeInChain = _this._scopeChain[i];
|
35
|
-
currentScope = _this._scopes[scopeInChain.scopeId];
|
36
|
-
if (currentScope && key != null && currentScope[key]) {
|
37
|
-
var ret = currentScope[key](e, key, scopeInChain.scopeId);
|
38
|
-
// Fall down in chain when returning true
|
39
|
-
if (ret !== true) {
|
40
|
-
return ret;
|
41
|
-
}
|
42
|
-
}
|
43
|
-
if (scopeInChain.options.modal) {
|
44
|
-
return true;
|
45
|
-
}
|
46
|
-
}
|
47
|
-
return undefined;
|
48
|
-
});
|
49
|
-
_defineProperty(this, "_defaultFilter", function (e, element, key) {
|
50
|
-
// if the element or its parents have the class "ring-js-shortcuts" then no need to stop
|
51
|
-
if (element === document || !(element instanceof HTMLElement) || key == null || element.matches(_this.ALLOW_SHORTCUTS_SELECTOR) || (element.dataset.enabledShortcuts != null ? element.dataset.enabledShortcuts.split(',').includes(key) : element.closest(_this.ALLOW_SHORTCUTS_SELECTOR) != null)) {
|
52
|
-
return false;
|
53
|
-
}
|
54
|
-
// stop for input, select, and textarea
|
55
|
-
return element.matches('input:not([type=checkbox]),select,textarea') || element.contentEditable === 'true';
|
56
|
-
});
|
5
|
+
class Shortcuts {
|
6
|
+
ALLOW_SHORTCUTS_SELECTOR = '.ring-js-shortcuts';
|
7
|
+
ROOT_SCOPE = {
|
8
|
+
scopeId: 'ROOT',
|
9
|
+
options: {}
|
10
|
+
};
|
11
|
+
_scopes = {};
|
12
|
+
_scopeChain = [];
|
13
|
+
combokeys = new Combokeys(document.documentElement);
|
14
|
+
trigger = combo => this.combokeys.trigger(combo);
|
15
|
+
constructor() {
|
57
16
|
this.setFilter();
|
58
17
|
this.setScope();
|
59
18
|
}
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
*/
|
71
|
-
function bind(params) {
|
72
|
-
if (!(params instanceof Object) || typeof params.handler !== 'function') {
|
73
|
-
throw new Error('Shortcut handler should exist');
|
74
|
-
}
|
75
|
-
if (!params.scope) {
|
76
|
-
params.scope = this.ROOT_SCOPE.scopeId;
|
77
|
-
}
|
78
|
-
if (Array.isArray(params.key)) {
|
79
|
-
for (var i = 0; i < params.key.length; i++) {
|
80
|
-
this.bind(Object.assign({}, params, {
|
81
|
-
key: params.key[i]
|
82
|
-
}));
|
19
|
+
_dispatcher = (e, key) => {
|
20
|
+
let currentScope;
|
21
|
+
for (let i = this._scopeChain.length - 1; i >= 0; i--) {
|
22
|
+
const scopeInChain = this._scopeChain[i];
|
23
|
+
currentScope = this._scopes[scopeInChain.scopeId];
|
24
|
+
if (currentScope && key != null && currentScope[key]) {
|
25
|
+
const ret = currentScope[key](e, key, scopeInChain.scopeId);
|
26
|
+
// Fall down in chain when returning true
|
27
|
+
if (ret !== true) {
|
28
|
+
return ret;
|
83
29
|
}
|
84
|
-
return;
|
85
|
-
}
|
86
|
-
if (typeof params.key !== 'string') {
|
87
|
-
throw new Error('Shortcut key should exist');
|
88
30
|
}
|
89
|
-
|
90
|
-
|
91
|
-
scope = this._scopes[params.scope] = {};
|
31
|
+
if (scopeInChain.options.modal) {
|
32
|
+
return true;
|
92
33
|
}
|
93
|
-
scope[params.key] = params.handler;
|
94
|
-
this.combokeys.bind(params.key, this._dispatcher, this._getKeyboardEventType(params));
|
95
34
|
}
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
}
|
35
|
+
return undefined;
|
36
|
+
};
|
37
|
+
/**
|
38
|
+
* Binds a handler to a shortcut
|
39
|
+
*
|
40
|
+
* @param params.key {string | Array.<string>) Keys to bind
|
41
|
+
* @param params.handler {Function} Events handle
|
42
|
+
* @param params.scope {string} Scope (optional)
|
43
|
+
* @param params.type {string} Event type, will be passed to Combokeys (optional)
|
44
|
+
*/
|
45
|
+
bind(params) {
|
46
|
+
if (!(params instanceof Object) || typeof params.handler !== 'function') {
|
47
|
+
throw new Error('Shortcut handler should exist');
|
48
|
+
}
|
49
|
+
if (!params.scope) {
|
50
|
+
params.scope = this.ROOT_SCOPE.scopeId;
|
51
|
+
}
|
52
|
+
if (Array.isArray(params.key)) {
|
53
|
+
for (let i = 0; i < params.key.length; i++) {
|
54
|
+
this.bind(Object.assign({}, params, {
|
55
|
+
key: params.key[i]
|
56
|
+
}));
|
116
57
|
}
|
58
|
+
return;
|
117
59
|
}
|
118
|
-
|
119
|
-
|
120
|
-
value: function unbindScope(scope) {
|
121
|
-
this._scopes[scope] = null;
|
60
|
+
if (typeof params.key !== 'string') {
|
61
|
+
throw new Error('Shortcut key should exist');
|
122
62
|
}
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
return this._scopeChain.slice(1);
|
63
|
+
let scope = this._scopes[params.scope];
|
64
|
+
if (!scope) {
|
65
|
+
scope = this._scopes[params.scope] = {};
|
127
66
|
}
|
128
|
-
|
129
|
-
key
|
130
|
-
|
131
|
-
|
67
|
+
scope[params.key] = params.handler;
|
68
|
+
this.combokeys.bind(params.key, this._dispatcher, this._getKeyboardEventType(params));
|
69
|
+
}
|
70
|
+
/**
|
71
|
+
* Binds a map of shortcuts to handlers with common options
|
72
|
+
*
|
73
|
+
* @map {Object) Keys to handlers map
|
74
|
+
* @options.scope {string} Scope (optional)
|
75
|
+
* @options.type {string} Event type, will be passed to Combokeys (optional)
|
76
|
+
*/
|
77
|
+
bindMap(map, options) {
|
78
|
+
if (!(map instanceof Object)) {
|
79
|
+
throw new Error('Shortcuts map shouldn\'t be empty');
|
132
80
|
}
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
*/
|
140
|
-
}, {
|
141
|
-
key: "pushScope",
|
142
|
-
value: function pushScope(scopeId) {
|
143
|
-
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
144
|
-
if (scopeId) {
|
145
|
-
var position = this.indexOfScope(scopeId);
|
146
|
-
if (position !== -1) {
|
147
|
-
this._scopeChain.splice(position, 1);
|
148
|
-
}
|
149
|
-
this._scopeChain.push(this.wrapScope(scopeId, options));
|
81
|
+
for (const key in map) {
|
82
|
+
if (map.hasOwnProperty(key)) {
|
83
|
+
this.bind(Object.assign({}, options || {}, {
|
84
|
+
key,
|
85
|
+
handler: map[key]
|
86
|
+
}));
|
150
87
|
}
|
151
88
|
}
|
152
|
-
}
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
89
|
+
}
|
90
|
+
unbindScope(scope) {
|
91
|
+
this._scopes[scope] = null;
|
92
|
+
}
|
93
|
+
getScope() {
|
94
|
+
return this._scopeChain.slice(1);
|
95
|
+
}
|
96
|
+
hasScope(scopeId) {
|
97
|
+
return this.indexOfScope(scopeId) !== -1;
|
98
|
+
}
|
99
|
+
/**
|
100
|
+
* Adds a scope to the chain
|
101
|
+
* @param scopeId id of scope to add
|
102
|
+
* @param options options for pushing scope
|
103
|
+
* @param options.modal whether keys should fall through this scope or not.
|
104
|
+
* Useful for modals or overlays
|
105
|
+
*/
|
106
|
+
pushScope(scopeId) {
|
107
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
108
|
+
if (scopeId) {
|
109
|
+
const position = this.indexOfScope(scopeId);
|
110
|
+
if (position !== -1) {
|
111
|
+
this._scopeChain.splice(position, 1);
|
160
112
|
}
|
161
|
-
|
113
|
+
this._scopeChain.push(this.wrapScope(scopeId, options));
|
162
114
|
}
|
163
|
-
}
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
this._scopeChain.splice(position, 1);
|
170
|
-
}
|
115
|
+
}
|
116
|
+
popScope(scopeId) {
|
117
|
+
if (scopeId) {
|
118
|
+
const position = this.indexOfScope(scopeId);
|
119
|
+
if (position !== -1) {
|
120
|
+
return this._scopeChain.splice(position, this._scopeChain.length - 1);
|
171
121
|
}
|
172
122
|
}
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
scopeChain = [scope];
|
181
|
-
} else {
|
182
|
-
scopeChain = scope;
|
183
|
-
}
|
184
|
-
if (!Array.isArray(scopeChain)) {
|
185
|
-
return;
|
186
|
-
}
|
187
|
-
var scopes = scopeChain.map(function (scopeItem) {
|
188
|
-
var isScopeId = typeof scopeItem === 'string';
|
189
|
-
return isScopeId ? _this2.wrapScope(scopeItem) : scopeItem;
|
190
|
-
});
|
191
|
-
this._scopeChain = [this.ROOT_SCOPE].concat(scopes);
|
192
|
-
} else {
|
193
|
-
this._scopeChain = [this.ROOT_SCOPE];
|
123
|
+
return undefined;
|
124
|
+
}
|
125
|
+
spliceScope(scopeId) {
|
126
|
+
if (scopeId) {
|
127
|
+
const position = this.indexOfScope(scopeId);
|
128
|
+
if (position !== -1) {
|
129
|
+
this._scopeChain.splice(position, 1);
|
194
130
|
}
|
195
131
|
}
|
196
|
-
}
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
}
|
205
|
-
}, {
|
206
|
-
key: "hasKey",
|
207
|
-
value: function hasKey(key, scope) {
|
208
|
-
var _this$_scopes$scope;
|
209
|
-
return !!((_this$_scopes$scope = this._scopes[scope]) !== null && _this$_scopes$scope !== void 0 && _this$_scopes$scope[key]);
|
210
|
-
}
|
211
|
-
}, {
|
212
|
-
key: "_getKeyboardEventType",
|
213
|
-
value: function _getKeyboardEventType(params) {
|
214
|
-
if (!params.type && sniffr.os.name === 'windows') {
|
215
|
-
var isSystemShortcut = typeof params.key === 'string' && params.key.match(/ctrl/i) && params.key.match(/shift/i) && params.key.match(/[0-9]/);
|
216
|
-
/**
|
217
|
-
* Windows system shortcuts (ctrl+shift+[0-9] are caught by the OS on 'keydown', so let's use 'keyup'
|
218
|
-
*/
|
219
|
-
if (isSystemShortcut) {
|
220
|
-
return 'keyup';
|
221
|
-
}
|
132
|
+
}
|
133
|
+
setScope(scope) {
|
134
|
+
if (scope) {
|
135
|
+
let scopeChain;
|
136
|
+
if (typeof scope === 'string' || !Array.isArray(scope) && typeof scope === 'object' && scope !== null) {
|
137
|
+
scopeChain = [scope];
|
138
|
+
} else {
|
139
|
+
scopeChain = scope;
|
222
140
|
}
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
}
|
230
|
-
}, {
|
231
|
-
key: "indexOfScope",
|
232
|
-
value: function indexOfScope(scopeId) {
|
233
|
-
return this._scopeChain.findIndex(function (scope) {
|
234
|
-
return scope.scopeId === scopeId;
|
141
|
+
if (!Array.isArray(scopeChain)) {
|
142
|
+
return;
|
143
|
+
}
|
144
|
+
const scopes = scopeChain.map(scopeItem => {
|
145
|
+
const isScopeId = typeof scopeItem === 'string';
|
146
|
+
return isScopeId ? this.wrapScope(scopeItem) : scopeItem;
|
235
147
|
});
|
148
|
+
this._scopeChain = [this.ROOT_SCOPE].concat(scopes);
|
149
|
+
} else {
|
150
|
+
this._scopeChain = [this.ROOT_SCOPE];
|
151
|
+
}
|
152
|
+
}
|
153
|
+
wrapScope(scopeId) {
|
154
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
155
|
+
return {
|
156
|
+
scopeId,
|
157
|
+
options
|
158
|
+
};
|
159
|
+
}
|
160
|
+
hasKey(key, scope) {
|
161
|
+
return !!this._scopes[scope]?.[key];
|
162
|
+
}
|
163
|
+
_defaultFilter = (e, element, key) => {
|
164
|
+
// if the element or its parents have the class "ring-js-shortcuts" then no need to stop
|
165
|
+
if (element === document || !(element instanceof HTMLElement) || key == null || element.matches(this.ALLOW_SHORTCUTS_SELECTOR) || (element.dataset.enabledShortcuts != null ? element.dataset.enabledShortcuts.split(',').includes(key) : element.closest(this.ALLOW_SHORTCUTS_SELECTOR) != null)) {
|
166
|
+
return false;
|
236
167
|
}
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
168
|
+
// stop for input, select, and textarea
|
169
|
+
return element.matches('input:not([type=checkbox]),select,textarea') || element.contentEditable === 'true';
|
170
|
+
};
|
171
|
+
_getKeyboardEventType(params) {
|
172
|
+
if (!params.type && sniffr.os.name === 'windows') {
|
173
|
+
const isSystemShortcut = typeof params.key === 'string' && params.key.match(/ctrl/i) && params.key.match(/shift/i) && params.key.match(/[0-9]/);
|
174
|
+
/**
|
175
|
+
* Windows system shortcuts (ctrl+shift+[0-9] are caught by the OS on 'keydown', so let's use 'keyup'
|
176
|
+
*/
|
177
|
+
if (isSystemShortcut) {
|
178
|
+
return 'keyup';
|
179
|
+
}
|
243
180
|
}
|
244
|
-
|
245
|
-
}
|
181
|
+
return params.type;
|
182
|
+
}
|
183
|
+
setFilter(fn) {
|
184
|
+
this.combokeys.stopCallback = typeof fn === 'function' ? fn : this._defaultFilter;
|
185
|
+
}
|
186
|
+
indexOfScope(scopeId) {
|
187
|
+
return this._scopeChain.findIndex(scope => scope.scopeId === scopeId);
|
188
|
+
}
|
189
|
+
reset() {
|
190
|
+
this._scopes = {};
|
191
|
+
this.setScope();
|
192
|
+
this.combokeys.reset();
|
193
|
+
}
|
194
|
+
}
|
246
195
|
var shortcuts = new Shortcuts();
|
247
196
|
|
248
197
|
export { shortcuts as default };
|
@@ -1,10 +1,7 @@
|
|
1
|
-
import 'core-js/modules/es.array.map.js';
|
2
|
-
import 'core-js/modules/es.regexp.exec.js';
|
3
|
-
import 'core-js/modules/es.string.split.js';
|
4
1
|
import sniffr from '../global/sniffer.js';
|
5
2
|
import 'sniffr';
|
6
3
|
|
7
|
-
|
4
|
+
const macSymbolsMap = {
|
8
5
|
enter: '⏎',
|
9
6
|
shift: '⇧',
|
10
7
|
meta: '⌘',
|
@@ -24,7 +21,7 @@ var macSymbolsMap = {
|
|
24
21
|
right: '→',
|
25
22
|
down: '↓'
|
26
23
|
};
|
27
|
-
|
24
|
+
const winSymbolsMap = {
|
28
25
|
enter: 'Enter',
|
29
26
|
shift: 'Shift',
|
30
27
|
meta: 'Ctrl',
|
@@ -45,12 +42,10 @@ var winSymbolsMap = {
|
|
45
42
|
down: '↓'
|
46
43
|
};
|
47
44
|
function getShortcutTitle(shortcut) {
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
return shortcut.split(/\+/g).map(
|
52
|
-
return symbolsMap[symbol] || symbol.toUpperCase();
|
53
|
-
}).join(KEY_SEPARATOR);
|
45
|
+
const MAC_OS = sniffr.os.name === 'macos';
|
46
|
+
const KEY_SEPARATOR = MAC_OS ? '' : '+';
|
47
|
+
const symbolsMap = MAC_OS ? macSymbolsMap : winSymbolsMap;
|
48
|
+
return shortcut.split(/\+/g).map(symbol => symbolsMap[symbol] || symbol.toUpperCase()).join(KEY_SEPARATOR);
|
54
49
|
}
|
55
50
|
|
56
51
|
export { getShortcutTitle };
|
@@ -1,59 +1,33 @@
|
|
1
|
-
import { a as _inherits, b as _createClass, _ as _defineProperty, c as _objectWithoutProperties, f as _classCallCheck, g as _callSuper } from '../_helpers/_rollupPluginBabelHelpers.js';
|
2
|
-
import 'core-js/modules/es.array.concat.js';
|
3
1
|
import React from 'react';
|
4
2
|
import PropTypes from 'prop-types';
|
5
3
|
import getUID from '../global/get-uid.js';
|
6
4
|
import Shortcuts from './shortcuts.js';
|
7
|
-
import 'core-js/modules/es.object.to-string.js';
|
8
|
-
import 'core-js/modules/es.regexp.to-string.js';
|
9
|
-
import 'core-js/modules/es.array.map.js';
|
10
5
|
import './core.js';
|
11
|
-
import 'core-js/modules/es.array.find-index.js';
|
12
|
-
import 'core-js/modules/es.array.includes.js';
|
13
|
-
import 'core-js/modules/es.array.slice.js';
|
14
|
-
import 'core-js/modules/es.array.splice.js';
|
15
|
-
import 'core-js/modules/es.object.assign.js';
|
16
|
-
import 'core-js/modules/es.regexp.exec.js';
|
17
|
-
import 'core-js/modules/es.string.includes.js';
|
18
|
-
import 'core-js/modules/es.string.match.js';
|
19
6
|
import 'combokeys';
|
20
7
|
import '../global/sniffer.js';
|
21
8
|
import 'sniffr';
|
22
9
|
|
23
|
-
var _excluded = ["rgShortcutsOptions", "rgShortcutsMap"];
|
24
10
|
function shortcutsHOC(ComposedComponent) {
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
11
|
+
return class WithShortcuts extends React.Component {
|
12
|
+
static propTypes = {
|
13
|
+
rgShortcutsOptions: PropTypes.object,
|
14
|
+
rgShortcutsMap: PropTypes.object
|
15
|
+
};
|
16
|
+
_shortcutsScopeUid = getUID('rg-shortcuts-');
|
17
|
+
render() {
|
18
|
+
const {
|
19
|
+
rgShortcutsOptions,
|
20
|
+
rgShortcutsMap,
|
21
|
+
...props
|
22
|
+
} = this.props;
|
23
|
+
return /*#__PURE__*/React.createElement(Shortcuts, {
|
24
|
+
scope: this._shortcutsScopeUid,
|
25
|
+
map: rgShortcutsMap,
|
26
|
+
options: rgShortcutsOptions,
|
27
|
+
disabled: rgShortcutsOptions.disabled
|
28
|
+
}, /*#__PURE__*/React.createElement(ComposedComponent, props));
|
36
29
|
}
|
37
|
-
|
38
|
-
return _createClass(WithShortcuts, [{
|
39
|
-
key: "render",
|
40
|
-
value: function render() {
|
41
|
-
var _this$props = this.props,
|
42
|
-
rgShortcutsOptions = _this$props.rgShortcutsOptions,
|
43
|
-
rgShortcutsMap = _this$props.rgShortcutsMap,
|
44
|
-
props = _objectWithoutProperties(_this$props, _excluded);
|
45
|
-
return /*#__PURE__*/React.createElement(Shortcuts, {
|
46
|
-
scope: this._shortcutsScopeUid,
|
47
|
-
map: rgShortcutsMap,
|
48
|
-
options: rgShortcutsOptions,
|
49
|
-
disabled: rgShortcutsOptions.disabled
|
50
|
-
}, /*#__PURE__*/React.createElement(ComposedComponent, props));
|
51
|
-
}
|
52
|
-
}]);
|
53
|
-
}(React.Component), _defineProperty(_WithShortcuts, "propTypes", {
|
54
|
-
rgShortcutsOptions: PropTypes.object,
|
55
|
-
rgShortcutsMap: PropTypes.object
|
56
|
-
}), _WithShortcuts;
|
30
|
+
};
|
57
31
|
}
|
58
32
|
|
59
33
|
export { shortcutsHOC as default };
|