@atlaskit/editor-plugin-media 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/commands/captions.js +59 -0
  3. package/dist/cjs/commands/helpers.js +127 -0
  4. package/dist/cjs/commands/index.js +24 -0
  5. package/dist/cjs/commands/linking.js +181 -0
  6. package/dist/cjs/index.js +8 -1
  7. package/dist/cjs/media-plugin-options.js +5 -0
  8. package/dist/cjs/next-plugin-type.js +5 -0
  9. package/dist/cjs/nodeviews/mediaGroup.js +376 -0
  10. package/dist/cjs/nodeviews/mediaInline.js +288 -0
  11. package/dist/cjs/nodeviews/mediaNodeUpdater.js +739 -0
  12. package/dist/cjs/nodeviews/mediaNodeView/index.js +177 -0
  13. package/dist/cjs/nodeviews/mediaNodeView/media.js +242 -0
  14. package/dist/cjs/nodeviews/mediaSingle.js +629 -0
  15. package/dist/cjs/nodeviews/messages.js +14 -0
  16. package/dist/cjs/nodeviews/styles.js +46 -0
  17. package/dist/cjs/nodeviews/types.js +5 -0
  18. package/dist/cjs/picker-facade.js +192 -0
  19. package/dist/cjs/plugin.js +293 -0
  20. package/dist/cjs/pm-plugins/alt-text/actions.js +5 -0
  21. package/dist/cjs/pm-plugins/alt-text/commands.js +59 -0
  22. package/dist/cjs/pm-plugins/alt-text/index.js +36 -0
  23. package/dist/cjs/pm-plugins/alt-text/keymap.js +15 -0
  24. package/dist/cjs/pm-plugins/alt-text/messages.js +44 -0
  25. package/dist/cjs/pm-plugins/alt-text/reducer.js +32 -0
  26. package/dist/cjs/pm-plugins/alt-text/types.js +5 -0
  27. package/dist/cjs/pm-plugins/alt-text/ui/AltTextEdit.js +209 -0
  28. package/dist/cjs/pm-plugins/keymap-media-single.js +163 -0
  29. package/dist/cjs/pm-plugins/keymap.js +88 -0
  30. package/dist/cjs/pm-plugins/linking/actions.js +13 -0
  31. package/dist/cjs/pm-plugins/linking/index.js +65 -0
  32. package/dist/cjs/pm-plugins/linking/keymap.js +14 -0
  33. package/dist/cjs/pm-plugins/linking/reducer.js +43 -0
  34. package/dist/cjs/pm-plugins/linking/types.js +5 -0
  35. package/dist/cjs/pm-plugins/main.js +813 -0
  36. package/dist/cjs/pm-plugins/media-editor-plugin-factory.js +8 -0
  37. package/dist/cjs/pm-plugins/mediaTaskManager.js +101 -0
  38. package/dist/cjs/pm-plugins/plugin-key.js +8 -0
  39. package/dist/cjs/pm-plugins/types.js +5 -0
  40. package/dist/cjs/toolbar/alt-text.js +80 -0
  41. package/dist/cjs/toolbar/commands.js +236 -0
  42. package/dist/cjs/toolbar/filePreviewItem.js +66 -0
  43. package/dist/cjs/toolbar/imageBorder.js +20 -0
  44. package/dist/cjs/toolbar/index.js +523 -0
  45. package/dist/cjs/toolbar/linking-toolbar-appearance.js +100 -0
  46. package/dist/cjs/toolbar/linking.js +96 -0
  47. package/dist/cjs/toolbar/utils.js +110 -0
  48. package/dist/cjs/ui/CaptionPlaceholder/index.js +27 -0
  49. package/dist/cjs/ui/CaptionPlaceholder/messages.js +14 -0
  50. package/dist/cjs/ui/ImageBorder/index.js +226 -0
  51. package/dist/cjs/ui/ImageBorder/messages.js +49 -0
  52. package/dist/cjs/ui/ImageBorder/styles.js +52 -0
  53. package/dist/cjs/ui/Media/DropPlaceholder.js +38 -0
  54. package/dist/cjs/ui/Media/drop-placeholder-messages.js +14 -0
  55. package/dist/cjs/ui/MediaLinkingToolbar.js +196 -0
  56. package/dist/cjs/ui/MediaPicker/BrowserWrapper.js +40 -0
  57. package/dist/cjs/ui/MediaPicker/ClipboardWrapper.js +39 -0
  58. package/dist/cjs/ui/MediaPicker/DropzoneWrapper.js +51 -0
  59. package/dist/cjs/ui/MediaPicker/PickerFacadeProvider.js +151 -0
  60. package/dist/cjs/ui/MediaPicker/index.js +103 -0
  61. package/dist/cjs/ui/PixelEntry/constants.js +7 -0
  62. package/dist/cjs/ui/PixelEntry/index.js +185 -0
  63. package/dist/cjs/ui/PixelEntry/messages.js +54 -0
  64. package/dist/cjs/ui/PixelEntry/styles.js +19 -0
  65. package/dist/cjs/ui/PixelEntry/types.js +5 -0
  66. package/dist/cjs/ui/ResizableMediaSingle/ResizableMediaMigrationNotification.js +16 -0
  67. package/dist/cjs/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +541 -0
  68. package/dist/cjs/ui/ResizableMediaSingle/index.js +422 -0
  69. package/dist/cjs/ui/ResizableMediaSingle/styled.js +14 -0
  70. package/dist/cjs/ui/ResizableMediaSingle/styles.js +17 -0
  71. package/dist/cjs/ui/ResizableMediaSingle/types.js +5 -0
  72. package/dist/cjs/ui/ToolbarMedia/index.js +42 -0
  73. package/dist/cjs/ui/ToolbarMedia/toolbar-media-messages.js +14 -0
  74. package/dist/cjs/ui/media-linking-toolbar-messages.js +14 -0
  75. package/dist/cjs/utils/analytics.js +53 -0
  76. package/dist/cjs/utils/check-media-type.js +56 -0
  77. package/dist/cjs/utils/current-media-node.js +41 -0
  78. package/dist/cjs/utils/is-image.js +9 -0
  79. package/dist/cjs/utils/media-common.js +181 -0
  80. package/dist/cjs/utils/media-files.js +297 -0
  81. package/dist/cjs/utils/media-single.js +181 -0
  82. package/dist/es2019/commands/captions.js +47 -0
  83. package/dist/es2019/commands/helpers.js +113 -0
  84. package/dist/es2019/commands/index.js +1 -0
  85. package/dist/es2019/commands/linking.js +169 -0
  86. package/dist/es2019/index.js +1 -1
  87. package/dist/es2019/media-plugin-options.js +1 -0
  88. package/dist/es2019/next-plugin-type.js +1 -0
  89. package/dist/es2019/nodeviews/mediaGroup.js +314 -0
  90. package/dist/es2019/nodeviews/mediaInline.js +201 -0
  91. package/dist/es2019/nodeviews/mediaNodeUpdater.js +384 -0
  92. package/dist/es2019/nodeviews/mediaNodeView/index.js +149 -0
  93. package/dist/es2019/nodeviews/mediaNodeView/media.js +182 -0
  94. package/dist/es2019/nodeviews/mediaSingle.js +511 -0
  95. package/dist/es2019/nodeviews/messages.js +8 -0
  96. package/dist/es2019/nodeviews/styles.js +46 -0
  97. package/dist/es2019/nodeviews/types.js +1 -0
  98. package/dist/es2019/picker-facade.js +146 -0
  99. package/dist/es2019/plugin.js +284 -0
  100. package/dist/es2019/pm-plugins/alt-text/actions.js +1 -0
  101. package/dist/es2019/pm-plugins/alt-text/commands.js +42 -0
  102. package/dist/es2019/pm-plugins/alt-text/index.js +33 -0
  103. package/dist/es2019/pm-plugins/alt-text/keymap.js +9 -0
  104. package/dist/es2019/pm-plugins/alt-text/messages.js +38 -0
  105. package/dist/es2019/pm-plugins/alt-text/reducer.js +26 -0
  106. package/dist/es2019/pm-plugins/alt-text/types.js +1 -0
  107. package/dist/es2019/pm-plugins/alt-text/ui/AltTextEdit.js +228 -0
  108. package/dist/es2019/pm-plugins/keymap-media-single.js +172 -0
  109. package/dist/es2019/pm-plugins/keymap.js +84 -0
  110. package/dist/es2019/pm-plugins/linking/actions.js +7 -0
  111. package/dist/es2019/pm-plugins/linking/index.js +56 -0
  112. package/dist/es2019/pm-plugins/linking/keymap.js +8 -0
  113. package/dist/es2019/pm-plugins/linking/reducer.js +37 -0
  114. package/dist/es2019/pm-plugins/linking/types.js +1 -0
  115. package/dist/es2019/pm-plugins/main.js +695 -0
  116. package/dist/es2019/pm-plugins/media-editor-plugin-factory.js +2 -0
  117. package/dist/es2019/pm-plugins/mediaTaskManager.js +64 -0
  118. package/dist/es2019/pm-plugins/plugin-key.js +2 -0
  119. package/dist/es2019/pm-plugins/types.js +1 -0
  120. package/dist/es2019/toolbar/alt-text.js +72 -0
  121. package/dist/es2019/toolbar/commands.js +212 -0
  122. package/dist/es2019/toolbar/filePreviewItem.js +54 -0
  123. package/dist/es2019/toolbar/imageBorder.js +15 -0
  124. package/dist/es2019/toolbar/index.js +538 -0
  125. package/dist/es2019/toolbar/linking-toolbar-appearance.js +90 -0
  126. package/dist/es2019/toolbar/linking.js +98 -0
  127. package/dist/es2019/toolbar/utils.js +86 -0
  128. package/dist/es2019/ui/CaptionPlaceholder/index.js +25 -0
  129. package/dist/es2019/ui/CaptionPlaceholder/messages.js +8 -0
  130. package/dist/es2019/ui/ImageBorder/index.js +213 -0
  131. package/dist/es2019/ui/ImageBorder/messages.js +43 -0
  132. package/dist/es2019/ui/ImageBorder/styles.js +126 -0
  133. package/dist/es2019/ui/Media/DropPlaceholder.js +47 -0
  134. package/dist/es2019/ui/Media/drop-placeholder-messages.js +8 -0
  135. package/dist/es2019/ui/MediaLinkingToolbar.js +190 -0
  136. package/dist/es2019/ui/MediaPicker/BrowserWrapper.js +31 -0
  137. package/dist/es2019/ui/MediaPicker/ClipboardWrapper.js +32 -0
  138. package/dist/es2019/ui/MediaPicker/DropzoneWrapper.js +42 -0
  139. package/dist/es2019/ui/MediaPicker/PickerFacadeProvider.js +85 -0
  140. package/dist/es2019/ui/MediaPicker/index.js +82 -0
  141. package/dist/es2019/ui/PixelEntry/constants.js +1 -0
  142. package/dist/es2019/ui/PixelEntry/index.js +170 -0
  143. package/dist/es2019/ui/PixelEntry/messages.js +48 -0
  144. package/dist/es2019/ui/PixelEntry/styles.js +51 -0
  145. package/dist/es2019/ui/PixelEntry/types.js +1 -0
  146. package/dist/es2019/ui/ResizableMediaSingle/ResizableMediaMigrationNotification.js +9 -0
  147. package/dist/es2019/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +454 -0
  148. package/dist/es2019/ui/ResizableMediaSingle/index.js +344 -0
  149. package/dist/es2019/ui/ResizableMediaSingle/styled.js +9 -0
  150. package/dist/es2019/ui/ResizableMediaSingle/styles.js +14 -0
  151. package/dist/es2019/ui/ResizableMediaSingle/types.js +1 -0
  152. package/dist/es2019/ui/ToolbarMedia/index.js +37 -0
  153. package/dist/es2019/ui/ToolbarMedia/toolbar-media-messages.js +8 -0
  154. package/dist/es2019/ui/media-linking-toolbar-messages.js +8 -0
  155. package/dist/es2019/utils/analytics.js +51 -0
  156. package/dist/es2019/utils/check-media-type.js +19 -0
  157. package/dist/es2019/utils/current-media-node.js +35 -0
  158. package/dist/es2019/utils/is-image.js +3 -0
  159. package/dist/es2019/utils/media-common.js +189 -0
  160. package/dist/es2019/utils/media-files.js +321 -0
  161. package/dist/es2019/utils/media-single.js +176 -0
  162. package/dist/esm/commands/captions.js +53 -0
  163. package/dist/esm/commands/helpers.js +120 -0
  164. package/dist/esm/commands/index.js +1 -0
  165. package/dist/esm/commands/linking.js +174 -0
  166. package/dist/esm/index.js +1 -1
  167. package/dist/esm/media-plugin-options.js +1 -0
  168. package/dist/esm/next-plugin-type.js +1 -0
  169. package/dist/esm/nodeviews/mediaGroup.js +369 -0
  170. package/dist/esm/nodeviews/mediaInline.js +278 -0
  171. package/dist/esm/nodeviews/mediaNodeUpdater.js +732 -0
  172. package/dist/esm/nodeviews/mediaNodeView/index.js +170 -0
  173. package/dist/esm/nodeviews/mediaNodeView/media.js +233 -0
  174. package/dist/esm/nodeviews/mediaSingle.js +622 -0
  175. package/dist/esm/nodeviews/messages.js +8 -0
  176. package/dist/esm/nodeviews/styles.js +39 -0
  177. package/dist/esm/nodeviews/types.js +1 -0
  178. package/dist/esm/picker-facade.js +186 -0
  179. package/dist/esm/plugin.js +282 -0
  180. package/dist/esm/pm-plugins/alt-text/actions.js +1 -0
  181. package/dist/esm/pm-plugins/alt-text/commands.js +52 -0
  182. package/dist/esm/pm-plugins/alt-text/index.js +31 -0
  183. package/dist/esm/pm-plugins/alt-text/keymap.js +9 -0
  184. package/dist/esm/pm-plugins/alt-text/messages.js +38 -0
  185. package/dist/esm/pm-plugins/alt-text/reducer.js +25 -0
  186. package/dist/esm/pm-plugins/alt-text/types.js +1 -0
  187. package/dist/esm/pm-plugins/alt-text/ui/AltTextEdit.js +206 -0
  188. package/dist/esm/pm-plugins/keymap-media-single.js +158 -0
  189. package/dist/esm/pm-plugins/keymap.js +81 -0
  190. package/dist/esm/pm-plugins/linking/actions.js +7 -0
  191. package/dist/esm/pm-plugins/linking/index.js +59 -0
  192. package/dist/esm/pm-plugins/linking/keymap.js +8 -0
  193. package/dist/esm/pm-plugins/linking/reducer.js +36 -0
  194. package/dist/esm/pm-plugins/linking/types.js +1 -0
  195. package/dist/esm/pm-plugins/main.js +798 -0
  196. package/dist/esm/pm-plugins/media-editor-plugin-factory.js +2 -0
  197. package/dist/esm/pm-plugins/mediaTaskManager.js +94 -0
  198. package/dist/esm/pm-plugins/plugin-key.js +2 -0
  199. package/dist/esm/pm-plugins/types.js +1 -0
  200. package/dist/esm/toolbar/alt-text.js +70 -0
  201. package/dist/esm/toolbar/commands.js +229 -0
  202. package/dist/esm/toolbar/filePreviewItem.js +56 -0
  203. package/dist/esm/toolbar/imageBorder.js +14 -0
  204. package/dist/esm/toolbar/index.js +513 -0
  205. package/dist/esm/toolbar/linking-toolbar-appearance.js +91 -0
  206. package/dist/esm/toolbar/linking.js +88 -0
  207. package/dist/esm/toolbar/utils.js +103 -0
  208. package/dist/esm/ui/CaptionPlaceholder/index.js +20 -0
  209. package/dist/esm/ui/CaptionPlaceholder/messages.js +8 -0
  210. package/dist/esm/ui/ImageBorder/index.js +218 -0
  211. package/dist/esm/ui/ImageBorder/messages.js +43 -0
  212. package/dist/esm/ui/ImageBorder/styles.js +42 -0
  213. package/dist/esm/ui/Media/DropPlaceholder.js +31 -0
  214. package/dist/esm/ui/Media/drop-placeholder-messages.js +8 -0
  215. package/dist/esm/ui/MediaLinkingToolbar.js +188 -0
  216. package/dist/esm/ui/MediaPicker/BrowserWrapper.js +33 -0
  217. package/dist/esm/ui/MediaPicker/ClipboardWrapper.js +32 -0
  218. package/dist/esm/ui/MediaPicker/DropzoneWrapper.js +44 -0
  219. package/dist/esm/ui/MediaPicker/PickerFacadeProvider.js +145 -0
  220. package/dist/esm/ui/MediaPicker/index.js +96 -0
  221. package/dist/esm/ui/PixelEntry/constants.js +1 -0
  222. package/dist/esm/ui/PixelEntry/index.js +174 -0
  223. package/dist/esm/ui/PixelEntry/messages.js +48 -0
  224. package/dist/esm/ui/PixelEntry/styles.js +12 -0
  225. package/dist/esm/ui/PixelEntry/types.js +1 -0
  226. package/dist/esm/ui/ResizableMediaSingle/ResizableMediaMigrationNotification.js +9 -0
  227. package/dist/esm/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +535 -0
  228. package/dist/esm/ui/ResizableMediaSingle/index.js +417 -0
  229. package/dist/esm/ui/ResizableMediaSingle/styled.js +7 -0
  230. package/dist/esm/ui/ResizableMediaSingle/styles.js +7 -0
  231. package/dist/esm/ui/ResizableMediaSingle/types.js +1 -0
  232. package/dist/esm/ui/ToolbarMedia/index.js +35 -0
  233. package/dist/esm/ui/ToolbarMedia/toolbar-media-messages.js +8 -0
  234. package/dist/esm/ui/media-linking-toolbar-messages.js +8 -0
  235. package/dist/esm/utils/analytics.js +47 -0
  236. package/dist/esm/utils/check-media-type.js +49 -0
  237. package/dist/esm/utils/current-media-node.js +35 -0
  238. package/dist/esm/utils/is-image.js +3 -0
  239. package/dist/esm/utils/media-common.js +175 -0
  240. package/dist/esm/utils/media-files.js +291 -0
  241. package/dist/esm/utils/media-single.js +172 -0
  242. package/dist/types/commands/captions.d.ts +5 -0
  243. package/dist/types/commands/helpers.d.ts +15 -0
  244. package/dist/types/commands/index.d.ts +1 -0
  245. package/dist/types/commands/linking.d.ts +9 -0
  246. package/dist/types/index.d.ts +2 -1
  247. package/dist/types/media-plugin-options.d.ts +17 -0
  248. package/dist/types/next-plugin-type.d.ts +33 -0
  249. package/dist/types/nodeviews/__mocks__/mediaNodeUpdater.d.ts +24 -0
  250. package/dist/types/nodeviews/mediaGroup.d.ts +33 -0
  251. package/dist/types/nodeviews/mediaInline.d.ts +50 -0
  252. package/dist/types/nodeviews/mediaNodeUpdater.d.ts +45 -0
  253. package/dist/types/nodeviews/mediaNodeView/index.d.ts +28 -0
  254. package/dist/types/nodeviews/mediaNodeView/media.d.ts +44 -0
  255. package/dist/types/nodeviews/mediaSingle.d.ts +62 -0
  256. package/dist/types/nodeviews/messages.d.ts +7 -0
  257. package/dist/types/nodeviews/styles.d.ts +16 -0
  258. package/dist/types/nodeviews/types.d.ts +42 -0
  259. package/dist/types/picker-facade.d.ts +44 -0
  260. package/dist/types/plugin.d.ts +7 -0
  261. package/dist/types/pm-plugins/alt-text/actions.d.ts +10 -0
  262. package/dist/types/pm-plugins/alt-text/commands.d.ts +4 -0
  263. package/dist/types/pm-plugins/alt-text/index.d.ts +7 -0
  264. package/dist/types/pm-plugins/alt-text/keymap.d.ts +4 -0
  265. package/dist/types/pm-plugins/alt-text/messages.d.ts +37 -0
  266. package/dist/types/pm-plugins/alt-text/reducer.d.ts +4 -0
  267. package/dist/types/pm-plugins/alt-text/types.d.ts +3 -0
  268. package/dist/types/pm-plugins/alt-text/ui/AltTextEdit.d.ts +41 -0
  269. package/dist/types/pm-plugins/keymap-media-single.d.ts +3 -0
  270. package/dist/types/pm-plugins/keymap.d.ts +6 -0
  271. package/dist/types/pm-plugins/linking/actions.d.ts +20 -0
  272. package/dist/types/pm-plugins/linking/index.d.ts +10 -0
  273. package/dist/types/pm-plugins/linking/keymap.d.ts +3 -0
  274. package/dist/types/pm-plugins/linking/reducer.d.ts +4 -0
  275. package/dist/types/pm-plugins/linking/types.d.ts +12 -0
  276. package/dist/types/pm-plugins/main.d.ts +120 -0
  277. package/dist/types/pm-plugins/media-editor-plugin-factory.d.ts +3 -0
  278. package/dist/types/pm-plugins/mediaTaskManager.d.ts +9 -0
  279. package/dist/types/pm-plugins/plugin-key.d.ts +3 -0
  280. package/dist/types/pm-plugins/types.d.ts +65 -0
  281. package/dist/types/toolbar/alt-text.d.ts +13 -0
  282. package/dist/types/toolbar/commands.d.ts +12 -0
  283. package/dist/types/toolbar/filePreviewItem.d.ts +9 -0
  284. package/dist/types/toolbar/imageBorder.d.ts +2 -0
  285. package/dist/types/toolbar/index.d.ts +6 -0
  286. package/dist/types/toolbar/linking-toolbar-appearance.d.ts +14 -0
  287. package/dist/types/toolbar/linking.d.ts +10 -0
  288. package/dist/types/toolbar/utils.d.ts +11 -0
  289. package/dist/types/types.d.ts +2 -1
  290. package/dist/types/ui/CaptionPlaceholder/index.d.ts +6 -0
  291. package/dist/types/ui/CaptionPlaceholder/messages.d.ts +7 -0
  292. package/dist/types/ui/ImageBorder/index.d.ts +11 -0
  293. package/dist/types/ui/ImageBorder/messages.d.ts +42 -0
  294. package/dist/types/ui/ImageBorder/styles.d.ts +15 -0
  295. package/dist/types/ui/Media/DropPlaceholder.d.ts +8 -0
  296. package/dist/types/ui/Media/drop-placeholder-messages.d.ts +7 -0
  297. package/dist/types/ui/MediaLinkingToolbar.d.ts +35 -0
  298. package/dist/types/ui/MediaPicker/BrowserWrapper.d.ts +11 -0
  299. package/dist/types/ui/MediaPicker/ClipboardWrapper.d.ts +10 -0
  300. package/dist/types/ui/MediaPicker/DropzoneWrapper.d.ts +13 -0
  301. package/dist/types/ui/MediaPicker/PickerFacadeProvider.d.ts +28 -0
  302. package/dist/types/ui/MediaPicker/index.d.ts +23 -0
  303. package/dist/types/ui/PixelEntry/constants.d.ts +1 -0
  304. package/dist/types/ui/PixelEntry/index.d.ts +8 -0
  305. package/dist/types/ui/PixelEntry/messages.d.ts +47 -0
  306. package/dist/types/ui/PixelEntry/styles.d.ts +8 -0
  307. package/dist/types/ui/PixelEntry/types.d.ts +58 -0
  308. package/dist/types/ui/ResizableMediaSingle/ResizableMediaMigrationNotification.d.ts +3 -0
  309. package/dist/types/ui/ResizableMediaSingle/ResizableMediaSingleNext.d.ts +59 -0
  310. package/dist/types/ui/ResizableMediaSingle/index.d.ts +45 -0
  311. package/dist/types/ui/ResizableMediaSingle/styled.d.ts +2 -0
  312. package/dist/types/ui/ResizableMediaSingle/styles.d.ts +1 -0
  313. package/dist/types/ui/ResizableMediaSingle/types.d.ts +27 -0
  314. package/dist/types/ui/ToolbarMedia/index.d.ts +13 -0
  315. package/dist/types/ui/ToolbarMedia/toolbar-media-messages.d.ts +7 -0
  316. package/dist/types/ui/media-linking-toolbar-messages.d.ts +7 -0
  317. package/dist/types/utils/analytics.d.ts +3 -0
  318. package/dist/types/utils/check-media-type.d.ts +4 -0
  319. package/dist/types/utils/current-media-node.d.ts +9 -0
  320. package/dist/types/utils/is-image.d.ts +1 -0
  321. package/dist/types/utils/media-common.d.ts +20 -0
  322. package/dist/types/utils/media-files.d.ts +30 -0
  323. package/dist/types/utils/media-single.d.ts +20 -0
  324. package/package.json +32 -20
  325. package/report.api.md +430 -0
  326. package/dist/types-ts4.5/index.d.ts +0 -1
  327. package/dist/types-ts4.5/types.d.ts +0 -118
  328. package/tmp/api-report-tmp.d.ts +0 -9
