@atlaskit/editor-common 74.19.1 → 74.20.0

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 (311) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/link/LinkPicker/EditorLinkPicker/index.js +86 -0
  3. package/dist/cjs/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.js +32 -0
  4. package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.js +939 -0
  5. package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/index.js +79 -0
  6. package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/messages.js +40 -0
  7. package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/utils.js +84 -0
  8. package/dist/cjs/link/LinkSearch/LinkSearchList.js +83 -0
  9. package/dist/cjs/link/LinkSearch/LinkSearchListItem.js +146 -0
  10. package/dist/cjs/link/LinkSearch/ToolbarComponents.js +17 -0
  11. package/dist/cjs/link/LinkSearch/index.js +328 -0
  12. package/dist/cjs/link/LinkSearch/listItemAlts.js +70 -0
  13. package/dist/cjs/link/LinkSearch/transformTimeStamp.js +42 -0
  14. package/dist/cjs/link/LinkSearch/types.js +5 -0
  15. package/dist/cjs/link/LinkSearch/withActivityProvider.js +59 -0
  16. package/dist/cjs/link/index.js +122 -0
  17. package/dist/cjs/link/types.js +22 -0
  18. package/dist/cjs/link/utils.js +19 -0
  19. package/dist/cjs/monitoring/error.js +1 -1
  20. package/dist/cjs/quick-insert/assets/action.js +43 -0
  21. package/dist/cjs/quick-insert/assets/code.js +115 -0
  22. package/dist/cjs/quick-insert/assets/custom-panel.js +55 -0
  23. package/dist/cjs/quick-insert/assets/date.js +93 -0
  24. package/dist/cjs/quick-insert/assets/decision.js +34 -0
  25. package/dist/cjs/quick-insert/assets/divider.js +74 -0
  26. package/dist/cjs/quick-insert/assets/emoji.js +37 -0
  27. package/dist/cjs/quick-insert/assets/expand.js +47 -0
  28. package/dist/cjs/quick-insert/assets/fallback.js +55 -0
  29. package/dist/cjs/quick-insert/assets/feedback.js +70 -0
  30. package/dist/cjs/quick-insert/assets/heading1.js +50 -0
  31. package/dist/cjs/quick-insert/assets/heading2.js +50 -0
  32. package/dist/cjs/quick-insert/assets/heading3.js +50 -0
  33. package/dist/cjs/quick-insert/assets/heading4.js +50 -0
  34. package/dist/cjs/quick-insert/assets/heading5.js +50 -0
  35. package/dist/cjs/quick-insert/assets/heading6.js +50 -0
  36. package/dist/cjs/quick-insert/assets/images.js +92 -0
  37. package/dist/cjs/quick-insert/assets/index.js +372 -0
  38. package/dist/cjs/quick-insert/assets/layout.js +71 -0
  39. package/dist/cjs/quick-insert/assets/link.js +35 -0
  40. package/dist/cjs/quick-insert/assets/list-number.js +51 -0
  41. package/dist/cjs/quick-insert/assets/list.js +65 -0
  42. package/dist/cjs/quick-insert/assets/mention.js +56 -0
  43. package/dist/cjs/quick-insert/assets/panel-error.js +35 -0
  44. package/dist/cjs/quick-insert/assets/panel-note.js +35 -0
  45. package/dist/cjs/quick-insert/assets/panel-success.js +35 -0
  46. package/dist/cjs/quick-insert/assets/panel-warning.js +35 -0
  47. package/dist/cjs/quick-insert/assets/panel.js +50 -0
  48. package/dist/cjs/quick-insert/assets/quote.js +35 -0
  49. package/dist/cjs/quick-insert/assets/status.js +109 -0
  50. package/dist/cjs/quick-insert/index.js +150 -0
  51. package/dist/cjs/types/block-type.js +5 -0
  52. package/dist/cjs/types/image-upload-reference-event.js +5 -0
  53. package/dist/cjs/ui/Announcer/announcer.js +62 -0
  54. package/dist/cjs/ui/DropList/index.js +1 -1
  55. package/dist/cjs/ui/PanelTextInput/index.js +174 -0
  56. package/dist/cjs/ui/PanelTextInput/styles.js +19 -0
  57. package/dist/cjs/ui/index.js +21 -0
  58. package/dist/cjs/utils/commands.js +20 -0
  59. package/dist/cjs/utils/hyperlink.js +25 -2
  60. package/dist/cjs/utils/index.js +24 -1
  61. package/dist/cjs/version.json +1 -1
  62. package/dist/es2019/link/LinkPicker/EditorLinkPicker/index.js +74 -0
  63. package/dist/es2019/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.js +25 -0
  64. package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.js +789 -0
  65. package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/index.js +74 -0
  66. package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/messages.js +33 -0
  67. package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/utils.js +83 -0
  68. package/dist/es2019/link/LinkSearch/LinkSearchList.js +63 -0
  69. package/dist/es2019/link/LinkSearch/LinkSearchListItem.js +141 -0
  70. package/dist/es2019/link/LinkSearch/ToolbarComponents.js +20 -0
  71. package/dist/es2019/link/LinkSearch/index.js +213 -0
  72. package/dist/es2019/link/LinkSearch/listItemAlts.js +63 -0
  73. package/dist/es2019/link/LinkSearch/transformTimeStamp.js +34 -0
  74. package/dist/es2019/link/LinkSearch/types.js +1 -0
  75. package/dist/es2019/link/LinkSearch/withActivityProvider.js +35 -0
  76. package/dist/es2019/link/index.js +11 -0
  77. package/dist/es2019/link/types.js +14 -0
  78. package/dist/es2019/link/utils.js +12 -0
  79. package/dist/es2019/monitoring/error.js +1 -1
  80. package/dist/es2019/quick-insert/assets/action.js +35 -0
  81. package/dist/es2019/quick-insert/assets/code.js +107 -0
  82. package/dist/es2019/quick-insert/assets/custom-panel.js +47 -0
  83. package/dist/es2019/quick-insert/assets/date.js +85 -0
  84. package/dist/es2019/quick-insert/assets/decision.js +26 -0
  85. package/dist/es2019/quick-insert/assets/divider.js +66 -0
  86. package/dist/es2019/quick-insert/assets/emoji.js +29 -0
  87. package/dist/es2019/quick-insert/assets/expand.js +39 -0
  88. package/dist/es2019/quick-insert/assets/fallback.js +47 -0
  89. package/dist/es2019/quick-insert/assets/feedback.js +62 -0
  90. package/dist/es2019/quick-insert/assets/heading1.js +42 -0
  91. package/dist/es2019/quick-insert/assets/heading2.js +42 -0
  92. package/dist/es2019/quick-insert/assets/heading3.js +42 -0
  93. package/dist/es2019/quick-insert/assets/heading4.js +42 -0
  94. package/dist/es2019/quick-insert/assets/heading5.js +42 -0
  95. package/dist/es2019/quick-insert/assets/heading6.js +42 -0
  96. package/dist/es2019/quick-insert/assets/images.js +84 -0
  97. package/dist/es2019/quick-insert/assets/index.js +115 -0
  98. package/dist/es2019/quick-insert/assets/layout.js +63 -0
  99. package/dist/es2019/quick-insert/assets/link.js +27 -0
  100. package/dist/es2019/quick-insert/assets/list-number.js +43 -0
  101. package/dist/es2019/quick-insert/assets/list.js +57 -0
  102. package/dist/es2019/quick-insert/assets/mention.js +48 -0
  103. package/dist/es2019/quick-insert/assets/panel-error.js +27 -0
  104. package/dist/es2019/quick-insert/assets/panel-note.js +27 -0
  105. package/dist/es2019/quick-insert/assets/panel-success.js +27 -0
  106. package/dist/es2019/quick-insert/assets/panel-warning.js +27 -0
  107. package/dist/es2019/quick-insert/assets/panel.js +42 -0
  108. package/dist/es2019/quick-insert/assets/quote.js +27 -0
  109. package/dist/es2019/quick-insert/assets/status.js +101 -0
  110. package/dist/es2019/quick-insert/index.js +1 -0
  111. package/dist/es2019/types/block-type.js +1 -0
  112. package/dist/es2019/types/image-upload-reference-event.js +1 -0
  113. package/dist/es2019/ui/Announcer/announcer.js +41 -0
  114. package/dist/es2019/ui/DropList/index.js +1 -1
  115. package/dist/es2019/ui/PanelTextInput/index.js +149 -0
  116. package/dist/es2019/ui/PanelTextInput/styles.js +36 -0
  117. package/dist/es2019/ui/index.js +4 -1
  118. package/dist/es2019/utils/commands.js +11 -0
  119. package/dist/es2019/utils/hyperlink.js +19 -1
  120. package/dist/es2019/utils/index.js +8 -2
  121. package/dist/es2019/version.json +1 -1
  122. package/dist/esm/link/LinkPicker/EditorLinkPicker/index.js +76 -0
  123. package/dist/esm/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.js +25 -0
  124. package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.js +924 -0
  125. package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/index.js +72 -0
  126. package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/messages.js +33 -0
  127. package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/utils.js +73 -0
  128. package/dist/esm/link/LinkSearch/LinkSearchList.js +75 -0
  129. package/dist/esm/link/LinkSearch/LinkSearchListItem.js +131 -0
  130. package/dist/esm/link/LinkSearch/ToolbarComponents.js +7 -0
  131. package/dist/esm/link/LinkSearch/index.js +320 -0
  132. package/dist/esm/link/LinkSearch/listItemAlts.js +63 -0
  133. package/dist/esm/link/LinkSearch/transformTimeStamp.js +34 -0
  134. package/dist/esm/link/LinkSearch/types.js +1 -0
  135. package/dist/esm/link/LinkSearch/withActivityProvider.js +52 -0
  136. package/dist/esm/link/index.js +11 -0
  137. package/dist/esm/link/types.js +14 -0
  138. package/dist/esm/link/utils.js +12 -0
  139. package/dist/esm/monitoring/error.js +1 -1
  140. package/dist/esm/quick-insert/assets/action.js +35 -0
  141. package/dist/esm/quick-insert/assets/code.js +107 -0
  142. package/dist/esm/quick-insert/assets/custom-panel.js +47 -0
  143. package/dist/esm/quick-insert/assets/date.js +85 -0
  144. package/dist/esm/quick-insert/assets/decision.js +26 -0
  145. package/dist/esm/quick-insert/assets/divider.js +66 -0
  146. package/dist/esm/quick-insert/assets/emoji.js +29 -0
  147. package/dist/esm/quick-insert/assets/expand.js +39 -0
  148. package/dist/esm/quick-insert/assets/fallback.js +47 -0
  149. package/dist/esm/quick-insert/assets/feedback.js +62 -0
  150. package/dist/esm/quick-insert/assets/heading1.js +42 -0
  151. package/dist/esm/quick-insert/assets/heading2.js +42 -0
  152. package/dist/esm/quick-insert/assets/heading3.js +42 -0
  153. package/dist/esm/quick-insert/assets/heading4.js +42 -0
  154. package/dist/esm/quick-insert/assets/heading5.js +42 -0
  155. package/dist/esm/quick-insert/assets/heading6.js +42 -0
  156. package/dist/esm/quick-insert/assets/images.js +84 -0
  157. package/dist/esm/quick-insert/assets/index.js +248 -0
  158. package/dist/esm/quick-insert/assets/layout.js +63 -0
  159. package/dist/esm/quick-insert/assets/link.js +27 -0
  160. package/dist/esm/quick-insert/assets/list-number.js +43 -0
  161. package/dist/esm/quick-insert/assets/list.js +57 -0
  162. package/dist/esm/quick-insert/assets/mention.js +48 -0
  163. package/dist/esm/quick-insert/assets/panel-error.js +27 -0
  164. package/dist/esm/quick-insert/assets/panel-note.js +27 -0
  165. package/dist/esm/quick-insert/assets/panel-success.js +27 -0
  166. package/dist/esm/quick-insert/assets/panel-warning.js +27 -0
  167. package/dist/esm/quick-insert/assets/panel.js +42 -0
  168. package/dist/esm/quick-insert/assets/quote.js +27 -0
  169. package/dist/esm/quick-insert/assets/status.js +101 -0
  170. package/dist/esm/quick-insert/index.js +1 -0
  171. package/dist/esm/types/block-type.js +1 -0
  172. package/dist/esm/types/image-upload-reference-event.js +1 -0
  173. package/dist/esm/ui/Announcer/announcer.js +52 -0
  174. package/dist/esm/ui/DropList/index.js +1 -1
  175. package/dist/esm/ui/PanelTextInput/index.js +168 -0
  176. package/dist/esm/ui/PanelTextInput/styles.js +10 -0
  177. package/dist/esm/ui/index.js +4 -1
  178. package/dist/esm/utils/commands.js +13 -0
  179. package/dist/esm/utils/hyperlink.js +23 -1
  180. package/dist/esm/utils/index.js +12 -2
  181. package/dist/esm/version.json +1 -1
  182. package/dist/types/link/LinkPicker/EditorLinkPicker/index.d.ts +23 -0
  183. package/dist/types/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.d.ts +2 -0
  184. package/dist/types/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.d.ts +115 -0
  185. package/dist/types/link/LinkPicker/HyperlinkAddToolbar/index.d.ts +21 -0
  186. package/dist/types/link/LinkPicker/HyperlinkAddToolbar/messages.d.ts +32 -0
  187. package/dist/types/link/LinkPicker/HyperlinkAddToolbar/utils.d.ts +8 -0
  188. package/dist/types/link/LinkSearch/LinkSearchList.d.ts +20 -0
  189. package/dist/types/link/LinkSearch/LinkSearchListItem.d.ts +22 -0
  190. package/dist/types/link/LinkSearch/ToolbarComponents.d.ts +3 -0
  191. package/dist/types/link/LinkSearch/index.d.ts +59 -0
  192. package/dist/types/link/LinkSearch/listItemAlts.d.ts +2 -0
  193. package/dist/types/link/LinkSearch/transformTimeStamp.d.ts +10 -0
  194. package/dist/types/link/LinkSearch/types.d.ts +49 -0
  195. package/dist/types/link/LinkSearch/withActivityProvider.d.ts +66 -0
  196. package/dist/types/link/index.d.ts +16 -0
  197. package/dist/types/link/types.d.ts +40 -0
  198. package/dist/types/link/utils.d.ts +3 -0
  199. package/dist/types/provider-factory/image-upload-provider.d.ts +2 -1
  200. package/dist/types/quick-insert/assets/action.d.ts +2 -0
  201. package/dist/types/quick-insert/assets/code.d.ts +2 -0
  202. package/dist/types/quick-insert/assets/custom-panel.d.ts +2 -0
  203. package/dist/types/quick-insert/assets/date.d.ts +2 -0
  204. package/dist/types/quick-insert/assets/decision.d.ts +2 -0
  205. package/dist/types/quick-insert/assets/divider.d.ts +2 -0
  206. package/dist/types/quick-insert/assets/emoji.d.ts +2 -0
  207. package/dist/types/quick-insert/assets/expand.d.ts +2 -0
  208. package/dist/types/quick-insert/assets/fallback.d.ts +2 -0
  209. package/dist/types/quick-insert/assets/feedback.d.ts +2 -0
  210. package/dist/types/quick-insert/assets/heading1.d.ts +2 -0
  211. package/dist/types/quick-insert/assets/heading2.d.ts +2 -0
  212. package/dist/types/quick-insert/assets/heading3.d.ts +2 -0
  213. package/dist/types/quick-insert/assets/heading4.d.ts +2 -0
  214. package/dist/types/quick-insert/assets/heading5.d.ts +2 -0
  215. package/dist/types/quick-insert/assets/heading6.d.ts +2 -0
  216. package/dist/types/quick-insert/assets/images.d.ts +2 -0
  217. package/dist/types/quick-insert/assets/index.d.ts +30 -0
  218. package/dist/types/quick-insert/assets/layout.d.ts +2 -0
  219. package/dist/types/quick-insert/assets/link.d.ts +2 -0
  220. package/dist/types/quick-insert/assets/list-number.d.ts +2 -0
  221. package/dist/types/quick-insert/assets/list.d.ts +2 -0
  222. package/dist/types/quick-insert/assets/mention.d.ts +2 -0
  223. package/dist/types/quick-insert/assets/panel-error.d.ts +2 -0
  224. package/dist/types/quick-insert/assets/panel-note.d.ts +2 -0
  225. package/dist/types/quick-insert/assets/panel-success.d.ts +2 -0
  226. package/dist/types/quick-insert/assets/panel-warning.d.ts +2 -0
  227. package/dist/types/quick-insert/assets/panel.d.ts +2 -0
  228. package/dist/types/quick-insert/assets/quote.d.ts +2 -0
  229. package/dist/types/quick-insert/assets/status.d.ts +2 -0
  230. package/dist/types/quick-insert/index.d.ts +1 -0
  231. package/dist/types/react-node-view/index.d.ts +2 -2
  232. package/dist/types/types/block-type.d.ts +3 -0
  233. package/dist/types/types/command.d.ts +1 -0
  234. package/dist/types/types/image-upload-reference-event.d.ts +10 -0
  235. package/dist/types/types/index.d.ts +3 -1
  236. package/dist/types/ui/Announcer/announcer.d.ts +22 -0
  237. package/dist/types/ui/DropList/index.d.ts +1 -1
  238. package/dist/types/ui/PanelTextInput/index.d.ts +45 -0
  239. package/dist/types/ui/PanelTextInput/styles.d.ts +2 -0
  240. package/dist/types/ui/index.d.ts +3 -0
  241. package/dist/types/ui-menu/ToolbarButton/index.d.ts +1 -1
  242. package/dist/types/utils/commands.d.ts +2 -0
  243. package/dist/types/utils/hyperlink.d.ts +2 -0
  244. package/dist/types/utils/index.d.ts +3 -1
  245. package/dist/types-ts4.5/link/LinkPicker/EditorLinkPicker/index.d.ts +23 -0
  246. package/dist/types-ts4.5/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.d.ts +2 -0
  247. package/dist/types-ts4.5/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.d.ts +115 -0
  248. package/dist/types-ts4.5/link/LinkPicker/HyperlinkAddToolbar/index.d.ts +21 -0
  249. package/dist/types-ts4.5/link/LinkPicker/HyperlinkAddToolbar/messages.d.ts +32 -0
  250. package/dist/types-ts4.5/link/LinkPicker/HyperlinkAddToolbar/utils.d.ts +8 -0
  251. package/dist/types-ts4.5/link/LinkSearch/LinkSearchList.d.ts +20 -0
  252. package/dist/types-ts4.5/link/LinkSearch/LinkSearchListItem.d.ts +22 -0
  253. package/dist/types-ts4.5/link/LinkSearch/ToolbarComponents.d.ts +3 -0
  254. package/dist/types-ts4.5/link/LinkSearch/index.d.ts +59 -0
  255. package/dist/types-ts4.5/link/LinkSearch/listItemAlts.d.ts +2 -0
  256. package/dist/types-ts4.5/link/LinkSearch/transformTimeStamp.d.ts +10 -0
  257. package/dist/types-ts4.5/link/LinkSearch/types.d.ts +49 -0
  258. package/dist/types-ts4.5/link/LinkSearch/withActivityProvider.d.ts +66 -0
  259. package/dist/types-ts4.5/link/index.d.ts +16 -0
  260. package/dist/types-ts4.5/link/types.d.ts +40 -0
  261. package/dist/types-ts4.5/link/utils.d.ts +3 -0
  262. package/dist/types-ts4.5/provider-factory/image-upload-provider.d.ts +2 -1
  263. package/dist/types-ts4.5/quick-insert/assets/action.d.ts +2 -0
  264. package/dist/types-ts4.5/quick-insert/assets/code.d.ts +2 -0
  265. package/dist/types-ts4.5/quick-insert/assets/custom-panel.d.ts +2 -0
  266. package/dist/types-ts4.5/quick-insert/assets/date.d.ts +2 -0
  267. package/dist/types-ts4.5/quick-insert/assets/decision.d.ts +2 -0
  268. package/dist/types-ts4.5/quick-insert/assets/divider.d.ts +2 -0
  269. package/dist/types-ts4.5/quick-insert/assets/emoji.d.ts +2 -0
  270. package/dist/types-ts4.5/quick-insert/assets/expand.d.ts +2 -0
  271. package/dist/types-ts4.5/quick-insert/assets/fallback.d.ts +2 -0
  272. package/dist/types-ts4.5/quick-insert/assets/feedback.d.ts +2 -0
  273. package/dist/types-ts4.5/quick-insert/assets/heading1.d.ts +2 -0
  274. package/dist/types-ts4.5/quick-insert/assets/heading2.d.ts +2 -0
  275. package/dist/types-ts4.5/quick-insert/assets/heading3.d.ts +2 -0
  276. package/dist/types-ts4.5/quick-insert/assets/heading4.d.ts +2 -0
  277. package/dist/types-ts4.5/quick-insert/assets/heading5.d.ts +2 -0
  278. package/dist/types-ts4.5/quick-insert/assets/heading6.d.ts +2 -0
  279. package/dist/types-ts4.5/quick-insert/assets/images.d.ts +2 -0
  280. package/dist/types-ts4.5/quick-insert/assets/index.d.ts +30 -0
  281. package/dist/types-ts4.5/quick-insert/assets/layout.d.ts +2 -0
  282. package/dist/types-ts4.5/quick-insert/assets/link.d.ts +2 -0
  283. package/dist/types-ts4.5/quick-insert/assets/list-number.d.ts +2 -0
  284. package/dist/types-ts4.5/quick-insert/assets/list.d.ts +2 -0
  285. package/dist/types-ts4.5/quick-insert/assets/mention.d.ts +2 -0
  286. package/dist/types-ts4.5/quick-insert/assets/panel-error.d.ts +2 -0
  287. package/dist/types-ts4.5/quick-insert/assets/panel-note.d.ts +2 -0
  288. package/dist/types-ts4.5/quick-insert/assets/panel-success.d.ts +2 -0
  289. package/dist/types-ts4.5/quick-insert/assets/panel-warning.d.ts +2 -0
  290. package/dist/types-ts4.5/quick-insert/assets/panel.d.ts +2 -0
  291. package/dist/types-ts4.5/quick-insert/assets/quote.d.ts +2 -0
  292. package/dist/types-ts4.5/quick-insert/assets/status.d.ts +2 -0
  293. package/dist/types-ts4.5/quick-insert/index.d.ts +1 -0
  294. package/dist/types-ts4.5/react-node-view/index.d.ts +2 -2
  295. package/dist/types-ts4.5/types/block-type.d.ts +3 -0
  296. package/dist/types-ts4.5/types/command.d.ts +1 -0
  297. package/dist/types-ts4.5/types/image-upload-reference-event.d.ts +10 -0
  298. package/dist/types-ts4.5/types/index.d.ts +3 -1
  299. package/dist/types-ts4.5/ui/Announcer/announcer.d.ts +22 -0
  300. package/dist/types-ts4.5/ui/DropList/index.d.ts +1 -1
  301. package/dist/types-ts4.5/ui/PanelTextInput/index.d.ts +45 -0
  302. package/dist/types-ts4.5/ui/PanelTextInput/styles.d.ts +2 -0
  303. package/dist/types-ts4.5/ui/index.d.ts +3 -0
  304. package/dist/types-ts4.5/ui-menu/ToolbarButton/index.d.ts +1 -1
  305. package/dist/types-ts4.5/utils/commands.d.ts +2 -0
  306. package/dist/types-ts4.5/utils/hyperlink.d.ts +2 -0
  307. package/dist/types-ts4.5/utils/index.d.ts +3 -1
  308. package/link/package.json +15 -0
  309. package/package.json +13 -5
  310. package/quick-insert/package.json +15 -0
  311. package/tmp/api-report-tmp.d.ts +0 -9
