@jetbrains/ring-ui 5.0.156 → 5.0.157

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 (295) hide show
  1. package/dist/_helpers/_rollupPluginBabelHelpers.js +642 -1
  2. package/dist/_helpers/anchor.js +6 -7
  3. package/dist/_helpers/button__classes.js +16 -28
  4. package/dist/_helpers/card.js +107 -95
  5. package/dist/_helpers/dialog__body-scroll-preventer.js +20 -11
  6. package/dist/_helpers/footer.js +29 -34
  7. package/dist/_helpers/query-assist__suggestions.js +91 -74
  8. package/dist/_helpers/select__filter.js +71 -48
  9. package/dist/_helpers/services-link.js +41 -29
  10. package/dist/_helpers/sidebar.js +103 -99
  11. package/dist/_helpers/theme.js +42 -35
  12. package/dist/_helpers/title.js +71 -57
  13. package/dist/alert/alert.js +199 -158
  14. package/dist/alert/container.js +43 -32
  15. package/dist/alert-service/alert-service.js +172 -104
  16. package/dist/analytics/analytics.js +92 -68
  17. package/dist/analytics/analytics__custom-plugin.js +84 -60
  18. package/dist/analytics/analytics__fus-plugin.js +28 -15
  19. package/dist/analytics/analytics__ga-plugin.js +60 -43
  20. package/dist/analytics/analytics__plugin-utils.js +28 -22
  21. package/dist/auth/auth.js +36 -4
  22. package/dist/auth/auth__core.js +1458 -732
  23. package/dist/auth/background-flow.js +129 -87
  24. package/dist/auth/down-notification.js +75 -30
  25. package/dist/auth/iframe-flow.js +136 -75
  26. package/dist/auth/landing.js +90 -30
  27. package/dist/auth/request-builder.js +82 -46
  28. package/dist/auth/response-parser.js +119 -86
  29. package/dist/auth/storage.js +333 -171
  30. package/dist/auth/token-validator.js +244 -137
  31. package/dist/auth/window-flow.js +136 -92
  32. package/dist/auth-dialog/auth-dialog.js +176 -114
  33. package/dist/auth-dialog-service/auth-dialog-service.js +32 -7
  34. package/dist/auth-ng/auth-ng.js +70 -34
  35. package/dist/auth-ng/auth-ng.mock.js +6 -6
  36. package/dist/autofocus-ng/autofocus-ng.js +23 -8
  37. package/dist/avatar/avatar-example-datauri.js +1 -23
  38. package/dist/avatar/avatar.js +155 -119
  39. package/dist/avatar/fallback-avatar.js +41 -22
  40. package/dist/avatar-editor-ng/avatar-editor-ng.js +56 -23
  41. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +1 -28
  42. package/dist/avatar-ng/avatar-ng.js +23 -1
  43. package/dist/badge/badge.js +43 -35
  44. package/dist/badge-ng/badge-ng.js +13 -1
  45. package/dist/breadcrumb-ng/breadcrumb-ng.js +15 -29
  46. package/dist/button/button.js +111 -87
  47. package/dist/button/button__classes.js +1 -0
  48. package/dist/button-group/button-group.js +35 -19
  49. package/dist/button-group/caption.js +22 -14
  50. package/dist/button-group-ng/button-group-ng.js +13 -7
  51. package/dist/button-ng/button-ng.js +154 -133
  52. package/dist/button-set/button-set.js +34 -20
  53. package/dist/button-set-ng/button-set-ng.js +2 -2
  54. package/dist/button-toolbar/button-toolbar.js +33 -19
  55. package/dist/button-toolbar-ng/button-toolbar-ng.js +5 -3
  56. package/dist/caret/caret.js +225 -188
  57. package/dist/checkbox/checkbox.js +104 -76
  58. package/dist/checkbox-ng/checkbox-ng.js +18 -27
  59. package/dist/clipboard/clipboard-fallback.js +10 -10
  60. package/dist/clipboard/clipboard.js +131 -34
  61. package/dist/code/code.js +168 -92
  62. package/dist/compiler-ng/compiler-ng.js +18 -15
  63. package/dist/confirm/confirm.js +108 -66
  64. package/dist/confirm-ng/confirm-ng.js +33 -4
  65. package/dist/confirm-service/confirm-service.js +66 -42
  66. package/dist/content-layout/content-layout.js +64 -43
  67. package/dist/content-layout/sidebar.js +1 -0
  68. package/dist/contenteditable/contenteditable.js +61 -50
  69. package/dist/control-label/control-label.js +11 -15
  70. package/dist/data-list/data-list.js +184 -128
  71. package/dist/data-list/data-list.mock.js +11 -2
  72. package/dist/data-list/item.js +174 -143
  73. package/dist/data-list/selection.js +139 -76
  74. package/dist/data-list/title.js +13 -1
  75. package/dist/data-list-ng/data-list-ng.js +31 -1
  76. package/dist/date-picker/consts.js +18 -15
  77. package/dist/date-picker/date-input.js +147 -115
  78. package/dist/date-picker/date-picker.js +285 -228
  79. package/dist/date-picker/date-popup.js +397 -356
  80. package/dist/date-picker/day.js +98 -84
  81. package/dist/date-picker/month-names.js +64 -43
  82. package/dist/date-picker/month-slider.js +74 -51
  83. package/dist/date-picker/month.js +21 -15
  84. package/dist/date-picker/months.js +48 -43
  85. package/dist/date-picker/weekdays.js +18 -12
  86. package/dist/date-picker/years.js +109 -84
  87. package/dist/dialog/dialog.js +189 -141
  88. package/dist/dialog/dialog__body-scroll-preventer.js +5 -0
  89. package/dist/dialog-ng/dialog-ng.js +401 -287
  90. package/dist/dialog-ng/dialog-ng__template.js +1 -70
  91. package/dist/docked-panel-ng/docked-panel-ng.js +33 -18
  92. package/dist/dropdown/anchor.js +10 -0
  93. package/dist/dropdown/dropdown.js +214 -182
  94. package/dist/dropdown-menu/dropdown-menu.js +102 -72
  95. package/dist/editable-heading/editable-heading.js +100 -58
  96. package/dist/error-bubble/error-bubble.js +64 -31
  97. package/dist/error-message/error-message.js +61 -38
  98. package/dist/error-message-ng/error-message-ng.js +11 -22
  99. package/dist/footer/footer.js +11 -1
  100. package/dist/footer-ng/footer-ng.js +64 -36
  101. package/dist/form-ng/form-ng.js +66 -56
  102. package/dist/global/angular-component-factory.js +76 -53
  103. package/dist/global/compose.js +10 -1
  104. package/dist/global/composeRefs.js +12 -7
  105. package/dist/global/controls-height.js +2 -2
  106. package/dist/global/create-stateful-context.js +19 -19
  107. package/dist/global/data-tests.js +15 -7
  108. package/dist/global/dom.js +95 -53
  109. package/dist/global/focus-sensor-hoc.js +134 -122
  110. package/dist/global/fuzzy-highlight.js +41 -27
  111. package/dist/global/get-event-key.js +8 -8
  112. package/dist/global/get-uid.js +8 -4
  113. package/dist/global/inject-styles.js +15 -10
  114. package/dist/global/linear-function.js +2 -2
  115. package/dist/global/listeners.js +53 -27
  116. package/dist/global/memoize.js +13 -6
  117. package/dist/global/normalize-indent.js +51 -19
  118. package/dist/global/promise-with-timeout.js +8 -6
  119. package/dist/global/prop-types.js +5 -3
  120. package/dist/global/react-dom-renderer.js +47 -28
  121. package/dist/global/react-render-adapter.js +19 -13
  122. package/dist/global/rerender-hoc.js +41 -16
  123. package/dist/global/ring-angular-component.js +20 -10
  124. package/dist/global/schedule-raf.js +6 -5
  125. package/dist/global/sniffer.js +1 -1
  126. package/dist/global/theme.js +24 -0
  127. package/dist/global/trivial-template-tag.js +10 -3
  128. package/dist/global/typescript-utils.js +6 -2
  129. package/dist/global/url.js +27 -21
  130. package/dist/global/use-event-callback.js +4 -6
  131. package/dist/grid/col.js +55 -35
  132. package/dist/grid/grid.js +36 -17
  133. package/dist/grid/row.js +48 -35
  134. package/dist/group/group.js +27 -17
  135. package/dist/group-ng/group-ng.js +2 -2
  136. package/dist/header/header.js +80 -33
  137. package/dist/header/logo.js +39 -20
  138. package/dist/header/profile.js +188 -150
  139. package/dist/header/services-link.js +9 -0
  140. package/dist/header/services.js +118 -73
  141. package/dist/header/smart-profile.js +207 -111
  142. package/dist/header/smart-services.js +115 -62
  143. package/dist/header/tray-icon.js +38 -21
  144. package/dist/header/tray.js +34 -21
  145. package/dist/heading/heading.js +25 -26
  146. package/dist/heading-ng/heading-ng.js +11 -1
  147. package/dist/http/http.js +368 -215
  148. package/dist/http/http.mock.js +104 -49
  149. package/dist/hub-source/hub-source.js +191 -83
  150. package/dist/hub-source/hub-source__user.js +45 -11
  151. package/dist/hub-source/hub-source__users-groups.js +67 -37
  152. package/dist/i18n/i18n-context.js +14 -10
  153. package/dist/i18n/i18n.js +11 -7
  154. package/dist/icon/icon.js +94 -76
  155. package/dist/icon/icon__svg.js +31 -24
  156. package/dist/icon/index.js +9 -0
  157. package/dist/icon-ng/icon-ng.js +27 -15
  158. package/dist/input/input.js +184 -145
  159. package/dist/input-ng/input-ng.js +96 -118
  160. package/dist/island/adaptive-island-hoc.js +45 -30
  161. package/dist/island/content.js +130 -115
  162. package/dist/island/header.js +69 -56
  163. package/dist/island/island.js +40 -28
  164. package/dist/island-legacy/content-legacy.js +27 -17
  165. package/dist/island-legacy/header-legacy.js +29 -19
  166. package/dist/island-legacy/island-legacy.js +27 -17
  167. package/dist/island-ng/island-content-ng.js +17 -26
  168. package/dist/island-ng/island-header-ng.js +9 -12
  169. package/dist/island-ng/island-ng-class-fixer.js +3 -0
  170. package/dist/island-ng/island-ng.js +6 -10
  171. package/dist/link/clickableLink.js +61 -44
  172. package/dist/link/link.js +85 -74
  173. package/dist/link-ng/link-ng.js +3 -5
  174. package/dist/list/consts.js +1 -1
  175. package/dist/list/list.js +696 -602
  176. package/dist/list/list__custom.js +61 -44
  177. package/dist/list/list__hint.js +21 -10
  178. package/dist/list/list__item.js +167 -129
  179. package/dist/list/list__link.js +54 -37
  180. package/dist/list/list__separator.js +24 -14
  181. package/dist/list/list__title.js +32 -22
  182. package/dist/list/list__users-groups-source.js +131 -54
  183. package/dist/loader/loader.js +78 -43
  184. package/dist/loader/loader__core.js +257 -189
  185. package/dist/loader-inline/loader-inline.js +37 -23
  186. package/dist/loader-inline-ng/loader-inline-ng.js +2 -2
  187. package/dist/loader-ng/loader-ng.js +46 -19
  188. package/dist/loader-screen/loader-screen.js +48 -25
  189. package/dist/loader-screen-ng/loader-screen-ng.js +46 -30
  190. package/dist/login-dialog/login-dialog.js +162 -111
  191. package/dist/login-dialog/service.js +35 -7
  192. package/dist/markdown/code.js +31 -9
  193. package/dist/markdown/heading.js +3 -5
  194. package/dist/markdown/link.js +13 -6
  195. package/dist/markdown/markdown.js +66 -33
  196. package/dist/message/message.js +157 -125
  197. package/dist/message-bundle-ng/message-bundle-ng.js +128 -44
  198. package/dist/old-browsers-message/old-browsers-message.js +19 -11
  199. package/dist/old-browsers-message/old-browsers-message__stop.js +8 -0
  200. package/dist/old-browsers-message/white-list.js +16 -9
  201. package/dist/pager/pager.js +275 -210
  202. package/dist/pager-ng/pager-ng.js +36 -1
  203. package/dist/panel/panel.js +27 -17
  204. package/dist/panel-ng/panel-ng.js +14 -1
  205. package/dist/permissions/permissions.js +173 -127
  206. package/dist/permissions/permissions__cache.js +225 -194
  207. package/dist/permissions-ng/permissions-ng.js +86 -35
  208. package/dist/place-under-ng/place-under-ng.js +68 -45
  209. package/dist/popup/popup.consts.js +1 -1
  210. package/dist/popup/popup.js +342 -280
  211. package/dist/popup/popup.target.js +8 -9
  212. package/dist/popup/position.js +153 -153
  213. package/dist/popup-menu/popup-menu.js +86 -44
  214. package/dist/progress-bar/progress-bar.js +97 -80
  215. package/dist/progress-bar-ng/progress-bar-ng.js +11 -1
  216. package/dist/promised-click-ng/promised-click-ng.js +92 -58
  217. package/dist/proxy-attrs/proxy-attrs.js +18 -9
  218. package/dist/query-assist/query-assist.js +903 -832
  219. package/dist/query-assist/query-assist__suggestions.js +33 -1
  220. package/dist/query-assist-ng/query-assist-ng.js +38 -1
  221. package/dist/radio/radio.js +36 -19
  222. package/dist/radio/radio__item.js +71 -52
  223. package/dist/radio-ng/radio-ng.js +14 -25
  224. package/dist/save-field-ng/save-field-ng.js +86 -52
  225. package/dist/save-field-ng/save-field-ng__template.js +1 -32
  226. package/dist/select/select.js +937 -835
  227. package/dist/select/select__filter.js +33 -0
  228. package/dist/select/select__popup.js +472 -359
  229. package/dist/select-ng/select-ng.js +125 -74
  230. package/dist/select-ng/select-ng__lazy.js +101 -50
  231. package/dist/select-ng/select-ng__options.js +107 -81
  232. package/dist/shortcuts/core.js +218 -166
  233. package/dist/shortcuts/shortcut-title.js +11 -6
  234. package/dist/shortcuts/shortcuts-hoc.js +47 -19
  235. package/dist/shortcuts/shortcuts.js +77 -50
  236. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +104 -53
  237. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +1 -48
  238. package/dist/shortcuts-ng/shortcuts-ng.js +86 -51
  239. package/dist/sidebar-ng/sidebar-ng.js +53 -22
  240. package/dist/sidebar-ng/sidebar-ng__button-template.js +1 -18
  241. package/dist/sidebar-ng/sidebar-ng__template.js +1 -10
  242. package/dist/storage/storage.js +35 -4
  243. package/dist/storage/storage__fallback.js +224 -149
  244. package/dist/storage/storage__local.js +156 -90
  245. package/dist/tab-trap/tab-trap.js +157 -122
  246. package/dist/table/cell.js +28 -14
  247. package/dist/table/disable-hover-hoc.js +53 -33
  248. package/dist/table/header-cell.js +87 -64
  249. package/dist/table/header.js +126 -98
  250. package/dist/table/multitable.js +127 -107
  251. package/dist/table/row-with-focus-sensor.js +73 -25
  252. package/dist/table/row.js +208 -170
  253. package/dist/table/selection-adapter.js +3 -1
  254. package/dist/table/selection-shortcuts-hoc.js +184 -181
  255. package/dist/table/selection.js +228 -156
  256. package/dist/table/smart-table.js +93 -51
  257. package/dist/table/table.js +348 -281
  258. package/dist/table-legacy-ng/table-legacy-ng.js +117 -102
  259. package/dist/table-legacy-ng/table-legacy-ng__pager.js +42 -10
  260. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +92 -69
  261. package/dist/table-legacy-ng/table-legacy-ng__selection.js +169 -119
  262. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +36 -21
  263. package/dist/table-ng/smart-table-ng.js +31 -1
  264. package/dist/table-ng/table-ng.js +31 -1
  265. package/dist/tabs/collapsible-more.js +87 -50
  266. package/dist/tabs/collapsible-tab.js +45 -38
  267. package/dist/tabs/collapsible-tabs.js +161 -94
  268. package/dist/tabs/custom-item.js +2 -4
  269. package/dist/tabs/dumb-tabs.js +122 -75
  270. package/dist/tabs/smart-tabs.js +75 -29
  271. package/dist/tabs/tab-link.js +29 -19
  272. package/dist/tabs/tab.js +33 -19
  273. package/dist/tabs/tabs.js +35 -0
  274. package/dist/tabs-ng/tabs-ng.js +38 -24
  275. package/dist/tabs-ng/tabs-ng__template.js +1 -38
  276. package/dist/tag/tag.js +170 -133
  277. package/dist/tags-input/tags-input.js +428 -327
  278. package/dist/tags-input-ng/tags-input-ng.js +37 -1
  279. package/dist/tags-list/tags-list.js +80 -56
  280. package/dist/template-ng/template-ng.js +50 -39
  281. package/dist/text/text.js +38 -28
  282. package/dist/title-ng/title-ng.js +28 -23
  283. package/dist/toggle/toggle.js +72 -56
  284. package/dist/toggle-ng/toggle-ng.js +14 -1
  285. package/dist/tooltip/tooltip.js +192 -146
  286. package/dist/tooltip-ng/tooltip-ng.js +51 -25
  287. package/dist/user-agreement/service.js +374 -227
  288. package/dist/user-agreement/toolbox.eula.js +1 -160
  289. package/dist/user-agreement/user-agreement.js +128 -86
  290. package/dist/user-card/card.js +32 -0
  291. package/dist/user-card/smart-user-card-tooltip.js +116 -51
  292. package/dist/user-card/tooltip.js +90 -48
  293. package/dist/user-card/user-card.js +32 -0
  294. package/dist/user-card-ng/user-card-ng.js +34 -2
  295. package/package.json +2 -2
