@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
@@ -13,6 +13,7 @@
13
13
  //
14
14
  // You should have received a copy of the GNU Affero General Public License along
15
15
  // with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
16
17
  import React from 'react';
17
18
  import formatMessage from '../format-message';
18
19
  import _ from 'lodash';
@@ -26,11 +27,9 @@ import { getIconFromType, isImage } from '../rce/plugins/shared/fileTypeUtils';
26
27
  import { showFlashError } from '../common/FlashAlert';
27
28
  import natcompare from '../common/natcompare';
28
29
  export const PENDING_MEDIA_ENTRY_ID = 'maybe';
29
-
30
30
  class FileBrowser extends React.Component {
31
31
  constructor(_props2) {
32
32
  var _this;
33
-
34
33
  super(_props2);
35
34
  _this = this;
36
35
  this.fetchSubFolders = _.memoize(id => {
@@ -41,28 +40,22 @@ class FileBrowser extends React.Component {
41
40
  this.populateCollectionsList(result.folders);
42
41
  }, error => {
43
42
  this.props.onLoading(false);
44
- /* eslint-disable no-console */
45
-
46
43
  console.error('Error fetching data from API');
47
44
  console.error(error);
48
45
  });
49
46
  });
50
-
51
47
  this.populateCollectionsList = function (folderList) {
52
48
  let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
53
-
54
49
  _this.setState((state, props) => {
55
50
  const newCollections = _.cloneDeep(state.collections);
56
-
57
51
  folderList.forEach(folder => {
58
- const collection = _this.formatFolderInfo(folder, { ...opts,
52
+ const collection = _this.formatFolderInfo(folder, {
53
+ ...opts,
59
54
  searchString: props.searchString
60
55
  });
61
-
62
56
  newCollections[collection.id] = collection;
63
57
  const parentId = folder.parentId || 0;
64
58
  const collectionCollections = newCollections[parentId].collections;
65
-
66
59
  if (!collectionCollections.includes(collection.id)) {
67
60
  collectionCollections.push(collection.id);
68
61
  newCollections[parentId].collections = _this.orderedIdsFromList(newCollections, collectionCollections);
@@ -73,20 +66,16 @@ class FileBrowser extends React.Component {
73
66
  };
74
67
  });
75
68
  };
76
-
77
69
  this.populateItemsList = fileList => {
78
70
  this.setState((state, _props) => {
79
71
  const newItems = _.cloneDeep(state.items);
80
-
81
72
  const newCollections = _.cloneDeep(state.collections);
82
-
83
73
  fileList.forEach(file => {
84
74
  if (this.contentTypeIsAllowed(file.type)) {
85
75
  const item = this.formatFileInfo(file);
86
76
  newItems[item.id] = item;
87
77
  const folder_id = file.folderId;
88
78
  const collectionItems = newCollections[folder_id].items;
89
-
90
79
  if (!collectionItems.includes(item.id)) {
91
80
  collectionItems.push(item.id);
92
81
  newCollections[folder_id].items = this.orderedIdsFromList(newItems, collectionItems);
@@ -99,7 +88,6 @@ class FileBrowser extends React.Component {
99
88
  };
100
89
  });
101
90
  };
102
-
103
91
  this.onFolderToggle = folder => {
104
92
  const folderId = folder.id;
105
93
  this.setState((state, _props) => {
@@ -109,7 +97,6 @@ class FileBrowser extends React.Component {
109
97
  const {
110
98
  openFolders
111
99
  } = state;
112
-
113
100
  if (!collection.locked && openFolders.includes(folderId)) {
114
101
  newFolders = newFolders.concat(openFolders.filter(id => id !== folderId));
115
102
  } else if (!collection.locked) {
@@ -118,7 +105,6 @@ class FileBrowser extends React.Component {
118
105
  newCollections = _.cloneDeep(state.collections);
119
106
  newCollections[folderId] = collection;
120
107
  }
121
-
122
108
  return {
123
109
  openFolders: newFolders,
124
110
  uploadFolder: folderId,
@@ -127,24 +113,20 @@ class FileBrowser extends React.Component {
127
113
  }, () => {
128
114
  if (this.state.openFolders.includes(folderId)) {
129
115
  const collection = this.state.collections[folderId];
130
-
131
116
  if (!collection.locked) {
132
117
  this.getFolderData(folderId);
133
118
  }
134
119
  }
135
120
  });
136
121
  };
137
-
138
122
  this.onFileClick = file => {
139
123
  const selectedItem = this.state.items[file.id];
140
124
  if (selectedItem.isDisabled) return;
141
125
  this.props.selectFile(selectedItem);
142
126
  };
143
-
144
127
  this.setFailureMessage = message => {
145
128
  showFlashError(message)();
146
129
  };
147
-
148
130
  this.state = {
149
131
  collections: {
150
132
  0: {
@@ -159,11 +141,9 @@ class FileBrowser extends React.Component {
159
141
  this.source = _props2.source;
160
142
  this.updatePropsWithThumbnailOrIcon = this.updatePropsWithThumbnailOrIcon.bind(this);
161
143
  }
162
-
163
144
  componentDidMount() {
164
145
  this.getRootFolders();
165
146
  }
166
-
167
147
  componentDidUpdate() {
168
148
  this.state.openFolders.forEach(fid => {
169
149
  if (this.props.searchString !== this.state.collections[fid].searchString) {
@@ -171,7 +151,6 @@ class FileBrowser extends React.Component {
171
151
  }
172
152
  });
173
153
  }
174
-
175
154
  getContextName(contextType) {
176
155
  if (contextType === 'course') {
177
156
  return formatMessage('Course files');
@@ -179,34 +158,28 @@ class FileBrowser extends React.Component {
179
158
  return formatMessage('Group files');
180
159
  }
181
160
  }
182
-
183
161
  getRootFolders() {
184
162
  if (this.props.useContextAssets) {
185
163
  this.getContextFolders();
186
164
  }
187
-
188
165
  this.getUserFolders();
189
166
  }
190
-
191
167
  getUserFolders() {
192
168
  this.getRootFolderData('user', 'self', {
193
169
  name: formatMessage('My files')
194
170
  });
195
171
  }
196
-
197
172
  getContextFolders() {
198
173
  const {
199
174
  type,
200
175
  id
201
176
  } = this.props.context;
202
-
203
177
  if (type && id) {
204
178
  this.getRootFolderData(type, id, {
205
179
  name: this.getContextName(type)
206
180
  });
207
181
  }
208
182
  }
209
-
210
183
  increaseLoadingCount() {
211
184
  let {
212
185
  loadingCount
@@ -216,7 +189,6 @@ class FileBrowser extends React.Component {
216
189
  loadingCount
217
190
  });
218
191
  }
219
-
220
192
  decreaseLoadingCount() {
221
193
  let {
222
194
  loadingCount
@@ -226,7 +198,6 @@ class FileBrowser extends React.Component {
226
198
  loadingCount
227
199
  });
228
200
  }
229
-
230
201
  getRootFolderData(context, contextId) {
231
202
  let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
232
203
  this.increaseLoadingCount();
@@ -237,25 +208,23 @@ class FileBrowser extends React.Component {
237
208
  this.populateRootFolder(result.folders[0], opts);
238
209
  }).catch(error => {
239
210
  this.decreaseLoadingCount();
240
-
241
211
  if (error.response && error.response.status !== 401) {
242
212
  this.setFailureMessage(formatMessage('Something went wrong'));
243
213
  }
244
214
  });
245
215
  }
246
-
247
216
  populateRootFolder(data) {
248
217
  let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
249
218
  this.decreaseLoadingCount();
250
219
  this.populateCollectionsList([data], opts);
251
220
  this.getFolderData(data.id);
252
- } // Memoized function to fetch all subfolders
253
- // of the given folder ID, handing pagination
221
+ }
254
222
 
223
+ // Memoized function to fetch all subfolders
224
+ // of the given folder ID, handing pagination
255
225
 
256
226
  fetchFiles(id) {
257
227
  var _this$state$collectio, _this$state$collectio2;
258
-
259
228
  this.source.fetchBookmarkedData(this.source.fetchFilesForFolder.bind(this.source), {
260
229
  searchString: this.props.searchString,
261
230
  perPage: 50,
@@ -267,13 +236,14 @@ class FileBrowser extends React.Component {
267
236
  console.error(error);
268
237
  });
269
238
  }
270
-
271
239
  getFolderData(id) {
272
240
  if (!this.state.collections[id].locked) {
273
241
  this.setState((state, _props) => {
274
- const collections = { ...state.collections
242
+ const collections = {
243
+ ...state.collections
275
244
  };
276
- const collection = { ...collections[id]
245
+ const collection = {
246
+ ...collections[id]
277
247
  };
278
248
  collection.items = [];
279
249
  collection.searchString = this.props.searchString;
@@ -287,20 +257,16 @@ class FileBrowser extends React.Component {
287
257
  });
288
258
  }
289
259
  }
290
-
291
260
  contentTypeIsAllowed(contentType) {
292
261
  for (const pattern of this.props.contentTypes) {
293
262
  if (minimatch(contentType, pattern)) {
294
263
  return true;
295
264
  }
296
265
  }
297
-
298
266
  return false;
299
267
  }
300
-
301
268
  formatFolderInfo(apiFolder) {
302
269
  var _apiFolder$contextTyp;
303
-
304
270
  let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
305
271
  const descriptor = apiFolder.lockedForUser ? formatMessage('Locked') : null;
306
272
  const folder = {
@@ -322,14 +288,12 @@ class FileBrowser extends React.Component {
322
288
  });
323
289
  return folder;
324
290
  }
325
-
326
291
  updatePropsWithThumbnailOrIcon(props) {
327
292
  const {
328
293
  id
329
294
  } = props;
330
295
  const file = this.state.items[id].api;
331
296
  let thumbnail, itemIcon;
332
-
333
297
  if (isImage(file.type)) {
334
298
  if (file.thumbnailUrl) {
335
299
  thumbnail = file.thumbnailUrl;
@@ -339,18 +303,16 @@ class FileBrowser extends React.Component {
339
303
  } else {
340
304
  itemIcon = getIconFromType(file.type);
341
305
  }
342
-
343
306
  const containerRef = node => {
344
307
  if (node && !node.title && props.name) node.title = props.name;
345
308
  };
346
-
347
- return { ...props,
309
+ return {
310
+ ...props,
348
311
  thumbnail,
349
312
  itemIcon,
350
313
  containerRef
351
314
  };
352
315
  }
353
-
354
316
  formatFileInfo(apiFile) {
355
317
  let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
356
318
  const {
@@ -367,19 +329,15 @@ class FileBrowser extends React.Component {
367
329
  alt: apiFile.name,
368
330
  ...opts
369
331
  };
370
-
371
332
  if (apiFile.iframeUrl) {
372
333
  // it's a media_object
373
334
  file.src = apiFile.iframeUrl;
374
335
  }
375
-
376
336
  if (isMediaPending) {
377
337
  file.descriptor = formatMessage('Media file is processing. Please try again later.');
378
338
  }
379
-
380
339
  return file;
381
340
  }
382
-
383
341
  orderedIdsFromList(list, ids) {
384
342
  try {
385
343
  const sortedIds = ids.sort((a, b) => natcompare.strings(list[a].name, list[b].name));
@@ -389,7 +347,6 @@ class FileBrowser extends React.Component {
389
347
  return ids;
390
348
  }
391
349
  }
392
-
393
350
  findFolderForFile(file) {
394
351
  const {
395
352
  collections
@@ -400,7 +357,6 @@ class FileBrowser extends React.Component {
400
357
  });
401
358
  return collections[folderKey];
402
359
  }
403
-
404
360
  renderLoading() {
405
361
  if (this.state.loadingCount > 0) {
406
362
  return /*#__PURE__*/React.createElement(Spinner, {
@@ -411,7 +367,6 @@ class FileBrowser extends React.Component {
411
367
  return null;
412
368
  }
413
369
  }
414
-
415
370
  render() {
416
371
  const element = /*#__PURE__*/React.createElement("div", {
417
372
  className: "file-browser__container"
@@ -434,9 +389,7 @@ class FileBrowser extends React.Component {
434
389
  }), this.renderLoading()));
435
390
  return element;
436
391
  }
437
-
438
392
  }
439
-
440
393
  FileBrowser.propTypes = {
441
394
  allowUpload: PropTypes.bool,
442
395
  selectFile: PropTypes.func.isRequired,
@@ -15,28 +15,25 @@
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
  Date.CultureInfo = {
19
20
  /* Culture Name */
20
21
  name: 'en-US',
21
22
  englishName: 'English (United States)',
22
23
  nativeName: 'English (United States)',
23
-
24
24
  /* Day Name Strings */
25
25
  dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
26
26
  abbreviatedDayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
27
27
  shortestDayNames: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
28
28
  firstLetterDayNames: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
29
-
30
29
  /* Month Name Strings */
31
30
  monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
32
31
  abbreviatedMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
33
-
34
32
  /* AM/PM Designators */
35
33
  amDesignator: 'AM',
36
34
  pmDesignator: 'PM',
37
35
  firstDayOfWeek: 0,
38
36
  twoDigitYearMax: 2029,
39
-
40
37
  /**
41
38
  * The dateElementOrder is based on the order of the
42
39
  * format specifiers in the formatPatterns.DatePattern.
@@ -55,7 +52,6 @@ Date.CultureInfo = {
55
52
  * string being parsed.
56
53
  */
57
54
  dateElementOrder: 'mdy',
58
-
59
55
  /* Standard date and time format patterns */
60
56
  formatPatterns: {
61
57
  shortDate: 'M/d/yyyy',
@@ -69,7 +65,6 @@ Date.CultureInfo = {
69
65
  monthDay: 'MMMM dd',
70
66
  yearMonth: 'MMMM, yyyy'
71
67
  },
72
-
73
68
  /**
74
69
  * NOTE: If a string format is not parsing correctly, but
75
70
  * you would expect it parse, the problem likely lies below.
@@ -97,6 +92,7 @@ Date.CultureInfo = {
97
92
  *
98
93
  * As well, please review the list of "Future Strings" section below.
99
94
  */
95
+
100
96
  regexPatterns: {
101
97
  jan: /^jan(uary)?/i,
102
98
  feb: /^feb(ruary)?/i,
@@ -171,6 +167,7 @@ Date.CultureInfo = {
171
167
  offset: '-0700'
172
168
  }]
173
169
  };
170
+
174
171
  /** ******************
175
172
  ** Future Strings **
176
173
  ********************
@@ -40,6 +40,7 @@
40
40
  * type: one of ['info', 'success', 'warning', 'error']
41
41
  * default is 'info' unless an error object is passed in, else is 'error'
42
42
  */
43
+
43
44
  import React from 'react';
44
45
  import PropTypes from 'prop-types';
45
46
  import ReactDOM from 'react-dom';
@@ -51,32 +52,27 @@ import { PresentationContent, ScreenReaderContent } from '@instructure/ui-a11y-c
51
52
  import { Transition } from '@instructure/ui-motion';
52
53
  import RCEGlobals from '../rce/RCEGlobals';
53
54
  const messageHolderId = 'flashalert_message_holder'; // specs fail if I reuse jquery's elements
54
-
55
55
  const screenreaderMessageHolderId = 'flash_screenreader_holder';
56
56
  const TIMEOUT = 10000;
57
-
58
57
  function getLiveRegion() {
59
58
  // return element where flash screenreader messages go.
60
59
  // create if necessary
61
60
  let liveRegion = document.getElementById(screenreaderMessageHolderId);
62
-
63
61
  if (!liveRegion) {
64
62
  liveRegion = document.createElement('div');
65
63
  liveRegion.id = screenreaderMessageHolderId;
66
64
  liveRegion.setAttribute('role', 'alert');
67
65
  document.body.appendChild(liveRegion);
68
66
  }
69
-
70
67
  return liveRegion;
71
- } // An Alert with a message and "Details" button which surfaces
68
+ }
69
+
70
+ // An Alert with a message and "Details" button which surfaces
72
71
  // more info about the error when pressed.
73
72
  // Is displayed at the top of the document, and will close itself after a while
74
-
75
-
76
73
  export default class FlashAlert extends React.Component {
77
74
  constructor(props) {
78
75
  super(props);
79
-
80
76
  this.showDetails = () => {
81
77
  this.setState({
82
78
  showDetails: true
@@ -84,7 +80,6 @@ export default class FlashAlert extends React.Component {
84
80
  clearTimeout(this.timerId);
85
81
  this.timerId = setTimeout(() => this.closeAlert(), this.props.timeout);
86
82
  };
87
-
88
83
  this.closeAlert = () => {
89
84
  this.setState({
90
85
  isOpen: false
@@ -95,19 +90,16 @@ export default class FlashAlert extends React.Component {
95
90
  }, 500);
96
91
  });
97
92
  };
98
-
99
93
  this.state = {
100
94
  showDetails: false,
101
95
  isOpen: true
102
96
  };
103
97
  this.timerId = 0;
104
98
  }
105
-
106
99
  findDetailMessage() {
107
100
  const err = this.props.error;
108
101
  let a = err.message;
109
102
  let b;
110
-
111
103
  if (err.response) {
112
104
  if (err.response.data) {
113
105
  try {
@@ -125,13 +117,11 @@ export default class FlashAlert extends React.Component {
125
117
  }
126
118
  }
127
119
  }
128
-
129
120
  return {
130
121
  a,
131
122
  b
132
123
  };
133
124
  }
134
-
135
125
  renderDetailMessage() {
136
126
  const {
137
127
  a,
@@ -142,10 +132,8 @@ export default class FlashAlert extends React.Component {
142
132
  fontStyle: "italic"
143
133
  }, /*#__PURE__*/React.createElement(Text, null, a), b ? /*#__PURE__*/React.createElement("br", null) : null, b ? /*#__PURE__*/React.createElement(Text, null, b) : null);
144
134
  }
145
-
146
135
  render() {
147
136
  let details = null;
148
-
149
137
  if (this.props.error) {
150
138
  if (this.state.showDetails) {
151
139
  details = this.renderDetailMessage();
@@ -156,7 +144,6 @@ export default class FlashAlert extends React.Component {
156
144
  }, formatMessage('Details'))), /*#__PURE__*/React.createElement(ScreenReaderContent, null, this.renderDetailMessage()));
157
145
  }
158
146
  }
159
-
160
147
  return /*#__PURE__*/React.createElement(Transition, {
161
148
  transitionOnMount: true,
162
149
  in: this.state.isOpen,
@@ -176,7 +163,6 @@ export default class FlashAlert extends React.Component {
176
163
  }
177
164
  }, this.props.message), details)));
178
165
  }
179
-
180
166
  }
181
167
  FlashAlert.propTypes = {
182
168
  onClose: PropTypes.func.isRequired,
@@ -199,15 +185,12 @@ export function showFlashAlert(_ref) {
199
185
  type = err ? 'error' : 'info',
200
186
  srOnly = false
201
187
  } = _ref;
202
-
203
188
  function closeAlert(atNode) {
204
189
  ReactDOM.unmountComponentAtNode(atNode);
205
190
  atNode.remove();
206
191
  }
207
-
208
192
  function getAlertContainer() {
209
193
  let alertContainer = document.getElementById(messageHolderId);
210
-
211
194
  if (!alertContainer) {
212
195
  alertContainer = document.createElement('div');
213
196
  alertContainer.classList.add('clickthrough-container');
@@ -215,15 +198,12 @@ export function showFlashAlert(_ref) {
215
198
  alertContainer.setAttribute('style', 'position: fixed; top: 0; left: 0; width: 100%; z-index: 100000;');
216
199
  document.body.appendChild(alertContainer);
217
200
  }
218
-
219
201
  return alertContainer;
220
202
  }
221
-
222
203
  function renderAlert(parent) {
223
204
  var _RCEGlobals$getConfig;
224
-
225
205
  const configuredTimeout = (_RCEGlobals$getConfig = RCEGlobals.getConfig()) === null || _RCEGlobals$getConfig === void 0 ? void 0 : _RCEGlobals$getConfig.flashAlertTimeout;
226
- ReactDOM.render( /*#__PURE__*/React.createElement(FlashAlert, {
206
+ ReactDOM.render(/*#__PURE__*/React.createElement(FlashAlert, {
227
207
  message: message,
228
208
  timeout: Number.isNaN(parseInt(configuredTimeout, 10)) ? TIMEOUT : configuredTimeout,
229
209
  error: err,
@@ -233,9 +213,8 @@ export function showFlashAlert(_ref) {
233
213
  screenReaderOnly: srOnly
234
214
  }), parent);
235
215
  }
236
-
237
- const div = document.createElement('div'); // div.setAttribute('class', styles.flashMessage)
238
-
216
+ const div = document.createElement('div');
217
+ // div.setAttribute('class', styles.flashMessage)
239
218
  div.setAttribute('style', 'max-width:50em;margin:1rem auto;');
240
219
  div.setAttribute('class', 'flashalert-message');
241
220
  getAlertContainer().appendChild(div);
@@ -15,10 +15,12 @@
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
  let isIE = false;
19
- let isEdge = false; // expected to be called as setFromTinymce(window.tinymce) at some point where
20
- // window.tinymce is available
20
+ let isEdge = false;
21
21
 
22
+ // expected to be called as setFromTinymce(window.tinymce) at some point where
23
+ // window.tinymce is available
22
24
  export function setFromTinymce(tinymce) {
23
25
  set(tinymce.Env);
24
26
  }