@@ -0,0 +1,924 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
4
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
5
+ import _createClass from "@babel/runtime/helpers/createClass";
6
+ import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
7
+ import _inherits from "@babel/runtime/helpers/inherits";
8
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
9
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
10
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
11
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
12
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
13
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
14
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
15
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
16
+ /** @jsx jsx */
17
+ import React, { PureComponent } from 'react';
18
+ import { css, jsx } from '@emotion/react';
19
+ import debounce from 'lodash/debounce';
20
+ import { defineMessages, injectIntl } from 'react-intl-next';
21
+ import { isSafeUrl } from '@atlaskit/adf-schema';
22
+ import { withAnalyticsEvents } from '@atlaskit/analytics-next';
23
+ import Page16Icon from '@atlaskit/icon-object/glyph/page/16';
24
+ import CrossCircleIcon from '@atlaskit/icon/glyph/cross-circle';
25
+ import EditorAlignLeftIcon from '@atlaskit/icon/glyph/editor/align-left';
26
+ import LinkIcon from '@atlaskit/icon/glyph/link';
27
+ import { N30, N80, N90 } from '@atlaskit/theme/colors';
28
+ import Tooltip from '@atlaskit/tooltip';
29
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, fireAnalyticsEvent, INPUT_METHOD } from '../../../analytics';
30
+ import { linkToolbarMessages as linkToolbarCommonMessages } from '../../../messages';
31
+ import { Announcer, PanelTextInput } from '../../../ui';
32
+ import { browser, normalizeUrl } from '../../../utils';
33
+ import LinkSearchList from '../../LinkSearch/LinkSearchList';
34
+ import { container, containerWithProvider, inputWrapper } from '../../LinkSearch/ToolbarComponents';
35
+ import { transformTimeStamp } from '../../LinkSearch/transformTimeStamp';
36
+ import { filterUniqueItems, mapContentTypeToIcon, sha1, wordCount } from './utils';
37
+
38
+ /**
39
+ * Visible only to screenreaders. Use when there is a need
40
+ * to provide more context to a non-sighted user.
41
+ */
42
+ export var visuallyHiddenStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n clip: rect(1px, 1px, 1px, 1px);\n clip-path: inset(50%);\n height: 1px;\n width: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n"])));
43
+ export var RECENT_SEARCH_LIST_SIZE = 5;
44
+ var clearText = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n cursor: pointer;\n padding: 0;\n margin-right: ", ";\n color: ", ";\n background: transparent;\n border: none;\n"])), "var(--ds-space-100, 8px)", "var(--ds-icon-subtle, ".concat(N90, ")"));
45
+ var textInputWrapper = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n ", ";\n border-top: 1px solid ", ";\n border-bottom: 1px solid ", ";\n"])), inputWrapper, "var(--ds-border, ".concat(N30, ")"), "var(--ds-border, ".concat(N30, ")"));
46
+ var iconWrapper = css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n color: ", ";\n padding: ", " ", ";\n width: 18px;\n"])), "var(--ds-icon-subtle, ".concat(N80, ")"), "var(--ds-space-050, 4px)", "var(--ds-space-100, 8px)");
47
+ export var messages = defineMessages({
48
+ displayText: {
49
+ id: 'fabric.editor.displayText',
50
+ defaultMessage: 'Text to display',
51
+ description: 'Text to display'
52
+ },
53
+ clearText: {
54
+ id: 'fabric.editor.clearLinkText',
55
+ defaultMessage: 'Clear text',
56
+ description: 'Clears text on the link toolbar'
57
+ },
58
+ clearLink: {
59
+ id: 'fabric.editor.clearLink',
60
+ defaultMessage: 'Clear link',
61
+ description: 'Clears link in the link toolbar'
62
+ },
63
+ searchLinkAriaDescription: {
64
+ id: 'fabric.editor.hyperlink.searchLinkAriaDescription',
65
+ defaultMessage: 'Suggestions will appear below as you type into the field',
66
+ description: 'Describes what the search field does for screen reader users.'
67
+ },
68
+ searchLinkResults: {
69
+ id: 'fabric.editor.hyperlink.searchLinkResults',
70
+ defaultMessage: '{count, plural, =0 {no results} one {# result} other {# results}} found',
71
+ description: 'Announce search results for screen-reader users.'
72
+ },
73
+ linkAriaLabel: {
74
+ id: 'fabric.editor.hyperlink.linkAriaLabel',
75
+ defaultMessage: 'Link label',
76
+ description: 'aria label for a link'
77
+ }
78
+ });
79
+ var defaultIcon = jsx(Page16Icon, {
80
+ label: 'page'
81
+ });
82
+ var mapActivityProviderResultToLinkSearchItemData = function mapActivityProviderResultToLinkSearchItemData(_ref) {
83
+ var name = _ref.name,
84
+ container = _ref.container,
85
+ iconUrl = _ref.iconUrl,
86
+ objectId = _ref.objectId,
87
+ url = _ref.url,
88
+ viewedTimestamp = _ref.viewedTimestamp;
89
+ return {
90
+ objectId: objectId,
91
+ name: name,
92
+ container: container,
93
+ iconUrl: iconUrl,
94
+ url: url,
95
+ lastViewedDate: viewedTimestamp ? new Date(viewedTimestamp) : undefined,
96
+ prefetch: true
97
+ };
98
+ };
99
+ var mapSearchProviderResultToLinkSearchItemData = function mapSearchProviderResultToLinkSearchItemData(_ref2) {
100
+ var objectId = _ref2.objectId,
101
+ container = _ref2.container,
102
+ title = _ref2.title,
103
+ contentType = _ref2.contentType,
104
+ url = _ref2.url,
105
+ updatedTimestamp = _ref2.updatedTimestamp;
106
+ return {
107
+ objectId: objectId,
108
+ container: container,
109
+ name: title,
110
+ url: url,
111
+ lastUpdatedDate: updatedTimestamp ? new Date(updatedTimestamp) : undefined,
112
+ icon: contentType && mapContentTypeToIcon[contentType] || defaultIcon,
113
+ prefetch: false
114
+ };
115
+ };
116
+ export var HyperlinkLinkAddToolbar = /*#__PURE__*/function (_PureComponent) {
117
+ _inherits(HyperlinkLinkAddToolbar, _PureComponent);
118
+ var _super = _createSuper(HyperlinkLinkAddToolbar);
119
+ function HyperlinkLinkAddToolbar(props) {
120
+ var _this;
121
+ _classCallCheck(this, HyperlinkLinkAddToolbar);
122
+ _this = _super.call(this, props);
123
+ /* To prevent double submit */
124
+ _defineProperty(_assertThisInitialized(_this), "submitted", false);
125
+ _defineProperty(_assertThisInitialized(_this), "urlInputContainer", null);
126
+ _defineProperty(_assertThisInitialized(_this), "displayTextInputContainer", null);
127
+ _defineProperty(_assertThisInitialized(_this), "wrapperRef", /*#__PURE__*/React.createRef());
128
+ _defineProperty(_assertThisInitialized(_this), "quickSearchQueryVersion", 0);
129
+ _defineProperty(_assertThisInitialized(_this), "analyticSource", 'createLinkInlineDialog');
130
+ _defineProperty(_assertThisInitialized(_this), "quickSearch", /*#__PURE__*/function () {
131
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(input, items, quickSearchLimit) {
132
+ var _pluginState$searchSe;
133
+ var _this$state, searchProvider, displayUrl, pluginState, queryVersion, perfStart, _pluginState$searchSe2, searchProviderResultItems, searchItems, perfStop, duration, _perfStop, _duration;
134
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
135
+ while (1) switch (_context.prev = _context.next) {
136
+ case 0:
137
+ _this$state = _this.state, searchProvider = _this$state.searchProvider, displayUrl = _this$state.displayUrl;
138
+ pluginState = _this.props.pluginState;
139
+ if (searchProvider) {
140
+ _context.next = 4;
141
+ break;
142
+ }
143
+ return _context.abrupt("return");
144
+ case 4:
145
+ queryVersion = ++_this.quickSearchQueryVersion;
146
+ _this.fireAnalytics({
147
+ action: ACTION.ENTERED,
148
+ actionSubject: ACTION_SUBJECT.TEXT,
149
+ actionSubjectId: ACTION_SUBJECT_ID.LINK_SEARCH_INPUT,
150
+ attributes: {
151
+ queryLength: input.length,
152
+ queryVersion: queryVersion,
153
+ queryHash: sha1(input),
154
+ searchSessionId: (_pluginState$searchSe = pluginState.searchSessionId) !== null && _pluginState$searchSe !== void 0 ? _pluginState$searchSe : '',
155
+ wordCount: wordCount(input),
156
+ source: _this.analyticSource
157
+ },
158
+ nonPrivacySafeAttributes: {
159
+ query: input
160
+ },
161
+ eventType: EVENT_TYPE.UI
162
+ });
163
+ perfStart = performance.now();
164
+ _context.prev = 7;
165
+ _context.next = 10;
166
+ return searchProvider.quickSearch(input, quickSearchLimit);
167
+ case 10:
168
+ searchProviderResultItems = _context.sent;
169
+ searchItems = limit(filterUniqueItems([].concat(_toConsumableArray(items), _toConsumableArray(searchProviderResultItems.map(mapSearchProviderResultToLinkSearchItemData))), function (firstItem, secondItem) {
170
+ return firstItem.objectId === secondItem.objectId;
171
+ }));
172
+ if (displayUrl === input && queryVersion === _this.quickSearchQueryVersion) {
173
+ _this.setState({
174
+ items: searchItems,
175
+ isLoading: false
176
+ });
177
+ }
178
+ perfStop = performance.now();
179
+ duration = perfStop - perfStart;
180
+ _this.fireAnalytics({
181
+ action: ACTION.INVOKED,
182
+ actionSubject: ACTION_SUBJECT.SEARCH_RESULT,
183
+ actionSubjectId: ACTION_SUBJECT_ID.QUICK_SEARCH,
184
+ attributes: {
185
+ duration: duration,
186
+ count: searchProviderResultItems.length
187
+ },
188
+ eventType: EVENT_TYPE.OPERATIONAL
189
+ });
190
+ _this.fireAnalytics({
191
+ action: ACTION.SHOWN,
192
+ actionSubject: ACTION_SUBJECT.SEARCH_RESULT,
193
+ actionSubjectId: ACTION_SUBJECT_ID.POST_QUERY_SEARCH_RESULTS,
194
+ attributes: {
195
+ source: _this.analyticSource,
196
+ postQueryRequestDurationMs: duration,
197
+ searchSessionId: (_pluginState$searchSe2 = pluginState.searchSessionId) !== null && _pluginState$searchSe2 !== void 0 ? _pluginState$searchSe2 : '',
198
+ resultCount: searchProviderResultItems.length,
199
+ results: searchProviderResultItems.map(function (item) {
200
+ return {
201
+ resultContentId: item.objectId,
202
+ resultType: item.contentType
203
+ };
204
+ })
205
+ },
206
+ eventType: EVENT_TYPE.UI
207
+ });
208
+ _context.next = 24;
209
+ break;
210
+ case 19:
211
+ _context.prev = 19;
212
+ _context.t0 = _context["catch"](7);
213
+ _perfStop = performance.now();
214
+ _duration = _perfStop - perfStart;
215
+ _this.fireAnalytics({
216
+ action: ACTION.INVOKED,
217
+ actionSubject: ACTION_SUBJECT.SEARCH_RESULT,
218
+ actionSubjectId: ACTION_SUBJECT_ID.QUICK_SEARCH,
219
+ attributes: {
220
+ duration: _duration,
221
+ count: -1,
222
+ errorCode: _context.t0.status
223
+ },
224
+ nonPrivacySafeAttributes: {
225
+ error: _context.t0.message
226
+ },
227
+ eventType: EVENT_TYPE.OPERATIONAL
228
+ });
229
+ case 24:
230
+ case "end":
231
+ return _context.stop();
232
+ }
233
+ }, _callee, null, [[7, 19]]);
234
+ }));
235
+ return function (_x, _x2, _x3) {
236
+ return _ref3.apply(this, arguments);
237
+ };
238
+ }());
239
+ _defineProperty(_assertThisInitialized(_this), "updateInput", /*#__PURE__*/function () {
240
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(input) {
241
+ var _this$state2, activityProvider, searchProvider, _items, shouldQuerySearchProvider;
242
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
243
+ while (1) switch (_context2.prev = _context2.next) {
244
+ case 0:
245
+ _this$state2 = _this.state, activityProvider = _this$state2.activityProvider, searchProvider = _this$state2.searchProvider;
246
+ _this.setState({
247
+ displayUrl: input
248
+ });
249
+ if (!activityProvider) {
250
+ _context2.next = 23;
251
+ break;
252
+ }
253
+ if (!(input.length === 0)) {
254
+ _context2.next = 13;
255
+ break;
256
+ }
257
+ _context2.t0 = _this;
258
+ _context2.next = 7;
259
+ return _this.getRecentItems(activityProvider);
260
+ case 7:
261
+ _context2.t1 = _context2.sent;
262
+ _context2.t2 = -1;
263
+ _context2.t3 = {
264
+ items: _context2.t1,
265
+ selectedIndex: _context2.t2
266
+ };
267
+ _context2.t0.setState.call(_context2.t0, _context2.t3);
268
+ _context2.next = 23;
269
+ break;
270
+ case 13:
271
+ if (!isSafeUrl(input)) {
272
+ _context2.next = 17;
273
+ break;
274
+ }
275
+ _this.setState({
276
+ items: [],
277
+ selectedIndex: -1,
278
+ isLoading: false
279
+ });
280
+ _context2.next = 23;
281
+ break;
282
+ case 17:
283
+ _context2.next = 19;
284
+ return _this.getRecentItems(activityProvider, input);
285
+ case 19:
286
+ _items = _context2.sent;
287
+ shouldQuerySearchProvider = _items.length < RECENT_SEARCH_LIST_SIZE && !!searchProvider;
288
+ _this.setState({
289
+ items: _items,
290
+ isLoading: shouldQuerySearchProvider
291
+ });
292
+ if (shouldQuerySearchProvider) {
293
+ _this.debouncedQuickSearch(input, _items, RECENT_SEARCH_LIST_SIZE);
294
+ }
295
+ case 23:
296
+ case "end":
297
+ return _context2.stop();
298
+ }
299
+ }, _callee2);
300
+ }));
301
+ return function (_x4) {
302
+ return _ref4.apply(this, arguments);
303
+ };
304
+ }());
305
+ _defineProperty(_assertThisInitialized(_this), "createClearHandler", function (field) {
306
+ return /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
307
+ var activityProvider, _this$setState;
308
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
309
+ while (1) switch (_context3.prev = _context3.next) {
310
+ case 0:
311
+ activityProvider = _this.state.activityProvider;
312
+ _context3.t0 = field;
313
+ _context3.next = _context3.t0 === 'displayUrl' ? 4 : _context3.t0 === 'displayText' ? 24 : 26;
314
+ break;
315
+ case 4:
316
+ _context3.t1 = _this;
317
+ _this$setState = {};
318
+ _defineProperty(_this$setState, field, '');
319
+ _context3.t2 = _defineProperty;
320
+ _context3.t3 = _this$setState;
321
+ if (!activityProvider) {
322
+ _context3.next = 17;
323
+ break;
324
+ }
325
+ _context3.t5 = limit;
326
+ _context3.next = 13;
327
+ return activityProvider.getRecentItems();
328
+ case 13:
329
+ _context3.t6 = _context3.sent;
330
+ _context3.t4 = (0, _context3.t5)(_context3.t6);
331
+ _context3.next = 18;
332
+ break;
333
+ case 17:
334
+ _context3.t4 = [];
335
+ case 18:
336
+ _context3.t7 = _context3.t4;
337
+ (0, _context3.t2)(_context3.t3, "items", _context3.t7);
338
+ _context3.t8 = _this$setState;
339
+ _context3.t1.setState.call(_context3.t1, _context3.t8);
340
+ if (_this.urlInputContainer) {
341
+ _this.urlInputContainer.focus();
342
+ }
343
+ return _context3.abrupt("break", 26);
344
+ case 24:
345
+ _this.setState(_defineProperty({}, field, ''));
346
+ if (_this.displayTextInputContainer) {
347
+ _this.displayTextInputContainer.focus();
348
+ }
349
+ case 26:
350
+ case "end":
351
+ return _context3.stop();
352
+ }
353
+ }, _callee3);
354
+ }));
355
+ });
356
+ _defineProperty(_assertThisInitialized(_this), "handleClickOutside", function (event) {
357
+ if (event.target instanceof Element && _this.wrapperRef.current && !_this.wrapperRef.current.contains(event.target)) {
358
+ var _this$props = _this.props,
359
+ _this$props$view = _this$props.view,
360
+ state = _this$props$view.state,
361
+ dispatch = _this$props$view.dispatch,
362
+ onClickAwayCallback = _this$props.onClickAwayCallback;
363
+ onClickAwayCallback === null || onClickAwayCallback === void 0 ? void 0 : onClickAwayCallback(state, dispatch);
364
+ }
365
+ });
366
+ _defineProperty(_assertThisInitialized(_this), "getScreenReaderText", function () {
367
+ var intl = _this.props.intl;
368
+ var _this$state3 = _this.state,
369
+ items = _this$state3.items,
370
+ selectedIndex = _this$state3.selectedIndex;
371
+ if (items.length && selectedIndex > -1) {
372
+ var _items$selectedIndex = items[selectedIndex],
373
+ name = _items$selectedIndex.name,
374
+ _container = _items$selectedIndex.container,
375
+ lastUpdatedDate = _items$selectedIndex.lastUpdatedDate,
376
+ lastViewedDate = _items$selectedIndex.lastViewedDate;
377
+ var date = transformTimeStamp(intl, lastViewedDate, lastUpdatedDate);
378
+ return "".concat(name, ", ").concat(_container, ", ").concat(date === null || date === void 0 ? void 0 : date.pageAction, " ").concat(date === null || date === void 0 ? void 0 : date.dateString, " ").concat((date === null || date === void 0 ? void 0 : date.timeSince) || '');
379
+ }
380
+ });
381
+ _defineProperty(_assertThisInitialized(_this), "isUrlPopulatedWithSelectedItem", function () {
382
+ /**
383
+ * When we use ArrowKey to navigate through result items,
384
+ * the URL field will be populated with the content of
385
+ * selected item.
386
+ * This function will check if the URL field is populated
387
+ * with selected item.
388
+ * It can be useful to detect whether we want to insert a
389
+ * smartlink or a hyperlink with customized title
390
+ */
391
+ var _this$state4 = _this.state,
392
+ items = _this$state4.items,
393
+ selectedIndex = _this$state4.selectedIndex,
394
+ displayUrl = _this$state4.displayUrl;
395
+ var selectedItem = items[selectedIndex];
396
+ if (selectedItem && selectedItem.url === displayUrl) {
397
+ return true;
398
+ }
399
+ return false;
400
+ });
401
+ _defineProperty(_assertThisInitialized(_this), "handleSelected", function (href, text) {
402
+ _this.handleInsert(href, text, INPUT_METHOD.TYPEAHEAD, 'click');
403
+ });
404
+ _defineProperty(_assertThisInitialized(_this), "handleInsert", function (href, title, inputType, interaction) {
405
+ var _this$props2 = _this.props,
406
+ pluginState = _this$props2.pluginState,
407
+ onSubmit = _this$props2.onSubmit;
408
+ var _this$state5 = _this.state,
409
+ items = _this$state5.items,
410
+ selectedIndex = _this$state5.selectedIndex,
411
+ displayText = _this$state5.displayText;
412
+ if (onSubmit) {
413
+ _this.submitted = true;
414
+ onSubmit(href, title, displayText, inputType);
415
+ }
416
+ if (interaction === 'click' || _this.isUrlPopulatedWithSelectedItem()) {
417
+ var _pluginState$searchSe3, _selectedItem$prefetc;
418
+ /**
419
+ * When it's a mouse click even or the selectedItem.url matches displayUrl, we think
420
+ * it's selected from the result list and fire the
421
+ * analytic
422
+ */
423
+ var selectedItem = items[selectedIndex];
424
+ _this.fireAnalytics({
425
+ action: ACTION.SELECTED,
426
+ actionSubject: ACTION_SUBJECT.SEARCH_RESULT,
427
+ attributes: {
428
+ source: _this.analyticSource,
429
+ searchSessionId: (_pluginState$searchSe3 = pluginState.searchSessionId) !== null && _pluginState$searchSe3 !== void 0 ? _pluginState$searchSe3 : '',
430
+ trigger: interaction,
431
+ resultCount: items.length,
432
+ selectedResultId: selectedItem.objectId,
433
+ selectedRelativePosition: selectedIndex,
434
+ prefetch: (_selectedItem$prefetc = selectedItem.prefetch) !== null && _selectedItem$prefetc !== void 0 ? _selectedItem$prefetc : false
435
+ },
436
+ eventType: EVENT_TYPE.UI
437
+ });
438
+ }
439
+ });
440
+ _defineProperty(_assertThisInitialized(_this), "handleMouseEnterResultItem", function (objectId) {
441
+ var items = _this.state.items;
442
+ var index = findIndex(items, function (item) {
443
+ return item.objectId === objectId;
444
+ });
445
+ _this.setState({
446
+ selectedIndex: index
447
+ });
448
+ });
449
+ _defineProperty(_assertThisInitialized(_this), "handleMouseLeaveResultItem", function (objectId) {
450
+ var _this$state6 = _this.state,
451
+ items = _this$state6.items,
452
+ selectedIndex = _this$state6.selectedIndex;
453
+ var index = findIndex(items, function (item) {
454
+ return item.objectId === objectId;
455
+ });
456
+ // This is to avoid updating index that was set by other mouseenter event
457
+ if (selectedIndex === index) {
458
+ _this.setState({
459
+ selectedIndex: -1
460
+ });
461
+ }
462
+ });
463
+ _defineProperty(_assertThisInitialized(_this), "handleSubmit", function () {
464
+ var _this$state7 = _this.state,
465
+ displayUrl = _this$state7.displayUrl,
466
+ selectedIndex = _this$state7.selectedIndex,
467
+ items = _this$state7.items;
468
+ var selectedItem = items[selectedIndex];
469
+ if (_this.isUrlPopulatedWithSelectedItem()) {
470
+ _this.handleInsert(normalizeUrl(selectedItem.url), selectedItem.name, INPUT_METHOD.TYPEAHEAD, 'keyboard');
471
+ } else if (displayUrl && displayUrl.length > 0) {
472
+ var url = normalizeUrl(displayUrl);
473
+ if (url) {
474
+ _this.handleInsert(url, displayUrl, INPUT_METHOD.MANUAL, 'notselected');
475
+ }
476
+ }
477
+ });
478
+ _defineProperty(_assertThisInitialized(_this), "handleClearTextKeyDown", function (event) {
479
+ var KEY_CODE_TAB = 9;
480
+ var keyCode = event.keyCode;
481
+ if (keyCode === KEY_CODE_TAB) {
482
+ if (!_this.submitted) {
483
+ var _this$state8 = _this.state,
484
+ displayUrl = _this$state8.displayUrl,
485
+ _displayText = _this$state8.displayText;
486
+ var url = normalizeUrl(displayUrl);
487
+ _this.handleInsert(url, _displayText || displayUrl, INPUT_METHOD.MANUAL, 'notselected');
488
+ }
489
+ event.preventDefault();
490
+ return;
491
+ }
492
+ });
493
+ _defineProperty(_assertThisInitialized(_this), "handleKeyDown", function (event) {
494
+ var _this$state9 = _this.state,
495
+ items = _this$state9.items,
496
+ selectedIndex = _this$state9.selectedIndex;
497
+ var _this$props3 = _this.props,
498
+ pluginState = _this$props3.pluginState,
499
+ view = _this$props3.view,
500
+ onEscapeCallback = _this$props3.onEscapeCallback;
501
+ var keyCode = event.keyCode;
502
+ var KEY_CODE_ESCAPE = 27;
503
+ var KEY_CODE_ARROW_DOWN = 40;
504
+ var KEY_CODE_ARROW_UP = 38;
505
+ if (keyCode === KEY_CODE_ESCAPE) {
506
+ // escape
507
+ event.preventDefault();
508
+ var state = view.state,
509
+ dispatch = view.dispatch;
510
+ onEscapeCallback === null || onEscapeCallback === void 0 ? void 0 : onEscapeCallback(state, dispatch);
511
+ return;
512
+ }
513
+ if (!items || !items.length) {
514
+ return;
515
+ }
516
+ var updatedIndex = selectedIndex;
517
+ if (keyCode === KEY_CODE_ARROW_DOWN) {
518
+ // down
519
+ event.preventDefault();
520
+ updatedIndex = (selectedIndex + 1) % items.length;
521
+ } else if (keyCode === KEY_CODE_ARROW_UP) {
522
+ // up
523
+ event.preventDefault();
524
+ updatedIndex = selectedIndex > 0 ? selectedIndex - 1 : items.length - 1;
525
+ }
526
+ if ([KEY_CODE_ARROW_DOWN, KEY_CODE_ARROW_UP].includes(keyCode) && items[updatedIndex]) {
527
+ var _pluginState$searchSe4;
528
+ _this.setState({
529
+ selectedIndex: updatedIndex,
530
+ displayUrl: items[updatedIndex].url
531
+ });
532
+ _this.fireAnalytics({
533
+ action: ACTION.HIGHLIGHTED,
534
+ actionSubject: ACTION_SUBJECT.SEARCH_RESULT,
535
+ attributes: {
536
+ source: _this.analyticSource,
537
+ searchSessionId: (_pluginState$searchSe4 = pluginState.searchSessionId) !== null && _pluginState$searchSe4 !== void 0 ? _pluginState$searchSe4 : '',
538
+ selectedResultId: items[updatedIndex].objectId,
539
+ selectedRelativePosition: updatedIndex
540
+ },
541
+ eventType: EVENT_TYPE.UI
542
+ });
543
+ }
544
+ });
545
+ _defineProperty(_assertThisInitialized(_this), "updateTextInput", function (displayText) {
546
+ _this.setState({
547
+ displayText: displayText
548
+ });
549
+ });
550
+ _defineProperty(_assertThisInitialized(_this), "handleCancel", function (e) {
551
+ var _this$props4 = _this.props,
552
+ _this$props4$view = _this$props4.view,
553
+ state = _this$props4$view.state,
554
+ dispatch = _this$props4$view.dispatch,
555
+ onClickAwayCallback = _this$props4.onClickAwayCallback;
556
+ e.preventDefault();
557
+ onClickAwayCallback === null || onClickAwayCallback === void 0 ? void 0 : onClickAwayCallback(state, dispatch);
558
+ });
559
+ _this.state = {
560
+ selectedIndex: -1,
561
+ isLoading: false,
562
+ displayUrl: normalizeUrl(props.displayUrl),
563
+ displayText: props.displayText,
564
+ items: []
565
+ };
566
+
567
+ /* Cache functions */
568
+ _this.handleClearText = _this.createClearHandler('displayUrl');
569
+ _this.handleClearDisplayText = _this.createClearHandler('displayText');
570
+ _this.debouncedQuickSearch = debounce(_this.quickSearch, 400);
571
+ _this.fireCustomAnalytics = fireAnalyticsEvent(props.createAnalyticsEvent);
572
+ return _this;
573
+ }
574
+ _createClass(HyperlinkLinkAddToolbar, [{
575
+ key: "componentDidMount",
576
+ value: function () {
577
+ var _componentDidMount = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
578
+ var _pluginState$searchSe5, _pluginState$inputMet;
579
+ var pluginState, _yield$Promise$all, _yield$Promise$all2, activityProvider, searchProvider;
580
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
581
+ while (1) switch (_context4.prev = _context4.next) {
582
+ case 0:
583
+ pluginState = this.props.pluginState;
584
+ document.addEventListener('mousedown', this.handleClickOutside);
585
+ this.fireAnalytics({
586
+ action: ACTION.VIEWED,
587
+ actionSubject: ACTION_SUBJECT.CREATE_LINK_INLINE_DIALOG,
588
+ attributes: {
589
+ timesViewed: pluginState.timesViewed,
590
+ searchSessionId: (_pluginState$searchSe5 = pluginState.searchSessionId) !== null && _pluginState$searchSe5 !== void 0 ? _pluginState$searchSe5 : '',
591
+ trigger: (_pluginState$inputMet = pluginState.inputMethod) !== null && _pluginState$inputMet !== void 0 ? _pluginState$inputMet : ''
592
+ },
593
+ eventType: EVENT_TYPE.SCREEN
594
+ });
595
+ _context4.next = 5;
596
+ return Promise.all([this.props.activityProvider, this.props.searchProvider]);
597
+ case 5:
598
+ _yield$Promise$all = _context4.sent;
599
+ _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
600
+ activityProvider = _yield$Promise$all2[0];
601
+ searchProvider = _yield$Promise$all2[1];
602
+ this.setState({
603
+ activityProvider: activityProvider,
604
+ searchProvider: searchProvider
605
+ });
606
+ _context4.next = 12;
607
+ return this.loadInitialLinkSearchResult();
608
+ case 12:
609
+ case "end":
610
+ return _context4.stop();
611
+ }
612
+ }, _callee4, this);
613
+ }));
614
+ function componentDidMount() {
615
+ return _componentDidMount.apply(this, arguments);
616
+ }
617
+ return componentDidMount;
618
+ }()
619
+ }, {
620
+ key: "componentWillUnmount",
621
+ value: function componentWillUnmount() {
622
+ var pluginState = this.props.pluginState;
623
+ document.removeEventListener('mousedown', this.handleClickOutside);
624
+ if (!this.submitted) {
625
+ var _pluginState$searchSe6;
626
+ this.fireAnalytics({
627
+ action: ACTION.DISMISSED,
628
+ actionSubject: ACTION_SUBJECT.CREATE_LINK_INLINE_DIALOG,
629
+ attributes: {
630
+ source: this.analyticSource,
631
+ searchSessionId: (_pluginState$searchSe6 = pluginState.searchSessionId) !== null && _pluginState$searchSe6 !== void 0 ? _pluginState$searchSe6 : '',
632
+ trigger: 'blur'
633
+ },
634
+ eventType: EVENT_TYPE.UI
635
+ });
636
+ }
637
+ }
638
+ }, {
639
+ key: "getRecentItems",
640
+ value: function () {
641
+ var _getRecentItems = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(activityProvider, query) {
642
+ var pluginState, perfStart, _pluginState$searchSe7, activityRecentItems, _items2, perfStop, duration, _perfStop2, _duration2;
643
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
644
+ while (1) switch (_context5.prev = _context5.next) {
645
+ case 0:
646
+ pluginState = this.props.pluginState;
647
+ perfStart = performance.now();
648
+ _context5.prev = 2;
649
+ _context5.t0 = limit;
650
+ if (!query) {
651
+ _context5.next = 10;
652
+ break;
653
+ }
654
+ _context5.next = 7;
655
+ return activityProvider.searchRecent(query);
656
+ case 7:
657
+ _context5.t1 = _context5.sent;
658
+ _context5.next = 13;
659
+ break;
660
+ case 10:
661
+ _context5.next = 12;
662
+ return activityProvider.getRecentItems();
663
+ case 12:
664
+ _context5.t1 = _context5.sent;
665
+ case 13:
666
+ _context5.t2 = _context5.t1;
667
+ activityRecentItems = (0, _context5.t0)(_context5.t2);
668
+ _items2 = activityRecentItems.map(mapActivityProviderResultToLinkSearchItemData);
669
+ perfStop = performance.now();
670
+ duration = perfStop - perfStart;
671
+ this.fireAnalytics({
672
+ action: ACTION.INVOKED,
673
+ actionSubject: ACTION_SUBJECT.SEARCH_RESULT,
674
+ actionSubjectId: ACTION_SUBJECT_ID.RECENT_ACTIVITIES,
675
+ attributes: {
676
+ duration: duration,
677
+ count: _items2.length
678
+ },
679
+ eventType: EVENT_TYPE.OPERATIONAL
680
+ });
681
+ this.fireAnalytics({
682
+ action: ACTION.SHOWN,
683
+ actionSubject: ACTION_SUBJECT.SEARCH_RESULT,
684
+ actionSubjectId: ACTION_SUBJECT_ID.PRE_QUERY_SEARCH_RESULTS,
685
+ attributes: {
686
+ source: this.analyticSource,
687
+ preQueryRequestDurationMs: duration,
688
+ searchSessionId: (_pluginState$searchSe7 = pluginState.searchSessionId) !== null && _pluginState$searchSe7 !== void 0 ? _pluginState$searchSe7 : '',
689
+ resultCount: _items2.length,
690
+ results: activityRecentItems.map(function (item) {
691
+ var _item$type;
692
+ return {
693
+ resultContentId: item.objectId,
694
+ resultType: (_item$type = item.type) !== null && _item$type !== void 0 ? _item$type : ''
695
+ };
696
+ })
697
+ },
698
+ eventType: EVENT_TYPE.UI
699
+ });
700
+ return _context5.abrupt("return", _items2);
701
+ case 23:
702
+ _context5.prev = 23;
703
+ _context5.t3 = _context5["catch"](2);
704
+ _perfStop2 = performance.now();
705
+ _duration2 = _perfStop2 - perfStart;
706
+ this.fireAnalytics({
707
+ action: ACTION.INVOKED,
708
+ actionSubject: ACTION_SUBJECT.SEARCH_RESULT,
709
+ actionSubjectId: ACTION_SUBJECT_ID.RECENT_ACTIVITIES,
710
+ attributes: {
711
+ duration: _duration2,
712
+ count: -1,
713
+ errorCode: _context5.t3.status
714
+ },
715
+ nonPrivacySafeAttributes: {
716
+ error: _context5.t3.message
717
+ },
718
+ eventType: EVENT_TYPE.OPERATIONAL
719
+ });
720
+ return _context5.abrupt("return", []);
721
+ case 29:
722
+ case "end":
723
+ return _context5.stop();
724
+ }
725
+ }, _callee5, this, [[2, 23]]);
726
+ }));
727
+ function getRecentItems(_x5, _x6) {
728
+ return _getRecentItems.apply(this, arguments);
729
+ }
730
+ return getRecentItems;
731
+ }()
732
+ }, {
733
+ key: "fireAnalytics",
734
+ value: function fireAnalytics(payload) {
735
+ if (this.props.createAnalyticsEvent && this.fireCustomAnalytics) {
736
+ this.fireCustomAnalytics({
737
+ payload: payload
738
+ });
739
+ }
740
+ }
741
+ }, {
742
+ key: "loadInitialLinkSearchResult",
743
+ value: function () {
744
+ var _loadInitialLinkSearchResult = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
745
+ var _this$state10, displayUrl, activityProvider, _items3;
746
+ return _regeneratorRuntime.wrap(function _callee6$(_context6) {
747
+ while (1) switch (_context6.prev = _context6.next) {
748
+ case 0:
749
+ _this$state10 = this.state, displayUrl = _this$state10.displayUrl, activityProvider = _this$state10.activityProvider;
750
+ _context6.prev = 1;
751
+ if (!(!displayUrl && activityProvider)) {
752
+ _context6.next = 8;
753
+ break;
754
+ }
755
+ this.setState({
756
+ isLoading: true
757
+ });
758
+ _context6.next = 6;
759
+ return this.getRecentItems(activityProvider);
760
+ case 6:
761
+ _items3 = _context6.sent;
762
+ this.setState({
763
+ items: _items3
764
+ });
765
+ case 8:
766
+ _context6.prev = 8;
767
+ this.setState({
768
+ isLoading: false
769
+ });
770
+ return _context6.finish(8);
771
+ case 11:
772
+ case "end":
773
+ return _context6.stop();
774
+ }
775
+ }, _callee6, this, [[1,, 8, 11]]);
776
+ }));
777
+ function loadInitialLinkSearchResult() {
778
+ return _loadInitialLinkSearchResult.apply(this, arguments);
779
+ }
780
+ return loadInitialLinkSearchResult;
781
+ }()
782
+ }, {
783
+ key: "render",
784
+ value: function render() {
785
+ var _this2 = this;
786
+ var _this$state11 = this.state,
787
+ items = _this$state11.items,
788
+ isLoading = _this$state11.isLoading,
789
+ selectedIndex = _this$state11.selectedIndex,
790
+ displayUrl = _this$state11.displayUrl,
791
+ displayText = _this$state11.displayText;
792
+ var _this$props5 = this.props,
793
+ formatMessage = _this$props5.intl.formatMessage,
794
+ activityProvider = _this$props5.activityProvider;
795
+ var placeholder = formatMessage(activityProvider ? linkToolbarCommonMessages.placeholder : linkToolbarCommonMessages.linkPlaceholder);
796
+ var formatLinkAddressText = formatMessage(linkToolbarCommonMessages.linkAddress);
797
+ var formatClearLinkText = formatMessage(messages.clearLink);
798
+ var formatDisplayText = formatMessage(messages.displayText);
799
+ var screenReaderDescriptionId = 'search-recent-links-field-description';
800
+ var linkSearchListId = 'hyperlink-search-list';
801
+ var ariaActiveDescendant = selectedIndex > -1 ? "link-search-list-item-".concat(selectedIndex) : '';
802
+
803
+ // Added workaround with a screen reader Announcer specifically for VoiceOver + Safari
804
+ // as the Aria design pattern for combobox does not work in this case
805
+ // for details: https://a11y-internal.atlassian.net/browse/AK-740
806
+ var screenReaderText = browser.safari && this.getScreenReaderText();
807
+ return jsx("div", {
808
+ "aria-label": "Hyperlink Edit",
809
+ className: "recent-list"
810
+ }, jsx("div", {
811
+ css: [container, !!activityProvider && containerWithProvider],
812
+ ref: this.wrapperRef
813
+ }, jsx("div", {
814
+ css: inputWrapper
815
+ }, jsx("span", {
816
+ css: iconWrapper
817
+ }, jsx(Tooltip, {
818
+ content: formatLinkAddressText
819
+ }, jsx(LinkIcon, {
820
+ label: formatLinkAddressText
821
+ }))), screenReaderText && jsx(Announcer, {
822
+ ariaLive: "assertive",
823
+ text: screenReaderText,
824
+ ariaRelevant: "additions",
825
+ delay: 250
826
+ }), jsx("div", {
827
+ css: visuallyHiddenStyles,
828
+ "aria-hidden": "true",
829
+ id: screenReaderDescriptionId
830
+ }, formatMessage(messages.searchLinkAriaDescription)), jsx(PanelTextInput, {
831
+ role: "combobox",
832
+ ariaExpanded: true,
833
+ ariaActiveDescendant: ariaActiveDescendant,
834
+ ariaControls: linkSearchListId,
835
+ ariaAutoComplete: true,
836
+ describedById: screenReaderDescriptionId,
837
+ ref: function ref(ele) {
838
+ return _this2.urlInputContainer = ele;
839
+ },
840
+ placeholder: placeholder,
841
+ testId: 'link-url',
842
+ onSubmit: this.handleSubmit,
843
+ onChange: this.updateInput,
844
+ autoFocus: {
845
+ preventScroll: true
846
+ },
847
+ onCancel: this.handleCancel,
848
+ defaultValue: displayUrl,
849
+ onKeyDown: this.handleKeyDown
850
+ }), displayUrl && jsx(Tooltip, {
851
+ content: formatClearLinkText
852
+ }, jsx("button", {
853
+ type: "button",
854
+ css: clearText,
855
+ onClick: this.handleClearText
856
+ }, jsx(CrossCircleIcon, {
857
+ label: formatClearLinkText
858
+ })))), jsx("div", {
859
+ css: textInputWrapper
860
+ }, jsx("span", {
861
+ css: iconWrapper
862
+ }, jsx(Tooltip, {
863
+ content: formatDisplayText
864
+ }, jsx(EditorAlignLeftIcon, {
865
+ label: formatDisplayText
866
+ }))), jsx(PanelTextInput, {
867
+ ref: function ref(ele) {
868
+ return _this2.displayTextInputContainer = ele;
869
+ },
870
+ placeholder: formatDisplayText,
871
+ ariaLabel: formatMessage(messages.linkAriaLabel),
872
+ testId: 'link-label',
873
+ onChange: this.updateTextInput,
874
+ onCancel: this.handleCancel,
875
+ defaultValue: displayText,
876
+ onSubmit: this.handleSubmit,
877
+ onKeyDown: this.handleKeyDown
878
+ }), displayText && jsx(Tooltip, {
879
+ content: formatMessage(messages.clearText)
880
+ }, jsx("button", {
881
+ type: "button",
882
+ css: clearText,
883
+ onClick: this.handleClearDisplayText,
884
+ onKeyDown: this.handleClearTextKeyDown
885
+ }, jsx(CrossCircleIcon, {
886
+ label: formatMessage(messages.clearText)
887
+ })))), jsx("div", {
888
+ css: visuallyHiddenStyles,
889
+ "aria-live": "polite",
890
+ "aria-atomic": "true",
891
+ id: "fabric.editor.hyperlink.suggested.results"
892
+ }, displayUrl && formatMessage(messages.searchLinkResults, {
893
+ count: items.length
894
+ })), jsx(LinkSearchList, {
895
+ ariaControls: "fabric.editor.hyperlink.suggested.results",
896
+ id: linkSearchListId,
897
+ role: "listbox",
898
+ items: items,
899
+ isLoading: isLoading,
900
+ selectedIndex: selectedIndex,
901
+ onSelect: this.handleSelected,
902
+ onMouseEnter: this.handleMouseEnterResultItem,
903
+ onMouseLeave: this.handleMouseLeaveResultItem
904
+ })));
905
+ }
906
+ }]);
907
+ return HyperlinkLinkAddToolbar;
908
+ }(PureComponent);
909
+ function findIndex(array, predicate) {
910
+ var index = -1;
911
+ array.some(function (item, i) {
912
+ if (predicate(item)) {
913
+ index = i;
914
+ return true;
915
+ }
916
+ return false;
917
+ });
918
+ return index;
919
+ }
920
+ function limit(items) {
921
+ return items.slice(0, RECENT_SEARCH_LIST_SIZE);
922
+ }
923
+ export var HyperlinkLinkAddToolbarWithIntl = injectIntl(HyperlinkLinkAddToolbar);
924
+ export default withAnalyticsEvents()(HyperlinkLinkAddToolbarWithIntl);