@jetbrains/ring-ui 4.1.1 → 4.1.2

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 (314) hide show
  1. package/dist/_helpers/_rollupPluginBabelHelpers.js +34 -0
  2. package/dist/_helpers/anchor.js +32 -0
  3. package/dist/_helpers/badge.js +3 -0
  4. package/dist/_helpers/button-group.js +3 -0
  5. package/dist/_helpers/button-set.js +3 -0
  6. package/dist/_helpers/button-toolbar.js +3 -0
  7. package/dist/_helpers/button__classes.js +39 -0
  8. package/dist/_helpers/card.js +75 -0
  9. package/dist/_helpers/checkbox.js +3 -0
  10. package/dist/_helpers/date-picker.js +3 -0
  11. package/dist/_helpers/dialog__body-scroll-preventer.js +57 -0
  12. package/dist/_helpers/error-message.js +3 -0
  13. package/dist/_helpers/footer.js +121 -0
  14. package/dist/_helpers/grid.js +3 -0
  15. package/dist/_helpers/group.js +3 -0
  16. package/dist/_helpers/header.js +3 -0
  17. package/dist/_helpers/icon.js +3 -0
  18. package/dist/_helpers/inject-styles.js +22 -0
  19. package/dist/_helpers/input.js +3 -0
  20. package/dist/_helpers/island.js +3 -0
  21. package/dist/_helpers/link.js +3 -0
  22. package/dist/_helpers/list.js +3 -0
  23. package/dist/_helpers/loader-screen.js +3 -0
  24. package/dist/_helpers/panel.js +3 -0
  25. package/dist/_helpers/query-assist__suggestions.js +95 -0
  26. package/dist/_helpers/radio.js +3 -0
  27. package/dist/_helpers/select__filter.js +76 -0
  28. package/dist/_helpers/services-link.js +40 -0
  29. package/dist/_helpers/sidebar.js +125 -0
  30. package/dist/_helpers/table.js +3 -0
  31. package/dist/_helpers/tabs.js +3 -0
  32. package/dist/_helpers/title.js +99 -0
  33. package/dist/alert/alert.js +260 -0
  34. package/dist/alert/container.js +48 -0
  35. package/dist/alert-service/alert-service.js +170 -0
  36. package/dist/analytics/analytics.js +116 -0
  37. package/dist/analytics/analytics__custom-plugin.js +127 -0
  38. package/dist/analytics/analytics__fus-plugin.js +101 -0
  39. package/dist/analytics/analytics__ga-plugin.js +66 -0
  40. package/dist/analytics/analytics__plugin-utils.js +79 -0
  41. package/dist/analytics-ng/analytics-ng.js +94 -0
  42. package/dist/auth/auth.js +93 -0
  43. package/dist/auth/auth__core.js +1025 -0
  44. package/dist/auth/background-flow.js +122 -0
  45. package/dist/auth/down-notification.js +114 -0
  46. package/dist/auth/iframe-flow.js +150 -0
  47. package/dist/auth/landing-entry.js +5 -0
  48. package/dist/auth/landing.js +87 -0
  49. package/dist/auth/request-builder.js +75 -0
  50. package/dist/auth/response-parser.js +117 -0
  51. package/dist/auth/storage.js +280 -0
  52. package/dist/auth/token-validator.js +176 -0
  53. package/dist/auth/window-flow.js +133 -0
  54. package/dist/auth-dialog/auth-dialog.js +134 -0
  55. package/dist/auth-dialog-service/auth-dialog-service.js +68 -0
  56. package/dist/auth-ng/auth-ng.js +203 -0
  57. package/dist/auth-ng/auth-ng.mock.js +33 -0
  58. package/dist/autofocus-ng/autofocus-ng.js +50 -0
  59. package/dist/avatar/avatar-example-datauri.js +26 -0
  60. package/dist/avatar/avatar.js +161 -0
  61. package/dist/avatar/fallback-avatar.js +141 -0
  62. package/dist/avatar-editor-ng/avatar-editor-ng.js +164 -0
  63. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +30 -0
  64. package/dist/avatar-ng/avatar-ng.js +18 -0
  65. package/dist/badge/badge.js +50 -0
  66. package/dist/badge-ng/badge-ng.js +16 -0
  67. package/dist/breadcrumb-ng/breadcrumb-ng.js +61 -0
  68. package/dist/button/button.js +123 -0
  69. package/dist/button/button__classes.js +5 -0
  70. package/dist/button-group/button-group.js +30 -0
  71. package/dist/button-group/caption.js +24 -0
  72. package/dist/button-group-ng/button-group-ng.js +38 -0
  73. package/dist/button-ng/button-ng.js +223 -0
  74. package/dist/button-set/button-set.js +26 -0
  75. package/dist/button-set-ng/button-set-ng.js +19 -0
  76. package/dist/button-toolbar/button-toolbar.js +29 -0
  77. package/dist/button-toolbar-ng/button-toolbar-ng.js +23 -0
  78. package/dist/caret/caret.js +264 -0
  79. package/dist/checkbox/checkbox.js +108 -0
  80. package/dist/checkbox-ng/checkbox-ng.js +55 -0
  81. package/dist/code/code.js +136 -0
  82. package/dist/compiler-ng/compiler-ng.js +53 -0
  83. package/dist/confirm/confirm.js +125 -0
  84. package/dist/confirm-ng/confirm-ng.js +66 -0
  85. package/dist/confirm-service/confirm-service.js +114 -0
  86. package/dist/content-layout/content-layout.js +65 -0
  87. package/dist/content-layout/sidebar.js +6 -0
  88. package/dist/contenteditable/contenteditable.js +78 -0
  89. package/dist/data-list/data-list.js +206 -0
  90. package/dist/data-list/data-list.mock.js +190 -0
  91. package/dist/data-list/item.js +227 -0
  92. package/dist/data-list/selection.js +101 -0
  93. package/dist/data-list/title.js +18 -0
  94. package/dist/data-list-ng/data-list-ng.js +59 -0
  95. package/dist/date-picker/consts.js +69 -0
  96. package/dist/date-picker/date-input.js +173 -0
  97. package/dist/date-picker/date-picker.js +365 -0
  98. package/dist/date-picker/date-popup.js +482 -0
  99. package/dist/date-picker/day.js +119 -0
  100. package/dist/date-picker/formats.js +3 -0
  101. package/dist/date-picker/month-names.js +99 -0
  102. package/dist/date-picker/month-slider.js +83 -0
  103. package/dist/date-picker/month.js +54 -0
  104. package/dist/date-picker/months.js +121 -0
  105. package/dist/date-picker/weekdays.js +32 -0
  106. package/dist/date-picker/years.js +109 -0
  107. package/dist/dialog/dialog.js +200 -0
  108. package/dist/dialog/dialog__body-scroll-preventer.js +2 -0
  109. package/dist/dialog-ng/dialog-ng.js +601 -0
  110. package/dist/dialog-ng/dialog-ng__template.js +71 -0
  111. package/dist/docked-panel-ng/docked-panel-ng.js +170 -0
  112. package/dist/dropdown/anchor.js +17 -0
  113. package/dist/dropdown/dropdown.js +234 -0
  114. package/dist/dropdown-menu/dropdown-menu.js +175 -0
  115. package/dist/error-bubble/error-bubble.js +57 -0
  116. package/dist/error-message/error-message.js +55 -0
  117. package/dist/error-message-ng/error-message-ng.js +53 -0
  118. package/dist/footer/footer.js +11 -0
  119. package/dist/footer-ng/footer-ng.js +75 -0
  120. package/dist/form-ng/form-ng.js +169 -0
  121. package/dist/global/angular-component-factory.js +82 -0
  122. package/dist/global/compose.js +9 -0
  123. package/dist/global/composeRefs.js +15 -0
  124. package/dist/global/conic-gradient.js +35 -0
  125. package/dist/global/create-stateful-context.js +54 -0
  126. package/dist/global/data-tests.js +22 -0
  127. package/dist/global/dom.js +124 -0
  128. package/dist/global/focus-sensor-hoc.js +145 -0
  129. package/dist/global/fuzzy-highlight.js +67 -0
  130. package/dist/global/get-event-key.js +111 -0
  131. package/dist/global/get-uid.js +15 -0
  132. package/dist/global/inject-styles.js +17 -0
  133. package/dist/global/linear-function.js +17 -0
  134. package/dist/global/listeners.js +42 -0
  135. package/dist/global/memoize.js +18 -0
  136. package/dist/global/normalize-indent.js +28 -0
  137. package/dist/global/promise-with-timeout.js +13 -0
  138. package/dist/global/radial-gradient-mask.js +49 -0
  139. package/dist/global/react-dom-renderer.js +45 -0
  140. package/dist/global/rerender-hoc.js +51 -0
  141. package/dist/global/ring-angular-component.js +24 -0
  142. package/dist/global/schedule-raf.js +31 -0
  143. package/dist/global/sniffer.js +6 -0
  144. package/dist/global/supports-css.js +20 -0
  145. package/dist/global/theme.js +54 -0
  146. package/dist/global/trivial-template-tag.js +15 -0
  147. package/dist/global/url.js +163 -0
  148. package/dist/global/variables_dark.js +57 -0
  149. package/dist/grid/col.js +60 -0
  150. package/dist/grid/grid.js +33 -0
  151. package/dist/grid/row.js +64 -0
  152. package/dist/group/group.js +31 -0
  153. package/dist/group-ng/group-ng.js +11 -0
  154. package/dist/header/header.js +147 -0
  155. package/dist/header/logo.js +38 -0
  156. package/dist/header/profile.js +217 -0
  157. package/dist/header/services-link.js +11 -0
  158. package/dist/header/services.js +136 -0
  159. package/dist/header/smart-profile.js +230 -0
  160. package/dist/header/smart-services.js +160 -0
  161. package/dist/header/tray-icon.js +45 -0
  162. package/dist/header/tray.js +31 -0
  163. package/dist/heading/heading.js +73 -0
  164. package/dist/http/http.js +216 -0
  165. package/dist/http/http.mock.js +65 -0
  166. package/dist/hub-source/hub-source.js +130 -0
  167. package/dist/hub-source/hub-source__user.js +28 -0
  168. package/dist/hub-source/hub-source__users-groups.js +62 -0
  169. package/dist/icon/icon.js +105 -0
  170. package/dist/icon/icon__constants.js +33 -0
  171. package/dist/icon/icon__svg.js +81 -0
  172. package/dist/icon/index.js +10 -0
  173. package/dist/icon-ng/icon-ng.js +89 -0
  174. package/dist/input/input.js +228 -0
  175. package/dist/input-ng/input-ng.js +166 -0
  176. package/dist/island/adaptive-island-hoc.js +47 -0
  177. package/dist/island/content.js +156 -0
  178. package/dist/island/header.js +83 -0
  179. package/dist/island/island.js +50 -0
  180. package/dist/island-legacy/content-legacy.js +26 -0
  181. package/dist/island-legacy/header-legacy.js +28 -0
  182. package/dist/island-legacy/island-legacy.js +28 -0
  183. package/dist/island-ng/island-content-ng.js +56 -0
  184. package/dist/island-ng/island-header-ng.js +32 -0
  185. package/dist/island-ng/island-ng-class-fixer.js +9 -0
  186. package/dist/island-ng/island-ng.js +31 -0
  187. package/dist/link/clickableLink.js +63 -0
  188. package/dist/link/link.js +114 -0
  189. package/dist/link-ng/link-ng.js +25 -0
  190. package/dist/list/consts.js +26 -0
  191. package/dist/list/list.js +812 -0
  192. package/dist/list/list__custom.js +85 -0
  193. package/dist/list/list__hint.js +26 -0
  194. package/dist/list/list__item.js +204 -0
  195. package/dist/list/list__link.js +64 -0
  196. package/dist/list/list__separator.js +30 -0
  197. package/dist/list/list__title.js +39 -0
  198. package/dist/list/list__users-groups-source.js +128 -0
  199. package/dist/loader/loader.js +70 -0
  200. package/dist/loader/loader__core.js +272 -0
  201. package/dist/loader-inline/inject-styles.js +11 -0
  202. package/dist/loader-inline/loader-inline.js +56 -0
  203. package/dist/loader-inline-ng/loader-inline-ng.js +42 -0
  204. package/dist/loader-ng/loader-ng.js +43 -0
  205. package/dist/loader-screen/loader-screen.js +43 -0
  206. package/dist/loader-screen-ng/loader-screen-ng.js +99 -0
  207. package/dist/login-dialog/login-dialog.js +186 -0
  208. package/dist/login-dialog/service.js +69 -0
  209. package/dist/markdown/code.js +30 -0
  210. package/dist/markdown/heading.js +23 -0
  211. package/dist/markdown/link.js +30 -0
  212. package/dist/markdown/markdown.js +73 -0
  213. package/dist/message/message.js +233 -0
  214. package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
  215. package/dist/old-browsers-message/old-browsers-message.js +100 -0
  216. package/dist/old-browsers-message/old-browsers-message__stop.js +4 -0
  217. package/dist/old-browsers-message/white-list.js +33 -0
  218. package/dist/pager/pager.js +361 -0
  219. package/dist/pager-ng/pager-ng.js +96 -0
  220. package/dist/panel/panel.js +31 -0
  221. package/dist/panel-ng/panel-ng.js +16 -0
  222. package/dist/permissions/permissions.js +200 -0
  223. package/dist/permissions/permissions__cache.js +272 -0
  224. package/dist/permissions-ng/permissions-ng.js +274 -0
  225. package/dist/place-under-ng/place-under-ng.js +157 -0
  226. package/dist/popup/popup.consts.js +41 -0
  227. package/dist/popup/popup.js +389 -0
  228. package/dist/popup/popup.target.js +26 -0
  229. package/dist/popup/position.js +279 -0
  230. package/dist/popup-menu/popup-menu.js +115 -0
  231. package/dist/progress-bar/progress-bar.js +113 -0
  232. package/dist/progress-bar-ng/progress-bar-ng.js +15 -0
  233. package/dist/promised-click-ng/promised-click-ng.js +126 -0
  234. package/dist/proxy-attrs/proxy-attrs.js +19 -0
  235. package/dist/query-assist/query-assist.js +1092 -0
  236. package/dist/query-assist/query-assist__suggestions.js +47 -0
  237. package/dist/query-assist-ng/query-assist-ng.js +82 -0
  238. package/dist/radio/radio.js +41 -0
  239. package/dist/radio/radio__item.js +77 -0
  240. package/dist/radio-ng/radio-ng.js +63 -0
  241. package/dist/save-field-ng/save-field-ng.js +335 -0
  242. package/dist/save-field-ng/save-field-ng__template.js +34 -0
  243. package/dist/select/select.js +1336 -0
  244. package/dist/select/select__filter.js +54 -0
  245. package/dist/select/select__popup.js +546 -0
  246. package/dist/select-ng/select-ng.js +621 -0
  247. package/dist/select-ng/select-ng__lazy.js +150 -0
  248. package/dist/select-ng/select-ng__options.js +145 -0
  249. package/dist/shortcuts/core.js +245 -0
  250. package/dist/shortcuts/shortcut-title.js +51 -0
  251. package/dist/shortcuts/shortcuts-hoc.js +41 -0
  252. package/dist/shortcuts/shortcuts.js +72 -0
  253. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +120 -0
  254. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +50 -0
  255. package/dist/shortcuts-ng/shortcuts-ng.js +261 -0
  256. package/dist/sidebar-ng/sidebar-ng.js +111 -0
  257. package/dist/sidebar-ng/sidebar-ng__button-template.js +20 -0
  258. package/dist/sidebar-ng/sidebar-ng__template.js +12 -0
  259. package/dist/storage/storage.js +56 -0
  260. package/dist/storage/storage__fallback.js +214 -0
  261. package/dist/storage/storage__local.js +151 -0
  262. package/dist/style.css +1 -0
  263. package/dist/tab-trap/tab-trap.js +176 -0
  264. package/dist/table/cell.js +25 -0
  265. package/dist/table/disable-hover-hoc.js +53 -0
  266. package/dist/table/header-cell.js +90 -0
  267. package/dist/table/header.js +191 -0
  268. package/dist/table/multitable.js +140 -0
  269. package/dist/table/row-with-focus-sensor.js +81 -0
  270. package/dist/table/row.js +271 -0
  271. package/dist/table/selection-adapter.js +14 -0
  272. package/dist/table/selection-shortcuts-hoc.js +214 -0
  273. package/dist/table/selection.js +221 -0
  274. package/dist/table/smart-table.js +119 -0
  275. package/dist/table/table.js +404 -0
  276. package/dist/table-legacy-ng/table-legacy-ng.js +501 -0
  277. package/dist/table-legacy-ng/table-legacy-ng__pager.js +122 -0
  278. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
  279. package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
  280. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +56 -0
  281. package/dist/table-ng/smart-table-ng.js +65 -0
  282. package/dist/table-ng/table-ng.js +64 -0
  283. package/dist/tabs/collapsible-more.js +196 -0
  284. package/dist/tabs/collapsible-tab.js +90 -0
  285. package/dist/tabs/collapsible-tabs.js +360 -0
  286. package/dist/tabs/custom-item.js +13 -0
  287. package/dist/tabs/dumb-tabs.js +161 -0
  288. package/dist/tabs/smart-tabs.js +104 -0
  289. package/dist/tabs/tab-link.js +41 -0
  290. package/dist/tabs/tab.js +32 -0
  291. package/dist/tabs/tabs.js +69 -0
  292. package/dist/tabs-ng/tabs-ng.js +193 -0
  293. package/dist/tabs-ng/tabs-ng__template.js +40 -0
  294. package/dist/tag/tag.js +196 -0
  295. package/dist/tags-input/tags-input.js +478 -0
  296. package/dist/tags-input-ng/tags-input-ng.js +89 -0
  297. package/dist/tags-list/tags-list.js +93 -0
  298. package/dist/template-ng/template-ng.js +70 -0
  299. package/dist/text/text.js +36 -0
  300. package/dist/theme-ng/theme-ng.js +44 -0
  301. package/dist/title-ng/title-ng.js +114 -0
  302. package/dist/toggle/toggle.js +77 -0
  303. package/dist/toggle-ng/toggle-ng.js +16 -0
  304. package/dist/tooltip/tooltip.js +207 -0
  305. package/dist/tooltip-ng/tooltip-ng.js +98 -0
  306. package/dist/user-agreement/service.js +409 -0
  307. package/dist/user-agreement/toolbox.eula.js +162 -0
  308. package/dist/user-agreement/user-agreement.js +167 -0
  309. package/dist/user-card/card.js +17 -0
  310. package/dist/user-card/smart-user-card-tooltip.js +112 -0
  311. package/dist/user-card/tooltip.js +93 -0
  312. package/dist/user-card/user-card.js +49 -0
  313. package/dist/user-card-ng/user-card-ng.js +59 -0
  314. package/package.json +2 -2
