@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.
Files changed (264) hide show
  1. package/inboxsdk.js +1 -1
  2. package/package.json +5 -1
  3. package/src/inboxsdk-js/check-requirements.js +7 -3
  4. package/src/inboxsdk-js/header.js +1 -0
  5. package/src/inboxsdk-js/inboxsdk-NONREMOTE-INTEGRATED-PAGEWORLD.js +5 -6
  6. package/src/inboxsdk-js/inboxsdk-NONREMOTE.js +4 -3
  7. package/src/inboxsdk-js/inboxsdk-REMOTE.js +3 -1
  8. package/src/inboxsdk-js/inboxsdk-TEST.js +4 -3
  9. package/src/inboxsdk-js/inboxsdk.js +33 -39
  10. package/src/inboxsdk-js/loading/load-platform-implementation-DEV.js +15 -18
  11. package/src/inboxsdk.d.ts +2 -0
  12. package/src/injected-js/gmail/modify-suggestions.test.js +8 -9
  13. package/src/injected-js/gmail/setup-gmail-interceptor.js +340 -579
  14. package/src/injected-js/gmail/sync-compose-request-processor.test.js +39 -49
  15. package/src/injected-js/gmail/thread-identifier/click-and-get-popup-url.js +20 -33
  16. package/src/injected-js/gmail/thread-identifier/index.js +57 -93
  17. package/src/injected-js/gmail/thread-identifier/thread-row-parser.js +22 -31
  18. package/src/injected-js/gmail/thread-identifier/thread-row-parser.test.js +12 -28
  19. package/src/injected-js/inbox/setupAjaxInterceptor.js +64 -121
  20. package/src/injected-js/inbox/setupClickAndGetNewIframeSrc.js +53 -66
  21. package/src/injected-js/inbox/setupComposeViewDraftIDFinder.js +20 -36
  22. package/src/injected-js/inbox/setupInboxFakeWindowResizeListener.js +13 -13
  23. package/src/injected-js/main.js +11 -24
  24. package/src/injected-js/message-metadata-holder.js +52 -82
  25. package/src/injected-js/setup-data-exposer.js +89 -148
  26. package/src/injected-js/setup-error-silencer.js +21 -21
  27. package/src/injected-js/setup-event-reemitter.js +30 -22
  28. package/src/injected-js/setupInboxCustomViewLinkFixer.js +24 -29
  29. package/src/injected-js/setupPushStateListener.js +18 -11
  30. package/src/injected-js/xhr-helper.js +62 -65
  31. package/src/injected-js/xhr-proxy-factory.js +195 -445
  32. package/src/injected-js/xhr-proxy-factory.test.js +824 -991
  33. package/src/platform-implementation-js/constants/router.js +14 -9
  34. package/src/platform-implementation-js/constants/toolbars.js +8 -3
  35. package/src/platform-implementation-js/dom-driver/gmail/custom-style.js +13 -13
  36. package/src/platform-implementation-js/dom-driver/gmail/gmail-butter-bar-driver.js +115 -136
  37. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/add-toolbar-button-for-app.js +13 -14
  38. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/create-link.js +27 -48
  39. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-draft-id-for-message-id.js +31 -42
  40. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-native-nav-item.js +30 -40
  41. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/get-url-object.js +10 -18
  42. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadForOldGmailThreadId.js +21 -28
  43. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/getSyncThreadFromSyncThreadId.js +33 -45
  44. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/gmail-load-event.js +31 -49
  45. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/goto-view.js +58 -65
  46. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/keyboard-shortcut-help-modifier.js +40 -124
  47. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-compose-window.js +17 -22
  48. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/open-draft-by-message-id.test.js +10 -11
  49. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/override-gmail-back-button.js +44 -80
  50. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-query-rewriter.js +19 -26
  51. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/register-search-suggestions-provider.js +71 -147
  52. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-compose-view-driver-stream.js +91 -148
  53. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.js +150 -166
  54. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/setup-route-view-driver-stream.test.js +70 -120
  55. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-app-id-warning.js +15 -15
  56. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-route-view.js +44 -67
  57. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.js +230 -379
  58. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-custom-thread-list.test.js +121 -307
  59. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/show-native-route-view.js +17 -24
  60. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/suppressAddon.js +41 -49
  61. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/temporary-track-download-url-validity.js +30 -40
  62. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/thread-row-identifier.js +28 -60
  63. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/track-events.js +61 -133
  64. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.js +30 -42
  65. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver/user-info.test.js +52 -46
  66. package/src/platform-implementation-js/dom-driver/gmail/gmail-driver.js +354 -694
  67. package/src/platform-implementation-js/dom-driver/gmail/make-xhr-interceptor.js +77 -93
  68. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.js +35 -82
  69. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/index.test.js +44 -94
  70. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-global-icon-area.js +12 -19
  71. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-companion-thread-icon-area.js +17 -29
  72. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/add-to-icon-area.js +26 -26
  73. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-sidebar-view/primary/index.js +391 -797
  74. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view/monitor-top-banner-size-and-react.js +7 -9
  75. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-app-toolbar-button-view.js +60 -109
  76. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-area-view.js +95 -135
  77. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.js +103 -211
  78. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-attachment-card-view.test.js +61 -61
  79. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-backdrop.js +17 -17
  80. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-collapsible-section-view.js +188 -541
  81. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-button.js +67 -135
  82. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-compose-notice.js +27 -49
  83. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-inner-sidebar.js +7 -13
  84. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-outer-sidebar.js +9 -22
  85. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-recipient-row.js +36 -63
  86. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/add-tooltip-to-button.js +38 -113
  87. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-app-button-toolbars-are-closed.js +11 -16
  88. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/ensure-grouping-is-open.js +11 -17
  89. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/focus.js +8 -11
  90. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/from-manager.js +27 -47
  91. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-additional-action-toolbar.js +11 -24
  92. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-address-changes-stream.js +59 -111
  93. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-body-changes-stream.js +15 -14
  94. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-formatting-area-offset-left.js +11 -17
  95. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-minimized-stream.js +18 -24
  96. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/get-response-type-changes-stream.js +19 -23
  97. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/insert-link-into-body.js +11 -19
  98. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/manage-button-grouping.js +141 -376
  99. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/monitor-selection-range.js +17 -28
  100. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/override-edit-subject.js +34 -70
  101. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/position-formatting-toolbar.js +10 -17
  102. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/size-fixer.js +83 -137
  103. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view/update-insert-more-area-left.js +10 -19
  104. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-compose-view.js +632 -1190
  105. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view/get-updated-contact.js +29 -38
  106. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-message-view.js +327 -617
  107. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-processor.js +26 -49
  108. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-route-view/gmail-route-view.js +188 -380
  109. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-row-list-view.js +104 -194
  110. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-row-view.js +382 -811
  111. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view/add-icon-area.js +34 -58
  112. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.js +330 -581
  113. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-sidebar-view.test.js +123 -277
  114. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view/width-manager.js +15 -35
  115. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-thread-view.js +216 -571
  116. package/src/platform-implementation-js/dom-driver/gmail/views/gmail-toolbar-view.js +152 -336
  117. package/src/platform-implementation-js/dom-driver/gmail/views/native-gmail-nav-item-view.js +87 -211
  118. package/src/platform-implementation-js/dom-driver/gmail/widgets/buttons/inbox-dropdown-button-view.js +10 -11
  119. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-action-button-view.js +20 -29
  120. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-label-view.js +41 -76
  121. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-modal-view-driver.js +45 -99
  122. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-mole-view-driver.js +76 -128
  123. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-tooltip-view.js +128 -319
  124. package/src/platform-implementation-js/dom-driver/gmail/widgets/gmail-top-message-bar-driver.js +45 -78
  125. package/src/platform-implementation-js/dom-driver/inbox/__mocks__/getSidebarClassnames.js +8 -4
  126. package/src/platform-implementation-js/dom-driver/inbox/addNavItem.js +36 -54
  127. package/src/platform-implementation-js/dom-driver/inbox/addRecipientRow.js +35 -53
  128. package/src/platform-implementation-js/dom-driver/inbox/createLink.js +13 -15
  129. package/src/platform-implementation-js/dom-driver/inbox/createLink.test.js +15 -18
  130. package/src/platform-implementation-js/dom-driver/inbox/custom-style.js +14 -13
  131. package/src/platform-implementation-js/dom-driver/inbox/detection/appToolbarLocation/parser.js +14 -20
  132. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentCard/parser.js +14 -13
  133. package/src/platform-implementation-js/dom-driver/inbox/detection/attachmentOverlay/parser.js +35 -67
  134. package/src/platform-implementation-js/dom-driver/inbox/detection/chatSidebar/parser.js +16 -18
  135. package/src/platform-implementation-js/dom-driver/inbox/detection/compose/parser.js +68 -185
  136. package/src/platform-implementation-js/dom-driver/inbox/detection/message/parser.js +28 -56
  137. package/src/platform-implementation-js/dom-driver/inbox/detection/nativeDrawer/parser.js +12 -10
  138. package/src/platform-implementation-js/dom-driver/inbox/detection/searchBar/parser.js +16 -16
  139. package/src/platform-implementation-js/dom-driver/inbox/detection/thread/parser.js +24 -35
  140. package/src/platform-implementation-js/dom-driver/inbox/detection/thread-row/parser.js +37 -89
  141. package/src/platform-implementation-js/dom-driver/inbox/getComposeViewDriverLiveSet.js +56 -78
  142. package/src/platform-implementation-js/dom-driver/inbox/getInboxMessageIdForInboxThreadId.js +26 -32
  143. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.js +52 -109
  144. package/src/platform-implementation-js/dom-driver/inbox/getSidebarClassnames.test.js +7 -8
  145. package/src/platform-implementation-js/dom-driver/inbox/gotoView.js +16 -20
  146. package/src/platform-implementation-js/dom-driver/inbox/gotoView.test.js +15 -16
  147. package/src/platform-implementation-js/dom-driver/inbox/inbox-butter-bar-driver.js +75 -83
  148. package/src/platform-implementation-js/dom-driver/inbox/inbox-driver.js +530 -822
  149. package/src/platform-implementation-js/dom-driver/inbox/inbox-page-communicator.js +48 -61
  150. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.js +9 -12
  151. package/src/platform-implementation-js/dom-driver/inbox/inboxResponseProcessor.test.js +12 -19
  152. package/src/platform-implementation-js/dom-driver/inbox/makePageParserTree.js +24 -33
  153. package/src/platform-implementation-js/dom-driver/inbox/pageParserOptions.js +201 -388
  154. package/src/platform-implementation-js/dom-driver/inbox/registerSearchSuggestionsProvider.js +249 -265
  155. package/src/platform-implementation-js/dom-driver/inbox/setupCustomAutocompleteSelectionHandling.js +84 -152
  156. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.js +55 -67
  157. package/src/platform-implementation-js/dom-driver/inbox/setupRouteViewDriverStream.test.js +43 -65
  158. package/src/platform-implementation-js/dom-driver/inbox/views/InboxLabelView.js +31 -56
  159. package/src/platform-implementation-js/dom-driver/inbox/views/InboxMoleViewDriver.js +191 -294
  160. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarButtonView.js +32 -45
  161. package/src/platform-implementation-js/dom-driver/inbox/views/InboxToolbarView.js +21 -39
  162. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-sidebar-view.js +153 -240
  163. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-button-view.js +75 -150
  164. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-app-toolbar-tooltip-view.js +20 -37
  165. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-card-view.js +60 -114
  166. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-attachment-overlay-view.js +47 -65
  167. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-backdrop.js +41 -52
  168. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-chat-sidebar-view.js +27 -36
  169. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-button-view.js +52 -80
  170. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-compose-view.js +465 -649
  171. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.js +37 -58
  172. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-custom-route-view.test.js +14 -26
  173. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-drawer-view.js +118 -235
  174. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dropdown-view.js +10 -11
  175. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-dummy-route-view.js +28 -46
  176. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-message-view.js +131 -202
  177. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-modal-view.js +40 -80
  178. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-route-view.js +35 -61
  179. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-row-view.js +124 -221
  180. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.js +125 -213
  181. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-thread-view.test.js +104 -126
  182. package/src/platform-implementation-js/dom-driver/inbox/views/inbox-tooltip-view.js +36 -51
  183. package/src/platform-implementation-js/dom-driver/inbox/views/inboxNavItemView.js +158 -297
  184. package/src/platform-implementation-js/dom-driver/inbox/waitForAnimationClickBlockerGone.js +21 -35
  185. package/src/platform-implementation-js/driver-common/compose/getDiscardStream.js +24 -43
  186. package/src/platform-implementation-js/driver-common/compose/getPresendingStream.js +39 -68
  187. package/src/platform-implementation-js/driver-common/getGmailMessageIdForSyncMessageId.js +14 -19
  188. package/src/platform-implementation-js/driver-common/getGmailThreadIdForRfcMessageId.js +27 -35
  189. package/src/platform-implementation-js/driver-common/getRfcMessageIdForSyncMessageId.js +16 -22
  190. package/src/platform-implementation-js/driver-common/getThreadIdFromMessageId.js +14 -14
  191. package/src/platform-implementation-js/driver-common/inboxAjax.js +12 -7
  192. package/src/platform-implementation-js/driver-common/requestGmailThread.js +19 -20
  193. package/src/platform-implementation-js/driver-common/sidebar/AppSidebar.js +197 -306
  194. package/src/platform-implementation-js/driver-common/sidebar/ContentPanelViewDriver.js +113 -161
  195. package/src/platform-implementation-js/driver-interfaces/compose-view-driver.js +1 -114
  196. package/src/platform-implementation-js/driver-interfaces/driver.js +1 -131
  197. package/src/platform-implementation-js/driver-interfaces/message-view-driver.js +4 -48
  198. package/src/platform-implementation-js/driver-interfaces/mole-view-driver.js +1 -29
  199. package/src/platform-implementation-js/driver-interfaces/route-view-driver.js +1 -32
  200. package/src/platform-implementation-js/driver-interfaces/thread-row-view-driver.js +1 -11
  201. package/src/platform-implementation-js/lib/array-to-lifetimes.js +43 -41
  202. package/src/platform-implementation-js/lib/array-to-lifetimes.test.js +139 -155
  203. package/src/platform-implementation-js/lib/copyAndValidateAutocompleteResults.js +19 -38
  204. package/src/platform-implementation-js/lib/css-selector-escape.js +7 -3
  205. package/src/platform-implementation-js/lib/dom/element-view-mapper.js +8 -11
  206. package/src/platform-implementation-js/lib/dom/get-selection.js +23 -52
  207. package/src/platform-implementation-js/lib/dom/insert-html-at-cursor.js +69 -101
  208. package/src/platform-implementation-js/lib/dom/is-node-in-range.js +8 -10
  209. package/src/platform-implementation-js/lib/dom/on-mouse-down-and-up.js +15 -17
  210. package/src/platform-implementation-js/lib/dom/querySelectorOne.js +8 -11
  211. package/src/platform-implementation-js/lib/dom/set-css.js +7 -3
  212. package/src/platform-implementation-js/lib/dom/set-value-and-dispatch-event.js +9 -11
  213. package/src/platform-implementation-js/lib/dom/simulate-drag-and-drop.js +32 -33
  214. package/src/platform-implementation-js/lib/extract-contact-from-email-contact-string.test.js +23 -26
  215. package/src/platform-implementation-js/lib/handle-compose-link-chips.js +86 -149
  216. package/src/platform-implementation-js/lib/insert-link-chip-into-body.js +42 -57
  217. package/src/platform-implementation-js/lib/make-revocable-function.js +19 -21
  218. package/src/platform-implementation-js/lib/make-revocable-function.test.js +20 -22
  219. package/src/platform-implementation-js/lib/parseParamsFromRouteID.js +15 -17
  220. package/src/platform-implementation-js/lib/parseParamsFromRouteID.test.js +9 -18
  221. package/src/platform-implementation-js/lib/populateRouteID.js +8 -9
  222. package/src/platform-implementation-js/lib/populateRouteID.test.js +20 -19
  223. package/src/platform-implementation-js/lib/react/ElementContainer.js +23 -20
  224. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.js +10 -9
  225. package/src/platform-implementation-js/lib/rewriteCssWithIdMap.test.js +13 -20
  226. package/src/platform-implementation-js/lib/routeIDmatchesHash.js +13 -18
  227. package/src/platform-implementation-js/lib/routeIDmatchesHash.test.js +11 -17
  228. package/src/platform-implementation-js/lib/shared-style.js +14 -13
  229. package/src/platform-implementation-js/lib/toItemWithLifetimeStream.js +18 -17
  230. package/src/platform-implementation-js/lib/toLiveSet.js +17 -15
  231. package/src/platform-implementation-js/main-INTEGRATED-PAGEWORLD.js +6 -5
  232. package/src/platform-implementation-js/main.js +9 -24
  233. package/src/platform-implementation-js/namespaces/compose.js +37 -60
  234. package/src/platform-implementation-js/namespaces/conversations.js +52 -124
  235. package/src/platform-implementation-js/namespaces/global.js +27 -39
  236. package/src/platform-implementation-js/namespaces/keyboard.js +29 -33
  237. package/src/platform-implementation-js/namespaces/lists.js +25 -31
  238. package/src/platform-implementation-js/namespaces/modal.js +34 -28
  239. package/src/platform-implementation-js/namespaces/nav-menu.js +30 -45
  240. package/src/platform-implementation-js/namespaces/router.js +70 -137
  241. package/src/platform-implementation-js/namespaces/search.js +19 -17
  242. package/src/platform-implementation-js/namespaces/toolbars.js +71 -117
  243. package/src/platform-implementation-js/namespaces/user.js +36 -37
  244. package/src/platform-implementation-js/namespaces/widgets.js +54 -61
  245. package/src/platform-implementation-js/platform-implementation.js +98 -229
  246. package/src/platform-implementation-js/views/app-toolbar-button-view.js +26 -47
  247. package/src/platform-implementation-js/views/collapsible-section-view.js +66 -63
  248. package/src/platform-implementation-js/views/content-panel-view.js +28 -30
  249. package/src/platform-implementation-js/views/conversations/attachment-card-view.js +21 -44
  250. package/src/platform-implementation-js/views/conversations/custom-message-view.js +44 -104
  251. package/src/platform-implementation-js/views/conversations/message-view.js +131 -202
  252. package/src/platform-implementation-js/views/conversations/thread-view.js +75 -127
  253. package/src/platform-implementation-js/views/native-nav-item-view.js +32 -65
  254. package/src/platform-implementation-js/views/nav-item-view.js +51 -115
  255. package/src/platform-implementation-js/views/route-view/custom-route-view.js +25 -20
  256. package/src/platform-implementation-js/views/route-view/dummy-route-view-driver.js +18 -18
  257. package/src/platform-implementation-js/views/route-view/list-route-view.js +30 -52
  258. package/src/platform-implementation-js/views/route-view/route-view.js +24 -35
  259. package/src/platform-implementation-js/views/section-view.js +60 -52
  260. package/src/platform-implementation-js/views/thread-row-view.js +49 -74
  261. package/src/platform-implementation-js/widgets/drawer-view.js +29 -36
  262. package/src/platform-implementation-js/widgets/modal-view.js +39 -68
  263. package/src/platform-implementation-js/widgets/mole-view.js +22 -22
  264. package/src/platform-implementation-js/widgets/top-message-bar-view.js +13 -10
