@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,272 +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 _findIndex = _interopRequireDefault(require("lodash/findIndex"));
10
- var _ud = require("ud");
11
- var _autoHtml = _interopRequireDefault(require("auto-html"));
12
- var _kefir = _interopRequireDefault(require("kefir"));
13
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
14
- var _react = _interopRequireDefault(require("react"));
15
- var _reactDom = _interopRequireDefault(require("react-dom"));
16
- var _fakeWindowResize = _interopRequireDefault(require("../../../lib/fake-window-resize"));
17
- var _findParent = _interopRequireDefault(require("../../../../common/find-parent"));
18
- var _getSidebarClassnames = _interopRequireDefault(require("../getSidebarClassnames"));
19
- var _delayAsap = _interopRequireDefault(require("../../../lib/delay-asap"));
20
- var _waitForAnimationClickBlockerGone = _interopRequireDefault(require("../waitForAnimationClickBlockerGone"));
21
- var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
22
- var _fromEventTargetCapture = _interopRequireDefault(require("../../../lib/from-event-target-capture"));
23
- var _orderManager = _interopRequireDefault(require("order-manager"));
24
- var _idMap = _interopRequireDefault(require("../../../lib/idMap"));
25
- var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
26
- var _incrementName = _interopRequireDefault(require("../../../lib/incrementName"));
27
- var _AppSidebar = _interopRequireDefault(require("../../../driver-common/sidebar/AppSidebar"));
28
- var _ContentPanelViewDriver = _interopRequireDefault(require("../../../driver-common/sidebar/ContentPanelViewDriver"));
29
- class InboxAppSidebarView {
30
- constructor(driver) {
31
- (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
32
- this._driver = driver;
33
-
34
- // We need to be able to cooperate with other apps/extensions that are
35
- // sharing the app sidebar. We store some properties as attributes in the
36
- // shared DOM instead of as class properties; class properties are mostly
37
- // restricted to being used for references to DOM nodes. When
38
- // InboxAppSidebarView is instantiated, we check to see if the element
39
- // already exists and create it if it doesn't.
40
- const el = document.querySelector('.' + (0, _idMap.default)('app_sidebar_container'));
41
- if (el) {
42
- this._el = el;
43
- } else {
44
- this._createElement();
45
- }
46
- const mainParent = (0, _findParent.default)((0, _querySelectorOrFail.default)(document, '[role=application]'), el => el.parentElement === document.body);
47
- if (!mainParent) {
48
- const err = new Error('Failed to find main parent');
49
- this._driver.getLogger().errorSite(err);
50
- throw err;
51
- }
52
- this._mainParent = mainParent;
53
- this._openOrOpeningProp = (0, _makeMutationObserverChunkedStream.default)(this._el, {
54
- attributes: true,
55
- attributeFilter: ['data-open', 'data-is-opening']
56
- }).toProperty(() => null).map(() => this._el.getAttribute('data-open') === 'true' || this._el.getAttribute('data-is-opening') === 'true').skipDuplicates();
57
- }
58
- destroy() {
59
- this._stopper.destroy();
60
- }
61
- open() {
62
- this._setShouldAppSidebarOpen(true);
63
- this._setOpenedNow(true);
64
- }
65
- close() {
66
- this._setShouldAppSidebarOpen(false);
67
- this._setOpenedNow(false);
68
- }
69
- getOpenOrOpeningStream() {
70
- return this._openOrOpeningProp;
71
- }
72
-
73
- // This value controls whether the app sidebar should automatically open
74
- // itself when available when the chat sidebar isn't present. It's only set
75
- // if the user interacts with the app sidebar button.
76
- _getShouldAppSidebarOpen() {
77
- return localStorage.getItem('inboxsdk__app_sidebar_should_open') === 'true';
78
- }
79
- _setShouldAppSidebarOpen(open) {
80
- try {
81
- localStorage.setItem('inboxsdk__app_sidebar_should_open', String(open));
82
- } catch (err) {
83
- console.error('error saving', err);
84
- }
85
- }
86
- _createElement() {
87
- const el = this._el = document.createElement('div');
88
- el.className = (0, _idMap.default)('app_sidebar_container');
89
- // Store the open state in the DOM rather than a class property because
90
- // multiple instances of InboxAppSidebarView from different apps need to
91
- // share the value.
92
- el.setAttribute('data-open', 'false');
93
- el.setAttribute('data-is-opening', 'false');
94
- document.body.appendChild(el);
95
- if (!document.body.querySelector('.' + (0, _idMap.default)('app_sidebar_waiting_platform'))) {
96
- const waitingPlatform = document.createElement('div');
97
- waitingPlatform.className = (0, _idMap.default)('app_sidebar_waiting_platform');
98
- document.body.appendChild(waitingPlatform);
99
- }
100
-
101
- // If the user clicks the chat button while the chat sidebar and app
102
- // sidebar are both open, then we want the chat sidebar to become visible.
103
- // We block Inbox from closing the chat sidebar, and we close the app sidebar.
104
- (0, _fromEventTargetCapture.default)(this._driver.getChatSidebarButton(), 'click').filter(() => el.getAttribute('data-open') === 'true' && this._driver.getCurrentChatSidebarView().getMode() === 'SIDEBAR').takeUntilBy(this._stopper).onValue(event => {
105
- event.stopImmediatePropagation();
106
- this._setShouldAppSidebarOpen(false);
107
- this._setOpenedNow(false);
108
- });
109
- this._driver.getCurrentChatSidebarView().getModeStream().changes().takeUntilBy(this._stopper).onValue(mode => {
110
- if (mode === 'SIDEBAR') {
111
- // If the user clicks the chat button while the chat sidebar is
112
- // closed and the app sidebar is open, and Inbox opens the chat
113
- // sidebar, then we want the chat sidebar to become visible. We just
114
- // hide the app sidebar after Inbox brings up the chat sidebar.
115
- this._setShouldAppSidebarOpen(false);
116
- this._setOpenedNow(false);
117
- } else {
118
- // If the chat sidebar changes in any other way
119
- // (ie. HIDDEN<->DROPDOWN) while the app sidebar is open, then we
120
- // might need to fix up some class changes that Inbox might have
121
- // made.
122
- if (el.getAttribute('data-open') === 'true') {
123
- this._setOpenedNow(true);
124
- }
125
- }
126
- });
127
- const currentIds = new Set();
128
- const orderManager = new _orderManager.default({
129
- get() {
130
- try {
131
- return JSON.parse(localStorage.getItem('inboxsdk__sidebar_ordering') || 'null');
132
- } catch (err) {
133
- console.error('failed to read sidebar order data', err);
134
- }
135
- },
136
- set(data) {
137
- try {
138
- localStorage.setItem('inboxsdk__sidebar_ordering', JSON.stringify(data));
139
- } catch (err) {
140
- console.error('failed to set sidebar order data', err);
141
- }
142
- }
143
- });
144
- let component;
145
- const _appSidebarRefSetter = threadSidebarComponent => {
146
- if (threadSidebarComponent) {
147
- component = threadSidebarComponent;
148
- }
149
- };
150
- const render = () => {
151
- _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_AppSidebar.default, {
152
- ref: _appSidebarRefSetter,
153
- panels: orderManager.getOrderedItems().map(x => x.value),
154
- onClose: () => {
155
- this._setShouldAppSidebarOpen(false);
156
- this._setOpenedNow(false);
157
- },
158
- onOutsideClick: () => {
159
- this._driver.closeOpenThread();
160
- },
161
- onMoveEnd: (newList, movedItem, oldIndex, newIndex) => {
162
- orderManager.moveItem(oldIndex, newIndex);
163
- render();
164
- }
165
- }), el);
166
- };
167
- render();
168
- _kefir.default.fromEvents(window, 'storage').filter(e => e.key === 'inboxsdk__sidebar_ordering').takeUntilBy(this._stopper).onValue(() => {
169
- orderManager.reload();
170
- render();
171
- });
172
- this._stopper.onValue(() => {
173
- _reactDom.default.unmountComponentAtNode(el);
174
- el.remove();
175
- });
176
- _kefir.default.fromEvents(document.body, 'inboxsdkNewSidebarPanel').takeUntilBy(this._stopper).onValue(event => {
177
- let id = event.detail.id;
178
- while (currentIds.has(id)) {
179
- id = (0, _incrementName.default)(id);
180
- }
181
- currentIds.add(id);
182
- orderManager.addItem({
183
- groupId: event.detail.appId,
184
- id,
185
- orderHint: event.detail.orderHint,
186
- value: {
187
- id,
188
- appId: event.detail.appId,
189
- instanceId: event.detail.instanceId,
190
- title: event.detail.title,
191
- iconClass: event.detail.iconClass,
192
- iconUrl: event.detail.iconUrl,
193
- hideTitleBar: event.detail.hideTitleBar,
194
- el: event.target
195
- }
196
- });
197
- render();
198
- });
199
- _kefir.default.fromEvents(document.body, 'inboxsdkUpdateSidebarPanel').takeUntilBy(this._stopper).onValue(event => {
200
- const orderedItems = orderManager.getOrderedItems();
201
- const index = (0, _findIndex.default)(orderedItems, x => x.value.instanceId === event.detail.instanceId);
202
- if (index === -1) throw new Error('should not happen: failed to find orderItem');
203
- orderManager.updateItemValueByIndex(index, {
204
- id: orderedItems[index].value.id,
205
- appId: event.detail.appId,
206
- instanceId: event.detail.instanceId,
207
- title: event.detail.title,
208
- iconClass: event.detail.iconClass,
209
- iconUrl: event.detail.iconUrl,
210
- hideTitleBar: event.detail.hideTitleBar,
211
- el: event.target
212
- });
213
- render();
214
- });
215
- _kefir.default.fromEvents(document.body, 'inboxsdkRemoveSidebarPanel').takeUntilBy(this._stopper).onValue(event => {
216
- const orderedItems = orderManager.getOrderedItems();
217
- const index = (0, _findIndex.default)(orderedItems, x => x.value.instanceId === event.detail.instanceId);
218
- if (index === -1) throw new Error('should not happen: failed to find orderItem');
219
- currentIds.delete(orderedItems[index].id);
220
- orderManager.removeItemByIndex(index);
221
- if (orderManager.getOrderedItems().length === 0) {
222
- this._setOpenedNow(false);
223
- }
224
- render();
225
- });
226
- _kefir.default.fromEvents(document.body, 'inboxsdkSidebarPanelScrollIntoView').takeUntilBy(this._stopper).onValue(event => {
227
- component.scrollPanelIntoView(event.detail.instanceId);
228
- });
229
- }
230
- _setOpenedNow(open) {
231
- this._el.setAttribute('data-open', String(open));
232
- const {
233
- chat
234
- } = (0, _getSidebarClassnames.default)();
235
- if (!chat) return;
236
- if (!open) {
237
- if (this._driver.getCurrentChatSidebarView().getMode() !== 'SIDEBAR' && this._mainParent.classList.contains(chat)) {
238
- this._mainParent.classList.remove(chat);
239
- this._driver.getPageCommunicator().fakeWindowResize();
240
- }
241
- } else {
242
- if (this._driver.getCurrentChatSidebarView().getMode() !== 'SIDEBAR' && !this._mainParent.classList.contains(chat)) {
243
- this._mainParent.classList.add(chat);
244
- this._driver.getPageCommunicator().fakeWindowResize();
245
- }
246
- }
247
- }
248
- _setOpenedAfterAnimation(open) {
249
- this._el.setAttribute('data-is-opening', 'true');
250
- (0, _waitForAnimationClickBlockerGone.default)().takeUntilBy(this._stopper).takeUntilBy((0, _makeMutationObserverChunkedStream.default)(this._el, {
251
- attributes: true,
252
- attributeFilter: ['data-open']
253
- })).onValue(() => {
254
- this._setOpenedNow(open);
255
- }).onEnd(() => {
256
- this._el.setAttribute('data-is-opening', 'false');
257
- });
258
- }
259
- addSidebarContentPanel(descriptor) {
260
- // There's only up to one sidebar in Inbox, so the ID doesn't really matter.
261
- const view = new _ContentPanelViewDriver.default(this._driver, descriptor, 'inbox');
262
- if (this._driver.getCurrentChatSidebarView().getMode() === 'SIDEBAR' || this._getShouldAppSidebarOpen()) {
263
- this._setOpenedAfterAnimation(true);
264
- }
265
- this._stopper.takeUntilBy(view.getStopper()).onValue(() => {
266
- view.remove();
267
- });
268
- return view;
269
- }
270
- }
271
- var _default = (0, _ud.defn)(module, InboxAppSidebarView);
272
- exports.default = _default;
@@ -1,161 +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 _find = _interopRequireDefault(require("lodash/find"));
10
- var _includes = _interopRequireDefault(require("lodash/includes"));
11
- var _ud = require("ud");
12
- var _kefir = _interopRequireDefault(require("kefir"));
13
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
14
- var _dropdownView = _interopRequireDefault(require("../../../widgets/buttons/dropdown-view"));
15
- var _inboxAppToolbarTooltipView = _interopRequireDefault(require("./inbox-app-toolbar-tooltip-view"));
16
- var _toItemWithLifetimeStream = _interopRequireDefault(require("../../../lib/toItemWithLifetimeStream"));
17
- var _setCss = _interopRequireDefault(require("../../../lib/dom/set-css"));
18
- class InboxAppToolbarButtonView {
19
- constructor(buttonDescriptor, appToolbarLocationLiveSet, searchBarLiveSet) {
20
- (0, _defineProperty2.default)(this, "_buttonDescriptor", null);
21
- (0, _defineProperty2.default)(this, "_buttonEl", null);
22
- (0, _defineProperty2.default)(this, "_activeDropdown", null);
23
- (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
24
- (0, _defineProperty2.default)(this, "_ready", (0, _kefirStopper.default)());
25
- this._buttonDescriptorStream = buttonDescriptor.toProperty().takeUntilBy(this._stopper);
26
- _kefir.default.combine([(0, _toItemWithLifetimeStream.default)(searchBarLiveSet).take(1), (0, _toItemWithLifetimeStream.default)(appToolbarLocationLiveSet).take(1)], [], searchBar => searchBar).map(_ref => {
27
- let {
28
- el: node
29
- } = _ref;
30
- return node.getValue();
31
- }).takeUntilBy(this._stopper).onValue(el => this._adjustSearchBarMargin(el));
32
- (0, _toItemWithLifetimeStream.default)(appToolbarLocationLiveSet).take(1).map(_ref2 => {
33
- let {
34
- el: node
35
- } = _ref2;
36
- return node.getValue();
37
- }).takeUntilBy(this._stopper).onValue(el => this._setupButton(el));
38
- }
39
- _setupButton(appToolbarLocation) {
40
- let appToolbarButtonContainer = (0, _find.default)(appToolbarLocation.children, el => el.classList.contains('inboxsdk__appButton_container'));
41
- if (!appToolbarButtonContainer) {
42
- appToolbarButtonContainer = document.createElement('div');
43
- appToolbarButtonContainer.className = 'inboxsdk__appButton_container';
44
- appToolbarLocation.insertBefore(appToolbarButtonContainer, appToolbarLocation.firstChild);
45
- }
46
- const button = document.createElement('div');
47
- button.tabIndex = 0;
48
- button.setAttribute('role', 'button');
49
- button.className = 'inboxsdk__appButton inboxsdk__button_icon';
50
- const buttonImg = document.createElement('img');
51
- buttonImg.className = 'inboxsdk__button_iconImg';
52
- button.appendChild(buttonImg);
53
- this._buttonDescriptorStream.onValue(buttonDescriptor => {
54
- button.title = buttonDescriptor.title;
55
- buttonImg.src = buttonDescriptor.iconUrl;
56
- buttonImg.className = `inboxsdk__button_iconImg ${buttonDescriptor.iconClass || ''}`;
57
- this._buttonDescriptor = buttonDescriptor;
58
- });
59
- _kefir.default.merge([_kefir.default.fromEvents(button, 'click'), _kefir.default.fromEvents(button, 'keypress').filter(e => (0, _includes.default)([32 /*space*/, 13 /*enter*/], e.which))]).takeUntilBy(this._stopper).onValue(event => {
60
- event.preventDefault();
61
- event.stopPropagation();
62
- if (this._activeDropdown) {
63
- this.close();
64
- } else {
65
- if (!this._buttonDescriptor || this._buttonDescriptor.hasDropdown !== false) {
66
- this.open();
67
- } else {
68
- if (this._buttonDescriptor && this._buttonDescriptor.onClick) {
69
- this._buttonDescriptor.onClick();
70
- }
71
- }
72
- }
73
- });
74
- appToolbarButtonContainer.insertBefore(button, appToolbarButtonContainer.firstChild);
75
- this._buttonEl = button;
76
- this._ready.destroy();
77
- this._stopper.onValue(() => {
78
- button.remove();
79
- });
80
- }
81
- _adjustSearchBarMargin(searchBar) {
82
- const buttonWidth = 40;
83
- const defaultMarginRight = 70;
84
- const ATTR_NAME = 'data-inboxsdk-searchbar-min-margin-right';
85
- const newMarginRight = buttonWidth + parseInt(document.documentElement.getAttribute(ATTR_NAME) || '0');
86
- const ruleClassName = 'inboxsdk__dynamic_resize_searchbar';
87
- function setSheetRules(minMarginRight) {
88
- document.documentElement.setAttribute(ATTR_NAME, String(minMarginRight));
89
- if (minMarginRight <= 0) {
90
- (0, _setCss.default)('dynamic_resize_searchbar', '');
91
- return;
92
- }
93
- const important = minMarginRight > defaultMarginRight ? '!important' : '';
94
-
95
- // When the page gets wider than this number, stop applying our override
96
- // so that Inbox's margin:auto takes over.
97
- const applyWhenPageWidthUnder = 1394 + 3.575 * minMarginRight;
98
-
99
- // @media-scoped rule is for adjusting gmail stuff. Last rule is for
100
- // adjusting icons from non-SDK extensions including Mixmax.
101
- const rule = `
102
- @media (max-width: ${applyWhenPageWidthUnder}px) {
103
- .${ruleClassName} {
104
- margin-right: ${minMarginRight}px${important};
105
- }
106
- }
107
- .inboxsdk__appButton_container + * + * ~ *:not(.inboxsdk_escape_mod) {
108
- margin-right: ${minMarginRight}px${important};
109
- }
110
- `;
111
- (0, _setCss.default)('dynamic_resize_searchbar', rule);
112
- }
113
- setSheetRules(newMarginRight);
114
- searchBar.classList.add(ruleClassName);
115
- const {
116
- nextElementSibling
117
- } = searchBar;
118
- if (nextElementSibling) {
119
- nextElementSibling.classList.add(ruleClassName);
120
- }
121
- this._stopper.onValue(() => {
122
- const newMarginRight = parseInt(document.documentElement.getAttribute(ATTR_NAME) || '0') - buttonWidth;
123
- setSheetRules(newMarginRight);
124
- });
125
- }
126
- open() {
127
- if (this._activeDropdown) return;
128
- const button = this._buttonEl;
129
- if (!button) throw new Error('should not happen');
130
- button.classList.add('inboxsdk__active');
131
- const {
132
- arrowColor
133
- } = this._buttonDescriptor || {};
134
- const dropdown = this._activeDropdown = new _dropdownView.default(new _inboxAppToolbarTooltipView.default(button, arrowColor), button);
135
- dropdown.once('destroy', () => {
136
- this._activeDropdown = null;
137
- button.classList.remove('inboxsdk__active');
138
- });
139
- const appEvent = {
140
- dropdown
141
- };
142
- if (this._buttonDescriptor && this._buttonDescriptor.onClick) {
143
- this._buttonDescriptor.onClick.call(null, appEvent);
144
- }
145
- }
146
- close() {
147
- if (!this._activeDropdown) return;
148
- this._activeDropdown.close();
149
- }
150
- waitForReady() {
151
- return this._ready.map(() => this).merge(this._stopper.flatMap(() => _kefir.default.constantError(new Error('InboxAppToolbarButtonView was destroyed early')))).take(1).takeErrors(1).toPromise(Promise);
152
- }
153
- getStopper() {
154
- return this._stopper;
155
- }
156
- destroy() {
157
- this._stopper.destroy();
158
- }
159
- }
160
- var _default = (0, _ud.defn)(module, InboxAppToolbarButtonView);
161
- exports.default = _default;
@@ -1,58 +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
- class InboxAppToolbarTooltipView {
13
- constructor(anchorElement, arrowColor) {
14
- (0, _defineProperty2.default)(this, "_stopper", (0, _kefirStopper.default)());
15
- this._anchorElement = anchorElement;
16
- this._arrowEl = document.createElement('div');
17
- this._arrowEl.className = 'inboxsdk__tooltip_arrow inboxsdk__bottom';
18
- document.body.appendChild(this._arrowEl);
19
- if (arrowColor) {
20
- this._arrowEl.style.borderColor = arrowColor;
21
- }
22
- this._containerEl = document.createElement('div');
23
- this._containerEl.className = 'inboxsdk__appButton_tooltip_container';
24
- this._el = document.createElement('div');
25
- this._el.className = 'inboxsdk__appButton_tooltip';
26
- this._el.setAttribute('role', 'region');
27
- this._containerEl.appendChild(this._el);
28
- document.body.appendChild(this._containerEl);
29
- this._reposition();
30
- }
31
- _reposition() {
32
- const buttonPos = this._anchorElement.getBoundingClientRect();
33
- const buttonCenter = buttonPos.left + buttonPos.width / 2;
34
- this._arrowEl.style.top = `${buttonPos.bottom + 18}px`;
35
- this._arrowEl.style.right = `${window.innerWidth - buttonPos.right + buttonPos.width / 2 - this._arrowEl.offsetWidth / 2 - 1}px`;
36
- this._containerEl.style.top = `${buttonPos.bottom + 17}px`;
37
- this._containerEl.style.minWidth = `${(window.innerWidth - buttonCenter - 30) * 2}px`;
38
- }
39
- getDropdownOptions() {
40
- return {
41
- manualPosition: true,
42
- extraElementsToIgnore: [this._arrowEl]
43
- };
44
- }
45
- getContentElement() {
46
- return this._el;
47
- }
48
- getContainerElement() {
49
- return this._containerEl;
50
- }
51
- destroy() {
52
- this._containerEl.remove();
53
- this._arrowEl.remove();
54
- this._stopper.destroy();
55
- }
56
- }
57
- var _default = (0, _ud.defn)(module, InboxAppToolbarTooltipView);
58
- exports.default = _default;