@jetbrains/ring-ui 5.0.156 → 5.0.158

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