@inboxsdk/core 0.2.28-alpha.4 → 0.2.28-alpha.6
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/inboxsdk.d.ts +2 -0
- 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,15 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _difference = _interopRequireDefault(require("lodash/difference"));
|
|
9
|
+
var _once = _interopRequireDefault(require("lodash/once"));
|
|
10
|
+
var _flatMap = _interopRequireDefault(require("lodash/flatMap"));
|
|
11
|
+
var _last = _interopRequireDefault(require("lodash/last"));
|
|
12
|
+
var _transducers = _interopRequireDefault(require("transducers.js"));
|
|
13
|
+
var _postcssSelectorParser = _interopRequireDefault(require("postcss-selector-parser"));
|
|
14
|
+
var _logger = _interopRequireDefault(require("../../lib/logger"));
|
|
15
|
+
var _querySelectorOrFail = _interopRequireDefault(require("../../lib/dom/querySelectorOrFail"));
|
|
16
|
+
const cssProcessor = (0, _postcssSelectorParser.default)();
|
|
13
17
|
|
|
14
18
|
// There are specific classnames which are added when the chat or nav sidebars
|
|
15
19
|
// are open which affect the layout of the page. We need to be able to activate
|
|
@@ -20,11 +24,7 @@ const cssProcessor = cssParser();
|
|
|
20
24
|
// applied to it depending on the current page width and sidebar settings to
|
|
21
25
|
// keep it lined up with the search bar.
|
|
22
26
|
|
|
23
|
-
const getSidebarClassnames
|
|
24
|
-
chat: ?string,
|
|
25
|
-
nav: ?string,
|
|
26
|
-
centerList: ?string,
|
|
27
|
-
} = once(() => {
|
|
27
|
+
const getSidebarClassnames = (0, _once.default)(() => {
|
|
28
28
|
// We know that the page has a CSS rule which looks like
|
|
29
29
|
// .blah.chat .foo { margin-right: bigger number; margin-left: smaller number; }
|
|
30
30
|
// where .chat is the chat sidebar classname that we want to know, and .foo
|
|
@@ -41,131 +41,74 @@ const getSidebarClassnames: () => {
|
|
|
41
41
|
|
|
42
42
|
// So first we find all the classnames on the [role=application] and make a
|
|
43
43
|
// regex for each one.
|
|
44
|
-
const classRegexes
|
|
45
|
-
(querySelector(document, '[role=application]').classList: any)
|
|
46
|
-
).map((x) => new RegExp('\\.' + x + '\\b'));
|
|
44
|
+
const classRegexes = Array.from((0, _querySelectorOrFail.default)(document, '[role=application]').classList).map(x => new RegExp('\\.' + x + '\\b'));
|
|
47
45
|
if (classRegexes.length === 0) throw new Error('no class names on element');
|
|
48
46
|
|
|
49
47
|
// rules will contain both the chat and nav sidebar rules.
|
|
50
|
-
const rules =
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
t.filter((rule) => classRegexes.some((r) => r.test(rule.selectorText))),
|
|
68
|
-
// Now just the rules that contain both margin-left and -right rules.
|
|
69
|
-
t.filter(
|
|
70
|
-
(rule) => rule.style['margin-left'] && rule.style['margin-right']
|
|
71
|
-
)
|
|
72
|
-
)
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
const onlyNavSidebarRule = t.toArray(
|
|
76
|
-
Array.prototype.slice.call(rules),
|
|
77
|
-
t.compose(
|
|
78
|
-
t.filter(
|
|
79
|
-
(rule) =>
|
|
80
|
-
parseFloat(rule.style['margin-left']) >
|
|
81
|
-
parseFloat(rule.style['margin-right'])
|
|
82
|
-
),
|
|
83
|
-
t.take(1)
|
|
84
|
-
)
|
|
85
|
-
)[0];
|
|
86
|
-
const onlyChatSidebarRule = t.toArray(
|
|
87
|
-
Array.prototype.slice.call(rules),
|
|
88
|
-
t.compose(
|
|
89
|
-
t.filter(
|
|
90
|
-
(rule) =>
|
|
91
|
-
parseFloat(rule.style['margin-left']) <
|
|
92
|
-
parseFloat(rule.style['margin-right'])
|
|
93
|
-
),
|
|
94
|
-
t.take(1)
|
|
95
|
-
)
|
|
96
|
-
)[0];
|
|
48
|
+
const rules = _transducers.default.toArray(Array.prototype.slice.call(document.styleSheets), _transducers.default.compose(_transducers.default.filter(sheet => {
|
|
49
|
+
try {
|
|
50
|
+
return sheet.cssRules && sheet.cssRules.length;
|
|
51
|
+
} catch (err) {
|
|
52
|
+
// ignore. Sometimes pages have stylesheets that don't permit their
|
|
53
|
+
// rules to be enumerated. Possibly caused by other extensions including
|
|
54
|
+
// a css file from another domain?
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}), _transducers.default.mapcat(sheet => Array.prototype.slice.call(sheet.cssRules || [])), _transducers.default.mapcat(rulesToStyleRules),
|
|
58
|
+
// We have all page rules. Filter it down to just rules mentioning one of
|
|
59
|
+
// [role=application]'s classnames.
|
|
60
|
+
_transducers.default.filter(rule => classRegexes.some(r => r.test(rule.selectorText))),
|
|
61
|
+
// Now just the rules that contain both margin-left and -right rules.
|
|
62
|
+
_transducers.default.filter(rule => rule.style['margin-left'] && rule.style['margin-right'])));
|
|
63
|
+
const onlyNavSidebarRule = _transducers.default.toArray(Array.prototype.slice.call(rules), _transducers.default.compose(_transducers.default.filter(rule => parseFloat(rule.style['margin-left']) > parseFloat(rule.style['margin-right'])), _transducers.default.take(1)))[0];
|
|
64
|
+
const onlyChatSidebarRule = _transducers.default.toArray(Array.prototype.slice.call(rules), _transducers.default.compose(_transducers.default.filter(rule => parseFloat(rule.style['margin-left']) < parseFloat(rule.style['margin-right'])), _transducers.default.take(1)))[0];
|
|
97
65
|
if (!onlyNavSidebarRule || !onlyChatSidebarRule) {
|
|
98
66
|
const err = new Error('Failed to parse element CSS rules');
|
|
99
|
-
|
|
67
|
+
_logger.default.error(err, {
|
|
100
68
|
rulesCount: rules.length,
|
|
101
69
|
hasOnlyNavSidebarRule: !!onlyNavSidebarRule,
|
|
102
|
-
hasOnlyChatSidebarRule: !!onlyChatSidebarRule
|
|
70
|
+
hasOnlyChatSidebarRule: !!onlyChatSidebarRule
|
|
103
71
|
});
|
|
104
72
|
throw err;
|
|
105
73
|
}
|
|
106
|
-
|
|
107
|
-
function getMentionedClassNames(node): string[] {
|
|
74
|
+
function getMentionedClassNames(node) {
|
|
108
75
|
switch (node.type) {
|
|
109
76
|
case 'root':
|
|
110
77
|
case 'selector':
|
|
111
|
-
return
|
|
78
|
+
return (0, _flatMap.default)(node.nodes, getMentionedClassNames);
|
|
112
79
|
case 'class':
|
|
113
80
|
return [node.value];
|
|
114
81
|
default:
|
|
115
82
|
return [];
|
|
116
83
|
}
|
|
117
84
|
}
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
);
|
|
122
|
-
const onlyChatSidebarRuleClassNames
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
const chatSidebarClassNames: string[] = difference(
|
|
127
|
-
onlyChatSidebarRuleClassNames,
|
|
128
|
-
onlyNavSidebarRuleClassNames
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
const navSidebarClassNames: string[] = difference(
|
|
132
|
-
onlyNavSidebarRuleClassNames,
|
|
133
|
-
onlyChatSidebarRuleClassNames
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
const centerListClassName: ?string =
|
|
137
|
-
last(onlyNavSidebarRuleClassNames) === last(onlyChatSidebarRuleClassNames)
|
|
138
|
-
? last(onlyNavSidebarRuleClassNames)
|
|
139
|
-
: null;
|
|
140
|
-
|
|
141
|
-
if (
|
|
142
|
-
chatSidebarClassNames.length !== 1 ||
|
|
143
|
-
navSidebarClassNames.length !== 1 ||
|
|
144
|
-
!centerListClassName
|
|
145
|
-
) {
|
|
146
|
-
Logger.error(new Error('Failed to find sidebar classnames'), {
|
|
85
|
+
const onlyNavSidebarRuleClassNames = getMentionedClassNames(cssProcessor.process(onlyNavSidebarRule.selectorText).res);
|
|
86
|
+
const onlyChatSidebarRuleClassNames = getMentionedClassNames(cssProcessor.process(onlyChatSidebarRule.selectorText).res);
|
|
87
|
+
const chatSidebarClassNames = (0, _difference.default)(onlyChatSidebarRuleClassNames, onlyNavSidebarRuleClassNames);
|
|
88
|
+
const navSidebarClassNames = (0, _difference.default)(onlyNavSidebarRuleClassNames, onlyChatSidebarRuleClassNames);
|
|
89
|
+
const centerListClassName = (0, _last.default)(onlyNavSidebarRuleClassNames) === (0, _last.default)(onlyChatSidebarRuleClassNames) ? (0, _last.default)(onlyNavSidebarRuleClassNames) : null;
|
|
90
|
+
if (chatSidebarClassNames.length !== 1 || navSidebarClassNames.length !== 1 || !centerListClassName) {
|
|
91
|
+
_logger.default.error(new Error('Failed to find sidebar classnames'), {
|
|
147
92
|
onlyNavSidebarRuleClassNames,
|
|
148
93
|
onlyChatSidebarRuleClassNames,
|
|
149
94
|
chatSidebarClassNames,
|
|
150
95
|
navSidebarClassNames,
|
|
151
|
-
centerListClassName
|
|
96
|
+
centerListClassName
|
|
152
97
|
});
|
|
153
98
|
}
|
|
154
|
-
|
|
155
99
|
return {
|
|
156
100
|
chat: chatSidebarClassNames[0],
|
|
157
101
|
nav: navSidebarClassNames[0],
|
|
158
|
-
centerList: centerListClassName
|
|
102
|
+
centerList: centerListClassName
|
|
159
103
|
};
|
|
160
104
|
});
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
function rulesToStyleRules(rule: CSSRule): Object[] {
|
|
105
|
+
var _default = getSidebarClassnames;
|
|
106
|
+
exports.default = _default;
|
|
107
|
+
function rulesToStyleRules(rule) {
|
|
165
108
|
if (rule instanceof window.CSSMediaRule) {
|
|
166
|
-
return
|
|
109
|
+
return (0, _flatMap.default)(rule.cssRules, rulesToStyleRules);
|
|
167
110
|
} else if (rule instanceof window.CSSStyleRule) {
|
|
168
111
|
return [rule];
|
|
169
112
|
}
|
|
170
113
|
return [];
|
|
171
|
-
}
|
|
114
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _getSidebarClassnames = _interopRequireDefault(require("./getSidebarClassnames"));
|
|
5
|
+
document.documentElement.innerHTML = `
|
|
6
6
|
<head>
|
|
7
7
|
<style type="text/css">
|
|
8
8
|
.blah {
|
|
@@ -64,11 +64,10 @@ import getSidebarClassnames from './getSidebarClassnames';
|
|
|
64
64
|
</div>
|
|
65
65
|
</body>
|
|
66
66
|
`;
|
|
67
|
-
|
|
68
67
|
test('works', () => {
|
|
69
|
-
expect(
|
|
68
|
+
expect((0, _getSidebarClassnames.default)()).toEqual({
|
|
70
69
|
chat: 'm',
|
|
71
70
|
nav: 'M',
|
|
72
|
-
centerList: 'bz'
|
|
71
|
+
centerList: 'bz'
|
|
73
72
|
});
|
|
74
|
-
});
|
|
73
|
+
});
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
): void {
|
|
15
|
-
if (includes(Object.values(NATIVE_ROUTE_IDS), routeID)) {
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = gotoView;
|
|
8
|
+
var _includes = _interopRequireDefault(require("lodash/includes"));
|
|
9
|
+
var _populateRouteID = _interopRequireDefault(require("../../lib/populateRouteID"));
|
|
10
|
+
var _routeIDmatchesHash = _interopRequireDefault(require("../../lib/routeIDmatchesHash"));
|
|
11
|
+
var _router = require("../../constants/router");
|
|
12
|
+
function gotoView(driver, routeID, params) {
|
|
13
|
+
if ((0, _includes.default)(Object.values(_router.NATIVE_ROUTE_IDS), routeID)) {
|
|
16
14
|
throw new Error('NativeRouteIDs are not currently supported in Inbox');
|
|
17
15
|
}
|
|
18
16
|
if (!driver.getCustomRouteIDs().has(routeID)) {
|
|
@@ -24,7 +22,7 @@ export default function gotoView(
|
|
|
24
22
|
if (!params) {
|
|
25
23
|
// If params were given, then we don't assume it was a resolved/populated URL
|
|
26
24
|
for (let routeIDs of driver.getCustomRouteIDs()) {
|
|
27
|
-
if (
|
|
25
|
+
if ((0, _routeIDmatchesHash.default)(routeIDs, routeID)) {
|
|
28
26
|
foundRouteID = true;
|
|
29
27
|
break;
|
|
30
28
|
}
|
|
@@ -34,10 +32,8 @@ export default function gotoView(
|
|
|
34
32
|
throw new Error(`Invalid routeID: ${routeID}`);
|
|
35
33
|
}
|
|
36
34
|
if (!startedWithHash) {
|
|
37
|
-
driver
|
|
38
|
-
.getLogger()
|
|
39
|
-
.deprecationWarning('Router.goto resolved routeID without "#" prefix');
|
|
35
|
+
driver.getLogger().deprecationWarning('Router.goto resolved routeID without "#" prefix');
|
|
40
36
|
}
|
|
41
37
|
}
|
|
42
|
-
document.location.hash =
|
|
43
|
-
}
|
|
38
|
+
document.location.hash = (0, _populateRouteID.default)(routeID, params);
|
|
39
|
+
}
|
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function makeDriver()
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _gotoView = _interopRequireDefault(require("./gotoView"));
|
|
5
|
+
function makeDriver() {
|
|
6
6
|
const customRouteIDs = new Set();
|
|
7
7
|
return {
|
|
8
|
-
getCustomRouteIDs: () => customRouteIDs
|
|
8
|
+
getCustomRouteIDs: () => customRouteIDs
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
|
|
12
11
|
test('works for custom view', () => {
|
|
13
12
|
const driver = makeDriver();
|
|
14
13
|
driver.getCustomRouteIDs().add('example/:bar');
|
|
15
|
-
|
|
14
|
+
(0, _gotoView.default)(driver, 'example/:bar', {
|
|
15
|
+
bar: 'foo'
|
|
16
|
+
});
|
|
16
17
|
expect(document.location.hash).toBe('#example/foo');
|
|
17
18
|
});
|
|
18
|
-
|
|
19
19
|
test('fails for unknown route id', () => {
|
|
20
|
-
expect(() =>
|
|
21
|
-
|
|
22
|
-
).toThrowError('Invalid routeID: example/:bar');
|
|
20
|
+
expect(() => (0, _gotoView.default)(makeDriver(), 'example/:bar', {
|
|
21
|
+
bar: 'foo'
|
|
22
|
+
})).toThrowError('Invalid routeID: example/:bar');
|
|
23
23
|
});
|
|
24
|
-
|
|
25
24
|
test('fails for native route ids', () => {
|
|
26
|
-
expect(() =>
|
|
27
|
-
|
|
28
|
-
).toThrowError('NativeRouteIDs are not currently supported in Inbox');
|
|
29
|
-
});
|
|
25
|
+
expect(() => (0, _gotoView.default)(makeDriver(), 'inbox/:threadID', {
|
|
26
|
+
threadID: 'abc'
|
|
27
|
+
})).toThrowError('NativeRouteIDs are not currently supported in Inbox');
|
|
28
|
+
});
|
|
@@ -1,94 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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 _streamWaitFor = _interopRequireDefault(require("../../lib/stream-wait-for"));
|
|
10
|
+
var _querySelectorOrFail = _interopRequireDefault(require("../../lib/dom/querySelectorOrFail"));
|
|
11
|
+
var _makeMutationObserverChunkedStream = _interopRequireDefault(require("../../lib/dom/make-mutation-observer-chunked-stream"));
|
|
12
|
+
const elements = (0, _streamWaitFor.default)(() => document.querySelector('body > div[id][jsaction] > div[id] > div[class][jsaction][aria-hidden]')).map(googleNotice => {
|
|
13
|
+
const noticeContainer = googleNotice.parentElement;
|
|
14
|
+
if (!noticeContainer) throw new Error('Should not happen');
|
|
15
|
+
let sdkNotice = noticeContainer.querySelector('.inboxsdk__butterbar');
|
|
16
|
+
if (!sdkNotice) {
|
|
17
|
+
sdkNotice = document.createElement('div');
|
|
18
|
+
sdkNotice.className = googleNotice.className + ' inboxsdk__butterbar';
|
|
19
|
+
sdkNotice.style.display = 'none';
|
|
20
|
+
noticeContainer.insertBefore(sdkNotice, googleNotice.nextSibling);
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
noticeContainer,
|
|
24
|
+
googleNotice,
|
|
25
|
+
sdkNotice
|
|
26
|
+
};
|
|
27
|
+
}).toProperty();
|
|
27
28
|
|
|
28
29
|
// We queue our notices separately from the native ones in Inbox.
|
|
29
30
|
|
|
30
|
-
const sdkNoticeIdChanges = elements.flatMapLatest(
|
|
31
|
-
|
|
31
|
+
const sdkNoticeIdChanges = elements.flatMapLatest(_ref => {
|
|
32
|
+
let {
|
|
33
|
+
sdkNotice
|
|
34
|
+
} = _ref;
|
|
35
|
+
return (0, _makeMutationObserverChunkedStream.default)(sdkNotice, {
|
|
32
36
|
attributes: true,
|
|
33
|
-
attributeFilter: ['data-inboxsdk-id']
|
|
34
|
-
}).map(() => sdkNotice.getAttribute('data-inboxsdk-id'))
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
const sdkRemovedNotice = sdkNoticeIdChanges.filter((id) => id == null);
|
|
38
|
-
|
|
37
|
+
attributeFilter: ['data-inboxsdk-id']
|
|
38
|
+
}).map(() => sdkNotice.getAttribute('data-inboxsdk-id'));
|
|
39
|
+
});
|
|
40
|
+
const sdkRemovedNotice = sdkNoticeIdChanges.filter(id => id == null);
|
|
39
41
|
const noticeAvailableStream = sdkRemovedNotice;
|
|
40
|
-
|
|
41
42
|
function hideMessage(noticeContainer, googleNotice, sdkNotice) {
|
|
42
43
|
Object.assign(sdkNotice.style, {
|
|
43
44
|
opacity: '0',
|
|
44
45
|
transform: '',
|
|
45
|
-
transition: 'opacity 100ms'
|
|
46
|
+
transition: 'opacity 100ms'
|
|
46
47
|
});
|
|
47
48
|
sdkNotice.removeAttribute('data-inboxsdk-id');
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
opacity: '',
|
|
55
|
-
transition: '',
|
|
56
|
-
});
|
|
49
|
+
_kefir.default.fromEvents(sdkNotice, 'transitionend').merge(_kefir.default.later(200)) // transition might not finish if element is hidden
|
|
50
|
+
.takeUntilBy(sdkNoticeIdChanges.filter(id => id != null)).onValue(() => {
|
|
51
|
+
Object.assign(sdkNotice.style, {
|
|
52
|
+
display: 'none',
|
|
53
|
+
opacity: '',
|
|
54
|
+
transition: ''
|
|
57
55
|
});
|
|
56
|
+
});
|
|
58
57
|
}
|
|
59
|
-
|
|
60
|
-
export default class InboxButterBarDriver {
|
|
58
|
+
class InboxButterBarDriver {
|
|
61
59
|
constructor() {
|
|
62
60
|
// Force stream to be in active state. sdkRemovedNotice is prone to missing
|
|
63
61
|
// events if it only becomes active once a message has started.
|
|
64
62
|
noticeAvailableStream.onValue(() => {});
|
|
65
63
|
}
|
|
66
|
-
|
|
67
|
-
getNoticeAvailableStream(): Kefir.Observable<any> {
|
|
64
|
+
getNoticeAvailableStream() {
|
|
68
65
|
return noticeAvailableStream;
|
|
69
66
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const attr = (document.head: any).getAttribute(
|
|
73
|
-
'data-inboxsdk-butterbar-queue'
|
|
74
|
-
);
|
|
67
|
+
getSharedMessageQueue() {
|
|
68
|
+
const attr = document.head.getAttribute('data-inboxsdk-butterbar-queue');
|
|
75
69
|
return attr ? JSON.parse(attr) : [];
|
|
76
70
|
}
|
|
77
|
-
|
|
78
|
-
setSharedMessageQueue(queue: Object) {
|
|
71
|
+
setSharedMessageQueue(queue) {
|
|
79
72
|
const attr = JSON.stringify(queue);
|
|
80
|
-
|
|
73
|
+
document.head.setAttribute('data-inboxsdk-butterbar-queue', attr);
|
|
81
74
|
}
|
|
82
75
|
|
|
83
76
|
// Immediately displays the message, overriding anything else on the screen.
|
|
84
77
|
// Priority and queuing logic is handled by butter-bar.js above this.
|
|
85
|
-
showMessage(rawOptions
|
|
78
|
+
showMessage(rawOptions) {
|
|
86
79
|
const instanceId = Date.now() + '-' + Math.random();
|
|
87
|
-
|
|
88
|
-
|
|
80
|
+
elements.take(1).onValue(_ref2 => {
|
|
81
|
+
let {
|
|
82
|
+
noticeContainer,
|
|
83
|
+
googleNotice,
|
|
84
|
+
sdkNotice
|
|
85
|
+
} = _ref2;
|
|
89
86
|
sdkNotice.className = googleNotice.className;
|
|
90
87
|
sdkNotice.classList.add('inboxsdk__butterbar');
|
|
91
|
-
|
|
92
88
|
if (rawOptions.html) {
|
|
93
89
|
sdkNotice.innerHTML = rawOptions.html;
|
|
94
90
|
} else if (rawOptions.el) {
|
|
@@ -97,60 +93,56 @@ export default class InboxButterBarDriver {
|
|
|
97
93
|
} else {
|
|
98
94
|
sdkNotice.textContent = rawOptions.text;
|
|
99
95
|
}
|
|
100
|
-
|
|
101
96
|
if (rawOptions.className) {
|
|
102
97
|
sdkNotice.classList.add(rawOptions.className);
|
|
103
98
|
}
|
|
104
99
|
|
|
105
100
|
// If the sdkNotice is already up, just flash it out and in instead of
|
|
106
101
|
// animating it up into position.
|
|
107
|
-
if (
|
|
108
|
-
sdkNotice.style.display === 'block' &&
|
|
109
|
-
getComputedStyle(sdkNotice).opacity === '1'
|
|
110
|
-
) {
|
|
102
|
+
if (sdkNotice.style.display === 'block' && getComputedStyle(sdkNotice).opacity === '1') {
|
|
111
103
|
Object.assign(sdkNotice.style, {
|
|
112
104
|
opacity: '0',
|
|
113
105
|
transform: 'none',
|
|
114
|
-
transition: 'none'
|
|
106
|
+
transition: 'none'
|
|
115
107
|
});
|
|
116
108
|
sdkNotice.offsetHeight; // force relayout
|
|
117
109
|
Object.assign(sdkNotice.style, {
|
|
118
110
|
opacity: '1',
|
|
119
|
-
transition: ''
|
|
111
|
+
transition: ''
|
|
120
112
|
});
|
|
121
113
|
} else {
|
|
122
114
|
Object.assign(sdkNotice.style, {
|
|
123
115
|
opacity: '0',
|
|
124
116
|
transform: '',
|
|
125
117
|
transition: '',
|
|
126
|
-
display: 'block'
|
|
118
|
+
display: 'block'
|
|
127
119
|
});
|
|
128
120
|
sdkNotice.offsetHeight; // force relayout
|
|
129
121
|
Object.assign(sdkNotice.style, {
|
|
130
122
|
opacity: '1',
|
|
131
|
-
transform: 'none'
|
|
123
|
+
transform: 'none'
|
|
132
124
|
});
|
|
133
125
|
}
|
|
134
|
-
|
|
135
126
|
sdkNotice.setAttribute('data-inboxsdk-id', instanceId);
|
|
136
127
|
});
|
|
137
|
-
|
|
138
128
|
return {
|
|
139
129
|
destroy() {
|
|
140
|
-
elements
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
130
|
+
elements.take(1).onValue(_ref3 => {
|
|
131
|
+
let {
|
|
132
|
+
noticeContainer,
|
|
133
|
+
googleNotice,
|
|
134
|
+
sdkNotice
|
|
135
|
+
} = _ref3;
|
|
136
|
+
if (sdkNotice.getAttribute('data-inboxsdk-id') === instanceId) {
|
|
137
|
+
if (rawOptions.className) sdkNotice.classList.remove(rawOptions.className);
|
|
138
|
+
hideMessage(noticeContainer, googleNotice, sdkNotice);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
150
142
|
};
|
|
151
143
|
}
|
|
152
|
-
|
|
153
144
|
hideGmailMessage() {
|
|
154
145
|
// No-op in Inbox because we don't touch the native messages
|
|
155
146
|
}
|
|
156
147
|
}
|
|
148
|
+
exports.default = InboxButterBarDriver;
|