@@ -1,11 +1 @@
1
- /* @flow */
2
-
3
- export type ThreadRowViewDriver = {
4
- addLabel(label: Object): void,
5
- addButton(buttonDescriptor: Object): void,
6
- addAttachmentIcon(opts: Object): void,
7
- replaceDate(opts: Object): void,
8
- getSubject(): string,
9
- getDateString(): string,
10
- getThreadID(): string,
11
- };
1
+ "use strict";
@@ -1,52 +1,53 @@
1
- /* @flow */
2
-
3
- import Kefir from 'kefir';
4
- import kefirStopper from 'kefir-stopper';
5
- import type { Stopper } from 'kefir-stopper';
6
-
7
- import type { ItemWithLifetime } from './dom/make-element-child-stream';
1
+ "use strict";
8
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = arrayToLifetimes;
8
+ var _kefir = _interopRequireDefault(require("kefir"));
9
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
9
10
  // Takes in a stream of arrays of elements, and returns a stream of
10
11
  // ItemWithLifetime objects. The removalStream emits an event when the input
11
12
  // stream ends, when the input stream emits a new array not containing the
12
13
  // element, or when the output stream is unsubscribed from, similar to
13
14
  // makeElementChildStream.
14
-
15
15
  // TODO replace usages of this with https://www.npmjs.com/package/live-set,
