@inboxsdk/core 1.1.0 → 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 (68) hide show
  1. package/inboxsdk.js +7 -34
  2. package/inboxsdk.js.map +1 -1
  3. package/package.json +1 -1
  4. package/pageWorld.js +1 -1
  5. package/pageWorld.js.map +1 -1
  6. package/src/injected-js/main.js +0 -9
  7. package/src/platform-implementation-js/platform-implementation.d.ts +0 -3
  8. package/src/platform-implementation-js/platform-implementation.js +1 -9
  9. package/src/injected-js/inbox/setupAjaxInterceptor.js +0 -211
  10. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +0 -67
  11. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +0 -35
  12. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +0 -29
  13. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +0 -13
  14. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +0 -38
  15. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +0 -55
  16. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +0 -19
  17. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +0 -27
  18. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +0 -43
  19. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +0 -34
  20. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +0 -53
  21. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +0 -31
  22. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +0 -103
  23. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +0 -69
  24. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +0 -32
  25. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +0 -28
  26. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +0 -49
  27. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +0 -100
  28. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +0 -99
  29. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +0 -36
  30. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +0 -114
  31. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +0 -73
  32. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +0 -39
  33. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +0 -28
  34. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +0 -148
  35. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +0 -863
  36. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +0 -62
  37. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +0 -12
  38. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +0 -18
  39. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +0 -33
  40. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +0 -265
  41. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +0 -301
  42. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +0 -183
  43. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +0 -64
  44. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +0 -72
  45. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +0 -78
  46. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +0 -296
  47. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +0 -91
  48. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +0 -53
  49. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +0 -271
  50. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +0 -160
  51. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +0 -57
  52. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +0 -197
  53. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +0 -83
  54. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +0 -45
  55. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +0 -116
  56. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +0 -842
  57. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +0 -75
  58. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +0 -25
  59. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +0 -63
  60. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +0 -274
  61. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +0 -112
  62. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +0 -96
  63. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +0 -315
  64. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +0 -218
  65. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +0 -171
  66. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +0 -127
  67. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +0 -311
  68. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +0 -26