@@ -1,197 +1,249 @@
1
+ import { _ as _createClass, d as _typeof, b as _classCallCheck, c as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import 'core-js/modules/es.array.includes.js';
3
+ import 'core-js/modules/es.string.includes.js';
4
+ import 'core-js/modules/es.object.assign.js';
5
+ import 'core-js/modules/es.array.slice.js';
6
+ import 'core-js/modules/es.array.splice.js';
7
+ import 'core-js/modules/es.array.map.js';
8
+ import 'core-js/modules/es.array.concat.js';
9
+ import 'core-js/modules/es.regexp.exec.js';
10
+ import 'core-js/modules/es.string.match.js';
11
+ import 'core-js/modules/es.array.find-index.js';
1
12
  import Combokeys from 'combokeys';
2
13
  import sniffr from '../global/sniffer.js';
3
14
  import 'sniffr';
4
15
 
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() {
16
+ var Shortcuts = /*#__PURE__*/function () {
17
+ function Shortcuts() {
18
+ var _this = this;
19
+ _classCallCheck(this, Shortcuts);
20
+ _defineProperty(this, "ALLOW_SHORTCUTS_SELECTOR", '.ring-js-shortcuts');
21
+ _defineProperty(this, "ROOT_SCOPE", {
22
+ scopeId: 'ROOT',
23
+ options: {}
24
+ });
25
+ _defineProperty(this, "_scopes", {});
26
+ _defineProperty(this, "_scopeChain", []);
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
+ });
16
57
  this.setFilter();
17
58
  this.setScope();
18
59
  }
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;
60
+ _createClass(Shortcuts, [{
61
+ key: "bind",
62
+ value:
63
+ /**
64
+ * Binds a handler to a shortcut
65
+ *
66
+ * @param params.key {string | Array.<string>) Keys to bind
67
+ * @param params.handler {Function} Events handle
68
+ * @param params.scope {string} Scope (optional)
69
+ * @param params.type {string} Event type, will be passed to Combokeys (optional)
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
+ }));
29
83
  }
84
+ return;
30
85
  }
31
- if (scopeInChain.options.modal) {
32
- return true;
86
+ if (typeof params.key !== 'string') {
87
+ throw new Error('Shortcut key should exist');
33
88
  }
34
- }
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
- }));
89
+ var scope = this._scopes[params.scope];
90
+ if (!scope) {
91
+ scope = this._scopes[params.scope] = {};
57
92
  }
58
- return;
93
+ scope[params.key] = params.handler;
94
+ this.combokeys.bind(params.key, this._dispatcher, this._getKeyboardEventType(params));
59
95
  }
60
- if (typeof params.key !== 'string') {
61
- throw new Error('Shortcut key should exist');
96
+ /**
97
+ * Binds a map of shortcuts to handlers with common options
98
+ *
99
+ * @map {Object) Keys to handlers map
100
+ * @options.scope {string} Scope (optional)
101
+ * @options.type {string} Event type, will be passed to Combokeys (optional)
102
+ */
103
+ }, {
104
+ key: "bindMap",
105
+ value: function bindMap(map, options) {
106
+ if (!(map instanceof Object)) {
107
+ throw new Error('Shortcuts map shouldn\'t be empty');
108
+ }
109
+ for (var key in map) {
110
+ if (map.hasOwnProperty(key)) {
111
+ this.bind(Object.assign({}, options || {}, {
112
+ key: key,
113
+ handler: map[key]
114
+ }));
115
+ }
116
+ }
62
117
  }
63
- let scope = this._scopes[params.scope];
64
- if (!scope) {
65
- scope = this._scopes[params.scope] = {};
118
+ }, {
119
+ key: "unbindScope",
120
+ value: function unbindScope(scope) {
121
+ this._scopes[scope] = null;
66
122
  }
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');
123
+ }, {
124
+ key: "getScope",
125
+ value: function getScope() {
126
+ return this._scopeChain.slice(1);
80
127
  }
81
- for (const key in map) {
82
- if (map.hasOwnProperty(key)) {
83
- this.bind(Object.assign({}, options || {}, {
84
- key,
85
- handler: map[key]
86
- }));
87
- }
128
+ }, {
129
+ key: "hasScope",
130
+ value: function hasScope(scopeId) {
131
+ return this.indexOfScope(scopeId) !== -1;
88
132
  }
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);
133
+ /**
134
+ * Adds a scope to the chain
135
+ * @param scopeId id of scope to add
136
+ * @param options options for pushing scope
137
+ * @param options.modal whether keys should fall through this scope or not.
138
+ * Useful for modals or overlays
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));
112
150
  }
113
- this._scopeChain.push(this.wrapScope(scopeId, options));
114
151
  }
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);
152
+ }, {
153
+ key: "popScope",
154
+ value: function popScope(scopeId) {
155
+ if (scopeId) {
156
+ var position = this.indexOfScope(scopeId);
157
+ if (position !== -1) {
158
+ return this._scopeChain.splice(position, this._scopeChain.length - 1);
159
+ }
121
160
  }
161
+ return undefined;
122
162
  }
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);
163
+ }, {
164
+ key: "spliceScope",
165
+ value: function spliceScope(scopeId) {
166
+ if (scopeId) {
167
+ var position = this.indexOfScope(scopeId);
168
+ if (position !== -1) {
169
+ this._scopeChain.splice(position, 1);
170
+ }
130
171
  }
131
172
  }
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];
173
+ }, {
174
+ key: "setScope",
175
+ value: function setScope(scope) {
176
+ var _this2 = this;
177
+ if (scope) {
178
+ var scopeChain;
179
+ if (typeof scope === 'string' || !Array.isArray(scope) && _typeof(scope) === 'object' && scope !== null) {
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);
138
192
  } else {
139
- scopeChain = scope;
193
+ this._scopeChain = [this.ROOT_SCOPE];
140
194
  }
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;
147
- });
148
- this._scopeChain = [this.ROOT_SCOPE].concat(scopes);
149
- } else {
150
- this._scopeChain = [this.ROOT_SCOPE];
151
195
  }
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;
196
+ }, {
197
+ key: "wrapScope",
198
+ value: function wrapScope(scopeId) {
199
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
200
+ return {
201
+ scopeId: scopeId,
202
+ options: options
203
+ };
167
204
  }
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';
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
+ }
179
222
  }
223
+ return params.type;
180
224
  }
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
- }
225
+ }, {
226
+ key: "setFilter",
227
+ value: function setFilter(fn) {
228
+ this.combokeys.stopCallback = typeof fn === 'function' ? fn : this._defaultFilter;
229
+ }
230
+ }, {
231
+ key: "indexOfScope",
232
+ value: function indexOfScope(scopeId) {
233
+ return this._scopeChain.findIndex(function (scope) {
234
+ return scope.scopeId === scopeId;
235
+ });
236
+ }
237
+ }, {
238
+ key: "reset",
239
+ value: function reset() {
240
+ this._scopes = {};
241
+ this.setScope();
242
+ this.combokeys.reset();
243
+ }
244
+ }]);
245
+ return Shortcuts;
246
+ }();
195
247
  var shortcutsInstance = new Shortcuts();
196
248
 
197
249
  export { shortcutsInstance as default };
@@ -1,7 +1,10 @@
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';
1
4
  import sniffr from '../global/sniffer.js';
2
5
  import 'sniffr';
3
6
 
4
- const macSymbolsMap = {
7
+ var macSymbolsMap = {
5
8
  enter: '⏎',
6
9
  shift: '⇧',
7
10
  meta: '⌘',
@@ -21,7 +24,7 @@ const macSymbolsMap = {
21
24
  right: '→',
22
25
  down: '↓'
23
26
  };
24
- const winSymbolsMap = {
27
+ var winSymbolsMap = {
25
28
  enter: 'Enter',
26
29
  shift: 'Shift',
27
30
  meta: 'Ctrl',
@@ -42,10 +45,12 @@ const winSymbolsMap = {
42
45
  down: '↓'
43
46
  };
44
47
  function getShortcutTitle(shortcut) {
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);
48
+ var MAC_OS = sniffr.os.name === 'macos';
49
+ var KEY_SEPARATOR = MAC_OS ? '' : '+';
50
+ var symbolsMap = MAC_OS ? macSymbolsMap : winSymbolsMap;
51
+ return shortcut.split(/\+/g).map(function (symbol) {
52
+ return symbolsMap[symbol] || symbol.toUpperCase();
53
+ }).join(KEY_SEPARATOR);
49
54
  }
50
55
 
51
56
  export { getShortcutTitle };
@@ -1,33 +1,61 @@
1
+ import { j as _inherits, k as _createSuper, _ as _createClass, c as _defineProperty, b as _classCallCheck, m as _assertThisInitialized, h as _objectWithoutProperties } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import 'core-js/modules/es.array.concat.js';
1
3
  import React from 'react';
2
4
  import PropTypes from 'prop-types';
3
5
  import getUID from '../global/get-uid.js';
4
6
  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';
5
10
  import './core.js';
11
+ import 'core-js/modules/es.array.includes.js';
12
+ import 'core-js/modules/es.string.includes.js';
13
+ import 'core-js/modules/es.object.assign.js';
14
+ import 'core-js/modules/es.array.slice.js';
15
+ import 'core-js/modules/es.array.splice.js';
16
+ import 'core-js/modules/es.regexp.exec.js';
17
+ import 'core-js/modules/es.string.match.js';
18
+ import 'core-js/modules/es.array.find-index.js';
6
19
  import 'combokeys';
7
20
  import '../global/sniffer.js';
8
21
  import 'sniffr';
9
22
 
23
+ var _excluded = ["rgShortcutsOptions", "rgShortcutsMap"];
10
24
  function shortcutsHOC(ComposedComponent) {
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));
25
+ var _class;
26
+ return _class = /*#__PURE__*/function (_React$Component) {
27
+ _inherits(WithShortcuts, _React$Component);
28
+ var _super = _createSuper(WithShortcuts);
29
+ function WithShortcuts() {
30
+ var _this;
31
+ _classCallCheck(this, WithShortcuts);
32
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
33
+ args[_key] = arguments[_key];
34
+ }
35
+ _this = _super.call.apply(_super, [this].concat(args));
36
+ _defineProperty(_assertThisInitialized(_this), "_shortcutsScopeUid", getUID('rg-shortcuts-'));
37
+ return _this;
29
38
  }
30
- };
39
+ _createClass(WithShortcuts, [{
40
+ key: "render",
41
+ value: function render() {
42
+ var _this$props = this.props,
43
+ rgShortcutsOptions = _this$props.rgShortcutsOptions,
44
+ rgShortcutsMap = _this$props.rgShortcutsMap,
45
+ props = _objectWithoutProperties(_this$props, _excluded);
46
+ return /*#__PURE__*/React.createElement(Shortcuts, {
47
+ scope: this._shortcutsScopeUid,
48
+ map: rgShortcutsMap,
49
+ options: rgShortcutsOptions,
50
+ disabled: rgShortcutsOptions.disabled
51
+ }, /*#__PURE__*/React.createElement(ComposedComponent, props));
52
+ }
53
+ }]);
54
+ return WithShortcuts;
55
+ }(React.Component), _defineProperty(_class, "propTypes", {
56
+ rgShortcutsOptions: PropTypes.object,
57
+ rgShortcutsMap: PropTypes.object
58
+ }), _class;
31
59
  }
32
60
 
33
61
  export { shortcutsHOC as default };