16
16
  // and then remove this.
17
-
18
- export default function arrayToLifetimes<T>(
19
- input: Kefir.Observable<Array<T> | NodeList<T>>,
20
- keyFn?: (value: T) => any
21
- ): Kefir.Observable<ItemWithLifetime<T>> {
22
- return Kefir.stream((emitter) => {
23
- const items: Map<any, { el: T, removalStream: Stopper }> = new Map();
24
-
17
+ function arrayToLifetimes(input, keyFn) {
18
+ return _kefir.default.stream(emitter => {
19
+ const items = new Map();
25
20
  function listener(event) {
26
21
  switch (event.type) {
27
- case 'value': {
28
- const els = event.value;
29
- const elKeys = keyFn ? Array.prototype.map.call(els, keyFn) : els;
30
-
31
- items.forEach(({ el, removalStream }, key) => {
32
- if (Array.prototype.indexOf.call(elKeys, key) < 0) {
33
- items.delete(key);
34
- removalStream.destroy();
35
- }
36
- });
37
-
38
- for (let i = 0, len = els.length; i < len; i++) {
39
- const el: T = els[i];
40
- const elKey = elKeys[i];
41
- if (!items.has(elKey)) {
42
- const removalStream = kefirStopper();
43
- const itemWithLifetime = { el, removalStream };
44
- items.set(elKey, itemWithLifetime);
45
- emitter.emit((itemWithLifetime: any));
22
+ case 'value':
23
+ {
24
+ const els = event.value;
25
+ const elKeys = keyFn ? Array.prototype.map.call(els, keyFn) : els;
26
+ items.forEach((_ref, key) => {
27
+ let {
28
+ el,
29
+ removalStream
30
+ } = _ref;
31
+ if (Array.prototype.indexOf.call(elKeys, key) < 0) {
32
+ items.delete(key);
33
+ removalStream.destroy();
34
+ }
35
+ });
36
+ for (let i = 0, len = els.length; i < len; i++) {
37
+ const el = els[i];
38
+ const elKey = elKeys[i];
39
+ if (!items.has(elKey)) {
40
+ const removalStream = (0, _kefirStopper.default)();
41
+ const itemWithLifetime = {
42
+ el,
43
+ removalStream
44
+ };
45
+ items.set(elKey, itemWithLifetime);
46
+ emitter.emit(itemWithLifetime);
47
+ }
46
48
  }
49
+ break;
47
50
  }
48
- break;
49
- }
50
51
  case 'error':
51
52
  emitter.error(event.value);
52
53
  break;
@@ -54,14 +55,15 @@ export default function arrayToLifetimes<T>(
54
55
  emitter.end();
55
56
  }
56
57
  }
57
-
58
58
  input.onAny(listener);
59
-
60
59
  return () => {
61
- items.forEach(({ removalStream }) => {
60
+ items.forEach(_ref2 => {
61
+ let {
62
+ removalStream
63
+ } = _ref2;
62
64
  removalStream.destroy();
63
65
  });
64
66
  input.offAny(listener);
65
67
  };
66
68
  });
67
- }
69
+ }
@@ -1,171 +1,155 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import asap from 'asap';
4
- import Kefir from 'kefir';
5
- import kefirStopper from 'kefir-stopper';
6
- import sinon from 'sinon';
7
-
8
- import arrayToLifetimes from './array-to-lifetimes';
9
-
10
- it('works', (cb) => {
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _asap = _interopRequireDefault(require("asap"));
5
+ var _kefir = _interopRequireDefault(require("kefir"));
6
+ var _kefirStopper = _interopRequireDefault(require("kefir-stopper"));
7
+ var _sinon = _interopRequireDefault(require("sinon"));
8
+ var _arrayToLifetimes = _interopRequireDefault(require("./array-to-lifetimes"));
9
+ it('works', cb => {
11
10
  const events = [];
12
- arrayToLifetimes(
13
- Kefir.sequentially(0, [
14
- ['a', 'b'],
15
- ['b', 'd'],
16
- ['a', 'b', 'c'],
17
- ])
18
- )
19
- .onValue(({ el, removalStream }) => {
20
- events.push(['add', el]);
21
- removalStream.take(1).onValue(() => {
22
- events.push(['remove', el]);
23
- });
24
- })
25
- .onEnd(() => {
26
- asap(() => {
27
- expect(events).toEqual([
28
- ['add', 'a'],
29
- ['add', 'b'],
30
- ['remove', 'a'],
31
- ['add', 'd'],
32
- ['remove', 'd'],
33
- ['add', 'a'],
34
- ['add', 'c'],
35
- ['remove', 'b'],
36
- ['remove', 'a'],
37
- ['remove', 'c'],
38
- ]);
39
- cb();
40
- });
11
+ (0, _arrayToLifetimes.default)(_kefir.default.sequentially(0, [['a', 'b'], ['b', 'd'], ['a', 'b', 'c']])).onValue(_ref => {
12
+ let {
13
+ el,
14
+ removalStream
15
+ } = _ref;
16
+ events.push(['add', el]);
17
+ removalStream.take(1).onValue(() => {
18
+ events.push(['remove', el]);
41
19
  });
20
+ }).onEnd(() => {
21
+ (0, _asap.default)(() => {
22
+ expect(events).toEqual([['add', 'a'], ['add', 'b'], ['remove', 'a'], ['add', 'd'], ['remove', 'd'], ['add', 'a'], ['add', 'c'], ['remove', 'b'], ['remove', 'a'], ['remove', 'c']]);
23
+ cb();
24
+ });
25
+ });
42
26
  });
43
-
44
- it('keyFn works', (cb) => {
27
+ it('keyFn works', cb => {
45
28
  const events = [];
46
- arrayToLifetimes(
47
- Kefir.sequentially(0, [
48
- [
49
- { v: 'a', k: 1 },
50
- { v: 'b', k: 2 },
51
- ],
52
- [
53
- { v: 'B', k: 2 },
54
- { v: 'd', k: 4 },
55
- ],
56
- [
57
- { v: 'A', k: 1 },
58
- { v: 'b', k: 2 },
59
- { v: 'c', k: 3 },
60
- ],
61
- ]),
62
- (el) => el.k
63
- )
64
- .onValue(({ el, removalStream }) => {
65
- events.push(['add', el]);
66
- removalStream.take(1).onValue(() => {
67
- events.push(['remove', el]);
68
- });
69
- })
70
- .onEnd(() => {
71
- asap(() => {
72
- expect(events).toEqual([
73
- ['add', { v: 'a', k: 1 }],
74
- ['add', { v: 'b', k: 2 }],
75
- ['remove', { v: 'a', k: 1 }],
76
- ['add', { v: 'd', k: 4 }],
77
- ['remove', { v: 'd', k: 4 }],
78
- ['add', { v: 'A', k: 1 }],
79
- ['add', { v: 'c', k: 3 }],
80
- ['remove', { v: 'b', k: 2 }],
81
- ['remove', { v: 'A', k: 1 }],
82
- ['remove', { v: 'c', k: 3 }],
83
- ]);
84
- cb();
85
- });
29
+ (0, _arrayToLifetimes.default)(_kefir.default.sequentially(0, [[{
30
+ v: 'a',
31
+ k: 1
32
+ }, {
33
+ v: 'b',
34
+ k: 2
35
+ }], [{
36
+ v: 'B',
37
+ k: 2
38
+ }, {
39
+ v: 'd',
40
+ k: 4
41
+ }], [{
42
+ v: 'A',
43
+ k: 1
44
+ }, {
45
+ v: 'b',
46
+ k: 2
47
+ }, {
48
+ v: 'c',
49
+ k: 3
50
+ }]]), el => el.k).onValue(_ref2 => {
51
+ let {
52
+ el,
53
+ removalStream
54
+ } = _ref2;
55
+ events.push(['add', el]);
56
+ removalStream.take(1).onValue(() => {
57
+ events.push(['remove', el]);
58
+ });
59
+ }).onEnd(() => {
60
+ (0, _asap.default)(() => {
61
+ expect(events).toEqual([['add', {
62
+ v: 'a',
63
+ k: 1
64
+ }], ['add', {
65
+ v: 'b',
66
+ k: 2
67
+ }], ['remove', {
68
+ v: 'a',
69
+ k: 1
70
+ }], ['add', {
71
+ v: 'd',
72
+ k: 4
73
+ }], ['remove', {
74
+ v: 'd',
75
+ k: 4
76
+ }], ['add', {
77
+ v: 'A',
78
+ k: 1
79
+ }], ['add', {
80
+ v: 'c',
81
+ k: 3
82
+ }], ['remove', {
83
+ v: 'b',
84
+ k: 2
85
+ }], ['remove', {
86
+ v: 'A',
87
+ k: 1
88
+ }], ['remove', {
89
+ v: 'c',
90
+ k: 3
91
+ }]]);
92
+ cb();
86
93
  });
94
+ });
87
95
  });
88
-
89
- it('unsubscription triggers removal', (cb) => {
96
+ it('unsubscription triggers removal', cb => {
90
97
  const events = [];
91
- const stopper = kefirStopper();
92
- arrayToLifetimes(Kefir.sequentially(50, [['a', 'b'], ['a'], ['a', 'b', 'c']]))
93
- .takeUntilBy(stopper)
94
- .onValue(({ el, removalStream }) => {
95
- events.push(['add', el]);
96
- removalStream.take(1).onValue(() => {
97
- events.push(['remove', el]);
98
- stopper.destroy();
99
- });
100
- })
101
- .onEnd(() => {
102
- asap(() => {
103
- expect(events).toEqual([
104
- ['add', 'a'],
105
- ['add', 'b'],
106
- ['remove', 'b'],
107
- ['remove', 'a'],
108
- ]);
109
- cb();
110
- });
98
+ const stopper = (0, _kefirStopper.default)();
99
+ (0, _arrayToLifetimes.default)(_kefir.default.sequentially(50, [['a', 'b'], ['a'], ['a', 'b', 'c']])).takeUntilBy(stopper).onValue(_ref3 => {
100
+ let {
101
+ el,
102
+ removalStream
103
+ } = _ref3;
104
+ events.push(['add', el]);
105
+ removalStream.take(1).onValue(() => {
106
+ events.push(['remove', el]);
107
+ stopper.destroy();
108
+ });
109
+ }).onEnd(() => {
110
+ (0, _asap.default)(() => {
111
+ expect(events).toEqual([['add', 'a'], ['add', 'b'], ['remove', 'b'], ['remove', 'a']]);
112
+ cb();
111
113
  });
114
+ });
112
115
  });
113
-
114
- it('works with properties', (cb) => {
116
+ it('works with properties', cb => {
115
117
  const events = [];
116
- arrayToLifetimes(
117
- Kefir.sequentially(0, [['a', 'c']]).toProperty(() => ['a', 'b'])
118
- )
119
- .onValue(({ el, removalStream }) => {
120
- events.push(['add', el]);
121
- removalStream.take(1).onValue(() => {
122
- events.push(['remove', el]);
123
- });
124
- })
125
- .onEnd(() => {
126
- asap(() => {
127
- expect(events).toEqual([
128
- ['add', 'a'],
129
- ['add', 'b'],
130
- ['remove', 'b'],
131
- ['add', 'c'],
132
- ['remove', 'a'],
133
- ['remove', 'c'],
134
- ]);
135
- cb();
136
- });
118
+ (0, _arrayToLifetimes.default)(_kefir.default.sequentially(0, [['a', 'c']]).toProperty(() => ['a', 'b'])).onValue(_ref4 => {
119
+ let {
120
+ el,
121
+ removalStream
122
+ } = _ref4;
123
+ events.push(['add', el]);
124
+ removalStream.take(1).onValue(() => {
125
+ events.push(['remove', el]);
137
126
  });
127
+ }).onEnd(() => {
128
+ (0, _asap.default)(() => {
129
+ expect(events).toEqual([['add', 'a'], ['add', 'b'], ['remove', 'b'], ['add', 'c'], ['remove', 'a'], ['remove', 'c']]);
130
+ cb();
131
+ });
132
+ });
138
133
  });
139
-
140
- it('passes errors', (cb) => {
134
+ it('passes errors', cb => {
141
135
  const events = [];
142
- arrayToLifetimes(
143
- Kefir.merge([
144
- Kefir.constantError('foo'),
145
- Kefir.sequentially(0, [['a', 'b'], ['a']]),
146
- ])
147
- )
148
- .onAny((event) => {
149
- if (event.type === 'value') {
150
- const { el, removalStream } = event.value;
151
- events.push(['add', el]);
152
- removalStream.take(1).onValue(() => {
153
- events.push(['remove', el]);
154
- });
155
- } else if (event.type === 'error') {
156
- events.push(['error', event.value]);
157
- }
158
- })
159
- .onEnd(() => {
160
- asap(() => {
161
- expect(events).toEqual([
162
- ['error', 'foo'],
163
- ['add', 'a'],
164
- ['add', 'b'],
165
- ['remove', 'b'],
166
- ['remove', 'a'],
167
- ]);
168
- cb();
136
+ (0, _arrayToLifetimes.default)(_kefir.default.merge([_kefir.default.constantError('foo'), _kefir.default.sequentially(0, [['a', 'b'], ['a']])])).onAny(event => {
137
+ if (event.type === 'value') {
138
+ const {
139
+ el,
140
+ removalStream
141
+ } = event.value;
142
+ events.push(['add', el]);
143
+ removalStream.take(1).onValue(() => {
144
+ events.push(['remove', el]);
169
145
  });
146
+ } else if (event.type === 'error') {
147
+ events.push(['error', event.value]);
148
+ }
149
+ }).onEnd(() => {
150
+ (0, _asap.default)(() => {
151
+ expect(events).toEqual([['error', 'foo'], ['add', 'a'], ['add', 'b'], ['remove', 'b'], ['remove', 'a']]);
152
+ cb();
170
153
  });
171
- });
154
+ });
155
+ });
@@ -1,55 +1,36 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import type { Driver } from '../driver-interfaces/driver';
4
- import type { AutocompleteSearchResult } from '../../injected-js/gmail/modify-suggestions';
5
-
6
- export default function copyAndValidateAutocompleteResults(
7
- driver: Driver,
8
- results: Array<AutocompleteSearchResult>
9
- ): Array<AutocompleteSearchResult> {
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = copyAndValidateAutocompleteResults;
7
+ function copyAndValidateAutocompleteResults(driver, results) {
10
8
  if (!Array.isArray(results)) {
11
9
  throw new Error('suggestions must be an array');
12
10
  }
13
-
14
- return results.map((result) => {
15
- const resultCopy = { ...result };
16
- if (
17
- typeof resultCopy.name !== 'string' &&
18
- typeof resultCopy.nameHTML !== 'string'
19
- ) {
11
+ return results.map(result => {
12
+ const resultCopy = {
13
+ ...result
14
+ };
15
+ if (typeof resultCopy.name !== 'string' && typeof resultCopy.nameHTML !== 'string') {
20
16
  throw new Error('suggestion must have name or nameHTML property');
21
17
  }
22
- if (
23
- typeof resultCopy.routeName !== 'string' &&
24
- typeof resultCopy.externalURL !== 'string' &&
25
- typeof resultCopy.searchTerm !== 'string' &&
26
- typeof resultCopy.onClick !== 'function'
27
- ) {
28
- throw new Error(
29
- 'suggestion must have routeName, externalURL, ' +
30
- 'searchTerm, or onClick property'
31
- );
18
+ if (typeof resultCopy.routeName !== 'string' && typeof resultCopy.externalURL !== 'string' && typeof resultCopy.searchTerm !== 'string' && typeof resultCopy.onClick !== 'function') {
19
+ throw new Error('suggestion must have routeName, externalURL, ' + 'searchTerm, or onClick property');
32
20
  }
33
- if (typeof (resultCopy: any).iconURL === 'string') {
34
- const iconURL = (resultCopy: any).iconURL;
35
- driver
36
- .getLogger()
37
- .deprecationWarning(
38
- 'AutocompleteSearchResult "iconURL" property',
39
- 'AutocompleteSearchResult.iconUrl'
40
- );
21
+ if (typeof resultCopy.iconURL === 'string') {
22
+ const iconURL = resultCopy.iconURL;
23
+ driver.getLogger().deprecationWarning('AutocompleteSearchResult "iconURL" property', 'AutocompleteSearchResult.iconUrl');
41
24
  if (!resultCopy.iconUrl) {
42
25
  if (driver.getOpts().REQUESTED_API_VERSION === 1) {
43
26
  resultCopy.iconUrl = iconURL;
44
27
  } else {
45
28
  // eslint-disable-next-line no-console
46
- console.error(
47
- 'Support for iconURL property was dropped after API version 1'
48
- );
29
+ console.error('Support for iconURL property was dropped after API version 1');
49
30
  }
50
31
  }
51
- delete (resultCopy: any).iconURL;
32
+ delete resultCopy.iconURL;
52
33
  }
53
34
  return resultCopy;
54
35
  });
55
- }
36
+ }
@@ -1,8 +1,12 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- export default function cssSelectorEscape(text: string): string {
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = cssSelectorEscape;
7
+ function cssSelectorEscape(text) {
4
8
  if (text.length === 0 || /^-?[0-9]/.test(text)) {
5
9
  throw new Error('Invalid CSS selector');
6
10
  }
7
11
  return text.replace(/[^a-z0-9]/g, '\\$&');
8
- }
12
+ }
@@ -1,20 +1,17 @@
1
- /* @flow */
2
-
3
- import type Kefir from 'kefir';
1
+ "use strict";
4
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = elementViewMapper;
5
7
  // Returns a function suitable for mapping over a stream returned from
6
8
  // makeElementChildStream or kefirMakeElementChildStream.
7
- type View = { destroy(): void };
8
- import type { ElementWithLifetime } from './make-element-child-stream';
9
-
10
- export default function elementViewMapper<T: View>(
11
- viewFn: (el: HTMLElement) => T
12
- ): (event: ElementWithLifetime) => T {
13
- return (event) => {
9
+ function elementViewMapper(viewFn) {
10
+ return event => {
14
11
  const view = viewFn(event.el);
15
12
  event.removalStream.take(1).onValue(() => {
16
13
  view.destroy();
17
14
  });
18
15
  return view;
19
16
  };
20
- }
17
+ }
@@ -1,61 +1,32 @@
1
- /* @flow */
1
+ "use strict";
2
2
 
3
- import t from 'transducers.js';
4
-
5
- function isRangeEmpty(range: Range): boolean {
6
- return (
7
- range.startContainer === range.endContainer &&
8
- range.startOffset === range.endOffset
9
- );
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getSelectedHTMLInElement = getSelectedHTMLInElement;
8
+ exports.getSelectedTextInElement = getSelectedTextInElement;
9
+ var _transducers = _interopRequireDefault(require("transducers.js"));
10
+ function isRangeEmpty(range) {
11
+ return range.startContainer === range.endContainer && range.startOffset === range.endOffset;
10
12
  }
11
13
 
12
14
  // returns true if either end appears to be inside the element
13
- function isRangeInElement(range: Range, el: HTMLElement): boolean {
15
+ function isRangeInElement(range, el) {
14
16
  return el.contains(range.startContainer) || el.contains(range.endContainer);
15
17
  }
16
-
17
- function isRangeSuitable(range: Range, el: HTMLElement): boolean {
18
+ function isRangeSuitable(range, el) {
18
19
  return !isRangeEmpty(range) && isRangeInElement(range, el);
19
20
  }
20
-
21
- export function getSelectedTextInElement(
22
- element: HTMLElement,
23
- lastRange?: ?Range
24
- ): ?string {
25
- const selection = (document: any).getSelection();
26
- return t.toArray(
27
- [
28
- selection && selection.rangeCount ? selection.getRangeAt(0) : null,
29
- lastRange,
30
- ],
31
- t.compose(
32
- t.keep(),
33
- t.filter((range: Range) => isRangeSuitable(range, element)),
34
- t.map((range: Range) => range.toString()),
35
- t.take(1)
36
- )
37
- )[0];
38
- }
39
-
40
- export function getSelectedHTMLInElement(
41
- element: HTMLElement,
42
- lastRange?: ?Range
43
- ): ?string {
44
- const selection = (document: any).getSelection();
45
- return t.toArray(
46
- [
47
- selection && selection.rangeCount ? selection.getRangeAt(0) : null,
48
- lastRange,
49
- ],
50
- t.compose(
51
- t.keep(),
52
- t.filter((range: Range) => isRangeSuitable(range, element)),
53
- t.map((range: Range) => {
54
- const div = document.createElement('div');
55
- div.appendChild(range.cloneContents());
56
- return div.innerHTML;
57
- }),
58
- t.take(1)
59
- )
60
- )[0];
21
+ function getSelectedTextInElement(element, lastRange) {
22
+ const selection = document.getSelection();
23
+ return _transducers.default.toArray([selection && selection.rangeCount ? selection.getRangeAt(0) : null, lastRange], _transducers.default.compose(_transducers.default.keep(), _transducers.default.filter(range => isRangeSuitable(range, element)), _transducers.default.map(range => range.toString()), _transducers.default.take(1)))[0];
61
24
  }
25
+ function getSelectedHTMLInElement(element, lastRange) {
26
+ const selection = document.getSelection();
27
+ return _transducers.default.toArray([selection && selection.rangeCount ? selection.getRangeAt(0) : null, lastRange], _transducers.default.compose(_transducers.default.keep(), _transducers.default.filter(range => isRangeSuitable(range, element)), _transducers.default.map(range => {
28
+ const div = document.createElement('div');
29
+ div.appendChild(range.cloneContents());
30
+ return div.innerHTML;
31
+ }), _transducers.default.take(1)))[0];
32
+ }