@inboxsdk/core 1.0.5 → 1.1.1

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 (154) hide show
  1. package/inboxsdk.js +25 -192
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -1
  4. package/pageWorld.js +3 -47
  5. package/pageWorld.js.map +1 -1
  6. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.d.ts +3 -0
  7. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.d.ts.map +1 -0
  8. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +3 -8
  9. package/src/inboxsdk-js/inboxsdk-NONREMOTE.d.ts +3 -0
  10. package/src/inboxsdk-js/inboxsdk-NONREMOTE.d.ts.map +1 -0
  11. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -6
  12. package/src/inboxsdk-js/inboxsdk-REMOTE.d.ts +3 -0
  13. package/src/inboxsdk-js/inboxsdk-REMOTE.d.ts.map +1 -0
  14. package/src/inboxsdk-js/inboxsdk-REMOTE.js +2 -5
  15. package/src/inboxsdk-js/inboxsdk-TEST.d.ts +3 -0
  16. package/src/inboxsdk-js/inboxsdk-TEST.d.ts.map +1 -0
  17. package/src/inboxsdk-js/inboxsdk-TEST.js +5 -6
  18. package/src/inboxsdk-js/inboxsdk.d.ts +8 -0
  19. package/src/inboxsdk-js/inboxsdk.d.ts.map +1 -0
  20. package/src/inboxsdk-js/inboxsdk.js +22 -32
  21. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.d.ts +2 -0
  22. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.d.ts.map +1 -0
  23. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +14 -16
  24. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts +1 -1
  25. package/src/inboxsdk-js/loading/platform-implementation-loader.d.ts.map +1 -1
  26. package/src/injected-js/gmail/setup-gmail-interceptor.js +7 -14
  27. package/src/injected-js/main.js +0 -9
  28. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.d.ts.map +1 -1
  29. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +0 -2
  30. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-menu-item-view.js +2 -1
  31. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +1 -2
  32. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +10 -1
  33. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +39 -35
  34. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +1 -2
  35. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +2 -3
  36. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +13 -14
  37. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +1 -2
  38. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +2 -2
  39. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +3 -4
  40. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +7 -8
  41. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +28 -31
  42. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +4 -5
  43. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +2 -3
  44. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +1 -2
  45. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +10 -0
  46. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +10 -11
  47. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +4 -5
  48. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +3 -4
  49. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +2 -3
  50. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +2 -3
  51. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +2 -3
  52. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +5 -6
  53. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +1 -2
  54. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +4 -5
  55. package/src/platform-implementation-js/lib/idMap.d.ts +1 -2
  56. package/src/platform-implementation-js/lib/idMap.d.ts.map +1 -1
  57. package/src/platform-implementation-js/lib/idMap.js +4 -44
  58. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.d.ts.map +1 -1
  59. package/src/platform-implementation-js/lib/inject-script-EMBEDDED.js +3 -4
  60. package/src/platform-implementation-js/lib/react/ElementContainer.js +3 -7
  61. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.d.ts +3 -0
  62. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.d.ts.map +1 -0
  63. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +5 -9
  64. package/src/platform-implementation-js/main.d.ts +5 -0
  65. package/src/platform-implementation-js/main.d.ts.map +1 -0
  66. package/src/platform-implementation-js/main.js +38 -61
  67. package/src/platform-implementation-js/namespaces/conversations.js +2 -3
  68. package/src/platform-implementation-js/namespaces/lists.js +1 -2
  69. package/src/platform-implementation-js/namespaces/nav-menu.js +2 -3
  70. package/src/platform-implementation-js/namespaces/router.js +3 -4
  71. package/src/platform-implementation-js/namespaces/toolbars.js +1 -2
  72. package/src/platform-implementation-js/platform-implementation.d.ts +0 -3
  73. package/src/platform-implementation-js/platform-implementation.js +1 -11
  74. package/src/platform-implementation-js/views/app-menu-item-view.js +2 -1
  75. package/src/platform-implementation-js/views/collapsible-panel-view.js +2 -1
  76. package/src/platform-implementation-js/views/content-panel-view.js +1 -2
  77. package/src/platform-implementation-js/views/conversations/custom-message-view.js +3 -4
  78. package/src/platform-implementation-js/views/conversations/message-view.js +1 -2
  79. package/src/platform-implementation-js/views/conversations/thread-view.js +1 -2
  80. package/src/platform-implementation-js/views/nav-item-view.js +1 -2
  81. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +2 -3
  82. package/src/platform-implementation-js/widgets/drawer-view.js +1 -2
  83. package/src/platform-implementation-js/widgets/modal-view.js +1 -2
  84. package/src/platform-implementation-js/widgets/mole-view.js +1 -2
  85. package/src/injected-js/inbox/setupAjaxInterceptor.js +0 -211
  86. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +0 -67
  87. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +0 -35
  88. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +0 -29
  89. package/src/platform-implementation-js/dom-driver/gmail/custom-style.d.ts +0 -2
  90. package/src/platform-implementation-js/dom-driver/gmail/custom-style.d.ts.map +0 -1
  91. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +0 -17
  92. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +0 -13
  93. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +0 -38
  94. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +0 -55
  95. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +0 -19
  96. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +0 -27
  97. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +0 -23
  98. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +0 -43
  99. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +0 -34
  100. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +0 -53
  101. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +0 -31
  102. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +0 -103
  103. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +0 -69
  104. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +0 -32
  105. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +0 -28
  106. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +0 -49
  107. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +0 -100
  108. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +0 -99
  109. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +0 -36
  110. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +0 -114
  111. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +0 -73
  112. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +0 -39
  113. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +0 -28
  114. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +0 -148
  115. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +0 -866
  116. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +0 -62
  117. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +0 -12
  118. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +0 -18
  119. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +0 -33
  120. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +0 -265
  121. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +0 -301
  122. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +0 -183
  123. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +0 -64
  124. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +0 -72
  125. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +0 -78
  126. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +0 -297
  127. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +0 -92
  128. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +0 -54
  129. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +0 -272
  130. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +0 -161
  131. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +0 -58
  132. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +0 -198
  133. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +0 -90
  134. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +0 -46
  135. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +0 -116
  136. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +0 -843
  137. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +0 -76
  138. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +0 -31
  139. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +0 -25
  140. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +0 -64
  141. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +0 -275
  142. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +0 -113
  143. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +0 -97
  144. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +0 -316
  145. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +0 -219
  146. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +0 -171
  147. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +0 -128
  148. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +0 -312
  149. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +0 -26
  150. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.d.ts +0 -2
  151. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.d.ts.map +0 -1
  152. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +0 -4
  153. package/src/platform-implementation-js/lib/shared-style.js +0 -23
  154. package/src/types/gulp-add-src.d.ts +0 -7