@@ -0,0 +1,175 @@
1
+ import { atTheBeginningOfBlock, atTheBeginningOfDoc, atTheEndOfBlock, endPositionOfParent, GapCursorSelection, startPositionOfParent } from '@atlaskit/editor-common/selection';
2
+ import { createNewParagraphBelow, createParagraphNear } from '@atlaskit/editor-common/utils';
3
+ import { deleteSelection, splitBlock } from '@atlaskit/editor-prosemirror/commands';
4
+ import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
5
+ import { findPositionOfNodeBefore } from '@atlaskit/editor-prosemirror/utils';
6
+ import { isMediaBlobUrl } from '@atlaskit/media-client';
7
+ var isTemporary = function isTemporary(id) {
8
+ return id.indexOf('temporary:') === 0;
9
+ };
10
+ export var isMediaBlobUrlFromAttrs = function isMediaBlobUrlFromAttrs(attrs) {
11
+ return !!(attrs && attrs.type === 'external' && isMediaBlobUrl(attrs.url));
12
+ };
13
+ export var posOfMediaGroupNearby = function posOfMediaGroupNearby(state) {
14
+ return posOfParentMediaGroup(state) || posOfFollowingMediaGroup(state) || posOfPrecedingMediaGroup(state) || posOfMediaGroupNextToGapCursor(state);
15
+ };
16
+ export var isSelectionNonMediaBlockNode = function isSelectionNonMediaBlockNode(state) {
17
+ var _ref = state.selection,
18
+ node = _ref.node;
19
+ return node && node.type !== state.schema.nodes.media && node.isBlock;
20
+ };
21
+ export var isSelectionMediaSingleNode = function isSelectionMediaSingleNode(state) {
22
+ var _ref2 = state.selection,
23
+ node = _ref2.node;
24
+ return node && node.type === state.schema.nodes.mediaSingle;
25
+ };
26
+ export var posOfPrecedingMediaGroup = function posOfPrecedingMediaGroup(state) {
27
+ if (!atTheBeginningOfBlock(state)) {
28
+ return;
29
+ }
30
+ return posOfMediaGroupAbove(state, state.selection.$from);
31
+ };
32
+ var posOfMediaGroupNextToGapCursor = function posOfMediaGroupNextToGapCursor(state) {
33
+ var selection = state.selection;
34
+ if (selection instanceof GapCursorSelection) {
35
+ var $pos = state.selection.$from;
36
+ var mediaGroupType = state.schema.nodes.mediaGroup;
37
+ return posOfImmediatePrecedingMediaGroup($pos, mediaGroupType) || posOfImmediateFollowingMediaGroup($pos, mediaGroupType);
38
+ }
39
+ };
40
+ var posOfImmediatePrecedingMediaGroup = function posOfImmediatePrecedingMediaGroup($pos, mediaGroupType) {
41
+ if ($pos.nodeBefore && $pos.nodeBefore.type === mediaGroupType) {
42
+ return $pos.pos - $pos.nodeBefore.nodeSize + 1;
43
+ }
44
+ };
45
+ var posOfImmediateFollowingMediaGroup = function posOfImmediateFollowingMediaGroup($pos, mediaGroupType) {
46
+ if ($pos.nodeAfter && $pos.nodeAfter.type === mediaGroupType) {
47
+ return $pos.pos + 1;
48
+ }
49
+ };
50
+ var posOfFollowingMediaGroup = function posOfFollowingMediaGroup(state) {
51
+ if (!atTheEndOfBlock(state)) {
52
+ return;
53
+ }
54
+ return posOfMediaGroupBelow(state, state.selection.$to);
55
+ };
56
+ var posOfMediaGroupAbove = function posOfMediaGroupAbove(state, $pos) {
57
+ var adjacentPos;
58
+ var adjacentNode;
59
+ if (isSelectionNonMediaBlockNode(state)) {
60
+ adjacentPos = $pos.pos;
61
+ adjacentNode = $pos.nodeBefore;
62
+ } else {
63
+ adjacentPos = startPositionOfParent($pos) - 1;
64
+ adjacentNode = state.doc.resolve(adjacentPos).nodeBefore;
65
+ }
66
+ if (adjacentNode && adjacentNode.type === state.schema.nodes.mediaGroup) {
67
+ return adjacentPos - adjacentNode.nodeSize + 1;
68
+ }
69
+ return;
70
+ };
71
+
72
+ /**
73
+ * Determine whether the cursor is inside empty paragraph
74
+ * or the selection is the entire paragraph
75
+ */
76
+ export var isInsidePotentialEmptyParagraph = function isInsidePotentialEmptyParagraph(state) {
77
+ var $from = state.selection.$from;
78
+ return $from.parent.type === state.schema.nodes.paragraph && atTheBeginningOfBlock(state) && atTheEndOfBlock(state);
79
+ };
80
+ var posOfMediaGroupBelow = function posOfMediaGroupBelow(state, $pos) {
81
+ var prepend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
82
+ var adjacentPos;
83
+ var adjacentNode;
84
+ if (isSelectionNonMediaBlockNode(state)) {
85
+ adjacentPos = $pos.pos;
86
+ adjacentNode = $pos.nodeAfter;
87
+ } else {
88
+ adjacentPos = endPositionOfParent($pos);
89
+ adjacentNode = state.doc.nodeAt(adjacentPos);
90
+ }
91
+ if (adjacentNode && adjacentNode.type === state.schema.nodes.mediaGroup) {
92
+ return prepend ? adjacentPos + 1 : adjacentPos + adjacentNode.nodeSize - 1;
93
+ }
94
+ return;
95
+ };
96
+ export var posOfParentMediaGroup = function posOfParentMediaGroup(state, $pos) {
97
+ var prepend = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
98
+ var $from = state.selection.$from;
99
+ $pos = $pos || $from;
100
+ if ($pos.parent.type === state.schema.nodes.mediaGroup) {
101
+ return prepend ? startPositionOfParent($pos) : endPositionOfParent($pos) - 1;
102
+ }
103
+ return;
104
+ };
105
+ export var removeMediaNode = function removeMediaNode(view, node, getPos) {
106
+ var id = node.attrs.id;
107
+ var state = view.state;
108
+ var tr = state.tr,
109
+ selection = state.selection,
110
+ doc = state.doc;
111
+ var currentMediaNodePos = getPos();
112
+ if (typeof currentMediaNodePos !== 'number') {
113
+ return;
114
+ }
115
+ tr.deleteRange(currentMediaNodePos, currentMediaNodePos + node.nodeSize);
116
+ if (isTemporary(id)) {
117
+ tr.setMeta('addToHistory', false);
118
+ }
119
+ var $currentMediaNodePos = doc.resolve(currentMediaNodePos);
120
+ var nodeBefore = $currentMediaNodePos.nodeBefore,
121
+ parent = $currentMediaNodePos.parent;
122
+ var isLastMediaNode = $currentMediaNodePos.index() === parent.childCount - 1;
123
+
124
+ // If deleting a selected media node, we need to tell where the cursor to go next.
125
+ // Prosemirror didn't gave us the behaviour of moving left if the media node is not the last one.
126
+ // So we handle it ourselves.
127
+ if (selection.from === currentMediaNodePos && !isLastMediaNode && !atTheBeginningOfDoc(state) && nodeBefore && nodeBefore.type.name === 'media') {
128
+ var _nodeBefore = findPositionOfNodeBefore(tr.selection);
129
+ if (_nodeBefore) {
130
+ tr.setSelection(NodeSelection.create(tr.doc, _nodeBefore));
131
+ }
132
+ }
133
+ view.dispatch(tr);
134
+ };
135
+ export var splitMediaGroup = function splitMediaGroup(view) {
136
+ var selection = view.state.selection;
137
+
138
+ // if selection is not a media node, do nothing.
139
+ if (!(selection instanceof NodeSelection) || selection.node.type !== view.state.schema.nodes.media) {
140
+ return false;
141
+ }
142
+ deleteSelection(view.state, view.dispatch);
143
+ if (selection.$to.nodeAfter) {
144
+ splitBlock(view.state, view.dispatch);
145
+ createParagraphNear(false)(view.state, view.dispatch);
146
+ } else {
147
+ createNewParagraphBelow(view.state, view.dispatch);
148
+ }
149
+ return true;
150
+ };
151
+ var isOptionalAttr = function isOptionalAttr(attr) {
152
+ return attr.length > 1 && attr[0] === '_' && attr[1] === '_';
153
+ };
154
+ export var copyOptionalAttrsFromMediaState = function copyOptionalAttrsFromMediaState(mediaState, node) {
155
+ Object.keys(node.attrs).filter(isOptionalAttr).forEach(function (key) {
156
+ var mediaStateKey = key.substring(2);
157
+ var attrValue = mediaState[mediaStateKey];
158
+ if (attrValue !== undefined) {
159
+ // @ts-ignore - [unblock prosemirror bump] assigning to readonly prop
160
+ node.attrs[key] = attrValue;
161
+ }
162
+ });
163
+ };
164
+ export var getMediaNodeFromSelection = function getMediaNodeFromSelection(state) {
165
+ if (!isSelectionMediaSingleNode(state)) {
166
+ return null;
167
+ }
168
+ var tr = state.tr;
169
+ var pos = tr.selection.from + 1;
170
+ var mediaNode = tr.doc.nodeAt(pos);
171
+ if (mediaNode && mediaNode.type === state.schema.nodes.media) {
172
+ return mediaNode;
173
+ }
174
+ return null;
175
+ };
@@ -0,0 +1,291 @@
1
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
2
+ import { atTheBeginningOfBlock, atTheEndOfBlock, atTheEndOfDoc, endPositionOfParent, startPositionOfParent } from '@atlaskit/editor-common/selection';
3
+ import { findFarthestParentNode, insideTableCell, isInLayoutColumn, isInListItem, isSupportedInParent, setNodeSelection, setTextSelection } from '@atlaskit/editor-common/utils';
4
+ import { Fragment } from '@atlaskit/editor-prosemirror/model';
5
+ import { canInsert, hasParentNode, safeInsert } from '@atlaskit/editor-prosemirror/utils';
6
+ import { copyOptionalAttrsFromMediaState, isInsidePotentialEmptyParagraph, isSelectionNonMediaBlockNode, posOfMediaGroupNearby, posOfParentMediaGroup, posOfPrecedingMediaGroup } from './media-common';
7
+ export var canInsertMediaInline = function canInsertMediaInline(state) {
8
+ var node = state.schema.nodes.mediaInline.create({});
9
+ return canInsert(state.selection.$to, Fragment.from(node));
10
+ };
11
+ var getInsertMediaGroupAnalytics = function getInsertMediaGroupAnalytics(mediaState, inputMethod) {
12
+ var media = '';
13
+ if (mediaState.length === 1) {
14
+ media = mediaState[0].fileMimeType || 'unknown';
15
+ } else if (mediaState.length > 1) {
16
+ media = 'multiple';
17
+ }
18
+ return {
19
+ action: ACTION.INSERTED,
20
+ actionSubject: ACTION_SUBJECT.DOCUMENT,
21
+ actionSubjectId: ACTION_SUBJECT_ID.MEDIA,
22
+ attributes: {
23
+ type: ACTION_SUBJECT_ID.MEDIA_GROUP,
24
+ inputMethod: inputMethod,
25
+ fileExtension: media
26
+ },
27
+ eventType: EVENT_TYPE.TRACK
28
+ };
29
+ };
30
+ var getInsertMediaInlineAnalytics = function getInsertMediaInlineAnalytics(mediaState, inputMethod) {
31
+ var media = mediaState.fileMimeType || 'unknown';
32
+ return {
33
+ action: ACTION.INSERTED,
34
+ actionSubject: ACTION_SUBJECT.DOCUMENT,
35
+ actionSubjectId: ACTION_SUBJECT_ID.MEDIA,
36
+ attributes: {
37
+ type: ACTION_SUBJECT_ID.MEDIA_INLINE,
38
+ inputMethod: inputMethod,
39
+ fileExtension: media
40
+ },
41
+ eventType: EVENT_TYPE.TRACK
42
+ };
43
+ };
44
+
45
+ /**
46
+ * Check if current editor selections is a media group or not.
47
+ * @param state Editor state
48
+ */
49
+ function isSelectionMediaGroup(state) {
50
+ var schema = state.schema;
51
+ var selectionParent = state.selection.$anchor.node();
52
+ return selectionParent && selectionParent.type === schema.nodes.mediaGroup;
53
+ }
54
+
55
+ /**
56
+ * Insert a paragraph after if reach the end of doc
57
+ * and there is no media group in the front or selection is a non media block node
58
+ * @param node Node at insertion point
59
+ * @param state Editor state
60
+ */
61
+ function shouldAppendParagraph(state, node) {
62
+ var media = state.schema.nodes.media;
63
+ var wasMediaNode = node && node.type === media;
64
+ return (insideTableCell(state) || isInListItem(state) || isInLayoutColumn(state) || atTheEndOfDoc(state) && (!posOfPrecedingMediaGroup(state) || isSelectionNonMediaBlockNode(state))) && !wasMediaNode;
65
+ }
66
+
67
+ /**
68
+ * Create a new media inline to insert the new media.
69
+ * @param view Editor view
70
+ * @param mediaState Media file to be added to the editor
71
+ * @param collection Collection for the media to be added
72
+ */
73
+ export var insertMediaInlineNode = function insertMediaInlineNode(editorAnalyticsAPI) {
74
+ return function (view, mediaState, collection, inputMethod) {
75
+ var state = view.state,
76
+ dispatch = view.dispatch;
77
+ var schema = state.schema,
78
+ tr = state.tr;
79
+ var mediaInline = schema.nodes.mediaInline;
80
+
81
+ // Do nothing if no media found
82
+ if (!mediaInline || !mediaState || collection === undefined) {
83
+ return false;
84
+ }
85
+ var id = mediaState.id;
86
+ var mediaInlineNode = mediaInline.create({
87
+ id: id,
88
+ collection: collection
89
+ });
90
+ var space = state.schema.text(' ');
91
+ var pos = state.selection.$to.pos;
92
+
93
+ // If the selection is inside an empty list item set pos inside paragraph
94
+ if (isInListItem(state) && isInsidePotentialEmptyParagraph(state)) {
95
+ pos = pos + 1;
96
+ }
97
+ var content = Fragment.from([mediaInlineNode, space]);
98
+
99
+ // Delete the selection if a selection is made
100
+ var deleteRange = findDeleteRange(state);
101
+ if (!deleteRange) {
102
+ tr.insert(pos, content);
103
+ } else {
104
+ tr.insert(pos, content).deleteRange(deleteRange.start, deleteRange.end);
105
+ }
106
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaInlineAnalytics(mediaState, inputMethod))(tr);
107
+ dispatch(tr);
108
+ return true;
109
+ };
110
+ };
111
+
112
+ /**
113
+ * Insert a media into an existing media group
114
+ * or create a new media group to insert the new media.
115
+ * @param view Editor view
116
+ * @param mediaStates Media files to be added to the editor
117
+ * @param collection Collection for the media to be added
118
+ */
119
+ export var insertMediaGroupNode = function insertMediaGroupNode(editorAnalyticsAPI) {
120
+ return function (view, mediaStates, collection, inputMethod) {
121
+ var state = view.state,
122
+ dispatch = view.dispatch;
123
+ var tr = state.tr,
124
+ schema = state.schema;
125
+ var _schema$nodes = schema.nodes,
126
+ media = _schema$nodes.media,
127
+ paragraph = _schema$nodes.paragraph;
128
+
129
+ // Do nothing if no media found
130
+ if (!media || !mediaStates.length) {
131
+ return;
132
+ }
133
+ var mediaNodes = createMediaFileNodes(mediaStates, collection, media);
134
+ var mediaInsertPos = findMediaInsertPos(state);
135
+ var resolvedInsertPos = tr.doc.resolve(mediaInsertPos);
136
+ var parent = resolvedInsertPos.parent;
137
+ var nodeAtInsertionPoint = tr.doc.nodeAt(mediaInsertPos);
138
+ var shouldSplit = !isSelectionMediaGroup(state) && isSupportedInParent(state, Fragment.from(state.schema.nodes.mediaGroup.createChecked({}, mediaNodes)));
139
+ var withParagraph = shouldAppendParagraph(state, nodeAtInsertionPoint);
140
+ var content = parent.type === schema.nodes.mediaGroup ? mediaNodes // If parent is a mediaGroup do not wrap items again.
141
+ : [schema.nodes.mediaGroup.createChecked({}, mediaNodes)];
142
+ if (shouldSplit) {
143
+ content = withParagraph ? content.concat(paragraph.create()) : content;
144
+ // delete the selection or empty paragraph
145
+ var deleteRange = findDeleteRange(state);
146
+ if (!deleteRange) {
147
+ tr.insert(mediaInsertPos, content);
148
+ } else if (mediaInsertPos <= deleteRange.start) {
149
+ tr.deleteRange(deleteRange.start, deleteRange.end).insert(mediaInsertPos, content);
150
+ } else {
151
+ tr.insert(mediaInsertPos, content).deleteRange(deleteRange.start, deleteRange.end);
152
+ }
153
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaGroupAnalytics(mediaStates, inputMethod))(tr);
154
+ dispatch(tr);
155
+ setSelectionAfterMediaInsertion(view);
156
+ return;
157
+ }
158
+
159
+ // Don't append new paragraph when adding media to a existing mediaGroup
160
+ if (withParagraph && parent.type !== schema.nodes.mediaGroup) {
161
+ content.push(paragraph.create());
162
+ }
163
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaGroupAnalytics(mediaStates, inputMethod))(tr);
164
+ dispatch(safeInsert(Fragment.fromArray(content), mediaInsertPos)(tr));
165
+ };
166
+ };
167
+ var createMediaFileNodes = function createMediaFileNodes(mediaStates, collection, media) {
168
+ var nodes = mediaStates.map(function (mediaState) {
169
+ var id = mediaState.id;
170
+ var node = media.create({
171
+ id: id,
172
+ type: 'file',
173
+ collection: collection
174
+ });
175
+ copyOptionalAttrsFromMediaState(mediaState, node);
176
+ return node;
177
+ });
178
+ return nodes;
179
+ };
180
+
181
+ /**
182
+ * Find root list node if exist from current selection
183
+ * @param state Editor state
184
+ */
185
+ var findRootListNode = function findRootListNode(state) {
186
+ var _state$schema$nodes = state.schema.nodes,
187
+ bulletList = _state$schema$nodes.bulletList,
188
+ orderedList = _state$schema$nodes.orderedList;
189
+ return findFarthestParentNode(function (node) {
190
+ return node.type === bulletList || node.type === orderedList;
191
+ })(state.selection.$from);
192
+ };
193
+
194
+ /**
195
+ * Return position of media to be inserted, if it is inside a list
196
+ * @param content Content to be inserted
197
+ * @param state Editor State
198
+ */
199
+ export var getPosInList = function getPosInList(state) {
200
+ var _state$schema$nodes2 = state.schema.nodes,
201
+ mediaGroup = _state$schema$nodes2.mediaGroup,
202
+ listItem = _state$schema$nodes2.listItem;
203
+
204
+ // 1. Check if I am inside a list.
205
+ if (hasParentNode(function (node) {
206
+ return node.type === listItem;
207
+ })(state.selection)) {
208
+ // 2. Get end position of root list
209
+ var rootListNode = findRootListNode(state);
210
+ if (rootListNode) {
211
+ var pos = rootListNode.pos + rootListNode.node.nodeSize;
212
+ // 3. Fint the first location inside the media group
213
+ var nextNode = state.doc.nodeAt(pos);
214
+ if (nextNode && nextNode.type === mediaGroup) {
215
+ return pos + 1;
216
+ }
217
+ return pos;
218
+ }
219
+ }
220
+ return;
221
+ };
222
+
223
+ /**
224
+ * Find insertion point,
225
+ * If it is in a List it will return position to the next block,
226
+ * If there are any media group close it will return this position
227
+ * Otherwise, It will return the respective block given selection.
228
+ * @param content Content to be inserted
229
+ * @param state Editor state
230
+ */
231
+ var findMediaInsertPos = function findMediaInsertPos(state) {
232
+ var _state$selection = state.selection,
233
+ $from = _state$selection.$from,
234
+ $to = _state$selection.$to;
235
+
236
+ // Check if selection is inside a list.
237
+ var posInList = getPosInList(state);
238
+ if (posInList) {
239
+ // If I have a position in lists, I should return, otherwise I am not inside a list
240
+ return posInList;
241
+ }
242
+ var nearbyMediaGroupPos = posOfMediaGroupNearby(state);
243
+ if (nearbyMediaGroupPos && (!isSelectionNonMediaBlockNode(state) || $from.pos < nearbyMediaGroupPos && $to.pos < nearbyMediaGroupPos)) {
244
+ return nearbyMediaGroupPos;
245
+ }
246
+ if (isSelectionNonMediaBlockNode(state)) {
247
+ return $to.pos;
248
+ }
249
+ if (atTheEndOfBlock(state)) {
250
+ return $to.pos + 1;
251
+ }
252
+ if (atTheBeginningOfBlock(state)) {
253
+ return $from.pos - 1;
254
+ }
255
+ return $to.pos;
256
+ };
257
+ var findDeleteRange = function findDeleteRange(state) {
258
+ var _state$selection2 = state.selection,
259
+ $from = _state$selection2.$from,
260
+ $to = _state$selection2.$to;
261
+ if (posOfParentMediaGroup(state)) {
262
+ return;
263
+ }
264
+ if (!isInsidePotentialEmptyParagraph(state) || posOfMediaGroupNearby(state)) {
265
+ return range($from.pos, $to.pos);
266
+ }
267
+ return range(startPositionOfParent($from) - 1, endPositionOfParent($to));
268
+ };
269
+ var range = function range(start) {
270
+ var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : start;
271
+ return {
272
+ start: start,
273
+ end: end
274
+ };
275
+ };
276
+ var setSelectionAfterMediaInsertion = function setSelectionAfterMediaInsertion(view) {
277
+ var state = view.state;
278
+ var doc = state.doc;
279
+ var mediaPos = posOfMediaGroupNearby(state);
280
+ if (!mediaPos) {
281
+ return;
282
+ }
283
+ var $mediaPos = doc.resolve(mediaPos);
284
+ var endOfMediaGroup = endPositionOfParent($mediaPos);
285
+ if (endOfMediaGroup + 1 >= doc.nodeSize - 1) {
286
+ // if nothing after the media group, fallback to select the newest uploaded media item
287
+ setNodeSelection(view, mediaPos);
288
+ } else {
289
+ setTextSelection(view, endOfMediaGroup + 1);
290
+ }
291
+ };
@@ -0,0 +1,172 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '@atlaskit/editor-common/analytics';
5
+ import { safeInsert, shouldSplitSelectedNodeOnNodeInsertion } from '@atlaskit/editor-common/insert';
6
+ import { getMaxWidthForNestedNodeNext, getMediaSingleInitialWidth, MEDIA_SINGLE_DEFAULT_MIN_PIXEL_WIDTH, MEDIA_SINGLE_VIDEO_MIN_PIXEL_WIDTH } from '@atlaskit/editor-common/media-single';
7
+ import { atTheBeginningOfBlock } from '@atlaskit/editor-common/selection';
8
+ import { checkNodeDown, isEmptyParagraph } from '@atlaskit/editor-common/utils';
9
+ import { Fragment, Slice } from '@atlaskit/editor-prosemirror/model';
10
+ import { safeInsert as pmSafeInsert } from '@atlaskit/editor-prosemirror/utils';
11
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
12
+ import { copyOptionalAttrsFromMediaState } from '../utils/media-common';
13
+ import { isImage } from './is-image';
14
+ var getInsertMediaAnalytics = function getInsertMediaAnalytics(inputMethod, fileExtension) {
15
+ return {
16
+ action: ACTION.INSERTED,
17
+ actionSubject: ACTION_SUBJECT.DOCUMENT,
18
+ actionSubjectId: ACTION_SUBJECT_ID.MEDIA,
19
+ attributes: {
20
+ inputMethod: inputMethod,
21
+ fileExtension: fileExtension,
22
+ type: ACTION_SUBJECT_ID.MEDIA_SINGLE
23
+ },
24
+ eventType: EVENT_TYPE.TRACK
25
+ };
26
+ };
27
+ function shouldAddParagraph(state) {
28
+ return atTheBeginningOfBlock(state) && !checkNodeDown(state.selection, state.doc, isEmptyParagraph);
29
+ }
30
+ function insertNodesWithOptionalParagraph(nodes) {
31
+ var analyticsAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
32
+ var editorAnalyticsAPI = arguments.length > 2 ? arguments[2] : undefined;
33
+ return function (state, dispatch) {
34
+ var tr = state.tr,
35
+ schema = state.schema;
36
+ var paragraph = schema.nodes.paragraph;
37
+ var inputMethod = analyticsAttributes.inputMethod,
38
+ fileExtension = analyticsAttributes.fileExtension;
39
+ var openEnd = 0;
40
+ if (shouldAddParagraph(state)) {
41
+ nodes.push(paragraph.create());
42
+ openEnd = 1;
43
+ }
44
+ tr.replaceSelection(new Slice(Fragment.from(nodes), 0, openEnd));
45
+ if (inputMethod) {
46
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaAnalytics(inputMethod, fileExtension))(tr);
47
+ }
48
+ if (dispatch) {
49
+ dispatch(tr);
50
+ }
51
+ return true;
52
+ };
53
+ }
54
+ export var isMediaSingle = function isMediaSingle(schema, fileMimeType) {
55
+ return !!schema.nodes.mediaSingle && isImage(fileMimeType);
56
+ };
57
+ export var insertMediaAsMediaSingle = function insertMediaAsMediaSingle(view, node, inputMethod, editorAnalyticsAPI) {
58
+ var state = view.state,
59
+ dispatch = view.dispatch;
60
+ var _state$schema$nodes = state.schema.nodes,
61
+ mediaSingle = _state$schema$nodes.mediaSingle,
62
+ media = _state$schema$nodes.media;
63
+ if (!mediaSingle) {
64
+ return false;
65
+ }
66
+
67
+ // if not an image type media node
68
+ if (node.type !== media || !isImage(node.attrs.__fileMimeType) && node.attrs.type !== 'external') {
69
+ return false;
70
+ }
71
+ var mediaSingleNode = mediaSingle.create({}, node);
72
+ var nodes = [mediaSingleNode];
73
+ var analyticsAttributes = {
74
+ inputMethod: inputMethod,
75
+ fileExtension: node.attrs.__fileMimeType
76
+ };
77
+ return insertNodesWithOptionalParagraph(nodes, analyticsAttributes, editorAnalyticsAPI)(state, dispatch);
78
+ };
79
+ export var insertMediaSingleNode = function insertMediaSingleNode(view, mediaState, inputMethod, collection, alignLeftOnInsert, newInsertionBehaviour, widthPluginState, editorAnalyticsAPI) {
80
+ var _state$selection$$fro;
81
+ if (collection === undefined) {
82
+ return false;
83
+ }
84
+ var state = view.state,
85
+ dispatch = view.dispatch;
86
+ var grandParentNodeType = (_state$selection$$fro = state.selection.$from.node(-1)) === null || _state$selection$$fro === void 0 ? void 0 : _state$selection$$fro.type;
87
+ var parentNodeType = state.selection.$from.parent.type;
88
+
89
+ // add undefined as fallback as we don't want media single width to have upper limit as 0
90
+ // if widthPluginState.width is 0, default 760 will be used
91
+ var contentWidth = getMaxWidthForNestedNodeNext(view, state.selection.$from.pos, true) || (widthPluginState === null || widthPluginState === void 0 ? void 0 : widthPluginState.lineLength) || (widthPluginState === null || widthPluginState === void 0 ? void 0 : widthPluginState.width) || undefined;
92
+ var node = createMediaSingleNode(state.schema, collection, contentWidth, mediaState.status !== 'error' && isVideo(mediaState.fileMimeType) ? MEDIA_SINGLE_VIDEO_MIN_PIXEL_WIDTH : MEDIA_SINGLE_DEFAULT_MIN_PIXEL_WIDTH, alignLeftOnInsert)(mediaState);
93
+ var fileExtension;
94
+ if (mediaState.fileName) {
95
+ var extensionIdx = mediaState.fileName.lastIndexOf('.');
96
+ fileExtension = extensionIdx >= 0 ? mediaState.fileName.substring(extensionIdx + 1) : undefined;
97
+ }
98
+ // should split if media is valid content for the grandparent of the selected node
99
+ // and the parent node is a paragraph
100
+ if (shouldSplitSelectedNodeOnNodeInsertion({
101
+ parentNodeType: parentNodeType,
102
+ grandParentNodeType: grandParentNodeType,
103
+ content: node
104
+ })) {
105
+ insertNodesWithOptionalParagraph([node], {
106
+ fileExtension: fileExtension,
107
+ inputMethod: inputMethod
108
+ }, editorAnalyticsAPI)(state, dispatch);
109
+ } else {
110
+ var tr = null;
111
+ if (newInsertionBehaviour) {
112
+ tr = safeInsert(node, state.selection.from)(state.tr);
113
+ }
114
+ if (!tr) {
115
+ var content = shouldAddParagraph(view.state) ? Fragment.fromArray([node, state.schema.nodes.paragraph.create()]) : node;
116
+ tr = pmSafeInsert(content, undefined, true)(state.tr);
117
+ }
118
+ if (inputMethod) {
119
+ editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaAnalytics(inputMethod, fileExtension))(tr);
120
+ }
121
+ dispatch(tr);
122
+ }
123
+ return true;
124
+ };
125
+ export var createMediaSingleNode = function createMediaSingleNode(schema, collection, maxWidth, minWidth, alignLeftOnInsert) {
126
+ return function (mediaState) {
127
+ var id = mediaState.id,
128
+ dimensions = mediaState.dimensions,
129
+ contextId = mediaState.contextId,
130
+ _mediaState$scaleFact = mediaState.scaleFactor,
131
+ scaleFactor = _mediaState$scaleFact === void 0 ? 1 : _mediaState$scaleFact;
132
+ var _ref = dimensions || {
133
+ height: undefined,
134
+ width: undefined
135
+ },
136
+ width = _ref.width,
137
+ height = _ref.height;
138
+ var _schema$nodes = schema.nodes,
139
+ media = _schema$nodes.media,
140
+ mediaSingle = _schema$nodes.mediaSingle;
141
+ var scaledWidth = width && Math.round(width / scaleFactor);
142
+ var mediaNode = media.create({
143
+ id: id,
144
+ type: 'file',
145
+ collection: collection,
146
+ contextId: contextId,
147
+ width: scaledWidth,
148
+ height: height && Math.round(height / scaleFactor)
149
+ });
150
+ var mediaSingleAttrs = alignLeftOnInsert ? {
151
+ layout: 'align-start'
152
+ } : {};
153
+ var extendedMediaSingleAttrs = getBooleanFF('platform.editor.media.extended-resize-experience') ? _objectSpread(_objectSpread({}, mediaSingleAttrs), {}, {
154
+ width: getMediaSingleInitialWidth(scaledWidth, maxWidth, minWidth),
155
+ // TODO: change to use enum
156
+ widthType: 'pixel'
157
+ }) : mediaSingleAttrs;
158
+ copyOptionalAttrsFromMediaState(mediaState, mediaNode);
159
+ return mediaSingle.createChecked(extendedMediaSingleAttrs, mediaNode);
160
+ };
161
+ };
162
+ export function isCaptionNode(editorView) {
163
+ var $from = editorView.state.selection.$from;
164
+ var immediateWrapperParentNode = editorView.state.doc.nodeAt($from.before(Math.max($from.depth, 1)));
165
+ if (immediateWrapperParentNode && immediateWrapperParentNode.type.name === 'caption') {
166
+ return true;
167
+ }
168
+ return false;
169
+ }
170
+ export var isVideo = function isVideo(fileType) {
171
+ return !!fileType && fileType.includes('video');
172
+ };
@@ -0,0 +1,5 @@
1
+ import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
+ import type { Command } from '@atlaskit/editor-common/types';
3
+ import type { Node as PMNode } from '@atlaskit/editor-prosemirror/model';
4
+ export declare const selectCaptionFromMediaSinglePos: (mediaSingleNodePos: number, mediaSingleNode: PMNode) => Command;
5
+ export declare const insertAndSelectCaptionFromMediaSinglePos: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => (mediaSingleNodePos: number | undefined, mediaSingleNode: PMNode) => Command;
@@ -0,0 +1,15 @@
1
+ import type { Command } from '@atlaskit/editor-common/types';
2
+ import type { EditorState } from '@atlaskit/editor-prosemirror/state';
3
+ import type { MediaNodeWithPosHandler, MediaPluginState } from '../pm-plugins/types';
4
+ /**
5
+ * Note that Media Inline is inserted like a media single node into the media plugin state.
6
+ * Though it is not of type mediaSingle, it shares the same `findMediaSingleNode` method
7
+ *
8
+ */
9
+ export declare const findMediaSingleNode: (mediaPluginState: MediaPluginState, id: string) => MediaNodeWithPosHandler | null;
10
+ export declare const findAllMediaSingleNodes: (mediaPluginState: MediaPluginState, id: string) => MediaNodeWithPosHandler[];
11
+ export declare const isMediaNode: (pos: number, state: EditorState) => boolean | null;
12
+ export declare const updateAllMediaSingleNodesAttrs: (id: string, attrs: object) => Command;
13
+ export declare const updateCurrentMediaNodeAttrs: (attrs: object, mediaNode: MediaNodeWithPosHandler) => Command;
14
+ export declare const updateMediaSingleNodeAttrs: (id: string, attrs: object) => Command;
15
+ export declare const replaceExternalMedia: (pos: number, attrs: object) => Command;
@@ -0,0 +1 @@
1
+ export { updateMediaSingleNodeAttrs, updateAllMediaSingleNodesAttrs, replaceExternalMedia, } from './helpers';
@@ -0,0 +1,9 @@
1
+ import type { EditorAnalyticsAPI, INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
+ import type { Command, CommandDispatch } from '@atlaskit/editor-common/types';
3
+ import type { EditorState } from '@atlaskit/editor-prosemirror/state';
4
+ import type { EditorView } from '@atlaskit/editor-prosemirror/view';
5
+ export declare const showLinkingToolbar: Command;
6
+ export declare const showLinkingToolbarWithMediaTypeCheck: Command;
7
+ export declare const hideLinkingToolbar: (state: EditorState, dispatch?: CommandDispatch, view?: EditorView, focusFloatingToolbar?: boolean) => void;
8
+ export declare const unlink: (editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => Command;
9
+ export declare const setUrlToMedia: (url: string, inputMethod: INPUT_METHOD.TYPEAHEAD | INPUT_METHOD.MANUAL, editorAnalyticsAPI: EditorAnalyticsAPI | undefined) => Command;
@@ -1 +1,2 @@
1
- export {};
1
+ export type { MediaNextEditorPluginType as MediaPlugin } from './next-plugin-type';
2
+ export { mediaPlugin } from './plugin';