@instructure/canvas-rce 5.11.1 → 5.12.2

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 (505) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/babel-register.js +0 -7
  3. package/babel.config.cjs.js +0 -7
  4. package/babel.config.js +0 -9
  5. package/es/canvasFileBrowser/FileBrowser.js +6 -1
  6. package/es/common/fileUrl.js +3 -4
  7. package/es/defaultTinymceConfig.js +1 -1
  8. package/{lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js → es/elementDenylist.js} +2 -6
  9. package/es/enhance-user-content/doc_previews.js +4 -0
  10. package/es/enhance-user-content/enhance_user_content.js +4 -59
  11. package/es/enhance-user-content/external_links.js +75 -0
  12. package/es/enhance-user-content/mathml.js +9 -7
  13. package/es/getThemeVars.js +4 -3
  14. package/es/getTranslations.js +77 -1
  15. package/es/index.js +1 -1
  16. package/es/rce/RCEWrapper.js +5 -2328
  17. package/es/rce/StatusBar.js +8 -2
  18. package/es/rce/contentInsertion.js +5 -2
  19. package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +3 -9
  20. package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +1 -1
  21. package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +3 -11
  22. package/es/rce/plugins/instructure_equation/mathlive/index.js +5 -13
  23. package/es/rce/plugins/instructure_html_view/plugin.js +2 -2
  24. package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +3 -2
  25. package/es/rce/plugins/instructure_image/ImageList/Image.js +2 -2
  26. package/es/rce/plugins/instructure_image/Images/index.js +3 -10
  27. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +3 -0
  28. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -1
  29. package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +26 -1
  30. package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +9 -3
  31. package/es/rce/plugins/instructure_record/MediaPanel/index.js +3 -9
  32. package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +27 -2
  33. package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +35 -6
  34. package/es/rce/plugins/shared/fileShape.js +81 -9
  35. package/es/rce/plugins/shared/fileTypeUtils.js +6 -0
  36. package/es/rce/tinymce.oxide.content.min.css.js +732 -0
  37. package/es/rce/tinymce.oxide.skin.min.css.js +7 -0
  38. package/es/rcs/api.js +6 -4
  39. package/es/sidebar/store/configureStore.js +2 -2
  40. package/{lib/translations/locales/tg.js → es/translations/locales/ab.js} +1 -1
  41. package/es/translations/locales/cs.js +27 -0
  42. package/es/translations/locales/cs_CZ.js +27 -0
  43. package/{lib/translations/locales/sv_SE.js → es/translations/locales/da_DK.js} +2 -2
  44. package/{lib/translations/locales/se.js → es/translations/locales/en_NZ.js} +2 -2
  45. package/es/translations/locales/en_SE.js +26 -0
  46. package/es/translations/locales/en_US.js +26 -0
  47. package/es/translations/locales/hu_HU.js +27 -0
  48. package/{lib/translations/locales/ms.js → es/translations/locales/id.js} +632 -632
  49. package/{lib/translations/locales/th.js → es/translations/locales/id_ID.js} +1 -2
  50. package/{lib/translations/locales/vi_VN.js → es/translations/locales/ko_KR.js} +2 -2
  51. package/es/translations/locales/lt.js +26 -0
  52. package/es/translations/locales/lt_LT.js +26 -0
  53. package/es/translations/locales/mn_MN.js +26 -0
  54. package/es/translations/locales/nl_NL.js +27 -0
  55. package/{lib/translations/locales/es_GT.js → es/translations/locales/ro.js} +3 -3
  56. package/es/translations/locales/ru.js +2375 -32
  57. package/es/translations/locales/sv.js +2379 -30
  58. package/es/translations/locales/th.js +2401 -1
  59. package/es/translations/locales/tl_PH.js +26 -0
  60. package/es/translations/locales/tr.js +3 -0
  61. package/es/translations/locales/vi.js +2396 -8
  62. package/es/translations/locales/zh_TW.Big5.js +27 -0
  63. package/{lib/translations/locales/th_TH.js → es/translations/locales/zh_TW.js} +2 -2
  64. package/jest.config.js +0 -7
  65. package/package.json +9 -11
  66. package/scripts/build.js +1 -7
  67. package/scripts/publish_to_npm.sh +26 -0
  68. package/canvas/README.md +0 -84
  69. package/canvas/locales/en.json +0 -934
  70. package/canvas/package.json +0 -189
  71. package/es/common/scroll.js +0 -45
  72. package/es/types/inst-ui.d.js +0 -18
  73. package/es/types/ts-migration.js +0 -1
  74. package/lib/bridge/Bridge.js +0 -287
  75. package/lib/bridge/index.js +0 -21
  76. package/lib/canvasFileBrowser/FileBrowser.js +0 -452
  77. package/lib/canvasFileBrowser/en-US.js +0 -234
  78. package/lib/common/FlashAlert.js +0 -263
  79. package/lib/common/browser.js +0 -40
  80. package/lib/common/components/FileTree/File.js +0 -64
  81. package/lib/common/components/FileTree/Folder.js +0 -110
  82. package/lib/common/components/FileTree/index.js +0 -84
  83. package/lib/common/components/FileTree/styles.js +0 -72
  84. package/lib/common/components/Loading.js +0 -83
  85. package/lib/common/fileUrl.js +0 -153
  86. package/lib/common/getCookie.js +0 -32
  87. package/lib/common/incremental-loading/LoadMoreButton.js +0 -40
  88. package/lib/common/incremental-loading/LoadingIndicator.js +0 -36
  89. package/lib/common/incremental-loading/LoadingStatus.js +0 -47
  90. package/lib/common/incremental-loading/index.js +0 -21
  91. package/lib/common/incremental-loading/useIncrementalLoading.js +0 -58
  92. package/lib/common/indicate.js +0 -75
  93. package/lib/common/mimeClass.js +0 -120
  94. package/lib/common/natcompare.js +0 -47
  95. package/lib/common/scroll.js +0 -45
  96. package/lib/defaultTinymceConfig.js +0 -160
  97. package/lib/enhance-user-content/doc_previews.js +0 -233
  98. package/lib/enhance-user-content/enhance_user_content.js +0 -396
  99. package/lib/enhance-user-content/index.js +0 -21
  100. package/lib/enhance-user-content/instructure_helper.js +0 -207
  101. package/lib/enhance-user-content/jqueryish_funcs.js +0 -88
  102. package/lib/enhance-user-content/mathml.js +0 -397
  103. package/lib/enhance-user-content/media_comment_thumbnail.js +0 -130
  104. package/lib/format-message.js +0 -30
  105. package/lib/getThemeVars.js +0 -45
  106. package/lib/getTranslations.js +0 -264
  107. package/lib/index.js +0 -51
  108. package/lib/rce/AlertMessageArea.js +0 -47
  109. package/lib/rce/DraggingBlocker.js +0 -43
  110. package/lib/rce/KeyboardShortcutModal.js +0 -88
  111. package/lib/rce/RCE.js +0 -150
  112. package/lib/rce/RCEGlobals.js +0 -62
  113. package/lib/rce/RCEWrapper.js +0 -4278
  114. package/lib/rce/RCEWrapperProps.js +0 -130
  115. package/lib/rce/RceHtmlEditor.js +0 -142
  116. package/lib/rce/ResizeHandle.js +0 -102
  117. package/lib/rce/RestoreAutoSaveModal.js +0 -82
  118. package/lib/rce/ShowOnFocusButton/index.js +0 -93
  119. package/lib/rce/StatusBar.js +0 -380
  120. package/lib/rce/__mocks__/_mockCryptoEs.js +0 -124
  121. package/lib/rce/__mocks__/styleMock.js +0 -18
  122. package/lib/rce/__mocks__/tinymceReact.js +0 -55
  123. package/lib/rce/alertHandler.js +0 -46
  124. package/lib/rce/contentInsertion.js +0 -322
  125. package/lib/rce/contentInsertionUtils.js +0 -85
  126. package/lib/rce/contentRendering.js +0 -145
  127. package/lib/rce/customEvents.js +0 -18
  128. package/lib/rce/editorLanguage.js +0 -101
  129. package/lib/rce/indicatorRegion.js +0 -49
  130. package/lib/rce/normalizeLocale.js +0 -50
  131. package/lib/rce/normalizeProps.js +0 -29
  132. package/lib/rce/plugins/instructure-ui-icons/plugin.js +0 -122
  133. package/lib/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +0 -24
  134. package/lib/rce/plugins/instructure_condensed_buttons/plugin.js +0 -27
  135. package/lib/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +0 -63
  136. package/lib/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +0 -48
  137. package/lib/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +0 -41
  138. package/lib/rce/plugins/instructure_condensed_buttons/ui/list-button.js +0 -145
  139. package/lib/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +0 -56
  140. package/lib/rce/plugins/instructure_documents/clickCallback.js +0 -23
  141. package/lib/rce/plugins/instructure_documents/components/DocumentsPanel.js +0 -126
  142. package/lib/rce/plugins/instructure_documents/components/Link.js +0 -219
  143. package/lib/rce/plugins/instructure_documents/plugin.js +0 -123
  144. package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +0 -25
  145. package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +0 -51
  146. package/lib/rce/plugins/instructure_equation/EquationEditorModal/index.js +0 -321
  147. package/lib/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +0 -116
  148. package/lib/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +0 -91
  149. package/lib/rce/plugins/instructure_equation/EquationEditorModal/styles.js +0 -46
  150. package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +0 -728
  151. package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -84
  152. package/lib/rce/plugins/instructure_equation/MathIcon/index.js +0 -41
  153. package/lib/rce/plugins/instructure_equation/MathIcon/svgs.js +0 -236
  154. package/lib/rce/plugins/instructure_equation/clickCallback.js +0 -53
  155. package/lib/rce/plugins/instructure_equation/mathlive/index.js +0 -36
  156. package/lib/rce/plugins/instructure_equation/plugin.js +0 -69
  157. package/lib/rce/plugins/instructure_fullscreen/plugin.js +0 -50
  158. package/lib/rce/plugins/instructure_html_view/clickCallback.js +0 -21
  159. package/lib/rce/plugins/instructure_html_view/plugin.js +0 -37
  160. package/lib/rce/plugins/instructure_icon_maker/clickCallback.js +0 -57
  161. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +0 -82
  162. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +0 -56
  163. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +0 -78
  164. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +0 -36
  165. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +0 -110
  166. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +0 -169
  167. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +0 -186
  168. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +0 -243
  169. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +0 -64
  170. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +0 -73
  171. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +0 -298
  172. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +0 -86
  173. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +0 -55
  174. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +0 -70
  175. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +0 -317
  176. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +0 -149
  177. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +0 -18
  178. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +0 -32
  179. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +0 -25
  180. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +0 -60
  181. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +0 -87
  182. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +0 -139
  183. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +0 -18
  184. package/lib/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +0 -323
  185. package/lib/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +0 -90
  186. package/lib/rce/plugins/instructure_icon_maker/plugin.js +0 -110
  187. package/lib/rce/plugins/instructure_icon_maker/reducers/imageSection.js +0 -194
  188. package/lib/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +0 -98
  189. package/lib/rce/plugins/instructure_icon_maker/registerEditToolbar.js +0 -56
  190. package/lib/rce/plugins/instructure_icon_maker/svg/clipPath.js +0 -25
  191. package/lib/rce/plugins/instructure_icon_maker/svg/constants.js +0 -100
  192. package/lib/rce/plugins/instructure_icon_maker/svg/font.js +0 -25
  193. package/lib/rce/plugins/instructure_icon_maker/svg/image.js +0 -354
  194. package/lib/rce/plugins/instructure_icon_maker/svg/index.js +0 -122
  195. package/lib/rce/plugins/instructure_icon_maker/svg/metadata.js +0 -48
  196. package/lib/rce/plugins/instructure_icon_maker/svg/settings.js +0 -179
  197. package/lib/rce/plugins/instructure_icon_maker/svg/shape.js +0 -316
  198. package/lib/rce/plugins/instructure_icon_maker/svg/text.js +0 -468
  199. package/lib/rce/plugins/instructure_icon_maker/svg/utils.js +0 -70
  200. package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +0 -45
  201. package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +0 -83
  202. package/lib/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +0 -28
  203. package/lib/rce/plugins/instructure_icon_maker/utils/iconValidation.js +0 -35
  204. package/lib/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +0 -375
  205. package/lib/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +0 -59
  206. package/lib/rce/plugins/instructure_image/ImageEmbedOptions.js +0 -202
  207. package/lib/rce/plugins/instructure_image/ImageList/Image.js +0 -106
  208. package/lib/rce/plugins/instructure_image/ImageList/index.js +0 -69
  209. package/lib/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +0 -166
  210. package/lib/rce/plugins/instructure_image/ImageOptionsTray/index.js +0 -246
  211. package/lib/rce/plugins/instructure_image/Images/index.js +0 -129
  212. package/lib/rce/plugins/instructure_image/clickCallback.js +0 -24
  213. package/lib/rce/plugins/instructure_image/plugin.js +0 -157
  214. package/lib/rce/plugins/instructure_links/clickCallback.js +0 -22
  215. package/lib/rce/plugins/instructure_links/components/AccordionSection.js +0 -60
  216. package/lib/rce/plugins/instructure_links/components/CollectionPanel.js +0 -84
  217. package/lib/rce/plugins/instructure_links/components/Link.js +0 -213
  218. package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +0 -127
  219. package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +0 -141
  220. package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +0 -125
  221. package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +0 -245
  222. package/lib/rce/plugins/instructure_links/components/LinkSet.js +0 -195
  223. package/lib/rce/plugins/instructure_links/components/LinksPanel.js +0 -100
  224. package/lib/rce/plugins/instructure_links/components/NavigationPanel.js +0 -141
  225. package/lib/rce/plugins/instructure_links/components/NoResults.js +0 -87
  226. package/lib/rce/plugins/instructure_links/components/propTypes.js +0 -41
  227. package/lib/rce/plugins/instructure_links/plugin.js +0 -294
  228. package/lib/rce/plugins/instructure_links/validateURL.js +0 -70
  229. package/lib/rce/plugins/instructure_media_embed/clickCallback.js +0 -48
  230. package/lib/rce/plugins/instructure_media_embed/components/Embed.js +0 -68
  231. package/lib/rce/plugins/instructure_media_embed/plugin.js +0 -36
  232. package/lib/rce/plugins/instructure_paste/pasteMenuCommand.js +0 -117
  233. package/lib/rce/plugins/instructure_paste/plugin.js +0 -174
  234. package/lib/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +0 -169
  235. package/lib/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +0 -225
  236. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +0 -294
  237. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +0 -46
  238. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +0 -79
  239. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +0 -153
  240. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +0 -94
  241. package/lib/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +0 -90
  242. package/lib/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +0 -35
  243. package/lib/rce/plugins/instructure_rce_external_tools/dialog-helper.js +0 -29
  244. package/lib/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -55
  245. package/lib/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +0 -172
  246. package/lib/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +0 -203
  247. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +0 -111
  248. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +0 -79
  249. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +0 -47
  250. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +0 -57
  251. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +0 -26
  252. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +0 -45
  253. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +0 -67
  254. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +0 -48
  255. package/lib/rce/plugins/instructure_rce_external_tools/plugin.js +0 -112
  256. package/lib/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +0 -27
  257. package/lib/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +0 -127
  258. package/lib/rce/plugins/instructure_record/AudioOptionsTray/index.js +0 -148
  259. package/lib/rce/plugins/instructure_record/MediaPanel/index.js +0 -129
  260. package/lib/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +0 -215
  261. package/lib/rce/plugins/instructure_record/VideoOptionsTray/index.js +0 -321
  262. package/lib/rce/plugins/instructure_record/clickCallback.js +0 -105
  263. package/lib/rce/plugins/instructure_record/mediaTranslations.js +0 -94
  264. package/lib/rce/plugins/instructure_record/plugin.js +0 -173
  265. package/lib/rce/plugins/instructure_studio_media_options/plugin.js +0 -42
  266. package/lib/rce/plugins/instructure_wordcount/clickCallback.js +0 -49
  267. package/lib/rce/plugins/instructure_wordcount/components/WordCountModal.js +0 -88
  268. package/lib/rce/plugins/instructure_wordcount/plugin.js +0 -30
  269. package/lib/rce/plugins/instructure_wordcount/utils/countContent.js +0 -78
  270. package/lib/rce/plugins/instructure_wordcount/utils/tableContent.js +0 -40
  271. package/lib/rce/plugins/shared/CanvasContentTray.js +0 -580
  272. package/lib/rce/plugins/shared/CheckerboardStyling.js +0 -25
  273. package/lib/rce/plugins/shared/ColorInput.js +0 -233
  274. package/lib/rce/plugins/shared/ConditionalTooltip.js +0 -32
  275. package/lib/rce/plugins/shared/ContentSelection.js +0 -269
  276. package/lib/rce/plugins/shared/DimensionUtils.js +0 -66
  277. package/lib/rce/plugins/shared/DimensionsInput/DimensionInput.js +0 -62
  278. package/lib/rce/plugins/shared/DimensionsInput/index.js +0 -161
  279. package/lib/rce/plugins/shared/DimensionsInput/useDimensionsState.js +0 -220
  280. package/lib/rce/plugins/shared/ErrorBoundary.js +0 -54
  281. package/lib/rce/plugins/shared/EventUtils.js +0 -39
  282. package/lib/rce/plugins/shared/Filter.js +0 -353
  283. package/lib/rce/plugins/shared/FixedContentTray.js +0 -115
  284. package/lib/rce/plugins/shared/ImageCropper/DirectionRegion.js +0 -67
  285. package/lib/rce/plugins/shared/ImageCropper/Modal.js +0 -153
  286. package/lib/rce/plugins/shared/ImageCropper/Preview.js +0 -148
  287. package/lib/rce/plugins/shared/ImageCropper/constants.js +0 -39
  288. package/lib/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +0 -83
  289. package/lib/rce/plugins/shared/ImageCropper/controls/ResetControls.js +0 -38
  290. package/lib/rce/plugins/shared/ImageCropper/controls/RotationControls.js +0 -89
  291. package/lib/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +0 -82
  292. package/lib/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +0 -111
  293. package/lib/rce/plugins/shared/ImageCropper/controls/index.js +0 -61
  294. package/lib/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +0 -94
  295. package/lib/rce/plugins/shared/ImageCropper/controls/utils.js +0 -41
  296. package/lib/rce/plugins/shared/ImageCropper/imageCropUtils.js +0 -149
  297. package/lib/rce/plugins/shared/ImageCropper/index.js +0 -18
  298. package/lib/rce/plugins/shared/ImageCropper/propTypes.js +0 -26
  299. package/lib/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +0 -72
  300. package/lib/rce/plugins/shared/ImageCropper/shape.js +0 -27
  301. package/lib/rce/plugins/shared/ImageCropper/svg/index.js +0 -89
  302. package/lib/rce/plugins/shared/ImageCropper/svg/shape.js +0 -125
  303. package/lib/rce/plugins/shared/ImageCropper/svg/utils.js +0 -26
  304. package/lib/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +0 -233
  305. package/lib/rce/plugins/shared/ImageCropper/useMouseWheel.js +0 -66
  306. package/lib/rce/plugins/shared/ImageOptionsForm.js +0 -140
  307. package/lib/rce/plugins/shared/LinkDisplay.js +0 -96
  308. package/lib/rce/plugins/shared/PreviewIcon.js +0 -112
  309. package/lib/rce/plugins/shared/Previewable.js +0 -22
  310. package/lib/rce/plugins/shared/RceFileBrowser.js +0 -106
  311. package/lib/rce/plugins/shared/StoreContext.js +0 -57
  312. package/lib/rce/plugins/shared/StudioLtiSupportUtils.js +0 -71
  313. package/lib/rce/plugins/shared/UnknownFileTypePanel.js +0 -29
  314. package/lib/rce/plugins/shared/Upload/CategoryProcessor.js +0 -27
  315. package/lib/rce/plugins/shared/Upload/ComputerPanel.js +0 -334
  316. package/lib/rce/plugins/shared/Upload/SvgCategoryProcessor.js +0 -35
  317. package/lib/rce/plugins/shared/Upload/UploadFile.js +0 -171
  318. package/lib/rce/plugins/shared/Upload/UploadFileModal.js +0 -273
  319. package/lib/rce/plugins/shared/Upload/UrlPanel.js +0 -38
  320. package/lib/rce/plugins/shared/Upload/UsageRightsSelectBox.js +0 -172
  321. package/lib/rce/plugins/shared/Upload/doFileUpload.js +0 -77
  322. package/lib/rce/plugins/shared/__mocks__/screenfull.js +0 -24
  323. package/lib/rce/plugins/shared/buildDownloadUrl.js +0 -31
  324. package/lib/rce/plugins/shared/compressionUtils.js +0 -98
  325. package/lib/rce/plugins/shared/dateUtils.js +0 -28
  326. package/lib/rce/plugins/shared/fileShape.js +0 -57
  327. package/lib/rce/plugins/shared/fileTypeUtils.js +0 -133
  328. package/lib/rce/plugins/shared/fileUtils.js +0 -25
  329. package/lib/rce/plugins/shared/linkUtils.js +0 -89
  330. package/lib/rce/plugins/shared/round.js +0 -25
  331. package/lib/rce/plugins/shared/trayUtils.js +0 -34
  332. package/lib/rce/plugins/shared/useDataUrl.js +0 -76
  333. package/lib/rce/plugins/tinymce-a11y-checker/components/ColorField.js +0 -86
  334. package/lib/rce/plugins/tinymce-a11y-checker/components/checker.js +0 -558
  335. package/lib/rce/plugins/tinymce-a11y-checker/components/color-picker.js +0 -59
  336. package/lib/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +0 -90
  337. package/lib/rce/plugins/tinymce-a11y-checker/components/pointer.js +0 -32
  338. package/lib/rce/plugins/tinymce-a11y-checker/node-checker.js +0 -54
  339. package/lib/rce/plugins/tinymce-a11y-checker/plugin.js +0 -90
  340. package/lib/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
  341. package/lib/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +0 -129
  342. package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +0 -200
  343. package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +0 -67
  344. package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +0 -63
  345. package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +0 -49
  346. package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +0 -61
  347. package/lib/rce/plugins/tinymce-a11y-checker/rules/index.js +0 -31
  348. package/lib/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +0 -51
  349. package/lib/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +0 -144
  350. package/lib/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +0 -61
  351. package/lib/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +0 -75
  352. package/lib/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +0 -54
  353. package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +0 -52
  354. package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header.js +0 -81
  355. package/lib/rce/plugins/tinymce-a11y-checker/utils/colors.js +0 -43
  356. package/lib/rce/plugins/tinymce-a11y-checker/utils/describe.js +0 -66
  357. package/lib/rce/plugins/tinymce-a11y-checker/utils/dom.js +0 -160
  358. package/lib/rce/plugins/tinymce-a11y-checker/utils/indicate.js +0 -83
  359. package/lib/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +0 -57
  360. package/lib/rce/plugins/tinymce-a11y-checker/utils/strings.js +0 -40
  361. package/lib/rce/root.js +0 -58
  362. package/lib/rce/sanitizePlugins.js +0 -32
  363. package/lib/rce/style.js +0 -843
  364. package/lib/rce/tinyRCE.js +0 -66
  365. package/lib/rce/transformContent.js +0 -73
  366. package/lib/rce/userOS.js +0 -31
  367. package/lib/rce/wrapInitCb.js +0 -78
  368. package/lib/rcs/api.js +0 -670
  369. package/lib/rcs/buildError.js +0 -98
  370. package/lib/rcs/fake.js +0 -621
  371. package/lib/sidebar/actions/all_files.js +0 -29
  372. package/lib/sidebar/actions/data.js +0 -105
  373. package/lib/sidebar/actions/documents.js +0 -107
  374. package/lib/sidebar/actions/files.js +0 -167
  375. package/lib/sidebar/actions/filter.js +0 -63
  376. package/lib/sidebar/actions/flickr.js +0 -60
  377. package/lib/sidebar/actions/images.js +0 -153
  378. package/lib/sidebar/actions/links.js +0 -23
  379. package/lib/sidebar/actions/media.js +0 -142
  380. package/lib/sidebar/actions/session.js +0 -34
  381. package/lib/sidebar/actions/ui.js +0 -49
  382. package/lib/sidebar/actions/upload.js +0 -550
  383. package/lib/sidebar/containers/Sidebar.js +0 -67
  384. package/lib/sidebar/containers/sidebarHandlers.js +0 -73
  385. package/lib/sidebar/dragHtml.js +0 -49
  386. package/lib/sidebar/reducers/all_files.js +0 -35
  387. package/lib/sidebar/reducers/collection.js +0 -72
  388. package/lib/sidebar/reducers/collections.js +0 -52
  389. package/lib/sidebar/reducers/documents.js +0 -89
  390. package/lib/sidebar/reducers/files.js +0 -38
  391. package/lib/sidebar/reducers/filter.js +0 -61
  392. package/lib/sidebar/reducers/flickr.js +0 -51
  393. package/lib/sidebar/reducers/folder.js +0 -92
  394. package/lib/sidebar/reducers/folders.js +0 -39
  395. package/lib/sidebar/reducers/images.js +0 -115
  396. package/lib/sidebar/reducers/index.js +0 -57
  397. package/lib/sidebar/reducers/media.js +0 -84
  398. package/lib/sidebar/reducers/newPageLinkExpanded.js +0 -30
  399. package/lib/sidebar/reducers/noop.js +0 -21
  400. package/lib/sidebar/reducers/rootFolderId.js +0 -30
  401. package/lib/sidebar/reducers/session.js +0 -33
  402. package/lib/sidebar/reducers/ui.js +0 -87
  403. package/lib/sidebar/reducers/upload.js +0 -206
  404. package/lib/sidebar/store/configureStore.js +0 -26
  405. package/lib/sidebar/store/initialState.js +0 -173
  406. package/lib/translations/locales/ar.js +0 -2427
  407. package/lib/translations/locales/ca.js +0 -2427
  408. package/lib/translations/locales/cy.js +0 -2427
  409. package/lib/translations/locales/da-x-k12.js +0 -2427
  410. package/lib/translations/locales/da.js +0 -2427
  411. package/lib/translations/locales/de.js +0 -2427
  412. package/lib/translations/locales/el.js +0 -459
  413. package/lib/translations/locales/en-AU-x-unimelb.js +0 -2427
  414. package/lib/translations/locales/en-GB-x-ukhe.js +0 -2427
  415. package/lib/translations/locales/en.js +0 -2427
  416. package/lib/translations/locales/en_AU.js +0 -2427
  417. package/lib/translations/locales/en_CA.js +0 -2426
  418. package/lib/translations/locales/en_CY.js +0 -2426
  419. package/lib/translations/locales/en_GB.js +0 -2427
  420. package/lib/translations/locales/es.js +0 -2427
  421. package/lib/translations/locales/es_ES.js +0 -2427
  422. package/lib/translations/locales/fa_IR.js +0 -615
  423. package/lib/translations/locales/fi.js +0 -2427
  424. package/lib/translations/locales/fr.js +0 -2427
  425. package/lib/translations/locales/fr_CA.js +0 -2427
  426. package/lib/translations/locales/he.js +0 -486
  427. package/lib/translations/locales/ht.js +0 -2426
  428. package/lib/translations/locales/hu.js +0 -2007
  429. package/lib/translations/locales/hy.js +0 -444
  430. package/lib/translations/locales/is.js +0 -2426
  431. package/lib/translations/locales/it.js +0 -2427
  432. package/lib/translations/locales/ja.js +0 -2427
  433. package/lib/translations/locales/ko.js +0 -342
  434. package/lib/translations/locales/mi.js +0 -2426
  435. package/lib/translations/locales/nb-x-k12.js +0 -2427
  436. package/lib/translations/locales/nb.js +0 -2427
  437. package/lib/translations/locales/nl.js +0 -2427
  438. package/lib/translations/locales/nn.js +0 -2247
  439. package/lib/translations/locales/pl.js +0 -2427
  440. package/lib/translations/locales/pt.js +0 -2427
  441. package/lib/translations/locales/pt_BR.js +0 -2427
  442. package/lib/translations/locales/ru.js +0 -84
  443. package/lib/translations/locales/sl.js +0 -2427
  444. package/lib/translations/locales/sv-x-k12.js +0 -2427
  445. package/lib/translations/locales/sv.js +0 -78
  446. package/lib/translations/locales/tr.js +0 -684
  447. package/lib/translations/locales/uk_UA.js +0 -519
  448. package/lib/translations/locales/vi.js +0 -39
  449. package/lib/translations/locales/zh-Hans.js +0 -2427
  450. package/lib/translations/locales/zh-Hant.js +0 -2427
  451. package/lib/translations/locales/zh.js +0 -2427
  452. package/lib/translations/locales/zh_HK.js +0 -2427
  453. package/lib/translations/tinymce/ar_SA.js +0 -211
  454. package/lib/translations/tinymce/bg_BG.js +0 -419
  455. package/lib/translations/tinymce/ca.js +0 -419
  456. package/lib/translations/tinymce/cs.js +0 -419
  457. package/lib/translations/tinymce/cy.js +0 -418
  458. package/lib/translations/tinymce/da.js +0 -419
  459. package/lib/translations/tinymce/de.js +0 -419
  460. package/lib/translations/tinymce/el.js +0 -261
  461. package/lib/translations/tinymce/en_GB.js +0 -230
  462. package/lib/translations/tinymce/es.js +0 -419
  463. package/lib/translations/tinymce/fa_IR.js +0 -390
  464. package/lib/translations/tinymce/fi.js +0 -19
  465. package/lib/translations/tinymce/fr_FR.js +0 -419
  466. package/lib/translations/tinymce/he_IL.js +0 -420
  467. package/lib/translations/tinymce/hu_HU.js +0 -419
  468. package/lib/translations/tinymce/hy.js +0 -419
  469. package/lib/translations/tinymce/it.js +0 -419
  470. package/lib/translations/tinymce/ja.js +0 -419
  471. package/lib/translations/tinymce/ko_KR.js +0 -419
  472. package/lib/translations/tinymce/nb_NO.js +0 -419
  473. package/lib/translations/tinymce/nl.js +0 -419
  474. package/lib/translations/tinymce/pl.js +0 -419
  475. package/lib/translations/tinymce/pt_BR.js +0 -419
  476. package/lib/translations/tinymce/pt_PT.js +0 -419
  477. package/lib/translations/tinymce/ro.js +0 -418
  478. package/lib/translations/tinymce/ru.js +0 -436
  479. package/lib/translations/tinymce/ru_RU.js +0 -71
  480. package/lib/translations/tinymce/sl.js +0 -462
  481. package/lib/translations/tinymce/sr.js +0 -278
  482. package/lib/translations/tinymce/sv_SE.js +0 -419
  483. package/lib/translations/tinymce/th.js +0 -479
  484. package/lib/translations/tinymce/tr_TR.js +0 -389
  485. package/lib/translations/tinymce/uk_UA.js +0 -278
  486. package/lib/translations/tinymce/vi_VN.js +0 -277
  487. package/lib/translations/tinymce/zh_CN.js +0 -419
  488. package/lib/translations/tinymce/zh_TW.js +0 -419
  489. package/lib/types/inst-ui.d.js +0 -18
  490. package/lib/types/ts-migration.js +0 -1
  491. package/lib/util/DeepPartialNullable.js +0 -1
  492. package/lib/util/ExtractRequired.js +0 -1
  493. package/lib/util/TypedDict.js +0 -131
  494. package/lib/util/assertNever.js +0 -44
  495. package/lib/util/elem-util.js +0 -26
  496. package/lib/util/encrypted-storage.js +0 -84
  497. package/lib/util/file-url-util.js +0 -44
  498. package/lib/util/fullscreenHelpers.js +0 -27
  499. package/lib/util/instui-icon-helper.js +0 -31
  500. package/lib/util/loadingPlaceholder.js +0 -436
  501. package/lib/util/simpleCache.js +0 -41
  502. package/lib/util/string-util.js +0 -48
  503. package/lib/util/textarea-editing-util.js +0 -87
  504. package/lib/util/tinymce-plugin-util.js +0 -52
  505. package/lib/util/url-util.js +0 -138