@@ -0,0 +1,120 @@
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import angular from 'angular';
3
+ import searchIcon from '@jetbrains/icons/search';
4
+ import RingAngularComponent from '../global/ring-angular-component.js';
5
+ import DialogNg from '../dialog-ng/dialog-ng.js';
6
+ import ShortcutsNg from '../shortcuts-ng/shortcuts-ng.js';
7
+ import RingTemplateNg from '../template-ng/template-ng.js';
8
+ import IconNG from '../icon-ng/icon-ng.js';
9
+ import InputNg from '../input-ng/input-ng.js';
10
+ import { getShortcutTitle } from '../shortcuts/shortcut-title.js';
11
+ import HintPopupTpl from './shortcuts-hint-ng__template.js';
12
+ import 'focus-trap';
13
+ import '../global/dom.js';
14
+ import '../shortcuts/core.js';
15
+ import 'combokeys';
16
+ import '../global/sniffer.js';
17
+ import 'sniffr';
18
+ import '../button-ng/button-ng.js';
19
+ import 'classnames';
20
+ import '../global/theme.js';
21
+ import 'react';
22
+ import '../_helpers/button__classes.js';
23
+ import '../icon/icon__constants.js';
24
+ import '../_helpers/icon.js';
25
+ import '../promised-click-ng/promised-click-ng.js';
26
+ import '../compiler-ng/compiler-ng.js';
27
+ import '../_helpers/dialog__body-scroll-preventer.js';
28
+ import 'scrollbar-width';
29
+ import '../_helpers/island.js';
30
+ import '../dialog-ng/dialog-ng__template.js';
31
+ import '@jetbrains/icons/close';
32
+ import '../_helpers/input.js';
33
+
34
+ /**
35
+ * @name Shortcuts Ng Hint Popup
36
+ */
37
+
38
+ const angularModule = angular.module('Ring.shortcuts.hint-popup', [DialogNg, ShortcutsNg, IconNG, InputNg, RingTemplateNg]);
39
+
40
+ const getTitle = title => typeof title === 'function' ? title() : title;
41
+
42
+ class HintPopupService extends RingAngularComponent {
43
+ show() {
44
+ let popupConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
45
+ let shortcutModes = arguments.length > 1 ? arguments[1] : undefined;
46
+ let okButtonLabel = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'Got it';
47
+ let searchPlaceholder = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'Search';
48
+ const {
49
+ dialog,
50
+ shortcuts
51
+ } = this.$inject;
52
+ const modes = shortcutModes || shortcuts.getRegisteredShortcuts();
53
+ modes.forEach(mode => {
54
+ mode.shortcuts.forEach(shortcut => {
55
+ shortcut.titles = shortcut.titles || [];
56
+
57
+ if (shortcut.title && !shortcut.titles.includes(shortcut.title)) {
58
+ shortcut.titles.push(shortcut.title);
59
+ }
60
+ });
61
+ });
62
+ return dialog.show(Object.assign({
63
+ template: HintPopupTpl,
64
+ closeOnClick: true,
65
+ autoWidth: true,
66
+ cssClass: 'shortcuts-hint__dialog',
67
+ controllerAs: 'hintPopupCtrl',
68
+ buttons: [{
69
+ label: okButtonLabel,
70
+ default: true
71
+ }],
72
+
73
+ controller() {
74
+ // eslint-disable-next-line consistent-this
75
+ const ctrl = this;
76
+ ctrl.searchIcon = searchIcon;
77
+ ctrl.modes = modes;
78
+ ctrl.tailTemplate = popupConfig.tailTemplate;
79
+
80
+ ctrl.isArray = it => Array.isArray(it);
81
+
82
+ ctrl.searchText = '';
83
+ ctrl.searchPlaceholder = searchPlaceholder;
84
+ ctrl.getTitle = getTitle;
85
+ }
86
+
87
+ }, popupConfig));
88
+ }
89
+
90
+ }
91
+
92
+ _defineProperty(HintPopupService, "$inject", ['dialog', 'shortcuts']);
93
+
94
+ function shortcutKeySymbolFilter(shortcut) {
95
+ return getShortcutTitle(shortcut);
96
+ }
97
+
98
+ function shortcutSearchFilter(shortcuts) {
99
+ let query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
100
+ return (shortcuts || []).filter(shortcut => {
101
+ const key = shortcut.key.join ? shortcut.key.join(' ') : shortcut.key;
102
+ const keysPresentation = shortcutKeySymbolFilter(key);
103
+
104
+ if (!shortcut.titles.length) {
105
+ return false;
106
+ } else {
107
+ const keyMatches = key.toLowerCase().indexOf(query.toLowerCase()) !== -1;
108
+ const titleMatches = shortcut.titles.map(getTitle).join(' ').toLowerCase().indexOf(query.toLowerCase()) !== -1;
109
+ const presentationMatches = keysPresentation.toLowerCase().indexOf(query.toLowerCase()) !== -1;
110
+ return keyMatches || titleMatches || presentationMatches;
111
+ }
112
+ });
113
+ }
114
+
115
+ angularModule.service('rgShortcutsHintPopup', HintPopupService);
116
+ angularModule.filter('shortcutKeySymbol', () => shortcutKeySymbolFilter);
117
+ angularModule.filter('shortcutSearch', () => shortcutSearchFilter);
118
+ var shortcutsHintNg = angularModule.name;
119
+
120
+ export { shortcutsHintNg as default };
@@ -0,0 +1,50 @@
1
+ var HintPopupTpl = `<div class="shortcuts-hint">
2
+
3
+ <div class="shortcuts-hint__search-input-wrapper">
4
+ <rg-input
5
+ ng-attr-placeholder="{{hintPopupCtrl.searchPlaceholder}}"
6
+ ng-model="hintPopupCtrl.searchText"
7
+ ></rg-input>
8
+ <rg-icon
9
+ class="shortcuts-hint__search-icon"
10
+ glyph="{{hintPopupCtrl.searchIcon}}"
11
+ ></rg-icon>
12
+ </div>
13
+
14
+ <div class="shortcuts-hint__columns">
15
+ <div class="shortcuts-hint__table">
16
+ <div ng-repeat="mode in hintPopupCtrl.modes"
17
+ class="shortcuts-hint__shortcut-block">
18
+
19
+ <div class="shortcuts-hint__table-title" ng-if="mode.title">
20
+ <div></div>
21
+ <div class="shortcuts-hint__shortcuts-title">{{hintPopupCtrl.getTitle(mode.title)}}</div>
22
+ </div>
23
+
24
+ <div ng-repeat="shortcut in mode.shortcuts | shortcutSearch:hintPopupCtrl.searchText"
25
+ class="shortcuts-hint__table-row">
26
+ <div class="shortcuts-hint__shortcut-cell">
27
+ <div class="shortcuts-hint__shortcut"
28
+ ng-if="hintPopupCtrl.isArray(shortcut.key)"
29
+ ng-repeat="key in shortcut.key track by $index">
30
+ {{key | shortcutKeySymbol}}
31
+ </div>
32
+ <span class="shortcuts-hint__shortcut"
33
+ ng-if="!hintPopupCtrl.isArray(shortcut.key)">{{shortcut.key | shortcutKeySymbol}}</span>
34
+ </div>
35
+ <div class="shortcuts-hint__hint">
36
+ <span ng-repeat="title in shortcut.titles">
37
+ {{hintPopupCtrl.getTitle(title)}}
38
+ <br ng-if="!$last">
39
+ </span>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+
46
+ <div rg-template="hintPopupCtrl.tailTemplate"></div>
47
+
48
+ </div>`;
49
+
50
+ export { HintPopupTpl as default };
@@ -0,0 +1,261 @@
1
+ import angular from 'angular';
2
+ import { getStyles } from '../global/dom.js';
3
+ import shortcutsInstance from '../shortcuts/core.js';
4
+ import '../_helpers/_rollupPluginBabelHelpers.js';
5
+ import 'combokeys';
6
+ import '../global/sniffer.js';
7
+ import 'sniffr';
8
+
9
+ const angularModule = angular.module('Ring.shortcuts', []);
10
+ angularModule.provider('shortcuts', function provider() {
11
+ const modes = {};
12
+ const mainModes = {};
13
+ const reference = [];
14
+
15
+ function addMode(config) {
16
+ modes[config.id] = config.shortcuts;
17
+ mainModes[config.id] = !!config.main;
18
+
19
+ if (config.hasOwnProperty('title')) {
20
+ reference.push(config);
21
+ }
22
+
23
+ return this;
24
+ }
25
+
26
+ this.mode = addMode;
27
+ this.$get = ["$rootScope", function get($rootScope) {
28
+ return {
29
+ addMode,
30
+
31
+ bind(name, handlers, scope) {
32
+ const mode = modes[name]; // Nothing to bind
33
+
34
+ if (typeof handlers !== 'object') {
35
+ return;
36
+ } // No declaration
37
+
38
+
39
+ if (!mode) {
40
+ throw new Error(`Shortcut mode ${name} is not declared`);
41
+ }
42
+
43
+ mode.forEach(key => {
44
+ if (!angular.isFunction(handlers[key.action])) {
45
+ return;
46
+ }
47
+
48
+ shortcutsInstance.bind({
49
+ key: key.key,
50
+ scope: scope || name,
51
+ handler: function () {
52
+ // TODO Dirty hack ;(
53
+ const ret = handlers[key.action](...arguments);
54
+
55
+ if (!$rootScope.$$phase) {
56
+ // eslint-disable-line angular/no-private-call
57
+ $rootScope.$apply();
58
+ }
59
+
60
+ return ret;
61
+ }
62
+ });
63
+ });
64
+ },
65
+
66
+ triggerAction(mode, action) {
67
+ const actions = modes[mode];
68
+
69
+ for (let i = actions.length - 1; i >= 0; i--) {
70
+ if (actions[i].action === action) {
71
+ return shortcutsInstance.trigger(actions[i].key[0] || actions[i].key);
72
+ }
73
+ }
74
+
75
+ return undefined;
76
+ },
77
+
78
+ isMainMode: name => mainModes[name],
79
+ getRegisteredShortcuts: () => reference,
80
+ shortcuts: shortcutsInstance
81
+ };
82
+ }];
83
+ });
84
+ angularModule.directive('rgShortcutsApp', function rgShortcutsAppDirective() {
85
+ return {
86
+ restrict: 'A',
87
+ controller: ["$scope", "$rootScope", "$attrs", "shortcuts", function controller($scope, $rootScope, $attrs, shortcuts) {
88
+ $scope.zones = [];
89
+ $scope.loop = 'shortcutsLoop' in $attrs;
90
+
91
+ function getNext(current, back) {
92
+ const position = current && $scope.zones.indexOf(current);
93
+ let next;
94
+
95
+ if (position >= 0) {
96
+ next = back ? $scope.zones[position - 1] : $scope.zones[position + 1];
97
+ }
98
+
99
+ if (!next && ($scope.loop || !current)) {
100
+ next = back ? $scope.zones[$scope.zones.length - 1] : $scope.zones[0];
101
+ }
102
+
103
+ if (!next) {
104
+ next = $scope.zones[0];
105
+ } // Skip invisible zones
106
+
107
+
108
+ if (next && (!document.documentElement.contains(next.element) || getStyles(next.element).display === 'none')) {
109
+ next = getNext(next, back);
110
+ }
111
+
112
+ return next;
113
+ }
114
+
115
+ this.deselect = () => {
116
+ $scope.current.onBlur();
117
+ $scope.current = null;
118
+ };
119
+
120
+ this.getCurrent = () => $scope.current;
121
+
122
+ this.select = next => {
123
+ if ($scope.current === next) {
124
+ return;
125
+ }
126
+
127
+ if ($scope.current) {
128
+ shortcutsInstance.spliceScope($scope.current.scope);
129
+ this.deselect();
130
+ }
131
+
132
+ if (!next) {
133
+ return;
134
+ }
135
+
136
+ shortcutsInstance.pushScope(next.scope);
137
+ $scope.current = next;
138
+ };
139
+
140
+ this.route = (action, e, combo, mode) => {
141
+ let next; // There is nowhere to navigate
142
+
143
+ if (!$scope.zones.length) {
144
+ return false;
145
+ } // Reset current zone if it's not equal to the current scope
146
+
147
+
148
+ if ($scope.current && $scope.current.scope !== shortcutsInstance.getScope().pop().scopeId) {
149
+ this.deselect();
150
+ }
151
+
152
+ if (action === 'main') {
153
+ $scope.zones.forEach((zone, index) => {
154
+ if (shortcuts.isMainMode(zone.name)) {
155
+ next = $scope.zones[index];
156
+ }
157
+ });
158
+ } else {
159
+ next = getNext($scope.current, action === 'prev');
160
+ } // Select next zone and trigger same combo there
161
+
162
+
163
+ if (next) {
164
+ this.select(next);
165
+
166
+ if (shortcutsInstance.hasKey(combo, next.scope)) {
167
+ shortcutsInstance.trigger(combo);
168
+ } // Otherwise go back
169
+
170
+ } else {
171
+ shortcuts.triggerAction(mode, action === 'next' ? 'prev' : 'next');
172
+ }
173
+
174
+ return false;
175
+ };
176
+
177
+ this.sort = () => {
178
+ const orderedElements = Array.from(document.querySelectorAll('[rg-shortcuts]'));
179
+ $scope.zones.forEach(zone => {
180
+ zone.order = orderedElements.indexOf(zone.element);
181
+ });
182
+ $scope.zones.sort((a, b) => a.order - b.order);
183
+ };
184
+
185
+ this.setup = (zone, keys) => {
186
+ shortcuts.bind(zone.name, keys, zone.scope);
187
+ $scope.zones.push(zone);
188
+ this.sort();
189
+ };
190
+
191
+ this.destroy = zone => {
192
+ shortcutsInstance.spliceScope(zone.scope);
193
+ shortcutsInstance.unbindScope(zone.scope);
194
+ const position = $scope.zones.indexOf(zone);
195
+
196
+ if (position !== -1) {
197
+ $scope.zones.splice(position, 1);
198
+ }
199
+ }; // Initial setup
200
+
201
+
202
+ const keyMap = {
203
+ next: this.route.bind(this, 'next'),
204
+ prev: this.route.bind(this, 'prev'),
205
+ main: this.route.bind(this, 'main')
206
+ };
207
+ shortcuts.bind('ring-shortcuts', keyMap);
208
+ shortcutsInstance.pushScope('ring-shortcuts');
209
+ }]
210
+ };
211
+ });
212
+ angularModule.directive('rgShortcuts', ["$parse", function rgShortcutsDirective($parse) {
213
+ return {
214
+ restrict: 'A',
215
+ require: ['^rgShortcutsApp'],
216
+ link: function link($scope, iElement, iAttrs, shortcutsCtrl) {
217
+ // Closest controller
218
+ const shortcutsApp = shortcutsCtrl[shortcutsCtrl.length - 1];
219
+ const name = iAttrs.rgShortcuts;
220
+ const focusGetter = $parse(iAttrs.shortcutsFocus);
221
+ const blurGetter = $parse(iAttrs.shortcutsBlur);
222
+ const zone = {
223
+ name,
224
+ scope: `${name}-${$scope.$id}`,
225
+ element: iElement[0],
226
+ onBlur: blurGetter($scope) || angular.noop
227
+ };
228
+ $scope.$evalAsync(() => {
229
+ shortcutsApp.setup(zone, $scope.$eval(iAttrs.shortcutsMap));
230
+ });
231
+ $scope.$watch(() => focusGetter($scope), focusState => {
232
+ if (focusState) {
233
+ shortcutsApp.select(zone);
234
+ }
235
+ });
236
+ $scope.$on('$destroy', () => {
237
+ shortcutsApp.destroy(zone);
238
+ });
239
+ }
240
+ };
241
+ }]);
242
+ angularModule.directive('rgShortcutsGlobal', ["shortcuts", function rgShortcutsGlobalDirective(shortcuts) {
243
+ return {
244
+ restrict: 'A',
245
+ link: function link($scope, iElement, iAttrs) {
246
+ const name = iAttrs.rgShortcutsGlobal;
247
+ const scope = `${name}-${$scope.$id}`;
248
+ $scope.$evalAsync(() => {
249
+ shortcuts.bind(name, $scope.$eval(iAttrs.shortcutsMap), scope);
250
+ shortcutsInstance.pushScope(scope);
251
+ });
252
+ $scope.$on('$destroy', () => {
253
+ shortcutsInstance.spliceScope(scope);
254
+ shortcutsInstance.unbindScope(scope);
255
+ });
256
+ }
257
+ };
258
+ }]);
259
+ var ShortcutsNg = angularModule.name;
260
+
261
+ export { ShortcutsNg as default };
@@ -0,0 +1,111 @@
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import angular from 'angular';
3
+ import chevronRightIcon from '@jetbrains/icons/chevron-right';
4
+ import chevronLeftIcon from '@jetbrains/icons/chevron-left';
5
+ import PlaceUnder from '../place-under-ng/place-under-ng.js';
6
+ import IconNG from '../icon-ng/icon-ng.js';
7
+ import RingAngularComponent from '../global/ring-angular-component.js';
8
+ import ButtonNG from '../button-ng/button-ng.js';
9
+ import template from './sidebar-ng__template.js';
10
+ import buttonTemplate from './sidebar-ng__button-template.js';
11
+ import 'just-debounce-it';
12
+ import 'element-resize-detector';
13
+ import '../global/dom.js';
14
+ import '../icon/icon__constants.js';
15
+ import '../template-ng/template-ng.js';
16
+ import '../_helpers/icon.js';
17
+ import 'classnames';
18
+ import '../global/theme.js';
19
+ import 'react';
20
+ import '../_helpers/button__classes.js';
21
+
22
+ /**
23
+ * @name Sidebar Ng
24
+ */
25
+
26
+ const angularModule = angular.module('Ring.sidebar', [PlaceUnder, IconNG, ButtonNG]);
27
+
28
+ class SidebarController extends RingAngularComponent {
29
+ constructor() {
30
+ super(...arguments);
31
+
32
+ this.$onInit = () => {
33
+ const {
34
+ $scope
35
+ } = this.$inject;
36
+ this.dialogIsActive = false;
37
+ this.showed = this.show; // dialog has been opened — open sidebar
38
+
39
+ $scope.$watch(() => this.dialogIsActive, () => {
40
+ if (this.dialogIsActive) {
41
+ this.show = true;
42
+ } else if (!this.showed) {
43
+ this.show = false;
44
+ }
45
+ });
46
+ $scope.$watch(() => this.show, () => {
47
+ if (!this.dialogIsActive) {
48
+ this.showed = this.show;
49
+ }
50
+ });
51
+ };
52
+ }
53
+
54
+ }
55
+
56
+ SidebarController.$inject = [];
57
+
58
+ _defineProperty(SidebarController, "$inject", ['$scope']);
59
+
60
+ function rgSidebarDirective() {
61
+ return {
62
+ restrict: 'E',
63
+ transclude: true,
64
+ replace: true,
65
+ scope: {},
66
+ controller: SidebarController,
67
+
68
+ /**
69
+ * {{
70
+ * show: boolean,
71
+ * placeUnderSibling: ?string, a selector for an element the sidebar should stick to
72
+ * topOffset: ?number, sidebar top offset
73
+ * }}
74
+ */
75
+ bindToController: {
76
+ show: '=',
77
+ placeUnderSibling: '@',
78
+ topOffset: '=?',
79
+ dialogIsActive: '=?'
80
+ },
81
+ template,
82
+ controllerAs: 'sidebar'
83
+ };
84
+ }
85
+
86
+ function rgSidebarToggleButtonDirective() {
87
+ return {
88
+ restrict: 'E',
89
+ transclude: true,
90
+ replace: true,
91
+ scope: {},
92
+
93
+ controller() {
94
+ this.chevronRight = chevronRightIcon;
95
+ this.chevronLeft = chevronLeftIcon;
96
+ },
97
+
98
+ bindToController: {
99
+ model: '=',
100
+ dialogIsActive: '=?'
101
+ },
102
+ template: buttonTemplate,
103
+ controllerAs: 'button'
104
+ };
105
+ }
106
+
107
+ angularModule.directive('rgSidebar', rgSidebarDirective);
108
+ angularModule.directive('rgSidebarToggleButton', rgSidebarToggleButtonDirective);
109
+ var sidebarNg = angularModule.name;
110
+
111
+ export { sidebarNg as default };
@@ -0,0 +1,20 @@
1
+ var buttonTemplate = `<span>
2
+ <rg-button
3
+ ng-click="button.model = !button.model"
4
+ ng-disabled="button.dialogIsActive"
5
+ >
6
+ <rg-icon
7
+ ng-show="button.model"
8
+ glyph="{{button.chevronRight}}"
9
+ ></rg-icon>
10
+
11
+ <rg-icon
12
+ ng-show="!button.model"
13
+ glyph="{{button.chevronLeft}}"
14
+ ></rg-icon>
15
+
16
+ <span ng-transclude></span>
17
+ </rg-button>
18
+ </span>`;
19
+
20
+ export { buttonTemplate as default };
@@ -0,0 +1,12 @@
1
+ var template = `<div
2
+ class="ring-sidebar"
3
+ rg-place-under="{{sidebar.placeUnderSibling}}"
4
+ place-top-offset="{{sidebar.topOffset}}"
5
+ sync-height="true"
6
+ ng-class="{'ring-sidebar_active': sidebar.show}"
7
+ >
8
+ <rg-dialog in-sidebar="true" active="sidebar.dialogIsActive"></rg-dialog>
9
+ <div class="ring-sidebar__content" ng-transclude ng-if="!sidebar.dialogIsActive"></div>
10
+ </div>`;
11
+
12
+ export { template as default };
@@ -0,0 +1,56 @@
1
+ import LocalStorage from './storage__local.js';
2
+ import FallbackStorage from './storage__fallback.js';
3
+ import '../alert-service/alert-service.js';
4
+ import '../_helpers/_rollupPluginBabelHelpers.js';
5
+ import 'react';
6
+ import 'react-dom';
7
+ import '../global/get-uid.js';
8
+ import '../alert/alert.js';
9
+ import 'classnames';
10
+ import 'prop-types';
11
+ import '@jetbrains/icons/exception';
12
+ import '@jetbrains/icons/checkmark';
13
+ import '@jetbrains/icons/warning';
14
+ import '@jetbrains/icons/close';
15
+ import '../icon/icon.js';
16
+ import 'util-deprecate';
17
+ import '../icon/icon__constants.js';
18
+ import '../_helpers/icon.js';
19
+ import '../icon/icon__svg.js';
20
+ import '../global/memoize.js';
21
+ import '../loader-inline/loader-inline.js';
22
+ import '../global/theme.js';
23
+ import '../global/data-tests.js';
24
+ import '../_helpers/inject-styles.js';
25
+ import '../global/conic-gradient.js';
26
+ import 'conic-gradient';
27
+ import '../global/supports-css.js';
28
+ import '../global/inject-styles.js';
29
+ import '../global/radial-gradient-mask.js';
30
+ import '../global/dom.js';
31
+ import '../alert/container.js';
32
+ import 'deep-equal';
33
+
34
+ /**
35
+ * @name Storage
36
+ */
37
+
38
+ /**
39
+ * @constructor
40
+ * @extends {LocalStorage}
41
+ */
42
+
43
+ let Storage = LocalStorage; // Using try/catch here because of IE10+ protected mode and other browsers' quirks
44
+ // See https://github.com/Modernizr/Modernizr/blob/master/feature-detects/storage/localstorage.js
45
+
46
+ try {
47
+ const temp = 'testStorage';
48
+ localStorage.setItem(temp, temp);
49
+ localStorage.removeItem(temp);
50
+ } catch (e) {
51
+ Storage = FallbackStorage;
52
+ }
53
+
54
+ const ActualStorage = Storage;
55
+
56
+ export { ActualStorage as default };