@instructure/canvas-rce 5.14.0 → 5.14.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 (484) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/DEVELOPMENT.md +1 -1
  3. package/README.md +0 -8
  4. package/__tests__/common/indicate.test.js +84 -0
  5. package/__tests__/common/mimeClass.test.js +85 -0
  6. package/__tests__/module/contentInsertionUtils.test.js +52 -0
  7. package/__tests__/module/indicatorRegion.test.js +75 -0
  8. package/__tests__/module/normalizeLocale.test.js +46 -0
  9. package/__tests__/module/normalizeProps.test.js +51 -0
  10. package/__tests__/module/sanitizePlugins.test.js +48 -0
  11. package/__tests__/module/wrapInitCb.test.js +56 -0
  12. package/__tests__/rcs/api.test.js +819 -0
  13. package/{mocha-reporter-config.js → __tests__/sidebar/actions/all_files.test.js} +10 -9
  14. package/__tests__/sidebar/actions/data.test.js +196 -0
  15. package/__tests__/sidebar/actions/utils.js +44 -0
  16. package/__tests__/sidebar/reducers/all_files.test.js +28 -0
  17. package/babel.config.js +3 -1
  18. package/build.sh +7 -7
  19. package/es/bridge/Bridge.js +8 -56
  20. package/es/bridge/index.js +1 -0
  21. package/es/canvasFileBrowser/FileBrowser.js +12 -59
  22. package/es/canvasFileBrowser/en-US.js +3 -6
  23. package/es/common/FlashAlert.js +7 -28
  24. package/es/common/browser.js +4 -2
  25. package/es/common/fileUrl.js +104 -59
  26. package/es/common/incremental-loading/LoadMoreButton.js +1 -0
  27. package/es/common/incremental-loading/LoadingIndicator.js +1 -2
  28. package/es/common/incremental-loading/LoadingStatus.js +1 -2
  29. package/es/common/incremental-loading/index.js +1 -0
  30. package/es/common/incremental-loading/useIncrementalLoading.js +1 -3
  31. package/es/common/indicate.js +15 -8
  32. package/es/common/mimeClass.js +3 -4
  33. package/es/common/natcompare.js +1 -4
  34. package/es/defaultTinymceConfig.js +5 -3
  35. package/es/elementDenylist.js +1 -0
  36. package/es/enhance-user-content/doc_previews.js +17 -28
  37. package/es/enhance-user-content/enhance_user_content.js +28 -60
  38. package/es/enhance-user-content/external_links.js +5 -8
  39. package/es/enhance-user-content/index.js +1 -0
  40. package/es/enhance-user-content/instructure_helper.js +25 -38
  41. package/es/enhance-user-content/jqueryish_funcs.js +8 -11
  42. package/es/enhance-user-content/mathml.js +35 -82
  43. package/es/enhance-user-content/media_comment_thumbnail.js +5 -17
  44. package/es/format-message.js +3 -4
  45. package/es/getThemeVars.js +8 -6
  46. package/es/getTranslations.js +1 -78
  47. package/es/index.js +3 -1
  48. package/es/rce/AlertMessageArea.js +1 -1
  49. package/es/rce/DraggingBlocker.js +4 -2
  50. package/es/rce/KeyboardShortcutModal.js +1 -0
  51. package/es/rce/RCE.js +12 -11
  52. package/es/rce/RCEGlobals.js +12 -10
  53. package/es/rce/RCEVariants.js +27 -10
  54. package/es/rce/RCEWrapper.js +167 -386
  55. package/es/rce/RCEWrapperProps.js +8 -3
  56. package/es/rce/RceHtmlEditor.js +5 -8
  57. package/es/rce/ResizeHandle.js +3 -8
  58. package/es/rce/RestoreAutoSaveModal.js +1 -2
  59. package/es/rce/ShowOnFocusButton/index.js +0 -6
  60. package/es/rce/StatusBar.js +8 -37
  61. package/es/rce/alertHandler.js +1 -4
  62. package/es/rce/contentInsertion.js +35 -57
  63. package/es/rce/contentInsertionUtils.js +6 -8
  64. package/es/rce/contentRendering.js +7 -12
  65. package/es/rce/customEvents.js +1 -0
  66. package/es/rce/editorLanguage.js +22 -10
  67. package/es/rce/indicatorRegion.js +6 -5
  68. package/es/rce/normalizeLocale.js +5 -3
  69. package/es/rce/normalizeProps.js +3 -1
  70. package/es/rce/plugins/instructure-ui-icons/plugin.js +21 -3
  71. package/es/rce/plugins/instructure_color/clickCallback.js +84 -0
  72. package/es/rce/plugins/instructure_color/components/ColorPicker.js +299 -0
  73. package/es/rce/plugins/instructure_color/components/ColorPopup.js +68 -0
  74. package/es/rce/plugins/instructure_color/components/colorUtils.js +60 -0
  75. package/es/rce/plugins/instructure_color/plugin.js +40 -0
  76. package/es/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +10 -3
  77. package/es/rce/plugins/instructure_condensed_buttons/plugin.js +1 -0
  78. package/es/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +1 -2
  79. package/es/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +3 -2
  80. package/es/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +1 -0
  81. package/es/rce/plugins/instructure_condensed_buttons/ui/list-button.js +22 -15
  82. package/es/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +1 -2
  83. package/es/rce/plugins/instructure_documents/clickCallback.js +1 -0
  84. package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +1 -9
  85. package/es/rce/plugins/instructure_documents/components/Link.js +3 -18
  86. package/es/rce/plugins/instructure_documents/plugin.js +7 -14
  87. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +4 -2
  88. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +1 -2
  89. package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +12 -29
  90. package/es/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +11 -12
  91. package/es/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +4 -3
  92. package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +4 -2
  93. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +13 -7
  94. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +4 -7
  95. package/es/rce/plugins/instructure_equation/MathIcon/index.js +1 -1
  96. package/es/rce/plugins/instructure_equation/MathIcon/svgs.js +1 -1
  97. package/es/rce/plugins/instructure_equation/clickCallback.js +2 -5
  98. package/es/rce/plugins/instructure_equation/mathlive/index.js +1 -1
  99. package/es/rce/plugins/instructure_equation/plugin.js +7 -10
  100. package/es/rce/plugins/instructure_fullscreen/plugin.js +3 -6
  101. package/es/rce/plugins/instructure_html_view/clickCallback.js +1 -0
  102. package/es/rce/plugins/instructure_html_view/plugin.js +5 -4
  103. package/es/rce/plugins/instructure_icon_maker/clickCallback.js +2 -4
  104. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +1 -2
  105. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +1 -0
  106. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +1 -0
  107. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +1 -0
  108. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +1 -2
  109. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +25 -22
  110. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +7 -11
  111. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +27 -23
  112. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +5 -4
  113. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +11 -9
  114. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +1 -0
  115. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +5 -4
  116. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +1 -3
  117. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +7 -7
  118. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +1 -0
  119. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +27 -20
  120. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +1 -0
  121. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +1 -0
  122. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +1 -0
  123. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +4 -4
  124. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +1 -2
  125. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +1 -5
  126. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +1 -0
  127. package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +18 -33
  128. package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +4 -4
  129. package/es/rce/plugins/instructure_icon_maker/plugin.js +10 -14
  130. package/es/rce/plugins/instructure_icon_maker/reducers/imageSection.js +37 -38
  131. package/es/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +24 -24
  132. package/es/rce/plugins/instructure_icon_maker/registerEditToolbar.js +1 -3
  133. package/es/rce/plugins/instructure_icon_maker/svg/constants.js +4 -3
  134. package/es/rce/plugins/instructure_icon_maker/svg/font.js +3 -1
  135. package/es/rce/plugins/instructure_icon_maker/svg/image.js +69 -83
  136. package/es/rce/plugins/instructure_icon_maker/svg/index.js +11 -15
  137. package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
  138. package/es/rce/plugins/instructure_icon_maker/svg/settings.js +32 -39
  139. package/es/rce/plugins/instructure_icon_maker/svg/shape.js +1 -49
  140. package/es/rce/plugins/instructure_icon_maker/svg/text.js +7 -92
  141. package/es/rce/plugins/instructure_icon_maker/svg/utils.js +1 -7
  142. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +2 -6
  143. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +1 -15
  144. package/es/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +3 -4
  145. package/es/rce/plugins/instructure_icon_maker/utils/iconValidation.js +1 -1
  146. package/es/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +1 -0
  147. package/es/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +12 -13
  148. package/es/rce/plugins/instructure_image/ImageEmbedOptions.js +6 -24
  149. package/es/rce/plugins/instructure_image/ImageList/Image.js +1 -6
  150. package/es/rce/plugins/instructure_image/ImageList/index.js +1 -2
  151. package/es/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +7 -27
  152. package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +3 -16
  153. package/es/rce/plugins/instructure_image/Images/index.js +1 -3
  154. package/es/rce/plugins/instructure_image/clickCallback.js +1 -0
  155. package/es/rce/plugins/instructure_image/plugin.js +13 -18
  156. package/es/rce/plugins/instructure_links/clickCallback.js +1 -0
  157. package/es/rce/plugins/instructure_links/components/AccordionSection.js +1 -0
  158. package/es/rce/plugins/instructure_links/components/CollectionPanel.js +1 -3
  159. package/es/rce/plugins/instructure_links/components/Link.js +7 -19
  160. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +1 -21
  161. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +1 -4
  162. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +3 -20
  163. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +1 -12
  164. package/es/rce/plugins/instructure_links/components/LinkSet.js +4 -20
  165. package/es/rce/plugins/instructure_links/components/LinksPanel.js +1 -2
  166. package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -9
  167. package/es/rce/plugins/instructure_links/components/NoResults.js +1 -7
  168. package/es/rce/plugins/instructure_links/plugin.js +17 -40
  169. package/es/rce/plugins/instructure_links/validateURL.js +81 -36
  170. package/es/rce/plugins/instructure_media_embed/clickCallback.js +2 -5
  171. package/es/rce/plugins/instructure_media_embed/components/Embed.js +1 -0
  172. package/es/rce/plugins/instructure_media_embed/plugin.js +7 -3
  173. package/es/rce/plugins/instructure_paste/pasteMenuCommand.js +1 -5
  174. package/es/rce/plugins/instructure_paste/plugin.js +27 -29
  175. package/es/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +14 -53
  176. package/es/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +21 -49
  177. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +11 -42
  178. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +1 -2
  179. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +1 -1
  180. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +2 -10
  181. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +1 -2
  182. package/es/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +1 -0
  183. package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +2 -1
  184. package/es/rce/plugins/instructure_rce_external_tools/constants.js +28 -0
  185. package/es/rce/plugins/instructure_rce_external_tools/dialog-helper.js +19 -4
  186. package/es/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -2
  187. package/es/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +130 -136
  188. package/es/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +100 -95
  189. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +1 -0
  190. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +2 -19
  191. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +1 -14
  192. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +1 -6
  193. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +1 -9
  194. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +1 -1
  195. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -5
  196. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +18 -10
  197. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +4 -4
  198. package/es/rce/plugins/instructure_rce_external_tools/plugin.js +7 -16
  199. package/es/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +1 -1
  200. package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +1 -25
  201. package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +1 -4
  202. package/es/rce/plugins/instructure_record/MediaPanel/index.js +1 -9
  203. package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +8 -51
  204. package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +4 -17
  205. package/es/rce/plugins/instructure_record/clickCallback.js +7 -15
  206. package/es/rce/plugins/instructure_record/mediaTranslations.js +1 -0
  207. package/es/rce/plugins/instructure_record/plugin.js +11 -18
  208. package/es/rce/plugins/instructure_search_and_replace/clickCallback.js +2 -5
  209. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTray.js +20 -35
  210. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTrayController.js +3 -18
  211. package/es/rce/plugins/instructure_search_and_replace/getSelectionContext.js +2 -9
  212. package/es/rce/plugins/instructure_search_and_replace/plugin.js +1 -3
  213. package/es/rce/plugins/instructure_studio_media_options/plugin.js +1 -1
  214. package/es/rce/plugins/instructure_wordcount/clickCallback.js +2 -5
  215. package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +1 -4
  216. package/es/rce/plugins/instructure_wordcount/plugin.js +1 -0
  217. package/es/rce/plugins/instructure_wordcount/utils/countContent.js +1 -8
  218. package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +1 -0
  219. package/es/rce/plugins/shared/CanvasContentTray.js +43 -63
  220. package/es/rce/plugins/shared/CheckerboardStyling.js +1 -1
  221. package/es/rce/plugins/shared/ColorInput.js +5 -14
  222. package/es/rce/plugins/shared/ConditionalTooltip.js +1 -0
  223. package/es/rce/plugins/shared/ContentSelection.js +17 -58
  224. package/es/rce/plugins/shared/DimensionUtils.js +1 -8
  225. package/es/rce/plugins/shared/DimensionsInput/DimensionInput.js +6 -6
  226. package/es/rce/plugins/shared/DimensionsInput/index.js +37 -15
  227. package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.js +5 -29
  228. package/es/rce/plugins/shared/ErrorBoundary.js +2 -5
  229. package/es/rce/plugins/shared/EventUtils.js +1 -3
  230. package/es/rce/plugins/shared/Filter.js +8 -38
  231. package/es/rce/plugins/shared/FixedContentTray.js +3 -3
  232. package/es/rce/plugins/shared/ImageCropper/DirectionRegion.js +1 -8
  233. package/es/rce/plugins/shared/ImageCropper/Modal.js +4 -7
  234. package/es/rce/plugins/shared/ImageCropper/Preview.js +7 -11
  235. package/es/rce/plugins/shared/ImageCropper/constants.js +1 -0
  236. package/es/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +2 -5
  237. package/es/rce/plugins/shared/ImageCropper/controls/ResetControls.js +1 -0
  238. package/es/rce/plugins/shared/ImageCropper/controls/RotationControls.js +1 -10
  239. package/es/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +1 -0
  240. package/es/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +1 -11
  241. package/es/rce/plugins/shared/ImageCropper/controls/index.js +1 -0
  242. package/es/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +3 -16
  243. package/es/rce/plugins/shared/ImageCropper/controls/utils.js +1 -2
  244. package/es/rce/plugins/shared/ImageCropper/imageCropUtils.js +1 -10
  245. package/es/rce/plugins/shared/ImageCropper/index.js +1 -0
  246. package/es/rce/plugins/shared/ImageCropper/propTypes.js +1 -0
  247. package/es/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +15 -14
  248. package/es/rce/plugins/shared/ImageCropper/shape.js +1 -0
  249. package/es/rce/plugins/shared/ImageCropper/svg/index.js +1 -2
  250. package/es/rce/plugins/shared/ImageCropper/svg/shape.js +1 -17
  251. package/es/rce/plugins/shared/ImageCropper/svg/utils.js +1 -0
  252. package/es/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +19 -46
  253. package/es/rce/plugins/shared/ImageCropper/useMouseWheel.js +8 -10
  254. package/es/rce/plugins/shared/ImageOptionsForm.js +1 -2
  255. package/es/rce/plugins/shared/LinkDisplay.js +1 -2
  256. package/es/rce/plugins/shared/PreviewIcon.js +1 -6
  257. package/es/rce/plugins/shared/Previewable.js +1 -0
  258. package/es/rce/plugins/shared/RceFileBrowser.js +5 -7
  259. package/es/rce/plugins/shared/StoreContext.js +1 -2
  260. package/es/rce/plugins/shared/StudioLtiSupportUtils.js +10 -6
  261. package/es/rce/plugins/shared/UnknownFileTypePanel.js +1 -0
  262. package/es/rce/plugins/shared/Upload/CanvasContentPanel.js +13 -18
  263. package/es/rce/plugins/shared/Upload/CategoryProcessor.js +1 -1
  264. package/es/rce/plugins/shared/Upload/ComputerPanel.js +8 -26
  265. package/es/rce/plugins/shared/Upload/PanelFilter.js +3 -12
  266. package/es/rce/plugins/shared/Upload/SvgCategoryProcessor.js +4 -3
  267. package/es/rce/plugins/shared/Upload/UploadFile.js +15 -18
  268. package/es/rce/plugins/shared/Upload/UploadFileModal.js +9 -25
  269. package/es/rce/plugins/shared/Upload/UrlPanel.js +1 -0
  270. package/es/rce/plugins/shared/Upload/UsageRightsSelectBox.js +7 -12
  271. package/es/rce/plugins/shared/Upload/doFileUpload.js +4 -6
  272. package/es/rce/plugins/shared/Upload/index.js +1 -0
  273. package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +1 -3
  274. package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +6 -24
  275. package/es/rce/plugins/shared/ai_tools/aiicons.js +1 -0
  276. package/es/rce/plugins/shared/ai_tools/index.js +1 -0
  277. package/es/rce/plugins/shared/buildDownloadUrl.js +0 -2
  278. package/es/rce/plugins/shared/canvasContentUtils.js +6 -9
  279. package/es/rce/plugins/shared/compressionUtils.js +1 -8
  280. package/es/rce/plugins/shared/dateUtils.js +1 -1
  281. package/es/rce/plugins/shared/do-fetch-api-effect/defaultFetchOptions.js +4 -2
  282. package/es/rce/plugins/shared/do-fetch-api-effect/doFetchApi.js +7 -10
  283. package/es/rce/plugins/shared/do-fetch-api-effect/index.js +1 -0
  284. package/es/rce/plugins/shared/do-fetch-api-effect/parse-link-header.js +6 -20
  285. package/es/rce/plugins/shared/do-fetch-api-effect/query-string-encoding.js +5 -3
  286. package/es/rce/plugins/shared/fileShape.js +4 -9
  287. package/es/rce/plugins/shared/fileTypeUtils.js +32 -42
  288. package/es/rce/plugins/shared/fileUtils.js +1 -2
  289. package/es/rce/plugins/shared/linkUtils.js +1 -16
  290. package/es/rce/plugins/shared/round.js +1 -0
  291. package/es/rce/plugins/shared/trayUtils.js +4 -3
  292. package/es/rce/plugins/shared/useDataUrl.js +9 -9
  293. package/es/rce/plugins/shared/useFilterSettings.js +3 -3
  294. package/es/rce/plugins/tinymce-a11y-checker/components/ColorField.js +2 -6
  295. package/es/rce/plugins/tinymce-a11y-checker/components/checker.js +5 -63
  296. package/es/rce/plugins/tinymce-a11y-checker/components/color-picker.js +1 -2
  297. package/es/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +1 -0
  298. package/es/rce/plugins/tinymce-a11y-checker/components/pointer.js +1 -0
  299. package/es/rce/plugins/tinymce-a11y-checker/node-checker.js +1 -6
  300. package/es/rce/plugins/tinymce-a11y-checker/plugin.js +4 -7
  301. package/es/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +3 -26
  302. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +9 -38
  303. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +1 -5
  304. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +1 -2
  305. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +1 -1
  306. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +1 -2
  307. package/es/rce/plugins/tinymce-a11y-checker/rules/index.js +1 -0
  308. package/es/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +1 -4
  309. package/es/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +5 -24
  310. package/es/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +1 -3
  311. package/es/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +1 -6
  312. package/es/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +1 -3
  313. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +1 -2
  314. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header.js +1 -9
  315. package/es/rce/plugins/tinymce-a11y-checker/utils/colors.js +1 -0
  316. package/es/rce/plugins/tinymce-a11y-checker/utils/describe.js +1 -7
  317. package/es/rce/plugins/tinymce-a11y-checker/utils/dom.js +1 -26
  318. package/es/rce/plugins/tinymce-a11y-checker/utils/indicate.js +16 -15
  319. package/es/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +7 -10
  320. package/es/rce/plugins/tinymce-a11y-checker/utils/strings.js +1 -4
  321. package/es/rce/root.js +9 -8
  322. package/es/rce/sanitizePlugins.js +1 -3
  323. package/es/rce/style.js +1 -4
  324. package/es/rce/tinyRCE.js +13 -9
  325. package/es/rce/tinymce.oxide.content.min.css.js +1 -0
  326. package/es/rce/tinymce.oxide.skin.min.css.js +1 -0
  327. package/es/rce/transformContent.js +8 -10
  328. package/es/rce/types.js +1 -0
  329. package/es/rce/userOS.js +1 -1
  330. package/es/rce/wrapInitCb.js +50 -43
  331. package/es/rcs/api.js +61 -116
  332. package/es/rcs/buildError.js +5 -17
  333. package/es/rcs/fake.js +4 -13
  334. package/es/sidebar/actions/all_files.js +2 -0
  335. package/es/sidebar/actions/data.js +4 -7
  336. package/es/sidebar/actions/documents.js +9 -6
  337. package/es/sidebar/actions/files.js +3 -6
  338. package/es/sidebar/actions/filter.js +1 -0
  339. package/es/sidebar/actions/flickr.js +1 -1
  340. package/es/sidebar/actions/images.js +12 -11
  341. package/es/sidebar/actions/links.js +1 -0
  342. package/es/sidebar/actions/media.js +12 -10
  343. package/es/sidebar/actions/session.js +1 -3
  344. package/es/sidebar/actions/ui.js +1 -0
  345. package/es/sidebar/actions/upload.js +14 -39
  346. package/es/sidebar/containers/Sidebar.js +1 -2
  347. package/es/sidebar/containers/sidebarHandlers.js +3 -1
  348. package/es/sidebar/dragHtml.js +5 -3
  349. package/es/sidebar/reducers/all_files.js +4 -3
  350. package/es/sidebar/reducers/collection.js +12 -13
  351. package/es/sidebar/reducers/collections.js +5 -5
  352. package/es/sidebar/reducers/documents.js +6 -13
  353. package/es/sidebar/reducers/files.js +3 -3
  354. package/es/sidebar/reducers/filter.js +1 -8
  355. package/es/sidebar/reducers/flickr.js +9 -9
  356. package/es/sidebar/reducers/folder.js +15 -15
  357. package/es/sidebar/reducers/folders.js +3 -3
  358. package/es/sidebar/reducers/images.js +3 -13
  359. package/es/sidebar/reducers/index.js +3 -1
  360. package/es/sidebar/reducers/media.js +6 -13
  361. package/es/sidebar/reducers/newPageLinkExpanded.js +1 -2
  362. package/es/sidebar/reducers/noop.js +1 -0
  363. package/es/sidebar/reducers/rootFolderId.js +1 -2
  364. package/es/sidebar/reducers/session.js +3 -3
  365. package/es/sidebar/reducers/ui.js +3 -16
  366. package/es/sidebar/reducers/upload.js +8 -40
  367. package/es/sidebar/store/configureStore.js +1 -0
  368. package/es/sidebar/store/initialState.js +13 -24
  369. package/es/translations/locales/ab.js +1 -0
  370. package/es/translations/locales/ar.js +67 -9
  371. package/es/translations/locales/ca.js +67 -9
  372. package/es/translations/locales/cs.js +1 -0
  373. package/es/translations/locales/cs_CZ.js +1 -0
  374. package/es/translations/locales/cy.js +67 -9
  375. package/es/translations/locales/da-x-k12.js +67 -9
  376. package/es/translations/locales/da.js +67 -9
  377. package/es/translations/locales/da_DK.js +1 -0
  378. package/es/translations/locales/de.js +67 -9
  379. package/es/translations/locales/el.js +4 -0
  380. package/es/translations/locales/en-AU-x-unimelb.js +67 -9
  381. package/es/translations/locales/en-GB-x-ukhe.js +67 -9
  382. package/es/translations/locales/en.js +72 -8
  383. package/es/translations/locales/en_AU.js +67 -9
  384. package/es/translations/locales/en_CA.js +67 -9
  385. package/es/translations/locales/en_CY.js +67 -9
  386. package/es/translations/locales/en_GB.js +67 -9
  387. package/es/translations/locales/en_NZ.js +1 -0
  388. package/es/translations/locales/en_SE.js +1 -0
  389. package/es/translations/locales/en_US.js +1 -0
  390. package/es/translations/locales/es.js +67 -9
  391. package/es/translations/locales/es_ES.js +67 -9
  392. package/es/translations/locales/es_GT.js +1 -0
  393. package/es/translations/locales/fa_IR.js +7 -0
  394. package/es/translations/locales/fi.js +67 -9
  395. package/es/translations/locales/fr.js +67 -9
  396. package/es/translations/locales/fr_CA.js +68 -10
  397. package/es/translations/locales/ga.js +5 -13
  398. package/es/translations/locales/he.js +7 -0
  399. package/es/translations/locales/hi.js +67 -9
  400. package/es/translations/locales/ht.js +67 -9
  401. package/es/translations/locales/hu.js +7 -6
  402. package/es/translations/locales/hu_HU.js +1 -0
  403. package/es/translations/locales/hy.js +1 -0
  404. package/es/translations/locales/id.js +67 -9
  405. package/es/translations/locales/id_ID.js +1 -0
  406. package/es/translations/locales/is.js +67 -9
  407. package/es/translations/locales/it.js +67 -9
  408. package/es/translations/locales/ja.js +67 -9
  409. package/es/translations/locales/ko.js +1 -0
  410. package/es/translations/locales/ko_KR.js +1 -0
  411. package/es/translations/locales/lt.js +1 -0
  412. package/es/translations/locales/lt_LT.js +1 -0
  413. package/es/translations/locales/mi.js +67 -9
  414. package/es/translations/locales/mn_MN.js +1 -0
  415. package/es/translations/locales/ms.js +67 -9
  416. package/es/translations/locales/nb-x-k12.js +67 -9
  417. package/es/translations/locales/nb.js +67 -9
  418. package/es/translations/locales/nl.js +67 -9
  419. package/es/translations/locales/nl_NL.js +1 -0
  420. package/es/translations/locales/nn.js +7 -6
  421. package/es/translations/locales/pl.js +67 -9
  422. package/es/translations/locales/pt.js +67 -9
  423. package/es/translations/locales/pt_BR.js +67 -9
  424. package/es/translations/locales/ro.js +1 -0
  425. package/es/translations/locales/ru.js +67 -9
  426. package/es/translations/locales/se.js +1 -0
  427. package/es/translations/locales/sl.js +67 -9
  428. package/es/translations/locales/sv-x-k12.js +67 -9
  429. package/es/translations/locales/sv.js +67 -9
  430. package/es/translations/locales/sv_SE.js +1 -0
  431. package/es/translations/locales/tg.js +1 -0
  432. package/es/translations/locales/th.js +67 -9
  433. package/es/translations/locales/th_TH.js +1 -0
  434. package/es/translations/locales/tl_PH.js +1 -0
  435. package/es/translations/locales/tr.js +7 -0
  436. package/es/translations/locales/uk_UA.js +7 -0
  437. package/es/translations/locales/vi.js +67 -9
  438. package/es/translations/locales/vi_VN.js +1 -0
  439. package/es/translations/locales/zh-Hans.js +67 -9
  440. package/es/translations/locales/zh-Hant.js +67 -9
  441. package/es/translations/locales/zh.js +67 -9
  442. package/es/translations/locales/zh_HK.js +67 -9
  443. package/es/translations/locales/zh_TW.Big5.js +1 -0
  444. package/es/translations/locales/zh_TW.js +1 -0
  445. package/es/translations/tinymce/ar_SA.js +1 -0
  446. package/es/translations/tinymce/fi.js +1 -0
  447. package/es/translations/tinymce/ga.js +1 -0
  448. package/es/translations/tinymce/id.js +1 -0
  449. package/es/translations/tinymce/ru.js +1 -0
  450. package/es/translations/tinymce/ru_RU.js +1 -0
  451. package/es/translations/tinymce/sl.js +1 -0
  452. package/es/translations/tinymce/sr.js +1 -0
  453. package/es/translations/tinymce/th.js +1 -0
  454. package/es/translations/tinymce/uk_UA.js +1 -0
  455. package/es/translations/tinymce/vi_VN.js +1 -0
  456. package/es/util/TypedDict.js +4 -2
  457. package/es/util/encrypted-storage.js +3 -13
  458. package/es/util/file-url-util.js +1 -6
  459. package/es/util/fullscreenHelpers.js +4 -1
  460. package/es/util/instui-icon-helper.js +4 -3
  461. package/es/util/loadingPlaceholder.js +38 -39
  462. package/es/util/simpleCache.js +0 -3
  463. package/es/util/string-util.js +1 -1
  464. package/es/util/textarea-editing-util.js +3 -7
  465. package/es/util/tinymce-plugin-util.js +0 -5
  466. package/es/util/url-util.js +16 -25
  467. package/eslint.config.js +239 -0
  468. package/jest.config.js +1 -1
  469. package/package.json +77 -82
  470. package/scripts/build-canvas +2 -1
  471. package/scripts/build.js +4 -4
  472. package/scripts/publish_to_npm.sh +1 -1
  473. package/testcafe/RCEWrapper.test.js +0 -1
  474. package/testcafe/StatusBar.test.js +0 -1
  475. package/testcafe/axe.test.js +3 -4
  476. package/testcafe/enhanceUserContent.test.js +0 -1
  477. package/tsconfig.json +20 -15
  478. package/.eslintrc +0 -45
  479. package/.prettierignore +0 -6
  480. package/es/common/components/FileTree/File.js +0 -64
  481. package/es/common/components/FileTree/Folder.js +0 -110
  482. package/es/common/components/FileTree/index.js +0 -84
  483. package/es/common/components/FileTree/styles.js +0 -72
  484. package/es/common/components/Loading.js +0 -83