@@ -1,171 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _lodash = _interopRequireDefault(require("lodash"));
5
- var _kefir = _interopRequireDefault(require("kefir"));
6
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
7
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
8
- var _pdelay = _interopRequireDefault(require("pdelay"));
9
- var _idMap = _interopRequireDefault(require("../../../lib/idMap"));
10
- var _inboxThreadView = _interopRequireDefault(require("./inbox-thread-view"));
11
- var _ContentPanelViewDriver = _interopRequireDefault(require("../../../driver-common/sidebar/ContentPanelViewDriver"));
12
- function makeDriver() {
13
- const _openOrOpeningStreamBus = (0, _kefirBus.default)();
14
- const _addedPanels = [];
15
- const driver = {
16
- getAppId: () => 'foo',
17
- getOpts: _lodash.default.constant({
18
- appName: 'driver appName',
19
- appIconUrl: 'http://localhost/driver/appIconUrl.png'
20
- }),
21
- getThreadViewElementsMap: _lodash.default.constant(new Map()),
22
- getAppSidebarView: _lodash.default.constant({
23
- _openOrOpeningStreamBus,
24
- _addedPanels,
25
- addSidebarContentPanel(descriptor) {
26
- if (!document.querySelector('.' + (0, _idMap.default)('app_sidebar_waiting_platform'))) {
27
- const waitingPlatform = document.createElement('div');
28
- waitingPlatform.className = (0, _idMap.default)('app_sidebar_waiting_platform');
29
- document.body.appendChild(waitingPlatform);
30
- }
31
- const panel = new _ContentPanelViewDriver.default(driver, descriptor, 'foobar');
32
- _addedPanels.push(panel);
33
- return panel;
34
- },
35
- getOpenOrOpeningStream: _lodash.default.constant(_openOrOpeningStreamBus.toProperty(() => false).onValue(() => {})),
36
- open: jest.fn()
37
- })
38
- };
39
- return driver;
40
- }
41
- function makeElement() {
42
- const el = document.createElement('div');
43
- const parsed = {
44
- elements: {
45
- stickyHeading: document.createElement('div')
46
- }
47
- };
48
- return {
49
- el,
50
- parsed
51
- };
52
- }
53
- test('construction works', () => {
54
- const {
55
- el,
56
- parsed
57
- } = makeElement();
58
- const threadView = new _inboxThreadView.default(el, makeDriver(), parsed);
59
- });
60
- describe('addSidebarContentPanel', () => {
61
- test('button is added to thread', () => {
62
- const driver = makeDriver();
63
- const {
64
- el,
65
- parsed
66
- } = makeElement();
67
- const threadView = new _inboxThreadView.default(el, driver, parsed);
68
- threadView.addSidebarContentPanel(_kefir.default.constant({
69
- title: 'foo',
70
- iconUrl: 'http://localhost/driver/bar.png',
71
- el: document.createElement('div')
72
- }));
73
- const {
74
- stickyHeading
75
- } = parsed.elements;
76
- expect(stickyHeading.querySelectorAll('button').length).toBe(1);
77
- expect(stickyHeading.querySelector('button').title).toBe('driver appName');
78
- expect(stickyHeading.querySelector('button img').src).toBe('http://localhost/driver/appIconUrl.png');
79
- expect(stickyHeading.querySelector('button').parentElement.getAttribute('data-count')).toBe(null);
80
- const appSidebarView = driver.getAppSidebarView();
81
- expect(appSidebarView._addedPanels.length).toBe(1);
82
- const panel = appSidebarView._addedPanels[0];
83
- panel.remove();
84
- expect(stickyHeading.querySelectorAll('button').length).toBe(0);
85
- });
86
- test('exiting thread removes panel', () => {
87
- const driver = makeDriver();
88
- const {
89
- el,
90
- parsed
91
- } = makeElement();
92
- const threadView = new _inboxThreadView.default(el, driver, parsed);
93
- threadView.addSidebarContentPanel(_kefir.default.constant({
94
- title: 'foo',
95
- iconUrl: 'http://localhost/driver/bar.png',
96
- el: document.createElement('div')
97
- }));
98
- const appSidebarView = driver.getAppSidebarView();
99
- expect(appSidebarView._addedPanels.length).toBe(1);
100
- const panel = appSidebarView._addedPanels[0];
101
- const onPanelRemove = jest.fn();
102
- panel.getStopper().onValue(onPanelRemove);
103
- expect(onPanelRemove).toHaveBeenCalledTimes(0);
104
- threadView.destroy();
105
- expect(onPanelRemove).toHaveBeenCalledTimes(1);
106
- });
107
- test('multiple app sidebars can be added and removed in reverse order', () => {
108
- const driver = makeDriver();
109
- const {
110
- el,
111
- parsed
112
- } = makeElement();
113
- const threadView = new _inboxThreadView.default(el, driver, parsed);
114
- threadView.addSidebarContentPanel(_kefir.default.constant({
115
- title: 'foo',
116
- iconUrl: 'http://localhost/driver/bar.png',
117
- el: document.createElement('div')
118
- }));
119
- threadView.addSidebarContentPanel(_kefir.default.constant({
120
- title: 'foo2',
121
- iconUrl: '/bar2.png',
122
- el: document.createElement('div')
123
- }));
124
- const {
125
- stickyHeading
126
- } = parsed.elements;
127
- expect(stickyHeading.querySelectorAll('button').length).toBe(1);
128
- expect(stickyHeading.querySelector('button').title).toBe('driver appName');
129
- expect(stickyHeading.querySelector('button img').src).toBe('http://localhost/driver/appIconUrl.png');
130
- expect(stickyHeading.querySelector('button').parentElement.getAttribute('data-count')).toBe('2');
131
- const appSidebarView = driver.getAppSidebarView();
132
- expect(appSidebarView._addedPanels.length).toBe(2);
133
- const [panel1, panel2] = appSidebarView._addedPanels;
134
- panel2.remove();
135
- expect(stickyHeading.querySelectorAll('button').length).toBe(1);
136
- expect(stickyHeading.querySelector('button').parentElement.getAttribute('data-count')).toBe(null);
137
- panel1.remove();
138
- expect(stickyHeading.querySelectorAll('button').length).toBe(0);
139
- });
140
- test('multiple app sidebars can be removed in order', () => {
141
- const driver = makeDriver();
142
- const {
143
- el,
144
- parsed
145
- } = makeElement();
146
- const threadView = new _inboxThreadView.default(el, driver, parsed);
147
- threadView.addSidebarContentPanel(_kefir.default.constant({
148
- title: 'foo',
149
- iconUrl: 'http://localhost/driver/bar.png',
150
- el: document.createElement('div')
151
- }));
152
- threadView.addSidebarContentPanel(_kefir.default.constant({
153
- title: 'foo2',
154
- iconUrl: '/bar2.png',
155
- el: document.createElement('div')
156
- }));
157
- const {
158
- stickyHeading
159
- } = parsed.elements;
160
- expect(stickyHeading.querySelectorAll('button').length).toBe(1);
161
- expect(stickyHeading.querySelector('button').parentElement.getAttribute('data-count')).toBe('2');
162
- const appSidebarView = driver.getAppSidebarView();
163
- expect(appSidebarView._addedPanels.length).toBe(2);
164
- const [panel1, panel2] = appSidebarView._addedPanels;
165
- panel1.remove();
166
- expect(stickyHeading.querySelectorAll('button').length).toBe(1);
167
- expect(stickyHeading.querySelector('button').parentElement.getAttribute('data-count')).toBe(null);
168
- panel2.remove();
169
- expect(stickyHeading.querySelectorAll('button').length).toBe(0);
170
- });
171
- });
@@ -1,128 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _ud = require("ud");
10
- var _kefir = _interopRequireDefault(require("kefir"));
11
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
12
- var _containByScreen = _interopRequireDefault(require("contain-by-screen"));
13
- class InboxTooltipView {
14
- constructor(target, options) {
15
- (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
16
- this._target = target;
17
- this._arrowEl = document.createElement('div');
18
- this._arrowEl.className = 'inboxsdk__tooltip_arrow';
19
- this._contentEl = document.createElement('div');
20
- this._contentEl.className = 'inboxsdk__tooltip_content';
21
- this._el = document.createElement('div');
22
- this._el.style.position = 'fixed';
23
- this._el.className = 'inboxsdk__tooltip';
24
- this._el.appendChild(this._contentEl);
25
- if (options.el) {
26
- this._contentEl.appendChild(options.el);
27
- this._el.classList.add('inboxsdk__tooltip_chromeless');
28
- } else {
29
- {
30
- const closeButton = document.createElement('button');
31
- closeButton.type = 'button';
32
- closeButton.title = 'Close';
33
- closeButton.className = 'inboxsdk__close_button';
34
- closeButton.addEventListener('click', e => {
35
- this.destroy();
36
- });
37
- this._el.appendChild(closeButton);
38
- }
39
- if (options.imageUrl) {
40
- const src = options.imageUrl;
41
- const img = document.createElement('img');
42
- img.className = 'inboxsdk__tooltip_img';
43
- img.src = src;
44
- this._contentEl.appendChild(img);
45
- }
46
- if (options.title) {
47
- const title = options.title;
48
- const titleEl = document.createElement('h1');
49
- titleEl.textContent = title;
50
- this._contentEl.appendChild(titleEl);
51
- }
52
- if (options.subtitle) {
53
- const subtitle = options.subtitle;
54
- const sEl = document.createElement('div');
55
- sEl.className = 'inboxsdk__subtitle';
56
- sEl.textContent = subtitle;
57
- this._contentEl.appendChild(sEl);
58
- }
59
- if (options.button) {
60
- const button = options.button;
61
- const buttonEl = document.createElement('input');
62
- buttonEl.type = 'button';
63
- buttonEl.value = button.title;
64
- buttonEl.addEventListener('click', event => {
65
- event.preventDefault();
66
- event.stopPropagation();
67
- if (button.onClick) button.onClick.call(null);
68
- });
69
- this._contentEl.appendChild(buttonEl);
70
- }
71
- }
72
- document.body.appendChild(this._el);
73
- document.body.appendChild(this._arrowEl);
74
- this._updatePosition(true);
75
- this._el.addEventListener('load', event => {
76
- this._updatePosition(true);
77
- }, true);
78
- _kefir.default.interval(200).takeUntilBy(this._stopper).map(() => target.getBoundingClientRect()).skipDuplicates((a, b) => a.top === b.top && a.left === b.left && a.right === b.right && a.bottom === b.bottom).onValue(() => {
79
- this._updatePosition();
80
- });
81
- }
82
- destroy() {
83
- this._el.remove();
84
- this._arrowEl.remove();
85
- this._stopper.destroy();
86
- }
87
- getStopper() {
88
- return this._stopper;
89
- }
90
- _updatePosition() {
91
- let noTransition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
92
- if (noTransition) {
93
- this._el.classList.add('inboxsdk__notransition');
94
- this._arrowEl.classList.add('inboxsdk__notransition');
95
- }
96
- const {
97
- position
98
- } = (0, _containByScreen.default)(this._el, this._target, {
99
- position: 'top',
100
- hAlign: 'center',
101
- vAlign: 'center',
102
- buffer: 10
103
- });
104
- (0, _containByScreen.default)(this._arrowEl, this._target, {
105
- position: position,
106
- forcePosition: true,
107
- hAlign: 'center',
108
- forceHAlign: true,
109
- vAlign: 'center',
110
- forceVAlign: true,
111
- buffer: 11 // needs to overlap 1px of border
112
- });
113
-
114
- ['top', 'bottom', 'left', 'right'].forEach(x => {
115
- this._arrowEl.classList.remove('inboxsdk__' + x);
116
- });
117
- this._arrowEl.classList.add('inboxsdk__' + position);
118
- if (noTransition) {
119
- this._el.offsetHeight; // Trigger a reflow, flushing the CSS changes
120
- this._arrowEl.offsetHeight;
121
- // see http://stackoverflow.com/a/16575811/1289657
122
- this._el.classList.remove('inboxsdk__notransition');
123
- this._arrowEl.classList.remove('inboxsdk__notransition');
124
- }
125
- }
126
- }
127
- var _default = (0, _ud.defn)(module, InboxTooltipView);
128
- exports.default = _default;
@@ -1,312 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _kefir = _interopRequireDefault(require("kefir"));
10
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
11
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
12
- var _insertElementInOrder = _interopRequireDefault(require("../../../lib/dom/insert-element-in-order"));
13
- var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
14
- var _dropdownView = _interopRequireDefault(require("../../../widgets/buttons/dropdown-view"));
15
- var _inboxDropdownView = _interopRequireDefault(require("./inbox-dropdown-view"));
16
- var _navItemTypes = _interopRequireDefault(require("../../../constants/nav-item-types"));
17
- var _updateIcon = _interopRequireDefault(require("../../../driver-common/update-icon"));
18
- class InboxNavItemView {
19
- constructor(navItemDescriptor, level) {
20
- (0, _defineProperty2.default)(this, "_eventStream", (0, _kefirBus.default)());
21
- (0, _defineProperty2.default)(this, "_transitionResetter", (0, _kefirBus.default)());
22
- (0, _defineProperty2.default)(this, "_children", 0);
23
- (0, _defineProperty2.default)(this, "_name", '');
24
- (0, _defineProperty2.default)(this, "_type", null);
25
- (0, _defineProperty2.default)(this, "_orderHint", Number.MAX_SAFE_INTEGER);
26
- (0, _defineProperty2.default)(this, "_disabled", false);
27
- (0, _defineProperty2.default)(this, "_isCollapsed", false);
28
- (0, _defineProperty2.default)(this, "_iconSettings", {});
29
- (0, _defineProperty2.default)(this, "_accessory", null);
30
- (0, _defineProperty2.default)(this, "_accessoryView", null);
31
- this._level = level || 0;
32
- this._elements = {
33
- wrapper: document.createElement('div'),
34
- expander: document.createElement('div'),
35
- navItem: document.createElement('div'),
36
- name: document.createElement('span'),
37
- subNav: document.createElement('div'),
38
- subNavInner: document.createElement('div'),
39
- accessory: document.createElement('div')
40
- };
41
- if (this._level > 2) {
42
- console.warn('Adding NavItems more than 3 levels deep is not supported');
43
- }
44
- this._stopper = this._eventStream.ignoreValues().beforeEnd(() => null).toProperty();
45
- this._setupElements();
46
- navItemDescriptor.takeUntilBy(this._stopper).onValue(descriptor => {
47
- this._update(descriptor);
48
- this._navItemDescriptor = descriptor;
49
- });
50
- }
51
- addNavItem(orderGroup, navItemDescriptor) {
52
- const childNavItemView = new InboxNavItemView(navItemDescriptor, this._level + 1);
53
- childNavItemView.getEventStream().filter(event => event.eventName === 'orderChanged').onValue(() => (0, _insertElementInOrder.default)(this._elements.subNavInner, childNavItemView.getElement()));
54
- (0, _insertElementInOrder.default)(this._elements.subNavInner, childNavItemView.getElement());
55
- this._children += 1;
56
- childNavItemView.getStopper().onValue(() => {
57
- this._children -= 1;
58
- this._updateChildrenClass();
59
- this._updateDisabledState(this._navItemDescriptor || {});
60
- this._updateAccessory(this._accessory, true);
61
- });
62
- this._updateChildrenClass();
63
- this._updateDisabledState(this._navItemDescriptor || {});
64
- this._updateAccessory(this._accessory, true);
65
- return childNavItemView;
66
- }
67
- setActive(value) {
68
- this._elements.navItem.classList.toggle('inboxsdk__navItem_active', value);
69
- }
70
- toggleCollapse() {
71
- this._isCollapsed = !this._isCollapsed;
72
- this._isCollapsed ? this._collapse() : this._expand();
73
- }
74
- setCollapsed(value) {
75
- if (this._isCollapsed === value) return;
76
- this._isCollapsed = value;
77
- this._isCollapsed ? this._collapse() : this._expand();
78
- }
79
- isCollapsed() {
80
- return this._isCollapsed;
81
- }
82
- getElement() {
83
- return this._elements.wrapper;
84
- }
85
- getEventStream() {
86
- return this._eventStream;
87
- }
88
- getStopper() {
89
- return this._stopper;
90
- }
91
- destroy() {
92
- this._eventStream.end();
93
- this._elements.wrapper.remove();
94
- }
95
- _setupElements() {
96
- const {
97
- wrapper,
98
- expander,
99
- navItem,
100
- name,
101
- subNav,
102
- subNavInner,
103
- accessory
104
- } = this._elements;
105
- wrapper.className = `inboxsdk__navItem_wrapper inboxsdk__navItem_level${this._level}`;
106
- wrapper.setAttribute('tabindex', '-1');
107
- wrapper.setAttribute('data-order-hint', String(this._orderHint));
108
- navItem.setAttribute('role', 'menuitem');
109
- expander.classList.add('inboxsdk__navItem_expander');
110
- navItem.classList.add('inboxsdk__navItem');
111
- name.classList.add('inboxsdk__navItem_name');
112
- accessory.classList.add('inboxsdk__navItem_accessory');
113
- subNav.classList.add('inboxsdk__navItem_subNav');
114
- subNavInner.classList.add('inboxsdk__navItem_subNavInner');
115
-
116
- // Arrow SVG
117
- expander.innerHTML = '<svg><polygon points="16.59 8.59 12 13.17 7.41 8.59 6 10 12 16 18 10"></polygon></svg>';
118
- navItem.appendChild(expander);
119
- navItem.appendChild(name);
120
- navItem.appendChild(accessory);
121
- wrapper.appendChild(navItem);
122
- subNav.appendChild(subNavInner);
123
- wrapper.appendChild(subNav);
124
- this._eventStream.plug(_kefir.default.fromEvents(navItem, 'click').filter(() => !this._disabled).map(domEvent => {
125
- domEvent.stopPropagation();
126
- domEvent.preventDefault();
127
- return {
128
- eventName: 'click',
129
- domEvent
130
- };
131
- }));
132
- _kefir.default.fromEvents(expander, 'click').takeUntilBy(this._stopper).filter(() => this._children > 0).onValue(domEvent => {
133
- this.toggleCollapse();
134
- domEvent.stopPropagation();
135
- });
136
- }
137
- _collapse() {
138
- const {
139
- subNav,
140
- subNavInner
141
- } = this._elements;
142
- this._transitionResetter.emit(null);
143
- this._elements.wrapper.classList.add('inboxsdk__navItem_collapsed');
144
- subNav.style.height = `${subNavInner.clientHeight}px`;
145
- subNav.clientHeight; // Force layout
146
- subNav.style.height = '0';
147
- _kefir.default.merge([_kefir.default.fromEvents(subNav, 'transitionend'), _kefir.default.later(750)]).takeUntilBy(this._transitionResetter).take(1).onValue(() => {
148
- subNav.style.display = 'none';
149
- });
150
- this._eventStream.emit({
151
- eventName: 'collapsed'
152
- });
153
- }
154
- _expand() {
155
- const {
156
- subNav,
157
- subNavInner
158
- } = this._elements;
159
- this._transitionResetter.emit(null);
160
- this._elements.wrapper.classList.remove('inboxsdk__navItem_collapsed');
161
- subNav.style.display = '';
162
- subNav.style.height = `${subNavInner.clientHeight}px`;
163
- _kefir.default.merge([_kefir.default.fromEvents(subNav, 'transitionend'), _kefir.default.later(750)]).takeUntilBy(this._transitionResetter).take(1).onValue(() => {
164
- subNav.style.height = '';
165
- });
166
- this._eventStream.emit({
167
- eventName: 'expanded'
168
- });
169
- }
170
- _update(descriptor) {
171
- this._updateName(descriptor.name);
172
- this._updateType(descriptor.type);
173
- this._updateExpander(descriptor);
174
- this._updateDisabledState(descriptor);
175
- this._updateIcon(descriptor);
176
- this._updateAccessory(descriptor.accessory);
177
- this._updateOrder(descriptor.orderHint || descriptor.orderHint === 0 ? descriptor.orderHint : Number.MAX_SAFE_INTEGER);
178
- }
179
- _updateName(name) {
180
- if (this._name === name) return;
181
- this._elements.name.textContent = name;
182
- this._elements.name.setAttribute('title', name);
183
- this._name = name;
184
- }
185
- _updateType() {
186
- let type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _navItemTypes.default.NAVIGATION;
187
- if (this._type === type) return;
188
- this._elements.navItem.classList.toggle('inboxsdk__navItem_link', type === _navItemTypes.default.LINK);
189
- this._type = type;
190
- }
191
- _updateExpander(_ref) {
192
- let {
193
- backgroundColor,
194
- expanderForegroundColor
195
- } = _ref;
196
- this._elements.expander.style.backgroundColor = backgroundColor || '';
197
- const arrow = (0, _querySelectorOrFail.default)(this._elements.expander, 'polygon');
198
- arrow.style.fill = expanderForegroundColor || '';
199
- this._elements.wrapper.classList.toggle('inboxsdk__navItem_hasColor', typeof backgroundColor === 'string');
200
- }
201
- _updateIcon(descriptor) {
202
- this._elements.navItem.classList.toggle('inboxsdk__navItem_hasIcon', (!this._disabled || this._level > 0) && Boolean(descriptor.iconUrl || descriptor.iconClass));
203
- (0, _updateIcon.default)(this._iconSettings, this._elements.navItem, false, descriptor.iconClass, descriptor.iconUrl, this._elements.name);
204
- }
205
- _updateAccessory(accessory) {
206
- let forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
207
- if (!forceUpdate && this._accessory === accessory) return;
208
- if (this._accessoryView) {
209
- this._accessoryView.destroy();
210
- this._accessoryView = null;
211
- }
212
- if (accessory && !this._disabled) {
213
- this._accessoryView = this._createAccessory(accessory);
214
- }
215
- this._accessory = accessory;
216
- }
217
- _updateDisabledState(descriptor) {
218
- this._disabled = !(descriptor.routeID || descriptor.onClick) || this._level === 0 && this._children > 0;
219
- this._elements.wrapper.classList.toggle('inboxsdk__navItem_disabled', this._disabled);
220
- }
221
- _updateOrder(orderHint) {
222
- if (this._orderHint === orderHint) return;
223
- this._elements.wrapper.setAttribute('data-order-hint', String(orderHint));
224
- this._orderHint = orderHint;
225
- this._eventStream.emit({
226
- eventName: 'orderChanged'
227
- });
228
- }
229
- _updateChildrenClass() {
230
- this._elements.wrapper.classList.toggle('inboxsdk__navItem_hasChildren', this._children > 0);
231
- }
232
- _createAccessory(accessory) {
233
- switch (accessory.type) {
234
- case 'CREATE':
235
- return this._createCreateAccessory(accessory);
236
- case 'ICON_BUTTON':
237
- return this._createIconButtonAccessory(accessory);
238
- case 'DROPDOWN_BUTTON':
239
- return this._createDropdownButtonAccessory(accessory);
240
- default:
241
- throw new Error('A type must be specified for NavItem accessories');
242
- }
243
- }
244
- _createCreateAccessory(accessory) {
245
- const {
246
- onClick
247
- } = accessory;
248
- return this._createIconButtonAccessory({
249
- onClick,
250
- iconUrl: '//ssl.gstatic.com/bt/C3341AA7A1A076756462EE2E5CD71C11/2x/ic_add-cluster_24px_g60_r3_2x.png'
251
- });
252
- }
253
- _createDropdownButtonAccessory(accessory) {
254
- const {
255
- onClick
256
- } = accessory;
257
- return this._createIconButtonAccessory({
258
- onClick,
259
- iconUrl: '//www.gstatic.com/images/icons/material/system/2x/settings_black_18dp.png'
260
- }, true);
261
- }
262
- _createIconButtonAccessory(accessory) {
263
- let hasDropdown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
264
- if (!accessory.onClick) throw new Error('An onClick handler is required');
265
- this._elements.wrapper.classList.add('inboxsdk__navItem_hasAccessory');
266
- (0, _updateIcon.default)({}, this._elements.accessory, false, accessory.iconClass, accessory.iconUrl);
267
- const iconEl = (0, _querySelectorOrFail.default)(this._elements.accessory, '.inboxsdk__button_icon');
268
- iconEl.setAttribute('tabindex', '-1');
269
- const destroyStopper = (0, _kefirStopper.default)();
270
- let dropdown = null;
271
- _kefir.default.fromEvents(this._elements.accessory, 'click').takeUntilBy(this._stopper).takeUntilBy(destroyStopper).onValue(event => {
272
- event.preventDefault();
273
- event.stopPropagation();
274
- if (hasDropdown) {
275
- if (dropdown) {
276
- dropdown.close();
277
- return;
278
- } else {
279
- iconEl.classList.add('inboxsdk__active');
280
- dropdown = new _dropdownView.default(new _inboxDropdownView.default(), this._elements.accessory);
281
- dropdown.setPlacementOptions({
282
- position: 'right',
283
- hAlign: 'left',
284
- vAlign: 'top',
285
- buffer: 10
286
- });
287
- dropdown.on('destroy', () => {
288
- iconEl.classList.remove('inboxsdk__active');
289
- dropdown = null;
290
- });
291
- }
292
- }
293
- accessory.onClick({
294
- dropdown
295
- });
296
- });
297
- _kefir.default.merge([this._stopper, destroyStopper]).take(1).onValue(() => {
298
- if (dropdown) {
299
- dropdown.close();
300
- }
301
- });
302
- const destroy = () => {
303
- this._elements.wrapper.classList.remove('inboxsdk__navItem_hasAccessory');
304
- this._elements.accessory.innerHTML = '';
305
- destroyStopper.destroy();
306
- };
307
- return {
308
- destroy
309
- };
310
- }
311
- }
312
- exports.default = InboxNavItemView;
@@ -1,26 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = waitForAnimationClickBlockerGone;
8
- var _once = _interopRequireDefault(require("lodash/once"));
9
- var _find = _interopRequireDefault(require("lodash/find"));
10
- var _kefir = _interopRequireDefault(require("kefir"));
11
- var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../lib/dom/make-mutation-observer-chunked-stream"));
12
- const getAnimationClickBlocker = (0, _once.default)(() => (0, _find.default)(document.body.children, el => {
13
- const c = window.getComputedStyle(el);
14
- return c.position === 'fixed' && parseFloat(c.top) === 0 && parseFloat(c.bottom) === 0 && parseFloat(c.left) === 0 && parseFloat(c.right) === 0;
15
- }));
16
- function waitForAnimationClickBlockerGone() {
17
- const el = getAnimationClickBlocker();
18
-
19
- // Wait for (the animationClickBlocker to appear OR 150 ms to pass), then
20
- // wait for the animationClickBlocker to disappear.
21
- return (0, _makeMutationObserverChunkedStream.default)(el, {
22
- attributes: true
23
- }).toProperty(() => undefined).filter(() => window.getComputedStyle(el).display !== 'none').merge(_kefir.default.later(150)).take(1).flatMap(() => (0, _makeMutationObserverChunkedStream.default)(el, {
24
- attributes: true
25
- }).toProperty(() => undefined)).filter(() => window.getComputedStyle(el).display === 'none').map(() => undefined).take(1);
26
- }
@@ -1,2 +0,0 @@
1
- export default function rewriteCssWithIdMap(cssSource: string): string;
2
- //# sourceMappingURL=rewriteCssWithIdMap.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rewriteCssWithIdMap.d.ts","sourceRoot":"","sources":["../../../../../src/platform-implementation-js/lib/rewriteCssWithIdMap.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKrE"}
@@ -1,4 +0,0 @@
1
- import idMap from './idMap';
2
- export default function rewriteCssWithIdMap(cssSource) {
3
- return cssSource.replace(/\.IDMAP_([-a-zA-Z0-9_]+)/g, (match, classname) => `.${idMap(classname)}`);
4
- }
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = sharedStyle;
8
- var _udKefir = _interopRequireDefault(require("ud-kefir"));
9
- var _rewriteCssWithIdMap = _interopRequireDefault(require("./rewriteCssWithIdMap"));
10
- var fs = require('fs');
11
- var cssContent = (0, _udKefir.default)(module, fs.readFileSync(__dirname + '/../style/shared.css', 'utf8'));
12
- function sharedStyle() {
13
- let root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
14
- if (!root.getElementById('inboxsdk__shared_style')) {
15
- const style = root.createElement('style');
16
- style.id = 'inboxsdk__shared_style';
17
- cssContent.onValue(css => {
18
- style.textContent = (0, _rewriteCssWithIdMap.default)(css);
19
- });
20
- if (!root.head) throw new Error('missing head');
21
- root.head.appendChild(style);
22
- }
23
- }
@@ -1,7 +0,0 @@
1
- declare module 'gulp-add-src' {
2
- const addsrc: {
3
- (filename: string): any;
4
- prepend(filename: string): any;
5
- };
6
- export = addsrc;
7
- }