@inboxsdk/core 0.2.28-alpha.4 → 0.2.28-alpha.5
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.
- package/inboxsdk.js +1 -1
- package/package.json +5 -1
- package/src/inboxsdk-js/check-requirements.js +7 -3
- package/src/inboxsdk-js/header.js +1 -0
- package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
- package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
- package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
- package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
- package/src/inboxsdk-js/inboxsdk.js +33 -39
- package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
- package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
- package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
- package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
- package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
- package/src/injected-js/gmail/thread-identifier/index.js +57 -93
- package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
- package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
- package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
- package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
- package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
- package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
- package/src/injected-js/main.js +11 -24
- package/src/injected-js/message-metadata-holder.js +52 -82
- package/src/injected-js/setup-data-exposer.js +89 -148
- package/src/injected-js/setup-error-silencer.js +21 -21
- package/src/injected-js/setup-event-reemitter.js +30 -22
- package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
- package/src/injected-js/setupPushStateListener.js +18 -11
- package/src/injected-js/xhr-helper.js +62 -65
- package/src/injected-js/xhr-proxy-factory.js +195 -445
- package/src/injected-js/xhr-proxy-factory.test.js +824 -991
- package/src/platform-implementation-js/constants/router.js +14 -9
- package/src/platform-implementation-js/constants/toolbars.js +8 -3
- package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
- package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
- package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
- package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
- package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
- package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
- package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
- package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
- package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
- package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
- package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
- package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
- package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
- package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
- package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
- package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
- package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
- package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
- package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
- package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
- package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
- package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
- package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
- package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
- package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
- package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
- package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
- package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
- package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
- package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
- package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
- package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
- package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
- package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
- package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
- package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
- package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
- package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
- package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
- package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
- package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
- package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
- package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
- package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
- package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
- package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
- package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
- package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
- package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
- package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
- package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
- package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
- package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
- package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
- package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
- package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
- package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
- package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
- package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
- package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
- package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
- package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
- package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
- package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
- package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
- package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
- package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
- package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
- package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
- package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
- package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
- package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
- package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
- package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
- package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
- package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
- package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
- package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
- package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
- package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
- package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
- package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
- package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
- package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
- package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
- package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
- package/src/platform-implementation-js/lib/shared-style.js +14 -13
- package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
- package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
- package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
- package/src/platform-implementation-js/main.js +9 -24
- package/src/platform-implementation-js/namespaces/compose.js +37 -60
- package/src/platform-implementation-js/namespaces/conversations.js +52 -124
- package/src/platform-implementation-js/namespaces/global.js +27 -39
- package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
- package/src/platform-implementation-js/namespaces/lists.js +25 -31
- package/src/platform-implementation-js/namespaces/modal.js +34 -28
- package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
- package/src/platform-implementation-js/namespaces/router.js +70 -137
- package/src/platform-implementation-js/namespaces/search.js +19 -17
- package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
- package/src/platform-implementation-js/namespaces/user.js +36 -37
- package/src/platform-implementation-js/namespaces/widgets.js +54 -61
- package/src/platform-implementation-js/platform-implementation.js +98 -229
- package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
- package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
- package/src/platform-implementation-js/views/content-panel-view.js +28 -30
- package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
- package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
- package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
- package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
- package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
- package/src/platform-implementation-js/views/nav-item-view.js +51 -115
- package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
- package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
- package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
- package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
- package/src/platform-implementation-js/views/section-view.js +60 -52
- package/src/platform-implementation-js/views/thread-row-view.js +49 -74
- package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
- package/src/platform-implementation-js/widgets/modal-view.js +39 -68
- package/src/platform-implementation-js/widgets/mole-view.js +22 -22
- package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
|
@@ -1,211 +1,151 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
VIEW_STATE,
|
|
23
|
-
} from '../../../driver-interfaces/message-view-driver';
|
|
24
|
-
import SafeEventEmitter from '../../../lib/safe-event-emitter';
|
|
25
|
-
|
|
26
|
-
class AttachmentIcon extends SafeEventEmitter {}
|
|
27
|
-
|
|
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 _asap = _interopRequireDefault(require("asap"));
|
|
11
|
+
var _kefir = _interopRequireDefault(require("kefir"));
|
|
12
|
+
var _kefirBus = _interopRequireDefault(require("kefir-bus"));
|
|
13
|
+
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
14
|
+
var _delayAsap = _interopRequireDefault(require("../../../lib/delay-asap"));
|
|
15
|
+
var _censorHTMLtree = _interopRequireDefault(require("../../../../common/censorHTMLtree"));
|
|
16
|
+
var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../../lib/dom/make-mutation-observer-chunked-stream"));
|
|
17
|
+
var _inboxAttachmentCardView = _interopRequireDefault(require("./inbox-attachment-card-view"));
|
|
18
|
+
var _findParent = _interopRequireDefault(require("../../../../common/find-parent"));
|
|
19
|
+
var _parser = _interopRequireDefault(require("../detection/message/parser"));
|
|
20
|
+
var _safeEventEmitter = _interopRequireDefault(require("../../../lib/safe-event-emitter"));
|
|
21
|
+
class AttachmentIcon extends _safeEventEmitter.default {}
|
|
28
22
|
class InboxMessageView {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
_eventStream: Bus<Object> = kefirBus();
|
|
34
|
-
_threadViewDriver: ?InboxThreadView;
|
|
35
|
-
_attachmentCardViews: InboxAttachmentCardView[] = [];
|
|
36
|
-
|
|
37
|
-
constructor(element: HTMLElement, driver: InboxDriver, parsed: Parsed) {
|
|
38
|
-
(this: MessageViewDriver); // interface check
|
|
23
|
+
constructor(element, driver, parsed) {
|
|
24
|
+
(0, _defineProperty2.default)(this, "_eventStream", (0, _kefirBus.default)());
|
|
25
|
+
(0, _defineProperty2.default)(this, "_attachmentCardViews", []);
|
|
26
|
+
this; // interface check
|
|
39
27
|
this._element = element;
|
|
40
28
|
this._driver = driver;
|
|
41
29
|
this._p = parsed;
|
|
42
|
-
|
|
43
30
|
this._stopper = this._eventStream.ignoreValues().beforeEnd(() => null);
|
|
44
31
|
|
|
45
32
|
// If our id changes, then destroy this view.
|
|
46
33
|
// getMessageViewDriverStream() will create a new view for this element.
|
|
47
|
-
|
|
34
|
+
(0, _makeMutationObserverChunkedStream.default)(this._element, {
|
|
48
35
|
attributes: true,
|
|
49
|
-
attributeFilter: ['data-msg-id']
|
|
50
|
-
})
|
|
51
|
-
.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
.changes()
|
|
55
|
-
.onValue(() => {
|
|
56
|
-
this.destroy();
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
makeMutationObserverChunkedStream(this._element, {
|
|
36
|
+
attributeFilter: ['data-msg-id']
|
|
37
|
+
}).toProperty(() => null).map(() => this._element.getAttribute('data-msg-id')).skipDuplicates().changes().onValue(() => {
|
|
38
|
+
this.destroy();
|
|
39
|
+
});
|
|
40
|
+
(0, _makeMutationObserverChunkedStream.default)(this._element, {
|
|
60
41
|
attributes: true,
|
|
61
|
-
attributeFilter: ['aria-expanded']
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
} else {
|
|
72
|
-
// Destroy on collapse so that when it's uncollapsed again, the app
|
|
73
|
-
// can re-do its modifications.
|
|
74
|
-
this.destroy();
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
|
|
42
|
+
attributeFilter: ['aria-expanded']
|
|
43
|
+
}).toProperty(() => null).map(() => this._element.getAttribute('aria-expanded') === 'true').skipDuplicates().changes().takeUntilBy(this._stopper).onValue(expanded => {
|
|
44
|
+
if (expanded) {
|
|
45
|
+
this._reparse();
|
|
46
|
+
} else {
|
|
47
|
+
// Destroy on collapse so that when it's uncollapsed again, the app
|
|
48
|
+
// can re-do its modifications.
|
|
49
|
+
this.destroy();
|
|
50
|
+
}
|
|
51
|
+
});
|
|
78
52
|
this._threadViewDriver = this._findThreadView();
|
|
79
53
|
if (this._threadViewDriver) {
|
|
80
54
|
this._threadViewDriver.addMessageViewDriver(this);
|
|
81
55
|
}
|
|
82
|
-
|
|
83
56
|
this._driver.getMessageViewElementsMap().set(this._element, this);
|
|
84
|
-
|
|
85
57
|
this._monitorEmailAddressHovering();
|
|
86
58
|
}
|
|
87
|
-
|
|
88
|
-
_findThreadView(): ?InboxThreadView {
|
|
59
|
+
_findThreadView() {
|
|
89
60
|
const map = this._driver.getThreadViewElementsMap();
|
|
90
|
-
const threadViewElement =
|
|
91
|
-
map.has((el: any))
|
|
92
|
-
);
|
|
61
|
+
const threadViewElement = (0, _findParent.default)(this._element, el => map.has(el));
|
|
93
62
|
if (!threadViewElement) return null;
|
|
94
63
|
return map.get(threadViewElement);
|
|
95
64
|
}
|
|
96
|
-
|
|
97
65
|
_reparse() {
|
|
98
66
|
const oldParsed = this._p;
|
|
99
|
-
this._p =
|
|
67
|
+
this._p = (0, _parser.default)(this._element);
|
|
100
68
|
if (this._p.errors.length > 0) {
|
|
101
69
|
this._driver.getLogger().errorSite(new Error('message reparse errors'), {
|
|
102
70
|
score: this._p.score,
|
|
103
71
|
errors: this._p.errors,
|
|
104
|
-
html:
|
|
72
|
+
html: (0, _censorHTMLtree.default)(this._element)
|
|
105
73
|
});
|
|
106
74
|
}
|
|
107
|
-
|
|
108
75
|
if (!oldParsed.attributes.loaded && this._p.attributes.loaded) {
|
|
109
76
|
this._eventStream.emit({
|
|
110
77
|
type: 'internal',
|
|
111
|
-
eventName: 'messageLoad'
|
|
78
|
+
eventName: 'messageLoad'
|
|
112
79
|
});
|
|
113
80
|
}
|
|
114
81
|
if (oldParsed.attributes.viewState !== this._p.attributes.viewState) {
|
|
115
82
|
this._eventStream.emit({
|
|
116
83
|
eventName: 'viewStateChange',
|
|
117
84
|
oldValue: oldParsed.attributes.viewState,
|
|
118
|
-
newValue: this._p.attributes.viewState
|
|
85
|
+
newValue: this._p.attributes.viewState
|
|
119
86
|
});
|
|
120
87
|
}
|
|
121
88
|
}
|
|
122
|
-
|
|
123
89
|
_monitorEmailAddressHovering() {
|
|
124
|
-
this._eventStream.plug(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
)
|
|
145
|
-
) {
|
|
146
|
-
contactType = 'recipient';
|
|
147
|
-
} else {
|
|
148
|
-
return null;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return {
|
|
152
|
-
eventName: 'contactHover',
|
|
153
|
-
messageViewDriver: this,
|
|
154
|
-
contact,
|
|
155
|
-
contactType,
|
|
156
|
-
};
|
|
157
|
-
})
|
|
158
|
-
.filter()
|
|
159
|
-
);
|
|
90
|
+
this._eventStream.plug(_kefir.default.fromEvents(this._element, 'mouseover').map(e => e.target).filter(element => element && element.getAttribute('email')).map(element => {
|
|
91
|
+
const contact = {
|
|
92
|
+
name: element.textContent,
|
|
93
|
+
emailAddress: element.getAttribute('email')
|
|
94
|
+
};
|
|
95
|
+
let contactType;
|
|
96
|
+
if (this._p.elements.sender && this._p.elements.sender.contains(element)) {
|
|
97
|
+
contactType = 'sender';
|
|
98
|
+
} else if (this._p.attributes.recipientElements && Array.from(this._p.attributes.recipientElements).some(el => el.contains(element))) {
|
|
99
|
+
contactType = 'recipient';
|
|
100
|
+
} else {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
return {
|
|
104
|
+
eventName: 'contactHover',
|
|
105
|
+
messageViewDriver: this,
|
|
106
|
+
contact,
|
|
107
|
+
contactType
|
|
108
|
+
};
|
|
109
|
+
}).filter());
|
|
160
110
|
}
|
|
161
|
-
|
|
162
|
-
addAttachmentCardViewDriver(card: InboxAttachmentCardView) {
|
|
111
|
+
addAttachmentCardViewDriver(card) {
|
|
163
112
|
this._attachmentCardViews.push(card);
|
|
164
|
-
card
|
|
165
|
-
.
|
|
166
|
-
|
|
167
|
-
.onValue(() => {
|
|
168
|
-
this._attachmentCardViews = this._attachmentCardViews.filter(
|
|
169
|
-
(v) => v !== card
|
|
170
|
-
);
|
|
171
|
-
});
|
|
113
|
+
card.getStopper().takeUntilBy(this._stopper).onValue(() => {
|
|
114
|
+
this._attachmentCardViews = this._attachmentCardViews.filter(v => v !== card);
|
|
115
|
+
});
|
|
172
116
|
}
|
|
173
|
-
|
|
174
117
|
getStopper() {
|
|
175
118
|
return this._stopper;
|
|
176
119
|
}
|
|
177
|
-
|
|
178
|
-
getEventStream(): Kefir.Observable<Object> {
|
|
120
|
+
getEventStream() {
|
|
179
121
|
return this._eventStream;
|
|
180
122
|
}
|
|
181
|
-
|
|
182
123
|
isLoaded() {
|
|
183
124
|
return this._p.attributes.loaded;
|
|
184
125
|
}
|
|
185
|
-
|
|
186
126
|
hasOpenReply() {
|
|
187
127
|
// Inbox associates inline replies with threads, not messages.
|
|
188
128
|
return false;
|
|
189
129
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
130
|
+
getMessageID() {
|
|
131
|
+
const {
|
|
132
|
+
inboxMessageId
|
|
133
|
+
} = this._p.attributes;
|
|
193
134
|
if (!inboxMessageId) {
|
|
194
135
|
throw new Error('Failed to find message id');
|
|
195
136
|
}
|
|
196
137
|
if (/^msg-a:/.test(inboxMessageId)) {
|
|
197
138
|
// eslint-disable-next-line no-console
|
|
198
|
-
console.warn(
|
|
199
|
-
'MessageView.getMessageID() returned an incorrect message ID. This method will be deprecated soon. Use getMessageIDAsync() instead which does not have this problem.'
|
|
200
|
-
);
|
|
139
|
+
console.warn('MessageView.getMessageID() returned an incorrect message ID. This method will be deprecated soon. Use getMessageIDAsync() instead which does not have this problem.');
|
|
201
140
|
}
|
|
202
141
|
const m = /\d+$/.exec(inboxMessageId);
|
|
203
142
|
if (!m) throw new Error('Should not happen');
|
|
204
|
-
return new
|
|
143
|
+
return new _bignumber.default(m[0]).toString(16);
|
|
205
144
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
145
|
+
async getMessageIDAsync() {
|
|
146
|
+
const {
|
|
147
|
+
inboxMessageId
|
|
148
|
+
} = this._p.attributes;
|
|
209
149
|
if (!inboxMessageId) {
|
|
210
150
|
throw new Error('Failed to find message id');
|
|
211
151
|
}
|
|
@@ -214,55 +154,46 @@ class InboxMessageView {
|
|
|
214
154
|
// means this message hasn't been sent as a real email yet, and we need
|
|
215
155
|
// to wait for the send to complete before we can look up this message's
|
|
216
156
|
// id.
|
|
217
|
-
for (let inboxComposeView of this._driver
|
|
218
|
-
.getComposeViewDriverLiveSet()
|
|
219
|
-
.values()) {
|
|
157
|
+
for (let inboxComposeView of this._driver.getComposeViewDriverLiveSet().values()) {
|
|
220
158
|
const draftId = await inboxComposeView.getDraftID();
|
|
221
159
|
if (draftId && `msg-a:${draftId}` === inboxMessageId) {
|
|
222
160
|
await inboxComposeView.getStopper().take(1).toPromise();
|
|
223
161
|
break;
|
|
224
162
|
}
|
|
225
163
|
}
|
|
226
|
-
return await this._driver.getGmailMessageIdForSyncMessageId(
|
|
227
|
-
inboxMessageId
|
|
228
|
-
);
|
|
164
|
+
return await this._driver.getGmailMessageIdForSyncMessageId(inboxMessageId);
|
|
229
165
|
} else {
|
|
230
166
|
const m = /\d+$/.exec(inboxMessageId);
|
|
231
167
|
if (!m) throw new Error('Should not happen');
|
|
232
|
-
return new
|
|
168
|
+
return new _bignumber.default(m[0]).toString(16);
|
|
233
169
|
}
|
|
234
170
|
}
|
|
235
|
-
|
|
236
171
|
getContentsElement() {
|
|
237
172
|
if (!this._p.elements.body) throw new Error('Could not find body element');
|
|
238
173
|
return this._p.elements.body;
|
|
239
174
|
}
|
|
240
|
-
|
|
241
|
-
getLinks(): Array<MessageViewLinkDescriptor> {
|
|
175
|
+
getLinks() {
|
|
242
176
|
throw new Error('not implemented yet');
|
|
243
177
|
}
|
|
244
|
-
isElementInQuotedArea(el
|
|
245
|
-
const quotedArea =
|
|
246
|
-
el.classList.contains('gmail_extra')
|
|
247
|
-
);
|
|
178
|
+
isElementInQuotedArea(el) {
|
|
179
|
+
const quotedArea = (0, _findParent.default)(el, el => el.classList.contains('gmail_extra'));
|
|
248
180
|
return quotedArea != null;
|
|
249
181
|
}
|
|
250
|
-
addMoreMenuItem(options
|
|
182
|
+
addMoreMenuItem(options) {
|
|
251
183
|
throw new Error('not implemented yet');
|
|
252
184
|
}
|
|
253
|
-
addAttachmentIcon(options
|
|
185
|
+
addAttachmentIcon(options) {
|
|
254
186
|
// eslint-disable-next-line no-console
|
|
255
|
-
console.warn(
|
|
256
|
-
'MessageView.addAttachmentIcon is not implemented yet in Inbox'
|
|
257
|
-
);
|
|
258
|
-
|
|
187
|
+
console.warn('MessageView.addAttachmentIcon is not implemented yet in Inbox');
|
|
259
188
|
return new AttachmentIcon();
|
|
260
189
|
}
|
|
261
190
|
getAttachmentCardViewDrivers() {
|
|
262
|
-
return
|
|
191
|
+
return this._attachmentCardViews;
|
|
263
192
|
}
|
|
264
|
-
addAttachmentCard(options
|
|
265
|
-
const {
|
|
193
|
+
addAttachmentCard(options) {
|
|
194
|
+
const {
|
|
195
|
+
attachmentsArea
|
|
196
|
+
} = this._p.elements;
|
|
266
197
|
if (!attachmentsArea) throw new Error('Could not find attachments area');
|
|
267
198
|
let container = attachmentsArea.lastElementChild;
|
|
268
199
|
if (!container) {
|
|
@@ -272,77 +203,75 @@ class InboxMessageView {
|
|
|
272
203
|
container = document.createElement('div');
|
|
273
204
|
attachmentsArea.appendChild(container);
|
|
274
205
|
}
|
|
275
|
-
return new
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
206
|
+
return new _inboxAttachmentCardView.default({
|
|
207
|
+
...options,
|
|
208
|
+
element: null,
|
|
209
|
+
container
|
|
210
|
+
}, this._driver);
|
|
279
211
|
}
|
|
280
|
-
addButtonToDownloadAllArea(options
|
|
212
|
+
addButtonToDownloadAllArea(options) {
|
|
281
213
|
// no-op in Inbox
|
|
282
214
|
}
|
|
283
|
-
getViewState()
|
|
215
|
+
getViewState() {
|
|
284
216
|
return this._p.attributes.viewState;
|
|
285
217
|
}
|
|
286
|
-
getDateString()
|
|
218
|
+
getDateString() {
|
|
287
219
|
throw new Error('not implemented yet');
|
|
288
220
|
}
|
|
289
|
-
getSender()
|
|
290
|
-
const {
|
|
221
|
+
getSender() {
|
|
222
|
+
const {
|
|
223
|
+
sender
|
|
224
|
+
} = this._p.elements;
|
|
291
225
|
if (!sender) throw new Error('could not find sender element');
|
|
292
226
|
const emailAddress = sender.getAttribute('email');
|
|
293
227
|
if (!emailAddress) throw new Error('could not find email address');
|
|
294
228
|
return {
|
|
295
229
|
emailAddress,
|
|
296
|
-
name: sender.textContent
|
|
230
|
+
name: sender.textContent
|
|
297
231
|
};
|
|
298
232
|
}
|
|
299
|
-
getRecipients()
|
|
233
|
+
getRecipients() {
|
|
300
234
|
const userContact = this._driver.getUserContact();
|
|
301
|
-
return Array.prototype.map.call(
|
|
302
|
-
|
|
303
|
-
(
|
|
304
|
-
|
|
305
|
-
if (emailAddress === userContact.emailAddress) {
|
|
306
|
-
return userContact;
|
|
307
|
-
}
|
|
308
|
-
return {
|
|
309
|
-
emailAddress,
|
|
310
|
-
name: el.textContent,
|
|
311
|
-
};
|
|
235
|
+
return Array.prototype.map.call(this._p.attributes.recipientElements, el => {
|
|
236
|
+
const emailAddress = el.getAttribute('email');
|
|
237
|
+
if (emailAddress === userContact.emailAddress) {
|
|
238
|
+
return userContact;
|
|
312
239
|
}
|
|
313
|
-
|
|
240
|
+
return {
|
|
241
|
+
emailAddress,
|
|
242
|
+
name: el.textContent
|
|
243
|
+
};
|
|
244
|
+
});
|
|
314
245
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
246
|
+
getRecipientEmailAddresses() {
|
|
247
|
+
return this.getRecipients().map(_ref => {
|
|
248
|
+
let {
|
|
249
|
+
emailAddress
|
|
250
|
+
} = _ref;
|
|
251
|
+
return emailAddress;
|
|
252
|
+
});
|
|
318
253
|
}
|
|
319
|
-
|
|
320
|
-
async getRecipientsFull(): Promise<Array<Contact>> {
|
|
254
|
+
async getRecipientsFull() {
|
|
321
255
|
return this.getRecipients();
|
|
322
256
|
}
|
|
323
|
-
|
|
324
257
|
getThreadViewDriver() {
|
|
325
258
|
if (!this._threadViewDriver) throw new Error('failed to find threadView');
|
|
326
259
|
return this._threadViewDriver;
|
|
327
260
|
}
|
|
328
|
-
|
|
329
261
|
getReadyStream() {
|
|
330
262
|
// Needs to emit after any attachment cards have been added in order for
|
|
331
263
|
// an app calling getFileAttachmentCardViews() immediately to see the cards.
|
|
332
264
|
// The cards are emitted several microtasks after the message, so we delay
|
|
333
265
|
// by about 10 microtasks here. An integration test tests this at least.
|
|
334
266
|
// TODO something else.
|
|
335
|
-
return
|
|
336
|
-
.ignoreValues()
|
|
337
|
-
.beforeEnd(() => null);
|
|
267
|
+
return _kefir.default.repeat(i => i > 10 ? null : (0, _delayAsap.default)(null)).ignoreValues().beforeEnd(() => null);
|
|
338
268
|
}
|
|
339
|
-
|
|
340
269
|
destroy() {
|
|
341
270
|
this._eventStream.end();
|
|
342
|
-
this._attachmentCardViews.slice().forEach(
|
|
271
|
+
this._attachmentCardViews.slice().forEach(card => {
|
|
343
272
|
card.destroy();
|
|
344
273
|
});
|
|
345
274
|
}
|
|
346
275
|
}
|
|
347
|
-
|
|
348
|
-
|
|
276
|
+
var _default = (0, _ud.defn)(module, InboxMessageView);
|
|
277
|
+
exports.default = _default;
|
|
@@ -1,59 +1,48 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 _sortBy = _interopRequireDefault(require("lodash/sortBy"));
|
|
11
|
+
var _kefir = _interopRequireDefault(require("kefir"));
|
|
12
|
+
var _kefirBus = _interopRequireDefault(require("kefir-bus"));
|
|
13
|
+
var _insertElementInOrder = _interopRequireDefault(require("../../../lib/dom/insert-element-in-order"));
|
|
14
|
+
var _querySelectorOrFail = _interopRequireDefault(require("../../../lib/dom/querySelectorOrFail"));
|
|
11
15
|
class InboxModalView {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
constructor(options: Object) {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
(0, _defineProperty2.default)(this, "_eventStream", (0, _kefirBus.default)());
|
|
16
18
|
this._setupModalContainerElement(options);
|
|
17
|
-
|
|
18
19
|
this._processOptions(options);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
this._modalContainerElement,
|
|
22
|
-
'.inboxsdk__close_button'
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
closeElement.addEventListener('click', (event: MouseEvent) => {
|
|
20
|
+
const closeElement = (0, _querySelectorOrFail.default)(this._modalContainerElement, '.inboxsdk__close_button');
|
|
21
|
+
closeElement.addEventListener('click', event => {
|
|
26
22
|
this._eventStream.emit({
|
|
27
23
|
eventName: 'closeClick',
|
|
28
|
-
domEvent: event
|
|
24
|
+
domEvent: event
|
|
29
25
|
});
|
|
30
26
|
});
|
|
31
27
|
}
|
|
32
|
-
|
|
33
28
|
destroy() {
|
|
34
29
|
this._modalContainerElement.remove();
|
|
35
30
|
this._eventStream.end();
|
|
36
31
|
}
|
|
37
|
-
|
|
38
|
-
getModalContainerElement(): HTMLElement {
|
|
32
|
+
getModalContainerElement() {
|
|
39
33
|
return this._modalContainerElement;
|
|
40
34
|
}
|
|
41
|
-
getEventStream()
|
|
35
|
+
getEventStream() {
|
|
42
36
|
return this._eventStream;
|
|
43
37
|
}
|
|
44
|
-
|
|
45
|
-
_processOptions(options: Object) {
|
|
38
|
+
_processOptions(options) {
|
|
46
39
|
this.setTitle(options.title);
|
|
47
40
|
this.setContentElement(options.el);
|
|
48
41
|
this.setButtons(options.buttons || []);
|
|
49
42
|
this.setChromeClasses(options.chrome, options.showCloseButton);
|
|
50
43
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const heading = querySelector(
|
|
54
|
-
this._modalContainerElement,
|
|
55
|
-
'[role=heading]'
|
|
56
|
-
);
|
|
44
|
+
setTitle(title) {
|
|
45
|
+
const heading = (0, _querySelectorOrFail.default)(this._modalContainerElement, '[role=heading]');
|
|
57
46
|
if (!title) {
|
|
58
47
|
heading.style.display = 'none';
|
|
59
48
|
} else {
|
|
@@ -61,12 +50,8 @@ class InboxModalView {
|
|
|
61
50
|
heading.textContent = title;
|
|
62
51
|
}
|
|
63
52
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const content = querySelector(
|
|
67
|
-
this._modalContainerElement,
|
|
68
|
-
'.inboxsdk__modal_content'
|
|
69
|
-
);
|
|
53
|
+
setContentElement(element) {
|
|
54
|
+
const content = (0, _querySelectorOrFail.default)(this._modalContainerElement, '.inboxsdk__modal_content');
|
|
70
55
|
content.innerHTML = '';
|
|
71
56
|
if (typeof element === 'string') {
|
|
72
57
|
content.innerHTML = element;
|
|
@@ -74,66 +59,42 @@ class InboxModalView {
|
|
|
74
59
|
content.appendChild(element);
|
|
75
60
|
}
|
|
76
61
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const buttonContainer = querySelector(
|
|
80
|
-
this._modalContainerElement,
|
|
81
|
-
'.inboxsdk__modal_buttons'
|
|
82
|
-
);
|
|
83
|
-
|
|
62
|
+
setButtons(buttons) {
|
|
63
|
+
const buttonContainer = (0, _querySelectorOrFail.default)(this._modalContainerElement, '.inboxsdk__modal_buttons');
|
|
84
64
|
if (buttons.length > 0) {
|
|
85
65
|
this._modalContainerElement.classList.add('inboxsdk__modal_hasButtons');
|
|
86
66
|
} else {
|
|
87
|
-
this._modalContainerElement.classList.remove(
|
|
88
|
-
'inboxsdk__modal_hasButtons'
|
|
89
|
-
);
|
|
67
|
+
this._modalContainerElement.classList.remove('inboxsdk__modal_hasButtons');
|
|
90
68
|
}
|
|
91
|
-
|
|
92
69
|
buttonContainer.innerHTML = '';
|
|
93
|
-
|
|
94
|
-
(button) => (button.type === 'PRIMARY_ACTION' ? 0 : 1),
|
|
95
|
-
(button) => button.orderHint || 0,
|
|
96
|
-
]).forEach((buttonDescriptor) => {
|
|
70
|
+
(0, _sortBy.default)(buttons, [button => button.type === 'PRIMARY_ACTION' ? 0 : 1, button => button.orderHint || 0]).forEach(buttonDescriptor => {
|
|
97
71
|
var buttonEl = document.createElement('input');
|
|
98
|
-
buttonEl.className =
|
|
99
|
-
buttonDescriptor.type === 'PRIMARY_ACTION' ? 'inboxsdk__primary' : '';
|
|
72
|
+
buttonEl.className = buttonDescriptor.type === 'PRIMARY_ACTION' ? 'inboxsdk__primary' : '';
|
|
100
73
|
buttonEl.type = 'button';
|
|
101
74
|
buttonEl.value = buttonDescriptor.text;
|
|
102
|
-
buttonEl.addEventListener('click',
|
|
75
|
+
buttonEl.addEventListener('click', event => {
|
|
103
76
|
event.preventDefault();
|
|
104
77
|
buttonDescriptor.onClick.call(null);
|
|
105
78
|
});
|
|
106
79
|
buttonContainer.appendChild(buttonEl);
|
|
107
80
|
});
|
|
108
81
|
}
|
|
109
|
-
|
|
110
|
-
setChromeClasses(chrome: boolean, showCloseButton: boolean) {
|
|
82
|
+
setChromeClasses(chrome, showCloseButton) {
|
|
111
83
|
if (chrome === false) {
|
|
112
84
|
this._modalContainerElement.classList.add('inboxsdk__modal_chromeless');
|
|
113
85
|
} else {
|
|
114
|
-
this._modalContainerElement.classList.remove(
|
|
115
|
-
'inboxsdk__modal_chromeless'
|
|
116
|
-
);
|
|
86
|
+
this._modalContainerElement.classList.remove('inboxsdk__modal_chromeless');
|
|
117
87
|
}
|
|
118
88
|
if (showCloseButton) {
|
|
119
|
-
this._modalContainerElement.classList.add(
|
|
120
|
-
'inboxsdk__modal_showCloseButton'
|
|
121
|
-
);
|
|
89
|
+
this._modalContainerElement.classList.add('inboxsdk__modal_showCloseButton');
|
|
122
90
|
} else {
|
|
123
|
-
this._modalContainerElement.classList.remove(
|
|
124
|
-
'inboxsdk__modal_showCloseButton'
|
|
125
|
-
);
|
|
91
|
+
this._modalContainerElement.classList.remove('inboxsdk__modal_showCloseButton');
|
|
126
92
|
}
|
|
127
93
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const constrainTitleWidthTopRowClass = options.constrainTitleWidth
|
|
131
|
-
? 'inboxsdk__modal_toprow--constrain-title-width'
|
|
132
|
-
: '';
|
|
133
|
-
|
|
94
|
+
_setupModalContainerElement(options) {
|
|
95
|
+
const constrainTitleWidthTopRowClass = options.constrainTitleWidth ? 'inboxsdk__modal_toprow--constrain-title-width' : '';
|
|
134
96
|
this._modalContainerElement = document.createElement('div');
|
|
135
97
|
this._modalContainerElement.className = 'inboxsdk__modal_fullscreen';
|
|
136
|
-
|
|
137
98
|
var htmlString = `
|
|
138
99
|
<div class="inboxsdk__modal_container" tabindex="0" role="alertdialog">
|
|
139
100
|
<div class="inboxsdk__modal_toprow ${constrainTitleWidthTopRowClass}">
|
|
@@ -145,9 +106,8 @@ class InboxModalView {
|
|
|
145
106
|
<div class="inboxsdk__modal_buttons"></div>
|
|
146
107
|
</div>
|
|
147
108
|
`;
|
|
148
|
-
|
|
149
109
|
this._modalContainerElement.innerHTML = htmlString;
|
|
150
110
|
}
|
|
151
111
|
}
|
|
152
|
-
|
|
153
|
-
|
|
112
|
+
var _default = (0, _ud.defn)(module, InboxModalView);
|
|
113
|
+
exports.default = _default;
|