@@ -15,6 +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
+
18
19
  import React, { useRef } from 'react';
19
20
  import { func, oneOf, shape, string } from 'prop-types';
20
21
  import { contentTrayDocumentShape } from '../../shared/fileShape';
@@ -24,23 +25,18 @@ import { View } from '@instructure/ui-view';
24
25
  import Link from '../../instructure_documents/components/Link';
25
26
  import { LoadMoreButton, LoadingIndicator, LoadingStatus, useIncrementalLoading } from '../../../../common/incremental-loading';
26
27
  const PENDING_MEDIA_ENTRY_ID = 'maybe';
27
-
28
28
  function hasFiles(media) {
29
29
  return media.files.length > 0;
30
30
  }
31
-
32
31
  function isEmpty(media) {
33
32
  return !hasFiles(media) && !media.hasMore && !media.isLoading;
34
33
  }
35
-
36
34
  function renderLinks(files, handleClick, lastItemRef) {
37
35
  return files.map((f, index) => {
38
36
  let focusRef = null;
39
-
40
37
  if (index === files.length - 1) {
41
38
  focusRef = lastItemRef;
42
39
  }
43
-
44
40
  return /*#__PURE__*/React.createElement(Link, Object.assign({
45
41
  key: f.id
46
42
  }, f, {
@@ -51,7 +47,6 @@ function renderLinks(files, handleClick, lastItemRef) {
51
47
  }));
52
48
  });
53
49
  }
54
-
55
50
  function renderLoadingError(_error) {
56
51
  return /*#__PURE__*/React.createElement(View, {
57
52
  as: "div",
@@ -61,7 +56,6 @@ function renderLoadingError(_error) {
61
56
  color: "danger"
62
57
  }, formatMessage('Loading failed.')));
63
58
  }
64
-
65
59
  export default function MediaPanel(props) {
66
60
  const {
67
61
  fetchInitialMedia,
@@ -89,11 +83,9 @@ export default function MediaPanel(props) {
89
83
  sortBy,
90
84
  searchString
91
85
  });
92
-
93
86
  const handleFileClick = file => {
94
87
  props.onMediaEmbed(file);
95
88
  };
96
-
97
89
  return /*#__PURE__*/React.createElement(View, {
98
90
  as: "div",
99
91
  "data-testid": "instructure_links-MediaPanel"
@@ -15,6 +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
+
18
19
  import React from 'react';
19
20
  import ReactDOM from 'react-dom';
20
21
  import bridge from '../../../../bridge';
@@ -27,7 +28,6 @@ export const VIDEO_SIZE_DEFAULT = {
27
28
  height: '225px',
28
29
  width: '400px'
29
30
  }; // AKA "LARGE"
30
-
31
31
  export const AUDIO_PLAYER_SIZE = {
32
32
  width: '320px',
33
33
  height: '14.25rem'
@@ -39,77 +39,57 @@ export default class TrayController {
39
39
  this._shouldOpen = false;
40
40
  this._renderId = 0;
41
41
  }
42
-
43
42
  get $container() {
44
43
  let $container = document.getElementById(CONTAINER_ID);
45
-
46
44
  if ($container == null) {
47
45
  $container = document.createElement('div');
48
46
  $container.id = CONTAINER_ID;
49
47
  document.body.appendChild($container);
50
48
  }
51
-
52
49
  return $container;
53
50
  }
54
-
55
51
  get isOpen() {
56
52
  return this._isOpen;
57
53
  }
58
-
59
54
  showTrayForEditor(editor) {
60
55
  this._editor = editor;
61
56
  this.$videoContainer = findMediaPlayerIframe(editor.selection.getNode());
62
57
  this._shouldOpen = true;
63
-
64
58
  if (bridge.focusedEditor) {
65
59
  // Dismiss any content trays that may already be open
66
60
  bridge.hideTrays();
67
61
  }
68
-
69
62
  const trayProps = bridge.trayProps.get(editor);
70
-
71
63
  this._renderTray(trayProps);
72
64
  }
73
-
74
65
  hideTrayForEditor(editor) {
75
66
  if (this._editor === editor) {
76
67
  this._dismissTray();
77
68
  }
78
69
  }
79
-
80
70
  _applyVideoOptions(videoOptions) {
81
71
  var _this$$videoContainer;
82
-
83
72
  if (((_this$$videoContainer = this.$videoContainer) === null || _this$$videoContainer === void 0 ? void 0 : _this$$videoContainer.tagName) === 'IFRAME') {
84
73
  const $tinymceIframeShim = this.$videoContainer.parentElement;
85
-
86
74
  if (videoOptions.displayAs === 'embed') {
87
75
  var _videoOptions$subtitl;
88
-
89
- const isVertical = videoOptions.appliedHeight > videoOptions.appliedWidth; // player v5 requires more space for the CC button
76
+ const isVertical = videoOptions.appliedHeight > videoOptions.appliedWidth;
77
+ // player v5 requires more space for the CC button
90
78
  // TODO: remove when using v7
91
-
92
79
  const minWidth = (_videoOptions$subtitl = videoOptions.subtitles) !== null && _videoOptions$subtitl !== void 0 && _videoOptions$subtitl.length ? 400 : 320;
93
80
  const styl = {
94
81
  height: `${videoOptions.appliedHeight}px`,
95
82
  width: `${Math.max(minWidth, isVertical ? videoOptions.appliedHeight : videoOptions.appliedWidth)}px`
96
83
  };
97
-
98
84
  this._editor.dom.setStyles($tinymceIframeShim, styl);
99
-
100
85
  this._editor.dom.setStyles(this.$videoContainer, styl);
101
-
102
86
  const title = videoOptions.titleText;
103
-
104
87
  this._editor.dom.setAttrib($tinymceIframeShim, 'data-mce-p-title', title);
105
-
106
88
  this._editor.dom.setAttrib($tinymceIframeShim, 'data-mce-p-data-titleText', videoOptions.titleText);
107
-
108
89
  this._editor.dom.setAttrib(this.$videoContainer, 'title', title);
90
+ this._editor.dom.setAttrib(this.$videoContainer, 'data-titleText', videoOptions.titleText);
109
91
 
110
- this._editor.dom.setAttrib(this.$videoContainer, 'data-titleText', videoOptions.titleText); // tell tinymce so the context toolbar resets
111
-
112
-
92
+ // tell tinymce so the context toolbar resets
113
93
  this._editor.fire('ObjectResized', {
114
94
  target: this.$videoContainer,
115
95
  width: videoOptions.appliedWidth,
@@ -117,37 +97,29 @@ export default class TrayController {
117
97
  });
118
98
  } else {
119
99
  const href = this._editor.dom.getAttrib($tinymceIframeShim, 'data-mce-p-src');
120
-
121
100
  const title = videoOptions.titleText || this._editor.dom.getAttrib(this.$videoContainer, 'title');
122
-
123
101
  const link = document.createElement('a');
124
102
  link.setAttribute('href', href);
125
103
  link.setAttribute('target', '_blank');
126
104
  link.setAttribute('rel', 'noreferrer noopener');
127
105
  link.textContent = title;
128
-
129
106
  this._editor.dom.replace(link, $tinymceIframeShim);
130
-
131
107
  this._editor.selection.select(link);
132
-
133
108
  this.$videoContainer = null;
134
109
  }
135
-
136
110
  const data = {
137
111
  media_object_id: videoOptions.media_object_id,
138
112
  title: videoOptions.titleText,
139
113
  subtitles: videoOptions.subtitles
140
114
  };
141
-
142
115
  if (RCEGlobals.getFeatures().media_links_use_attachment_id) {
143
116
  data.attachment_id = videoOptions.attachment_id;
144
- } // If the video just edited came from a file uploaded to canvas
117
+ }
118
+
119
+ // If the video just edited came from a file uploaded to canvas
145
120
  // and not notorious, we probably don't have a media_object_id.
146
121
  // If not, we can't update the MediaObject in the canvas db.
147
-
148
-
149
122
  const hasMediaId = videoOptions.media_object_id && videoOptions.media_object_id !== 'undefined' || data.attachment_id && data.attachment_id !== 'undefined';
150
-
151
123
  if (hasMediaId && !videoOptions.editLocked) {
152
124
  videoOptions.updateMediaObject(data).then(_r => {
153
125
  if (this.$videoContainer && videoOptions.displayAs === 'embed') {
@@ -162,35 +134,25 @@ export default class TrayController {
162
134
  });
163
135
  }
164
136
  }
165
-
166
137
  this._dismissTray();
167
138
  }
168
-
169
139
  _dismissTray() {
170
140
  if (this.$videoContainer) {
171
141
  var _this$_editor, _this$_editor$selecti;
172
-
173
142
  (_this$_editor = this._editor) === null || _this$_editor === void 0 ? void 0 : (_this$_editor$selecti = _this$_editor.selection) === null || _this$_editor$selecti === void 0 ? void 0 : _this$_editor$selecti.select(this.$videoContainer);
174
143
  }
175
-
176
144
  this._shouldOpen = false;
177
-
178
145
  this._renderTray();
179
-
180
146
  this._editor = null;
181
147
  }
182
-
183
148
  requestSubtitlesFromIframe(cb) {
184
149
  var _this$$videoContainer2, _this$$videoContainer3;
185
-
186
150
  if (!bridge.canvasOrigin) return;
187
151
  this._subtitleListener = new AbortController();
188
152
  window.addEventListener('message', event => {
189
153
  var _event$data;
190
-
191
154
  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') {
192
155
  var _event$data2;
193
-
194
156
  cb(event === null || event === void 0 ? void 0 : (_event$data2 = event.data) === null || _event$data2 === void 0 ? void 0 : _event$data2.payload);
195
157
  }
196
158
  }, {
@@ -200,10 +162,8 @@ export default class TrayController {
200
162
  subject: 'media_tracks_request'
201
163
  }, bridge.canvasOrigin);
202
164
  }
203
-
204
165
  _renderTray(trayProps) {
205
166
  let vo = {};
206
-
207
167
  if (this._shouldOpen) {
208
168
  /*
209
169
  * When the tray is being opened again, it should be rendered fresh
@@ -213,7 +173,6 @@ export default class TrayController {
213
173
  this._renderId++;
214
174
  vo = asVideoElement(this.$videoContainer) || {};
215
175
  }
216
-
217
176
  const element = /*#__PURE__*/React.createElement(VideoOptionsTray, {
218
177
  id: "video-options-tray",
219
178
  key: this._renderId,
@@ -223,7 +182,6 @@ export default class TrayController {
223
182
  },
224
183
  onExited: () => {
225
184
  var _this$_subtitleListen;
226
-
227
185
  bridge.focusActiveEditor(false);
228
186
  this._isOpen = false;
229
187
  (_this$_subtitleListen = this._subtitleListener) === null || _this$_subtitleListen === void 0 ? void 0 : _this$_subtitleListen.abort();
@@ -239,5 +197,4 @@ export default class TrayController {
239
197
  });
240
198
  ReactDOM.render(element, this.$container);
241
199
  }
242
-
243
200
  }
@@ -40,9 +40,7 @@ import DimensionsInput, { useDimensionsState } from '../../shared/DimensionsInpu
40
40
  import { getTrayHeight } from '../../shared/trayUtils';
41
41
  import { instuiPopupMountNode } from '../../../../util/fullscreenHelpers';
42
42
  import { parsedStudioOptionsPropType } from '../../shared/StudioLtiSupportUtils';
43
-
44
43
  const getLiveRegion = () => document.getElementById('flash_screenreader_holder');
45
-
46
44
  export default function VideoOptionsTray(_ref) {
47
45
  let {
48
46
  videoOptions,
@@ -54,7 +52,8 @@ export default function VideoOptionsTray(_ref) {
54
52
  onEntered = null,
55
53
  onExited = null,
56
54
  id = 'video-options-tray',
57
- studioOptions = null
55
+ studioOptions = null,
56
+ forBlockEditorUse = false
58
57
  } = _ref;
59
58
  const {
60
59
  naturalHeight,
@@ -74,8 +73,8 @@ export default function VideoOptionsTray(_ref) {
74
73
  const [editLocked, setEditLocked] = useState(null);
75
74
  const [loading, setLoading] = useState(true);
76
75
  const isStudio = !!studioOptions;
77
- const showDisplayOptions = !isStudio || studioOptions.convertibleToLink;
78
- const showSizeControls = !isStudio || studioOptions.resizable;
76
+ const showDisplayOptions = (!isStudio || studioOptions.convertibleToLink) && !forBlockEditorUse;
77
+ const showSizeControls = (!isStudio || studioOptions.resizable) && !forBlockEditorUse;
79
78
  const dimensionsState = useDimensionsState(videoOptions, {
80
79
  minHeight,
81
80
  minWidth,
@@ -97,19 +96,15 @@ export default function VideoOptionsTray(_ref) {
97
96
  useEffect(() => {
98
97
  if (subtitles.length === 0) requestSubtitlesFromIframe(setSubtitles);
99
98
  }, []);
100
-
101
99
  function handleTitleTextChange(event) {
102
100
  setTitleText(event.target.value);
103
101
  }
104
-
105
102
  function handleDisplayAsChange(event) {
106
103
  event.target.focus();
107
104
  setDisplayAs(event.target.value);
108
105
  }
109
-
110
106
  function handleVideoSizeChange(event, selectedOption) {
111
107
  setVideoSize(selectedOption.value);
112
-
113
108
  if (selectedOption.value === CUSTOM) {
114
109
  setVideoHeight(currentHeight);
115
110
  setVideoWidth(currentWidth);
@@ -122,21 +117,17 @@ export default function VideoOptionsTray(_ref) {
122
117
  setVideoWidth(width);
123
118
  }
124
119
  }
125
-
126
120
  function handleUpdateSubtitles(new_subtitles) {
127
121
  setSubtitles(new_subtitles);
128
122
  }
129
-
130
123
  function handleSave(event, updateMediaObject) {
131
124
  event.preventDefault();
132
125
  let appliedHeight = videoHeight;
133
126
  let appliedWidth = videoWidth;
134
-
135
127
  if (videoSize === CUSTOM) {
136
128
  appliedHeight = dimensionsState.height;
137
129
  appliedWidth = dimensionsState.width;
138
130
  }
139
-
140
131
  onSave({
141
132
  media_object_id: videoOptions.id,
142
133
  attachment_id: videoOptions.attachmentId,
@@ -149,7 +140,6 @@ export default function VideoOptionsTray(_ref) {
149
140
  editLocked
150
141
  });
151
142
  }
152
-
153
143
  const tooltipText = formatMessage('Used by screen readers to describe the video');
154
144
  const textAreaLabel = /*#__PURE__*/React.createElement(Flex, {
155
145
  alignItems: "center"
@@ -171,7 +161,6 @@ export default function VideoOptionsTray(_ref) {
171
161
  withBorder: false
172
162
  }))));
173
163
  const messagesForSize = [];
174
-
175
164
  if (videoSize !== CUSTOM) {
176
165
  messagesForSize.push({
177
166
  text: formatMessage('{width} x {height}px', {
@@ -181,7 +170,6 @@ export default function VideoOptionsTray(_ref) {
181
170
  type: 'hint'
182
171
  });
183
172
  }
184
-
185
173
  const saveDisabled = displayAs === 'embed' && (titleText === '' || videoSize === CUSTOM && !dimensionsState.isValid);
186
174
  return /*#__PURE__*/React.createElement(StoreProvider, trayProps, contentProps => /*#__PURE__*/React.createElement(Tray, {
187
175
  key: "video-options-tray",
@@ -305,7 +293,6 @@ export default function VideoOptionsTray(_ref) {
305
293
  file: {
306
294
  name: st.language || st.locale
307
295
  } // this is an artifact of ClosedCaptionCreatorRow's inards
308
-
309
296
  })),
310
297
  uploadMediaTranslations: Bridge.uploadMediaTranslations,
311
298
  userLocale: Bridge.userLocale,
@@ -15,6 +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
+
18
19
  import React from 'react';
19
20
  import ReactDOM from 'react-dom';
20
21
  import Bridge from '../../../bridge';
@@ -25,23 +26,18 @@ import { instuiPopupMountNode } from '../../../util/fullscreenHelpers';
25
26
  import RCEGlobals from '../../RCEGlobals';
26
27
  export const handleUpload = (error, uploadData, onUploadComplete, uploadBookmark) => {
27
28
  let err_msg = error && Bridge.uploadMediaTranslations.UploadMediaStrings.UPLOADING_ERROR;
28
-
29
29
  if ((error === null || error === void 0 ? void 0 : error.name) === 'FileSizeError') {
30
30
  err_msg = formatMessage('Size of caption file is greater than the maximum {max} kb allowed file size.', {
31
31
  max: error.maxBytes / 1000
32
32
  });
33
33
  }
34
-
35
34
  const editorComponent = Bridge.activeEditor();
36
35
  let newBookmark;
37
-
38
36
  if (uploadBookmark) {
39
37
  newBookmark = editorComponent.editor.selection.getBookmark(2, true);
40
38
  editorComponent.editor.selection.moveToBookmark(uploadBookmark);
41
39
  }
42
-
43
40
  onUploadComplete(err_msg, uploadData);
44
-
45
41
  if (newBookmark) {
46
42
  editorComponent.editor.selection.moveToBookmark(newBookmark);
47
43
  }
@@ -50,38 +46,34 @@ export default function (ed, document) {
50
46
  return import('@instructure/canvas-media').then(CanvasMedia => {
51
47
  const UploadMedia = CanvasMedia.default;
52
48
  let container = document.querySelector('.canvas-rce-media-upload');
53
-
54
49
  if (!container) {
55
50
  container = document.createElement('div');
56
51
  container.className = 'canvas-rce-media-upload';
57
52
  document.body.appendChild(container);
58
53
  }
59
-
60
54
  const handleDismiss = () => {
61
55
  ReactDOM.unmountComponentAtNode(container);
62
56
  ed.focus(false);
63
- }; // We need to have a place to store the bookmark location
64
- // while the upload happens.
57
+ };
65
58
 
59
+ // We need to have a place to store the bookmark location
60
+ // while the upload happens.
61
+ let uploadBookmark = null;
66
62
 
67
- let uploadBookmark = null; // redux's activateMediaUpload action does the image placeholder,
63
+ // redux's activateMediaUpload action does the image placeholder,
68
64
  // but it also does the upload. We need to separate them if we
69
65
  // want to stay within the redux approach
70
-
71
66
  const handleStartUpload = fileProps => {
72
67
  var _editorComponent$edit;
73
-
74
68
  Bridge.focusEditor(ed.rceWrapper);
75
69
  const editorComponent = Bridge.activeEditor();
76
70
  uploadBookmark = editorComponent === null || editorComponent === void 0 ? void 0 : (_editorComponent$edit = editorComponent.editor) === null || _editorComponent$edit === void 0 ? void 0 : _editorComponent$edit.selection.getBookmark(2, true);
77
71
  Bridge.insertImagePlaceholder(fileProps);
78
72
  handleDismiss();
79
73
  };
80
-
81
74
  const trayProps = Bridge.trayProps.get(ed);
82
- ReactDOM.render( /*#__PURE__*/React.createElement(StoreProvider, trayProps, contentProps => {
75
+ ReactDOM.render(/*#__PURE__*/React.createElement(StoreProvider, trayProps, contentProps => {
83
76
  var _RCEGlobals$getFeatur;
84
-
85
77
  return /*#__PURE__*/React.createElement(UploadMedia, {
86
78
  "data-mce-component": true,
87
79
  rcsConfig: {
@@ -15,6 +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
+
18
19
  // IMPORTANT!
19
20
  // Do not import this file directly, but get it via Bridge.uploadMediaTranslations
20
21
  // This is because the locale, which is lazy imported, has to be loaded and
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  /*
4
2
  * Copyright (C) 2018 - present Instructure, Inc.
5
3
  *
@@ -17,6 +15,7 @@
17
15
  * You should have received a copy of the GNU Affero General Public License along
18
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
19
17
  */
18
+
20
19
  import clickCallback from './clickCallback';
21
20
  import bridge from '../../../bridge';
22
21
  import formatMessage from '../../../format-message';
@@ -31,10 +30,10 @@ const COURSE_PLUGIN_KEY = 'course_media';
31
30
  const USER_PLUGIN_KEY = 'user_media';
32
31
  const GROUP_PLUGIN_KEY = 'group_media';
33
32
 
33
+ // @ts-expect-error
34
34
  function getMenuItems(ed) {
35
35
  const contextType = ed.settings.canvas_rce_user_context.type;
36
36
  const items = [];
37
-
38
37
  if (ed.getParam('show_media_upload')) {
39
38
  // test if it's ok
40
39
  items.push({
@@ -42,7 +41,6 @@ function getMenuItems(ed) {
42
41
  value: 'instructure_upload_media'
43
42
  });
44
43
  }
45
-
46
44
  if (contextType === 'course') {
47
45
  items.push({
48
46
  text: formatMessage('Course Media'),
@@ -54,7 +52,6 @@ function getMenuItems(ed) {
54
52
  value: 'instructure_group_media'
55
53
  });
56
54
  }
57
-
58
55
  items.push({
59
56
  text: formatMessage('User Media'),
60
57
  value: 'instructure_user_media'
@@ -62,36 +59,35 @@ function getMenuItems(ed) {
62
59
  return items;
63
60
  }
64
61
 
62
+ // @ts-expect-error
65
63
  function doMenuItem(ed, value) {
66
64
  switch (value) {
67
65
  case 'instructure_upload_media':
68
66
  ed.execCommand('instructureRecord');
69
67
  break;
70
-
71
68
  case 'instructure_course_media':
72
69
  ed.focus(true);
73
70
  ed.execCommand('instructureTrayForMedia', false, COURSE_PLUGIN_KEY);
74
71
  break;
75
-
76
72
  case 'instructure_group_media':
77
73
  ed.focus(true);
78
74
  ed.execCommand('instructureTrayForMedia', false, GROUP_PLUGIN_KEY);
79
75
  break;
80
-
81
76
  case 'instructure_user_media':
82
77
  ed.focus(true);
83
78
  ed.execCommand('instructureTrayForMedia', false, USER_PLUGIN_KEY);
84
79
  break;
85
80
  }
86
- } // Register plugin
87
-
81
+ }
88
82
 
83
+ // Register plugin
89
84
  tinymce.PluginManager.add('instructure_record', function (ed) {
90
85
  ed.addCommand('instructureRecord', () => clickCallback(ed, document));
91
86
  ed.addCommand('instructureTrayForMedia', (ui, plugin_key) => {
92
87
  bridge.showTrayForPlugin(plugin_key, ed.id);
93
- }); // Register menu items
88
+ });
94
89
 
90
+ // Register menu items
95
91
  ed.ui.registry.addNestedMenuItem('instructure_media', {
96
92
  text: formatMessage('Media'),
97
93
  icon: 'video',
@@ -106,8 +102,9 @@ tinymce.PluginManager.add('instructure_record', function (ed) {
106
102
  }
107
103
  };
108
104
  })
109
- }); // Register buttons
105
+ });
110
106
 
107
+ // Register buttons
111
108
  ed.ui.registry.addMenuButton('instructure_record', {
112
109
  tooltip: formatMessage('Record/Upload Media'),
113
110
  icon: 'video',
@@ -117,32 +114,29 @@ tinymce.PluginManager.add('instructure_record', function (ed) {
117
114
  value: item.value,
118
115
  onAction: () => doMenuItem(ed, item.value)
119
116
  }))),
120
-
121
117
  onSetup(api) {
118
+ // @ts-expect-error
122
119
  function handleNodeChange(_e) {
123
120
  api.setDisabled(!isOKToLink(ed.selection.getContent()));
124
121
  }
125
-
126
122
  setTimeout(handleNodeChange);
127
123
  ed.on('NodeChange', handleNodeChange);
128
124
  return () => {
129
125
  ed.off('NodeChange', handleNodeChange);
130
126
  };
131
127
  }
132
-
133
128
  });
129
+
134
130
  /*
135
131
  * Register the Video "Options" button that will open the Video Options
136
132
  * tray.
137
133
  */
138
-
139
134
  const buttonAriaLabel = formatMessage('Show video options');
140
135
  ed.ui.registry.addButton('instructure-video-options', {
141
136
  onAction() {
142
137
  // show the tray
143
138
  videoTrayController.showTrayForEditor(ed);
144
139
  },
145
-
146
140
  text: formatMessage('Video Options'),
147
141
  tooltip: buttonAriaLabel
148
142
  });
@@ -156,7 +150,6 @@ tinymce.PluginManager.add('instructure_record', function (ed) {
156
150
  onAction() {
157
151
  audioTrayController.showTrayForEditor(ed);
158
152
  },
159
-
160
153
  text: formatMessage('Audio Options'),
161
154
  tooltip: formatMessage('Show audio options')
162
155
  });
@@ -15,6 +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
+
18
19
  import React from 'react';
19
20
  import ReactDOM from 'react-dom';
20
21
  import FindReplaceController from './components/FindReplaceTrayController';
@@ -22,26 +23,22 @@ import { getSelectionContext } from './getSelectionContext';
22
23
  const CONTAINER_ID = 'instructure-find-replace-tray-container';
23
24
  export default function (editor, document) {
24
25
  var _editor$selection, _editor$selection2;
25
-
26
26
  const plugin = editor.plugins.searchreplace;
27
27
  const initalSelection = (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.getContent({
28
28
  format: 'text'
29
29
  });
30
30
  if (initalSelection) (_editor$selection2 = editor.selection) === null || _editor$selection2 === void 0 ? void 0 : _editor$selection2.collapse(true);
31
31
  let container = document.getElementById(CONTAINER_ID);
32
-
33
32
  if (container == null) {
34
33
  container = document.createElement('div');
35
34
  container.id = CONTAINER_ID;
36
35
  document.body.appendChild(container);
37
36
  }
38
-
39
37
  const handleDismiss = () => {
40
38
  if (container) ReactDOM.unmountComponentAtNode(container);
41
39
  editor.focus(false);
42
40
  };
43
-
44
- ReactDOM.render( /*#__PURE__*/React.createElement(FindReplaceController, {
41
+ ReactDOM.render(/*#__PURE__*/React.createElement(FindReplaceController, {
45
42
  plugin: plugin,
46
43
  onDismiss: handleDismiss,
47
44
  initialText: initalSelection,