@@ -165,7 +165,10 @@ export default function StatusBar(props) {
165
165
 
166
166
  function renderPath() {
167
167
  return /*#__PURE__*/React.createElement(View, {
168
- "data-testid": "whole-status-bar-path"
168
+ "data-testid": "whole-status-bar-path",
169
+ style: {
170
+ display: 'flex'
171
+ }
169
172
  }, renderPathString(props));
170
173
  }
171
174
 
@@ -208,7 +211,10 @@ export default function StatusBar(props) {
208
211
  const message = props.editorView === PRETTY_HTML_EDITOR_VIEW ? formatMessage('Sadly, the pretty HTML editor is not keyboard accessible. Access the raw HTML editor here.') : formatMessage('Access the pretty HTML editor');
209
212
  const label = props.editorView === PRETTY_HTML_EDITOR_VIEW ? formatMessage('Switch to raw HTML Editor') : formatMessage('Switch to pretty HTML Editor');
210
213
  return /*#__PURE__*/React.createElement(View, {
211
- "data-testid": "html-editor-message"
214
+ "data-testid": "html-editor-message",
215
+ style: {
216
+ display: 'flex'
217
+ }
212
218
  }, /*#__PURE__*/React.createElement(Button, {
213
219
  "data-btn-id": "rce-editormessage-btn",
214
220
  margin: "0 small",
@@ -17,7 +17,6 @@
17
17
  */
18
18
  import classnames from 'classnames';
19
19
  import { renderAudio, renderImage, renderLink, renderLinkedImage, renderVideo } from './contentRendering';
20
- import scroll from '../common/scroll';
21
20
  import { cleanUrl, getAnchorElement, isImageFigure, isOnlyTextSelected } from './contentInsertionUtils';
22
21
  import { mediaPlayerURLFromFile } from './plugins/shared/fileTypeUtils';
23
22
  import { absoluteToRelativeUrl } from '../common/fileUrl';
@@ -54,7 +53,11 @@ export function insertContent(editor, content) {
54
53
  // insertion should reference the newly created node (or first of the newly
55
54
  // created nodes if there were multiple, unfortunately), because the cursor
56
55
  // itself stays just before the new content.
57
- scroll.scrollIntoViewWDelay(editor.iframeElement, {}); // there's a bug in tinymce where insertContent calls execCommand('mceInsertContent'),
56
+ setTimeout(() => {
57
+ if (editor.iframeElement) {
58
+ editor.iframeElement.scrollIntoView();
59
+ }
60
+ }, 100); // there's a bug in tinymce where insertContent calls execCommand('mceInsertContent'),
58
61
  // but doesn't correctly forward the second "args" argument. Let's go right for
59
62
  // execCommand
60
63
  // editor.insertContent(content, {skip_focus: true})
@@ -16,8 +16,8 @@
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
  import React, { useRef } from 'react';
19
- import { arrayOf, bool, func, shape, string, objectOf, oneOf } from 'prop-types';
20
- import { fileShape } from '../../shared/fileShape';
19
+ import { func, shape, string, oneOf } from 'prop-types';
20
+ import { contentTrayDocumentShape } from '../../shared/fileShape';
21
21
  import formatMessage from '../../../../format-message';
22
22
  import { Text } from '@instructure/ui-text';
23
23
  import { View } from '@instructure/ui-view';
@@ -111,13 +111,7 @@ DocumentsPanel.propTypes = {
111
111
  fetchInitialDocs: func.isRequired,
112
112
  fetchNextDocs: func.isRequired,
113
113
  onLinkClick: func.isRequired,
114
- documents: objectOf(shape({
115
- files: arrayOf(shape(fileShape)).isRequired,
116
- bookmark: string,
117
- hasMore: bool,
118
- isLoading: bool,
119
- error: string
120
- })).isRequired,
114
+ documents: contentTrayDocumentShape.isRequired,
121
115
  sortBy: shape({
122
116
  sort: oneOf(['date_added', 'alphabetical']).isRequired,
123
117
  order: oneOf(['asc', 'desc']).isRequired
@@ -31,7 +31,7 @@ import { containsAdvancedSyntax } from './advancedOnlySyntax';
31
31
  import * as advancedPreference from './advancedPreference';
32
32
  import { instuiPopupMountNode } from '../../../../util/fullscreenHelpers';
33
33
  import { css } from 'aphrodite';
34
- import Mathml, { MathJaxDirective } from '../../../../enhance-user-content/mathml';
34
+ import { MathJaxDirective, Mathml } from '../../../../enhance-user-content/mathml';
35
35
  import styles from './styles';
36
36
  import RCEGlobals from '../../../RCEGlobals'; // Import the <math-field> container and all
37
37
  // the relevant math fonts from mathlive
@@ -16,17 +16,9 @@
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
  import { StyleSheet } from 'aphrodite';
19
- const cssRules = {
20
- componentId: 'cpADC',
21
- template: function (theme) {
22
- return `
23
-
24
- #MathJax_MenuFrame {
25
- z-index: 10000 !important;
26
- }
27
- `;
28
- }
29
- }.template(); // Applying z-index for MathJax menu inside config shows the element but doesn't user interact with it.
19
+ const cssRules = `#MathJax_MenuFrame {
20
+ z-index: 10000 !important;
21
+ }`; // Applying z-index for MathJax menu inside config shows the element but doesn't user interact with it.
30
22
  // Manually adding z-index as head style
31
23
 
32
24
  const style = document.createElement('style');
@@ -15,22 +15,14 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import 'mathlive/dist/mathlive-fonts.css'; // There currently isn't a great way to do this so use this workaround to inject these styles
18
+ const mathliveCss = require('mathlive/dist/mathlive-fonts.css');
19
19
 
20
- const cssRules = {
21
- componentId: 'KeARC',
22
- template: function (theme) {
23
- return `
24
-
25
- .canvas-rce__mathlive--ML__popover {
26
-
20
+ const cssRules = `.ML__popover {
21
+ /* Override this so it shows up on top of dialogs */
27
22
  z-index: 20000 !important;
28
- }
29
- `;
30
- },
31
- 'ML__popover': 'canvas-rce__mathlive--ML__popover'
32
- }.template();
23
+ }`;
33
24
  const style = document.createElement('style');
25
+ style.appendChild(document.createTextNode(mathliveCss));
34
26
  style.appendChild(document.createTextNode(cssRules));
35
27
  document.head.appendChild(style);
36
28
  export * from 'mathlive';
@@ -17,8 +17,8 @@
17
17
  */
18
18
  import formatMessage from '../../../format-message';
19
19
  import clickCallback from './clickCallback';
20
- import tinymce from 'tinymce';
21
- // Register plugin
20
+ import tinymce from 'tinymce'; // Register plugin
21
+
22
22
  tinymce.PluginManager.add('instructure_html_view', function (ed) {
23
23
  // Register commands
24
24
  ed.addCommand('instructureHtmlView', () => clickCallback()); // Register menu items
@@ -18,7 +18,8 @@
18
18
  import React from 'react';
19
19
  import PropTypes from 'prop-types';
20
20
  import { View } from '@instructure/ui-view';
21
- import Images, { RCSImageCollectionType } from '../../instructure_image/Images';
21
+ import Images from '../../instructure_image/Images';
22
+ import { contentTrayDocumentShape } from '../../shared/fileShape';
22
23
  import { ICON_MAKER_ICONS } from '../svg/constants';
23
24
 
24
25
  const SavedIconMakerList = props => {
@@ -69,7 +70,7 @@ SavedIconMakerList.propTypes = {
69
70
  sort: PropTypes.oneOf(['date_added', 'alphabetical']).isRequired,
70
71
  order: PropTypes.oneOf(['asc', 'desc']).isRequired
71
72
  }),
72
- images: RCSImageCollectionType.isRequired,
73
+ images: contentTrayDocumentShape.isRequired,
73
74
  contextType: PropTypes.string.isRequired,
74
75
  searchString: PropTypes.string,
75
76
  onImageEmbed: PropTypes.func,
@@ -16,7 +16,7 @@
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
  import React from 'react';
19
- import { func, instanceOf, number, shape, string, bool } from 'prop-types';
19
+ import { func, instanceOf, number, oneOfType, shape, string, bool } from 'prop-types';
20
20
  import { Img } from '@instructure/ui-img';
21
21
  import { Link } from '@instructure/ui-link';
22
22
  import { Text } from '@instructure/ui-text';
@@ -92,7 +92,7 @@ Image.propTypes = {
92
92
  display_name: string.isRequired,
93
93
  filename: string,
94
94
  href: string.isRequired,
95
- id: number,
95
+ id: oneOfType([number, string]),
96
96
  preview_url: string,
97
97
  thumbnail_url: string.isRequired
98
98
  }).isRequired,
@@ -16,21 +16,14 @@
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
  import React, { useRef } from 'react';
19
- import { arrayOf, bool, func, objectOf, oneOf, shape, string } from 'prop-types';
20
- import { fileShape } from '../../shared/fileShape';
19
+ import { bool, func, oneOf, shape, string } from 'prop-types';
20
+ import { contentTrayDocumentShape } from '../../shared/fileShape';
21
21
  import { Flex } from '@instructure/ui-flex';
22
22
  import { View } from '@instructure/ui-view';
23
23
  import { Text } from '@instructure/ui-text';
24
24
  import { LoadMoreButton, LoadingIndicator, LoadingStatus, useIncrementalLoading } from '../../../../common/incremental-loading';
25
25
  import ImageList from '../ImageList';
26
26
  import formatMessage from '../../../../format-message';
27
- export const RCSImageCollectionType = objectOf(shape({
28
- files: arrayOf(shape(fileShape)).isRequired,
29
- bookmark: string,
30
- hasMore: bool.isRequired,
31
- isLoading: bool.isRequired,
32
- error: string
33
- }));
34
27
 
35
28
  function hasFiles(images) {
36
29
  return images.files.length > 0;
@@ -114,7 +107,7 @@ Images.propTypes = {
114
107
  fetchInitialImages: func.isRequired,
115
108
  fetchNextImages: func.isRequired,
116
109
  contextType: string.isRequired,
117
- images: RCSImageCollectionType.isRequired,
110
+ images: contentTrayDocumentShape.isRequired,
118
111
  sortBy: shape({
119
112
  sort: oneOf(['date_added', 'alphabetical']).isRequired,
120
113
  order: oneOf(['asc', 'desc']).isRequired
@@ -86,6 +86,9 @@ export default class ExternalToolDialog extends React.Component {
86
86
  if ((data === null || data === void 0 ? void 0 : data.subject) === 'LtiDeepLinkingResponse') {
87
87
  processEditorContentItems(ev, this.props.env, this);
88
88
  } else if ((data === null || data === void 0 ? void 0 : data.subject) === 'externalContentReady') {
89
+ // 'externalContentReady' is EXTERNAL_CONTENT_READY in
90
+ // ui/shared/external-tools/externalContentEvents.ts
91
+ // where events are also described/used
89
92
  this.handleExternalContentReady(ev.data);
90
93
  }
91
94
  }
@@ -34,8 +34,10 @@ export default class ResourceLinkContentItem extends BaseLinkContentItem {
34
34
  }
35
35
 
36
36
  buildUrl() {
37
+ // iframed launches need canvas wrapped around them for postMessages to work
38
+ const display = this.iframe != null ? 'in_rce' : 'borderless';
37
39
  return addQueryParamsToUrl(this.context.ltiEndpoint, {
38
- display: 'in_rce',
40
+ display,
39
41
  resource_link_lookup_uuid: this.lookup_uuid,
40
42
  [PARENT_FRAME_CONTEXT_PARAM]: this.context.containingCanvasLtiToolId
41
43
  });
@@ -101,6 +101,27 @@ export default class TrayController {
101
101
  });
102
102
  }
103
103
 
104
+ requestSubtitlesFromIframe(cb) {
105
+ var _this$_audioContainer, _this$_audioContainer2;
106
+
107
+ if (!bridge.canvasOrigin) return;
108
+ this._subtitleListener = new AbortController();
109
+ window.addEventListener('message', event => {
110
+ var _event$data;
111
+
112
+ if ((event === null || event === void 0 ? void 0 : (_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.subject) === "media_tracks_response") {
113
+ var _event$data2;
114
+
115
+ cb(event === null || event === void 0 ? void 0 : (_event$data2 = event.data) === null || _event$data2 === void 0 ? void 0 : _event$data2.payload);
116
+ }
117
+ }, {
118
+ signal: this._subtitleListener.signal
119
+ });
120
+ (_this$_audioContainer = this._audioContainer) === null || _this$_audioContainer === void 0 ? void 0 : (_this$_audioContainer2 = _this$_audioContainer.contentWindow) === null || _this$_audioContainer2 === void 0 ? void 0 : _this$_audioContainer2.postMessage({
121
+ subject: 'media_tracks_request'
122
+ }, bridge.canvasOrigin);
123
+ }
124
+
104
125
  _renderTray(trayProps) {
105
126
  const audioOptions = asAudioElement(this._audioContainer) || {};
106
127
  const element = /*#__PURE__*/React.createElement(AudioOptionsTray, {
@@ -109,8 +130,11 @@ export default class TrayController {
109
130
  this._isOpen = true;
110
131
  },
111
132
  onExited: () => {
133
+ var _this$_subtitleListen;
134
+
112
135
  bridge.focusActiveEditor(false);
113
136
  this._isOpen = false;
137
+ (_this$_subtitleListen = this._subtitleListener) === null || _this$_subtitleListen === void 0 ? void 0 : _this$_subtitleListen.abort();
114
138
  },
115
139
  onSave: options => {
116
140
  this._applyAudioOptions(options);
@@ -119,7 +143,8 @@ export default class TrayController {
119
143
  },
120
144
  onDismiss: () => this._dismissTray(),
121
145
  open: this._shouldOpen,
122
- trayProps: trayProps
146
+ trayProps: trayProps,
147
+ requestSubtitlesFromIframe: cb => this.requestSubtitlesFromIframe(cb)
123
148
  });
124
149
  ReactDOM.render(element, this.container);
125
150
  }
@@ -15,7 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import React, { useState } from 'react';
18
+ import React, { useState, useEffect } from 'react';
19
19
  import { arrayOf, bool, func, shape, string } from 'prop-types';
20
20
  import { Flex } from '@instructure/ui-flex';
21
21
  import { Tray } from '@instructure/ui-tray';
@@ -39,9 +39,13 @@ export default function AudioOptionsTray(_ref) {
39
39
  onDismiss,
40
40
  onSave,
41
41
  trayProps,
42
- audioOptions
42
+ audioOptions,
43
+ requestSubtitlesFromIframe
43
44
  } = _ref;
44
45
  const [subtitles, setSubtitles] = useState(audioOptions.tracks || []);
46
+ useEffect(() => {
47
+ if (subtitles.length === 0) requestSubtitlesFromIframe(setSubtitles);
48
+ }, []);
45
49
 
46
50
  const handleSave = (e, contentProps) => {
47
51
  onSave({
@@ -128,6 +132,7 @@ AudioOptionsTray.propTypes = {
128
132
  onDismiss: func,
129
133
  onSave: func,
130
134
  open: bool.isRequired,
135
+ requestSubtitlesFromIframe: func,
131
136
  trayProps: shape({
132
137
  host: string.isRequired,
133
138
  jwt: string.isRequired
@@ -144,5 +149,6 @@ AudioOptionsTray.defaultProps = {
144
149
  onEntered: null,
145
150
  onExited: null,
146
151
  onDismiss: null,
147
- onSave: null
152
+ onSave: null,
153
+ requestSubtitlesFromIframe: () => {}
148
154
  };
@@ -16,8 +16,8 @@
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
  import React, { useRef } from 'react';
19
- import { arrayOf, bool, func, objectOf, oneOf, shape, string } from 'prop-types';
20
- import { mediaObjectShape } from '../../shared/fileShape';
19
+ import { func, oneOf, shape, string } from 'prop-types';
20
+ import { contentTrayDocumentShape } from '../../shared/fileShape';
21
21
  import formatMessage from '../../../../format-message';
22
22
  import { Text } from '@instructure/ui-text';
23
23
  import { View } from '@instructure/ui-view';
@@ -114,13 +114,7 @@ MediaPanel.propTypes = {
114
114
  fetchInitialMedia: func.isRequired,
115
115
  fetchNextMedia: func.isRequired,
116
116
  onMediaEmbed: func.isRequired,
117
- media: objectOf(shape({
118
- files: arrayOf(shape(mediaObjectShape)).isRequired,
119
- bookmark: string,
120
- hasMore: bool,
121
- isLoading: bool,
122
- error: string
123
- })).isRequired,
117
+ media: contentTrayDocumentShape.isRequired,
124
118
  sortBy: shape({
125
119
  sort: oneOf(['date_added', 'alphabetical']).isRequired,
126
120
  order: oneOf(['asc', 'desc']).isRequired
@@ -146,7 +146,7 @@ export default class TrayController {
146
146
  // If not, we can't update the MediaObject in the canvas db.
147
147
 
148
148
 
149
- if (videoOptions.media_object_id && videoOptions.media_object_id !== 'undefined') {
149
+ if (videoOptions.media_object_id && videoOptions.media_object_id !== 'undefined' && !videoOptions.editLocked) {
150
150
  videoOptions.updateMediaObject(data).then(_r => {
151
151
  if (this.$videoContainer && videoOptions.displayAs === 'embed') {
152
152
  this.$videoContainer.contentWindow.postMessage({
@@ -177,6 +177,27 @@ export default class TrayController {
177
177
  this._editor = null;
178
178
  }
179
179
 
180
+ requestSubtitlesFromIframe(cb) {
181
+ var _this$$videoContainer2, _this$$videoContainer3;
182
+
183
+ if (!bridge.canvasOrigin) return;
184
+ this._subtitleListener = new AbortController();
185
+ window.addEventListener('message', event => {
186
+ var _event$data;
187
+
188
+ if ((event === null || event === void 0 ? void 0 : (_event$data = event.data) === null || _event$data === void 0 ? void 0 : _event$data.subject) === "media_tracks_response") {
189
+ var _event$data2;
190
+
191
+ cb(event === null || event === void 0 ? void 0 : (_event$data2 = event.data) === null || _event$data2 === void 0 ? void 0 : _event$data2.payload);
192
+ }
193
+ }, {
194
+ signal: this._subtitleListener.signal
195
+ });
196
+ (_this$$videoContainer2 = this.$videoContainer) === null || _this$$videoContainer2 === void 0 ? void 0 : (_this$$videoContainer3 = _this$$videoContainer2.contentWindow) === null || _this$$videoContainer3 === void 0 ? void 0 : _this$$videoContainer3.postMessage({
197
+ subject: 'media_tracks_request'
198
+ }, bridge.canvasOrigin);
199
+ }
200
+
180
201
  _renderTray(trayProps) {
181
202
  let vo = {};
182
203
 
@@ -198,8 +219,11 @@ export default class TrayController {
198
219
  this._isOpen = true;
199
220
  },
200
221
  onExited: () => {
222
+ var _this$_subtitleListen;
223
+
201
224
  bridge.focusActiveEditor(false);
202
225
  this._isOpen = false;
226
+ (_this$_subtitleListen = this._subtitleListener) === null || _this$_subtitleListen === void 0 ? void 0 : _this$_subtitleListen.abort();
203
227
  },
204
228
  onSave: videoOptions => {
205
229
  this._applyVideoOptions(videoOptions);
@@ -207,7 +231,8 @@ export default class TrayController {
207
231
  onRequestClose: () => this._dismissTray(),
208
232
  open: this._shouldOpen,
209
233
  trayProps: trayProps,
210
- studioOptions: isStudioEmbeddedMedia(this.$videoContainer) ? parseStudioOptions(this.$videoContainer) : null
234
+ studioOptions: isStudioEmbeddedMedia(this.$videoContainer) ? parseStudioOptions(this.$videoContainer) : null,
235
+ requestSubtitlesFromIframe: cb => this.requestSubtitlesFromIframe(cb)
211
236
  });
212
237
  ReactDOM.render(element, this.$container);
213
238
  }
@@ -15,7 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import React, { useState } from 'react';
18
+ import React, { useState, useEffect } from 'react';
19
19
  import { arrayOf, bool, func, number, shape, string } from 'prop-types';
20
20
  import { Button, CloseButton, IconButton } from '@instructure/ui-buttons';
21
21
  import { Heading } from '@instructure/ui-heading';
@@ -27,12 +27,14 @@ import { IconQuestionLine } from '@instructure/ui-icons';
27
27
  import { Flex } from '@instructure/ui-flex';
28
28
  import { FormFieldGroup } from '@instructure/ui-form-field';
29
29
  import { View } from '@instructure/ui-view';
30
+ import { Spinner } from '@instructure/ui-spinner';
30
31
  import { Tooltip } from '@instructure/ui-tooltip';
31
32
  import { Tray } from '@instructure/ui-tray';
32
33
  import { StoreProvider } from '../../shared/StoreContext';
33
34
  import { ClosedCaptionPanel } from '@instructure/canvas-media';
34
35
  import { CUSTOM, MIN_WIDTH_VIDEO, MIN_PERCENTAGE, videoSizes, labelForImageSize, scaleToSize } from '../../instructure_image/ImageEmbedOptions';
35
36
  import Bridge from '../../../../bridge';
37
+ import RceApiSource from '../../../../rcs/api';
36
38
  import formatMessage from '../../../../format-message';
37
39
  import DimensionsInput, { useDimensionsState } from '../../shared/DimensionsInput';
38
40
  import { getTrayHeight } from '../../shared/trayUtils';
@@ -48,6 +50,7 @@ export default function VideoOptionsTray(_ref) {
48
50
  onSave,
49
51
  open,
50
52
  trayProps,
53
+ requestSubtitlesFromIframe = () => {},
51
54
  onEntered = null,
52
55
  onExited = null,
53
56
  id = 'video-options-tray',
@@ -68,6 +71,8 @@ export default function VideoOptionsTray(_ref) {
68
71
  const [minWidth] = useState(MIN_WIDTH_VIDEO);
69
72
  const [minHeight] = useState(Math.round(videoHeight / videoWidth * MIN_WIDTH_VIDEO));
70
73
  const [minPercentage] = useState(MIN_PERCENTAGE);
74
+ const [editLocked, setEditLocked] = useState(null);
75
+ const [loading, setLoading] = useState(true);
71
76
  const isStudio = !!studioOptions;
72
77
  const showDisplayOptions = !isStudio || studioOptions.convertibleToLink;
73
78
  const showSizeControls = !isStudio || studioOptions.resizable;
@@ -76,6 +81,22 @@ export default function VideoOptionsTray(_ref) {
76
81
  minWidth,
77
82
  minPercentage
78
83
  });
84
+ const api = new RceApiSource(trayProps);
85
+ useEffect(() => {
86
+ if (videoOptions.attachmentId) {
87
+ api.getFile(videoOptions.attachmentId, {
88
+ include: ['blueprint_course_status']
89
+ }).then(response => {
90
+ setEditLocked((response === null || response === void 0 ? void 0 : response.restricted_by_master_course) && (response === null || response === void 0 ? void 0 : response.is_master_course_child_content));
91
+ setLoading(false);
92
+ }).catch(error => {
93
+ setLoading(false);
94
+ });
95
+ }
96
+ }, [videoOptions.attachmentId]);
97
+ useEffect(() => {
98
+ if (subtitles.length === 0) requestSubtitlesFromIframe(setSubtitles);
99
+ }, []);
79
100
 
80
101
  function handleTitleTextChange(event) {
81
102
  setTitleText(event.target.value);
@@ -124,7 +145,8 @@ export default function VideoOptionsTray(_ref) {
124
145
  appliedWidth,
125
146
  displayAs,
126
147
  subtitles,
127
- updateMediaObject
148
+ updateMediaObject,
149
+ editLocked
128
150
  });
129
151
  }
130
152
 
@@ -192,7 +214,13 @@ export default function VideoOptionsTray(_ref) {
192
214
  color: "primary",
193
215
  onClick: onRequestClose,
194
216
  screenReaderLabel: formatMessage('Close')
195
- })))), /*#__PURE__*/React.createElement(Flex.Item, {
217
+ })))), loading && videoOptions.attachmentId ? /*#__PURE__*/React.createElement(Flex.Item, {
218
+ textAlign: "center",
219
+ margin: "xx-large",
220
+ padding: "xx-large"
221
+ }, /*#__PURE__*/React.createElement(Spinner, {
222
+ renderTitle: formatMessage("Loading")
223
+ })) : /*#__PURE__*/React.createElement(Flex.Item, {
196
224
  as: "form",
197
225
  shouldGrow: true,
198
226
  margin: "none",
@@ -207,7 +235,7 @@ export default function VideoOptionsTray(_ref) {
207
235
  shouldShrink: true
208
236
  }, /*#__PURE__*/React.createElement(Flex, {
209
237
  direction: "column"
210
- }, /*#__PURE__*/React.createElement(Flex.Item, {
238
+ }, !editLocked && /*#__PURE__*/React.createElement(Flex.Item, {
211
239
  padding: "small"
212
240
  }, isStudio ? /*#__PURE__*/React.createElement(Flex, {
213
241
  direction: "column"
@@ -266,7 +294,7 @@ export default function VideoOptionsTray(_ref) {
266
294
  minWidth: minWidth,
267
295
  minPercentage: minPercentage,
268
296
  hidePercentage: true
269
- }))), !isStudio && /*#__PURE__*/React.createElement(Flex.Item, {
297
+ }))), !isStudio && !editLocked && /*#__PURE__*/React.createElement(Flex.Item, {
270
298
  padding: "small"
271
299
  }, /*#__PURE__*/React.createElement(FormFieldGroup, {
272
300
  description: formatMessage('Closed Captions/Subtitles')
@@ -317,5 +345,6 @@ VideoOptionsTray.propTypes = {
317
345
  jwt: string.isRequired
318
346
  }),
319
347
  id: string,
320
- studioOptions: parsedStudioOptionsPropType
348
+ studioOptions: parsedStudioOptionsPropType,
349
+ requestSubtitlesFromIframe: func
321
350
  };
@@ -15,11 +15,11 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import { bool, number, oneOfType, string } from 'prop-types';
18
+ import { arrayOf, bool, number, oneOfType, shape, string, checkPropTypes } from 'prop-types';
19
19
  export const fileShape = {
20
20
  content_type: string.isRequired,
21
21
  date: string.isRequired,
22
- display_name: string,
22
+ display_name: string.isRequired,
23
23
  filename: string.isRequired,
24
24
  href: string.isRequired,
25
25
  id: oneOfType([number, string]).isRequired,
@@ -31,13 +31,13 @@ export const fileShape = {
31
31
  locked_for_user: bool,
32
32
  published: bool
33
33
  };
34
- export const mediaObjectShape = {
35
- content_type: string.isRequired,
36
- date: string.isRequired,
37
- embedded_iframe_url: string,
38
- id: oneOfType([number, string]).isRequired,
34
+ export const imageShape = { ...fileShape,
35
+ thumbnail_url: string
36
+ };
37
+ export const mediaObjectShape = { ...imageShape,
39
38
  title: string.isRequired,
40
- published: bool
39
+ embedded_iframe_url: string,
40
+ media_entry_id: string
41
41
  };
42
42
  export const fileOrMediaObjectShape = {
43
43
  content_type: string.isRequired,
@@ -54,4 +54,76 @@ export const fileOrMediaObjectShape = {
54
54
  unlock_at: string,
55
55
  locked_for_user: bool,
56
56
  published: bool
57
- };
57
+ };
58
+ export const documentQueryReturnShape = {
59
+ files: arrayOf(shape(fileShape)).isRequired,
60
+ bookmark: string,
61
+ hasMore: bool,
62
+ isLoading: bool,
63
+ error: string
64
+ };
65
+ export const imageQueryReturnShape = {
66
+ files: arrayOf(shape(imageShape)).isRequired,
67
+ bookmark: string,
68
+ hasMore: bool,
69
+ isLoading: bool,
70
+ error: string
71
+ };
72
+ export const mediaQueryReturnShape = {
73
+ files: arrayOf(shape(mediaObjectShape)).isRequired,
74
+ bookmark: string,
75
+ hasMore: bool,
76
+ isLoading: bool,
77
+ error: string
78
+ };
79
+
80
+ function createContentTrayDocumentShape(isRequired) {
81
+ return function validateContentTrayDocuments(props, propName, componentName) {
82
+ const p = props[propName];
83
+
84
+ if (!p) {
85
+ if (isRequired) {
86
+ if (!p) {
87
+ return new Error(`Required prop \`${propName}\` not supplied to \`${componentName}\`. Validation failed.`);
88
+ }
89
+ }
90
+
91
+ return undefined;
92
+ } else {
93
+ const files = p.user || p.course || p.group || p.User || p.Course || p.Group;
94
+
95
+ if (!files) {
96
+ return new Error(`Invalid prop \`${propName}\` supplied to \`${componentName}\`. Missing "user"|"course"|"group" key.`);
97
+ }
98
+
99
+ if ('searchString' in p) {
100
+ if (!(typeof p.searchString === 'string')) {
101
+ return new Error(`Invalid prop \`${propName}\` supplied to \`${componentName}\`. "searchString" must be a string.`);
102
+ }
103
+ }
104
+
105
+ if (propName === 'documents') {
106
+ checkPropTypes({
107
+ docs: shape(documentQueryReturnShape)
108
+ }, {
109
+ docs: files
110
+ }, componentName, componentName);
111
+ } else if (propName === 'images') {
112
+ checkPropTypes({
113
+ images: shape(imageQueryReturnShape)
114
+ }, {
115
+ images: files
116
+ }, componentName, componentName);
117
+ } else if (propName === 'media') {
118
+ checkPropTypes({
119
+ media: shape(mediaQueryReturnShape)
120
+ }, {
121
+ media: files
122
+ }, componentName, componentName);
123
+ }
124
+ }
125
+ };
126
+ }
127
+
128
+ export const contentTrayDocumentShape = createContentTrayDocumentShape(false);
129
+ contentTrayDocumentShape.isRequired = createContentTrayDocumentShape(true);
@@ -112,6 +112,12 @@ export function mediaPlayerURLFromFile(file, canvasOrigin) {
112
112
  }
113
113
 
114
114
  if (file.embedded_iframe_url) {
115
+ const url = new URL(file.embedded_iframe_url, canvasOrigin);
116
+
117
+ if (url.searchParams.has('type')) {
118
+ return `${absoluteToRelativeUrl(file.embedded_iframe_url, canvasOrigin)}`;
119
+ }
120
+
115
121
  return `${absoluteToRelativeUrl(file.embedded_iframe_url, canvasOrigin)}?type=${type}`;
116
122
  }
117
123