@@ -1,75 +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 _kefir = _interopRequireDefault(require("kefir"));
9
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
10
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
11
- var _classnames = _interopRequireDefault(require("classnames"));
12
- var _idMap = _interopRequireDefault(require("../../../lib/idMap"));
13
- var _parseParamsFromRouteID = _interopRequireDefault(require("../../../lib/parseParamsFromRouteID"));
14
- var _getSidebarClassnames = _interopRequireDefault(require("../getSidebarClassnames"));
15
- class InboxCustomRouteView {
16
- _eventStream = (0, _kefirBus.default)();
17
- _stopper = (0, _kefirStopper.default)();
18
- constructor(routeID, hash) {
19
- // Check we implement interface
20
- this;
21
- this._routeID = routeID;
22
- this._params = (0, _parseParamsFromRouteID.default)(routeID, hash);
23
- this._customViewElement = document.createElement('div');
24
- this.setFullWidth(true);
25
- }
26
- setFullWidth(fullWidth) {
27
- const centerListClassName = (0, _getSidebarClassnames.default)().centerList || 'UNKNOWN_centerList';
28
- this._customViewElement.className = (0, _classnames.default)((0, _idMap.default)('custom_view_container'), {
29
- [(0, _idMap.default)('custom_view_min_margins')]: fullWidth,
30
- [centerListClassName]: !fullWidth
31
- });
32
- }
33
- getStopper() {
34
- return this._stopper;
35
- }
36
- destroy() {
37
- this._eventStream.end();
38
- this._stopper.destroy();
39
- this._customViewElement.remove();
40
- }
41
- getElement() {
42
- throw new Error('should not happen');
43
- }
44
- getType() {
45
- return 'CUSTOM';
46
- }
47
- getRouteType() {
48
- return 'CUSTOM';
49
- }
50
- getRouteID() {
51
- return this._routeID;
52
- }
53
- getParams() {
54
- return this._params;
55
- }
56
- getEventStream() {
57
- return this._eventStream;
58
- }
59
- getCustomViewElement() {
60
- return this._customViewElement;
61
- }
62
- refresh() {
63
- throw new Error('should not happen');
64
- }
65
- getHash() {
66
- throw new Error('should not happen');
67
- }
68
- addCollapsibleSection(sectionDescriptorProperty, groupOrderHint) {
69
- throw new Error('should not happen');
70
- }
71
- addSection(sectionDescriptorProperty, groupOrderHint) {
72
- throw new Error('should not happen');
73
- }
74
- }
75
- exports.default = InboxCustomRouteView;
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- class InboxDropdownView {
8
- constructor(className) {
9
- this._containerEl = document.createElement('div');
10
- this._containerEl.className = 'inboxsdk__dropdown ' + (className || '');
11
- this._contentEl = document.createElement('div');
12
- this._contentEl.className = 'inboxsdk__dropdown_content';
13
- this._containerEl.appendChild(this._contentEl);
14
- }
15
- getContentElement() {
16
- return this._contentEl;
17
- }
18
- getContainerElement() {
19
- return this._containerEl;
20
- }
21
- destroy() {
22
- this._containerEl.remove();
23
- }
24
- }
25
- exports.default = InboxDropdownView;
@@ -1,63 +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 _kefir = _interopRequireDefault(require("kefir"));
9
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
10
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
11
- class InboxDummyRouteView {
12
- _eventStream = (0, _kefirBus.default)();
13
- _stopper = (0, _kefirStopper.default)();
14
- constructor(type) {
15
- // Check we implement interface
16
- this;
17
- this._type = type;
18
- }
19
- getStopper() {
20
- return this._stopper;
21
- }
22
- destroy() {
23
- this._eventStream.end();
24
- this._stopper.destroy();
25
- }
26
- getElement() {
27
- throw new Error('Should not happen');
28
- }
29
- getType() {
30
- return this._type;
31
- }
32
- getRouteType() {
33
- return 'UNKNOWN';
34
- }
35
- getRouteID() {
36
- return 'UNKNOWN';
37
- }
38
- getParams() {
39
- return {};
40
- }
41
- getEventStream() {
42
- return this._eventStream;
43
- }
44
- getCustomViewElement() {
45
- return null;
46
- }
47
- refresh() {
48
- // stub
49
- }
50
- getHash() {
51
- throw new Error('should not happen');
52
- }
53
- addCollapsibleSection(sectionDescriptorProperty, groupOrderHint) {
54
- throw new Error('should not happen');
55
- }
56
- addSection(sectionDescriptorProperty, groupOrderHint) {
57
- throw new Error('should not happen');
58
- }
59
- setFullWidth(fullWidth) {
60
- throw new Error('should not happen');
61
- }
62
- }
63
- exports.default = InboxDummyRouteView;
@@ -1,274 +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 _ud = require("ud");
9
- var _asap = _interopRequireDefault(require("asap"));
10
- var _kefir = _interopRequireDefault(require("kefir"));
11
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
12
- var _bignumber = _interopRequireDefault(require("bignumber.js"));
13
- var _delayAsap = _interopRequireDefault(require("../../../lib/delay-asap"));
14
- var _censorHTMLtree = _interopRequireDefault(require("../../../../common/censorHTMLtree"));
15
- var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
16
- var _inboxAttachmentCardView = _interopRequireDefault(require("./inbox-attachment-card-view"));
17
- var _findParent = _interopRequireDefault(require("../../../../common/find-parent"));
18
- var _parser = _interopRequireDefault(require("../detection/message/parser"));
19
- var _safeEventEmitter = _interopRequireDefault(require("../../../lib/safe-event-emitter"));
20
- class AttachmentIcon extends _safeEventEmitter.default {}
21
- class InboxMessageView {
22
- _eventStream = (0, _kefirBus.default)();
23
- _attachmentCardViews = [];
24
- constructor(element, driver, parsed) {
25
- this; // interface check
26
- this._element = element;
27
- this._driver = driver;
28
- this._p = parsed;
29
- this._stopper = this._eventStream.ignoreValues().beforeEnd(() => null);
30
-
31
- // If our id changes, then destroy this view.
32
- // getMessageViewDriverStream() will create a new view for this element.
33
- (0, _makeMutationObserverChunkedStream.default)(this._element, {
34
- attributes: true,
35
- attributeFilter: ['data-msg-id']
36
- }).toProperty(() => null).map(() => this._element.getAttribute('data-msg-id')).skipDuplicates().changes().onValue(() => {
37
- this.destroy();
38
- });
39
- (0, _makeMutationObserverChunkedStream.default)(this._element, {
40
- attributes: true,
41
- attributeFilter: ['aria-expanded']
42
- }).toProperty(() => null).map(() => this._element.getAttribute('aria-expanded') === 'true').skipDuplicates().changes().takeUntilBy(this._stopper).onValue(expanded => {
43
- if (expanded) {
44
- this._reparse();
45
- } else {
46
- // Destroy on collapse so that when it's uncollapsed again, the app
47
- // can re-do its modifications.
48
- this.destroy();
49
- }
50
- });
51
- this._threadViewDriver = this._findThreadView();
52
- if (this._threadViewDriver) {
53
- this._threadViewDriver.addMessageViewDriver(this);
54
- }
55
- this._driver.getMessageViewElementsMap().set(this._element, this);
56
- this._monitorEmailAddressHovering();
57
- }
58
- _findThreadView() {
59
- const map = this._driver.getThreadViewElementsMap();
60
- const threadViewElement = (0, _findParent.default)(this._element, el => map.has(el));
61
- if (!threadViewElement) return null;
62
- return map.get(threadViewElement);
63
- }
64
- _reparse() {
65
- const oldParsed = this._p;
66
- this._p = (0, _parser.default)(this._element);
67
- if (this._p.errors.length > 0) {
68
- this._driver.getLogger().errorSite(new Error('message reparse errors'), {
69
- score: this._p.score,
70
- errors: this._p.errors,
71
- html: (0, _censorHTMLtree.default)(this._element)
72
- });
73
- }
74
- if (!oldParsed.attributes.loaded && this._p.attributes.loaded) {
75
- this._eventStream.emit({
76
- type: 'internal',
77
- eventName: 'messageLoad'
78
- });
79
- }
80
- if (oldParsed.attributes.viewState !== this._p.attributes.viewState) {
81
- this._eventStream.emit({
82
- eventName: 'viewStateChange',
83
- oldValue: oldParsed.attributes.viewState,
84
- newValue: this._p.attributes.viewState
85
- });
86
- }
87
- }
88
- _monitorEmailAddressHovering() {
89
- this._eventStream.plug(_kefir.default.fromEvents(this._element, 'mouseover').map(e => e.target).filter(element => element && element.getAttribute('email')).map(element => {
90
- const contact = {
91
- name: element.textContent,
92
- emailAddress: element.getAttribute('email')
93
- };
94
- let contactType;
95
- if (this._p.elements.sender && this._p.elements.sender.contains(element)) {
96
- contactType = 'sender';
97
- } else if (this._p.attributes.recipientElements && Array.from(this._p.attributes.recipientElements).some(el => el.contains(element))) {
98
- contactType = 'recipient';
99
- } else {
100
- return null;
101
- }
102
- return {
103
- eventName: 'contactHover',
104
- messageViewDriver: this,
105
- contact,
106
- contactType
107
- };
108
- }).filter());
109
- }
110
- addAttachmentCardViewDriver(card) {
111
- this._attachmentCardViews.push(card);
112
- card.getStopper().takeUntilBy(this._stopper).onValue(() => {
113
- this._attachmentCardViews = this._attachmentCardViews.filter(v => v !== card);
114
- });
115
- }
116
- getStopper() {
117
- return this._stopper;
118
- }
119
- getEventStream() {
120
- return this._eventStream;
121
- }
122
- isLoaded() {
123
- return this._p.attributes.loaded;
124
- }
125
- hasOpenReply() {
126
- // Inbox associates inline replies with threads, not messages.
127
- return false;
128
- }
129
- getMessageID() {
130
- const {
131
- inboxMessageId
132
- } = this._p.attributes;
133
- if (!inboxMessageId) {
134
- throw new Error('Failed to find message id');
135
- }
136
- if (/^msg-a:/.test(inboxMessageId)) {
137
- console.warn('MessageView.getMessageID() returned an incorrect message ID. This method will be deprecated soon. Use getMessageIDAsync() instead which does not have this problem.');
138
- }
139
- const m = /\d+$/.exec(inboxMessageId);
140
- if (!m) throw new Error('Should not happen');
141
- return new _bignumber.default(m[0]).toString(16);
142
- }
143
- async getMessageIDAsync() {
144
- const {
145
- inboxMessageId
146
- } = this._p.attributes;
147
- if (!inboxMessageId) {
148
- throw new Error('Failed to find message id');
149
- }
150
- if (/^msg-a:/.test(inboxMessageId)) {
151
- // If there's a composeView with the same id as this message, then that
152
- // means this message hasn't been sent as a real email yet, and we need
153
- // to wait for the send to complete before we can look up this message's
154
- // id.
155
- for (let inboxComposeView of this._driver.getComposeViewDriverLiveSet().values()) {
156
- const draftId = await inboxComposeView.getDraftID();
157
- if (draftId && `msg-a:${draftId}` === inboxMessageId) {
158
- await inboxComposeView.getStopper().take(1).toPromise();
159
- break;
160
- }
161
- }
162
- return await this._driver.getGmailMessageIdForSyncMessageId(inboxMessageId);
163
- } else {
164
- const m = /\d+$/.exec(inboxMessageId);
165
- if (!m) throw new Error('Should not happen');
166
- return new _bignumber.default(m[0]).toString(16);
167
- }
168
- }
169
- getContentsElement() {
170
- if (!this._p.elements.body) throw new Error('Could not find body element');
171
- return this._p.elements.body;
172
- }
173
- getLinks() {
174
- throw new Error('not implemented yet');
175
- }
176
- isElementInQuotedArea(el) {
177
- const quotedArea = (0, _findParent.default)(el, el => el.classList.contains('gmail_extra'));
178
- return quotedArea != null;
179
- }
180
- addMoreMenuItem(options) {
181
- throw new Error('not implemented yet');
182
- }
183
- addAttachmentIcon(options) {
184
- console.warn('MessageView.addAttachmentIcon is not implemented yet in Inbox');
185
- return new AttachmentIcon();
186
- }
187
- getAttachmentCardViewDrivers() {
188
- return this._attachmentCardViews;
189
- }
190
- addAttachmentCard(options) {
191
- const {
192
- attachmentsArea
193
- } = this._p.elements;
194
- if (!attachmentsArea) throw new Error('Could not find attachments area');
195
- let container = attachmentsArea.lastElementChild;
196
- if (!container) {
197
- attachmentsArea.style.display = '';
198
- attachmentsArea.style.margin = '16px 0 0';
199
- attachmentsArea.style.paddingTop = '16px';
200
- container = document.createElement('div');
201
- attachmentsArea.appendChild(container);
202
- }
203
- return new _inboxAttachmentCardView.default({
204
- ...options,
205
- element: null,
206
- container
207
- }, this._driver);
208
- }
209
- addButtonToDownloadAllArea(options) {
210
- // no-op in Inbox
211
- }
212
- getViewState() {
213
- return this._p.attributes.viewState;
214
- }
215
- getDateString() {
216
- throw new Error('not implemented yet');
217
- }
218
- getSender() {
219
- const {
220
- sender
221
- } = this._p.elements;
222
- if (!sender) throw new Error('could not find sender element');
223
- const emailAddress = sender.getAttribute('email');
224
- if (!emailAddress) throw new Error('could not find email address');
225
- return {
226
- emailAddress,
227
- name: sender.textContent
228
- };
229
- }
230
- getRecipients() {
231
- const userContact = this._driver.getUserContact();
232
- return Array.prototype.map.call(this._p.attributes.recipientElements, el => {
233
- const emailAddress = el.getAttribute('email');
234
- if (emailAddress === userContact.emailAddress) {
235
- return userContact;
236
- }
237
- return {
238
- emailAddress,
239
- name: el.textContent
240
- };
241
- });
242
- }
243
- getRecipientEmailAddresses() {
244
- return this.getRecipients().map(_ref => {
245
- let {
246
- emailAddress
247
- } = _ref;
248
- return emailAddress;
249
- });
250
- }
251
- async getRecipientsFull() {
252
- return this.getRecipients();
253
- }
254
- getThreadViewDriver() {
255
- if (!this._threadViewDriver) throw new Error('failed to find threadView');
256
- return this._threadViewDriver;
257
- }
258
- getReadyStream() {
259
- // Needs to emit after any attachment cards have been added in order for
260
- // an app calling getFileAttachmentCardViews() immediately to see the cards.
261
- // The cards are emitted several microtasks after the message, so we delay
262
- // by about 10 microtasks here. An integration test tests this at least.
263
- // TODO something else.
264
- return _kefir.default.repeat(i => i > 10 ? null : (0, _delayAsap.default)(null)).ignoreValues().beforeEnd(() => null);
265
- }
266
- destroy() {
267
- this._eventStream.end();
268
- this._attachmentCardViews.slice().forEach(card => {
269
- card.destroy();
270
- });
271
- }
272
- }
273
- var _default = (0, _ud.defn)(module, InboxMessageView);
274
- exports.default = _default;
@@ -1,112 +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 _ud = require("ud");
9
- var _sortBy = _interopRequireDefault(require("lodash/sortBy"));
10
- var _kefir = _interopRequireDefault(require("kefir"));
11
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
12
- var _insertElementInOrder = _interopRequireDefault(require("../../../lib/dom/insert-element-in-order"));
13
- var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
14
- class InboxModalView {
15
- _eventStream = (0, _kefirBus.default)();
16
- constructor(options) {
17
- this._setupModalContainerElement(options);
18
- this._processOptions(options);
19
- const closeElement = (0, _querySelectorOrFail.default)(this._modalContainerElement, '.inboxsdk__close_button');
20
- closeElement.addEventListener('click', event => {
21
- this._eventStream.emit({
22
- eventName: 'closeClick',
23
- domEvent: event
24
- });
25
- });
26
- }
27
- destroy() {
28
- this._modalContainerElement.remove();
29
- this._eventStream.end();
30
- }
31
- getModalContainerElement() {
32
- return this._modalContainerElement;
33
- }
34
- getEventStream() {
35
- return this._eventStream;
36
- }
37
- _processOptions(options) {
38
- this.setTitle(options.title);
39
- this.setContentElement(options.el);
40
- this.setButtons(options.buttons || []);
41
- this.setChromeClasses(options.chrome, options.showCloseButton);
42
- }
43
- setTitle(title) {
44
- const heading = (0, _querySelectorOrFail.default)(this._modalContainerElement, '[role=heading]');
45
- if (!title) {
46
- heading.style.display = 'none';
47
- } else {
48
- heading.style.display = '';
49
- heading.textContent = title;
50
- }
51
- }
52
- setContentElement(element) {
53
- const content = (0, _querySelectorOrFail.default)(this._modalContainerElement, '.inboxsdk__modal_content');
54
- content.innerHTML = '';
55
- if (typeof element === 'string') {
56
- content.innerHTML = element;
57
- } else if (element instanceof Element) {
58
- content.appendChild(element);
59
- }
60
- }
61
- setButtons(buttons) {
62
- const buttonContainer = (0, _querySelectorOrFail.default)(this._modalContainerElement, '.inboxsdk__modal_buttons');
63
- if (buttons.length > 0) {
64
- this._modalContainerElement.classList.add('inboxsdk__modal_hasButtons');
65
- } else {
66
- this._modalContainerElement.classList.remove('inboxsdk__modal_hasButtons');
67
- }
68
- buttonContainer.innerHTML = '';
69
- (0, _sortBy.default)(buttons, [button => button.type === 'PRIMARY_ACTION' ? 0 : 1, button => button.orderHint || 0]).forEach(buttonDescriptor => {
70
- var buttonEl = document.createElement('input');
71
- buttonEl.className = buttonDescriptor.type === 'PRIMARY_ACTION' ? 'inboxsdk__primary' : '';
72
- buttonEl.type = 'button';
73
- buttonEl.value = buttonDescriptor.text;
74
- buttonEl.addEventListener('click', event => {
75
- event.preventDefault();
76
- buttonDescriptor.onClick.call(null);
77
- });
78
- buttonContainer.appendChild(buttonEl);
79
- });
80
- }
81
- setChromeClasses(chrome, showCloseButton) {
82
- if (chrome === false) {
83
- this._modalContainerElement.classList.add('inboxsdk__modal_chromeless');
84
- } else {
85
- this._modalContainerElement.classList.remove('inboxsdk__modal_chromeless');
86
- }
87
- if (showCloseButton) {
88
- this._modalContainerElement.classList.add('inboxsdk__modal_showCloseButton');
89
- } else {
90
- this._modalContainerElement.classList.remove('inboxsdk__modal_showCloseButton');
91
- }
92
- }
93
- _setupModalContainerElement(options) {
94
- const constrainTitleWidthTopRowClass = options.constrainTitleWidth ? 'inboxsdk__modal_toprow--constrain-title-width' : '';
95
- this._modalContainerElement = document.createElement('div');
96
- this._modalContainerElement.className = 'inboxsdk__modal_fullscreen';
97
- var htmlString = `
98
- <div class="inboxsdk__modal_container" tabindex="0" role="alertdialog">
99
- <div class="inboxsdk__modal_toprow ${constrainTitleWidthTopRowClass}">
100
- <span role="heading"></span>
101
- <button title="Close" class="inboxsdk__close_button"></button>
102
- </div>
103
- <div class="inboxsdk__modal_content">
104
- </div>
105
- <div class="inboxsdk__modal_buttons"></div>
106
- </div>
107
- `;
108
- this._modalContainerElement.innerHTML = htmlString;
109
- }
110
- }
111
- var _default = (0, _ud.defn)(module, InboxModalView);
112
- exports.default = _default;
@@ -1,96 +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 _includes = _interopRequireDefault(require("lodash/includes"));
9
- var _kefir = _interopRequireDefault(require("kefir"));
10
- var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
11
- var _kefirBus = _interopRequireDefault(require("kefir-bus"));
12
- var _router = require("../../../constants/router");
13
- function getRouteID(path) {
14
- if (path === '') {
15
- return _router.NATIVE_ROUTE_IDS.INBOX;
16
- }
17
- if ((0, _includes.default)(['snoozed', 'reminders', 'done', 'spam', 'trash'], path)) {
18
- return _router.NATIVE_ROUTE_IDS[path.toUpperCase()];
19
- }
20
- if (/search\//.test(path)) {
21
- return _router.NATIVE_ROUTE_IDS.SEARCH;
22
- }
23
- return 'UNKNOWN';
24
- }
25
- function getParams(path) {
26
- const parts = path.split('/');
27
- if (parts.length < 2) {
28
- return {};
29
- }
30
- return {
31
- query: decodeURIComponent(parts[1])
32
- };
33
- }
34
- class InboxRouteView {
35
- _eventStream = (0, _kefirBus.default)();
36
- _stopper = (0, _kefirStopper.default)();
37
- constructor(el, type) {
38
- // Check we implement interface
39
- this;
40
- this._element = el;
41
- this._type = type;
42
- const path = document.location.pathname.slice(1);
43
- this._routeID = getRouteID(path);
44
- this._params = getParams(path);
45
- this._routeType = this._routeID === 'UNKNOWN' ? 'UNKNOWN' : 'LIST';
46
-
47
- // console.log('el jsan', el.getAttribute('jsan'));
48
- // if (this._type === 'CUSTOM') {
49
- // }
50
- }
51
-
52
- getStopper() {
53
- return this._stopper;
54
- }
55
- destroy() {
56
- this._eventStream.end();
57
- this._stopper.destroy();
58
- }
59
- getElement() {
60
- return this._element;
61
- }
62
- getType() {
63
- return this._type;
64
- }
65
- getRouteType() {
66
- return this._routeType;
67
- }
68
- getRouteID() {
69
- return this._routeID;
70
- }
71
- getParams() {
72
- return this._params;
73
- }
74
- getEventStream() {
75
- return this._eventStream;
76
- }
77
- refresh() {
78
- // stub
79
- }
80
- getHash() {
81
- throw new Error('should not happen');
82
- }
83
- getCustomViewElement() {
84
- throw new Error('should not happen');
85
- }
86
- addCollapsibleSection(sectionDescriptorProperty, groupOrderHint) {
87
- throw new Error('not implemented yet');
88
- }
89
- addSection(sectionDescriptorProperty, groupOrderHint) {
90
- throw new Error('not implemented yet');
91
- }
92
- setFullWidth(fullWidth) {
93
- throw new Error('should not happen');
94
- }
95
- }
96
- exports.default = InboxRouteView;