@instructure/canvas-rce 5.14.1 → 5.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/DEVELOPMENT.md +2 -2
  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/{es/rce/__mocks__/_mockStudioPlayer.js → __tests__/sidebar/reducers/all_files.test.js} +12 -4
  17. package/babel.config.js +3 -1
  18. package/es/bridge/Bridge.js +18 -73
  19. package/es/bridge/index.js +1 -0
  20. package/es/canvasFileBrowser/FileBrowser.js +21 -77
  21. package/es/canvasFileBrowser/en-US.js +3 -6
  22. package/es/common/FlashAlert.js +15 -39
  23. package/es/common/browser.js +4 -2
  24. package/es/common/fileUrl.js +105 -64
  25. package/es/common/incremental-loading/LoadMoreButton.js +4 -4
  26. package/es/common/incremental-loading/LoadingIndicator.js +1 -2
  27. package/es/common/incremental-loading/LoadingStatus.js +5 -13
  28. package/es/common/incremental-loading/index.js +1 -0
  29. package/es/common/incremental-loading/useIncrementalLoading.js +1 -3
  30. package/es/common/indicate.js +16 -10
  31. package/es/common/mimeClass.js +3 -4
  32. package/es/common/natcompare.js +1 -4
  33. package/es/defaultTinymceConfig.js +5 -3
  34. package/es/elementDenylist.js +1 -0
  35. package/es/enhance-user-content/doc_previews.js +24 -35
  36. package/es/enhance-user-content/enhance_user_content.js +32 -67
  37. package/es/enhance-user-content/external_links.js +6 -9
  38. package/es/enhance-user-content/index.js +1 -0
  39. package/es/enhance-user-content/instructure_helper.js +22 -50
  40. package/es/enhance-user-content/jqueryish_funcs.js +8 -11
  41. package/es/enhance-user-content/mathml.js +48 -107
  42. package/es/enhance-user-content/media_comment_thumbnail.js +6 -25
  43. package/es/format-message.js +4 -5
  44. package/es/getThemeVars.js +8 -6
  45. package/es/getTranslations.js +1 -78
  46. package/es/index.d.ts +59 -0
  47. package/es/index.js +6 -6
  48. package/es/rce/AlertMessageArea.js +15 -16
  49. package/es/rce/DraggingBlocker.js +4 -2
  50. package/es/rce/KeyboardShortcutModal.js +3 -2
  51. package/es/rce/RCE.js +16 -17
  52. package/es/rce/RCEGlobals.js +12 -10
  53. package/es/rce/RCEVariants.js +29 -14
  54. package/es/rce/RCEWrapper.js +530 -641
  55. package/es/rce/RCEWrapper.utils.js +131 -0
  56. package/es/rce/RCEWrapperProps.js +9 -5
  57. package/es/rce/RceHtmlEditor.js +17 -19
  58. package/es/rce/ResizeHandle.js +4 -10
  59. package/es/rce/RestoreAutoSaveModal.js +1 -2
  60. package/es/rce/ShowOnFocusButton/index.js +2 -8
  61. package/es/rce/StatusBar.js +10 -44
  62. package/es/rce/alertHandler.js +1 -4
  63. package/es/rce/contentInsertion.js +36 -59
  64. package/es/rce/contentInsertionUtils.js +6 -8
  65. package/es/rce/contentRendering.js +13 -17
  66. package/es/rce/customEvents.js +1 -0
  67. package/es/rce/editorLanguage.js +23 -11
  68. package/es/rce/indicatorRegion.js +7 -7
  69. package/es/rce/normalizeLocale.js +5 -3
  70. package/es/rce/normalizeProps.js +7 -5
  71. package/es/rce/plugins/instructure-ui-icons/plugin.js +21 -3
  72. package/es/rce/plugins/instructure_color/clickCallback.js +82 -0
  73. package/es/rce/plugins/instructure_color/components/ColorPicker.js +294 -0
  74. package/es/rce/plugins/instructure_color/components/ColorPopup.js +67 -0
  75. package/es/rce/plugins/instructure_color/components/colorUtils.js +60 -0
  76. package/es/rce/plugins/instructure_color/plugin.js +40 -0
  77. package/es/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +10 -3
  78. package/es/rce/plugins/instructure_condensed_buttons/plugin.js +1 -0
  79. package/es/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +1 -2
  80. package/es/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +3 -2
  81. package/es/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +1 -0
  82. package/es/rce/plugins/instructure_condensed_buttons/ui/list-button.js +26 -25
  83. package/es/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +2 -3
  84. package/es/rce/plugins/instructure_documents/clickCallback.js +1 -0
  85. package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +1 -9
  86. package/es/rce/plugins/instructure_documents/components/Link.js +4 -20
  87. package/es/rce/plugins/instructure_documents/plugin.js +7 -14
  88. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +4 -2
  89. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +1 -2
  90. package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +17 -37
  91. package/es/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +14 -15
  92. package/es/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +6 -5
  93. package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +4 -2
  94. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +14 -8
  95. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +13 -18
  96. package/es/rce/plugins/instructure_equation/MathIcon/index.js +4 -5
  97. package/es/rce/plugins/instructure_equation/MathIcon/svgs.js +1 -1
  98. package/es/rce/plugins/instructure_equation/clickCallback.js +2 -5
  99. package/es/rce/plugins/instructure_equation/mathlive/index.js +167 -16
  100. package/es/rce/plugins/instructure_equation/plugin.js +7 -10
  101. package/es/rce/plugins/instructure_fullscreen/plugin.js +1 -6
  102. package/es/rce/plugins/instructure_html_view/clickCallback.js +1 -0
  103. package/es/rce/plugins/instructure_html_view/plugin.js +5 -4
  104. package/es/rce/plugins/instructure_icon_maker/clickCallback.js +5 -8
  105. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +47 -51
  106. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +10 -10
  107. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +11 -11
  108. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +6 -6
  109. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +8 -10
  110. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +32 -31
  111. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +24 -35
  112. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +32 -32
  113. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +11 -11
  114. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +16 -15
  115. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +1 -0
  116. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +11 -11
  117. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +9 -13
  118. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +12 -13
  119. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +33 -80
  120. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +34 -28
  121. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +1 -0
  122. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +1 -0
  123. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +5 -5
  124. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +7 -8
  125. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +5 -7
  126. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +5 -10
  127. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +1 -0
  128. package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +38 -60
  129. package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +4 -4
  130. package/es/rce/plugins/instructure_icon_maker/plugin.js +10 -14
  131. package/es/rce/plugins/instructure_icon_maker/reducers/imageSection.js +37 -38
  132. package/es/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +24 -24
  133. package/es/rce/plugins/instructure_icon_maker/registerEditToolbar.js +2 -4
  134. package/es/rce/plugins/instructure_icon_maker/svg/constants.js +4 -3
  135. package/es/rce/plugins/instructure_icon_maker/svg/font.js +3 -1
  136. package/es/rce/plugins/instructure_icon_maker/svg/image.js +74 -90
  137. package/es/rce/plugins/instructure_icon_maker/svg/index.js +17 -24
  138. package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
  139. package/es/rce/plugins/instructure_icon_maker/svg/settings.js +48 -58
  140. package/es/rce/plugins/instructure_icon_maker/svg/shape.js +5 -54
  141. package/es/rce/plugins/instructure_icon_maker/svg/text.js +35 -124
  142. package/es/rce/plugins/instructure_icon_maker/svg/utils.js +3 -11
  143. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +4 -9
  144. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +1 -15
  145. package/es/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +3 -4
  146. package/es/rce/plugins/instructure_icon_maker/utils/iconValidation.js +2 -3
  147. package/es/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +1 -0
  148. package/es/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +12 -13
  149. package/es/rce/plugins/instructure_image/ImageEmbedOptions.js +9 -31
  150. package/es/rce/plugins/instructure_image/ImageList/Image.js +8 -14
  151. package/es/rce/plugins/instructure_image/ImageList/index.js +8 -10
  152. package/es/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +9 -31
  153. package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +6 -19
  154. package/es/rce/plugins/instructure_image/Images/index.js +1 -3
  155. package/es/rce/plugins/instructure_image/clickCallback.js +1 -0
  156. package/es/rce/plugins/instructure_image/plugin.js +14 -20
  157. package/es/rce/plugins/instructure_links/clickCallback.js +1 -0
  158. package/es/rce/plugins/instructure_links/components/AccordionSection.js +8 -8
  159. package/es/rce/plugins/instructure_links/components/CollectionPanel.js +1 -3
  160. package/es/rce/plugins/instructure_links/components/Link.js +68 -84
  161. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +2 -23
  162. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +3 -6
  163. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +3 -20
  164. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +3 -14
  165. package/es/rce/plugins/instructure_links/components/LinkSet.js +32 -57
  166. package/es/rce/plugins/instructure_links/components/LinksPanel.js +22 -10
  167. package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -9
  168. package/es/rce/plugins/instructure_links/components/NoResults.js +7 -14
  169. package/es/rce/plugins/instructure_links/plugin.js +23 -49
  170. package/es/rce/plugins/instructure_links/validateURL.js +81 -36
  171. package/es/rce/plugins/instructure_media_embed/clickCallback.js +5 -9
  172. package/es/rce/plugins/instructure_media_embed/components/Embed.js +7 -7
  173. package/es/rce/plugins/instructure_media_embed/plugin.js +7 -3
  174. package/es/rce/plugins/instructure_paste/pasteMenuCommand.js +1 -5
  175. package/es/rce/plugins/instructure_paste/plugin.js +29 -33
  176. package/es/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +31 -79
  177. package/es/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +24 -83
  178. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +39 -69
  179. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +1 -2
  180. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +1 -1
  181. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +5 -14
  182. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +1 -2
  183. package/es/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +1 -0
  184. package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +2 -1
  185. package/es/rce/plugins/instructure_rce_external_tools/constants.js +28 -0
  186. package/es/rce/plugins/instructure_rce_external_tools/dialog-helper.js +20 -6
  187. package/es/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -2
  188. package/es/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +129 -136
  189. package/es/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +110 -112
  190. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +1 -0
  191. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +4 -21
  192. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +5 -19
  193. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +1 -6
  194. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +1 -9
  195. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +1 -1
  196. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -5
  197. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +23 -16
  198. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +3 -4
  199. package/es/rce/plugins/instructure_rce_external_tools/plugin.js +11 -20
  200. package/es/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +1 -1
  201. package/es/rce/plugins/instructure_rce_external_tools/util/externalToolsForToolbar.js +42 -0
  202. package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +6 -35
  203. package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +13 -17
  204. package/es/rce/plugins/instructure_record/MediaPanel/index.js +1 -9
  205. package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +16 -66
  206. package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +21 -35
  207. package/es/rce/plugins/instructure_record/clickCallback.js +32 -44
  208. package/es/rce/plugins/instructure_record/mediaTranslations.js +1 -0
  209. package/es/rce/plugins/instructure_record/plugin.js +11 -18
  210. package/es/rce/plugins/instructure_search_and_replace/clickCallback.js +4 -8
  211. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTray.js +34 -51
  212. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTrayController.js +12 -30
  213. package/es/rce/plugins/instructure_search_and_replace/getSelectionContext.js +2 -9
  214. package/es/rce/plugins/instructure_search_and_replace/plugin.js +2 -5
  215. package/es/rce/plugins/instructure_studio_media_options/plugin.js +1 -1
  216. package/es/rce/plugins/instructure_wordcount/clickCallback.js +5 -9
  217. package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +27 -37
  218. package/es/rce/plugins/instructure_wordcount/plugin.js +1 -0
  219. package/es/rce/plugins/instructure_wordcount/utils/countContent.js +4 -11
  220. package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +6 -8
  221. package/es/rce/plugins/shared/CanvasContentTray.js +29 -63
  222. package/es/rce/plugins/shared/CheckerboardStyling.js +1 -1
  223. package/es/rce/plugins/shared/ColorInput.js +27 -39
  224. package/es/rce/plugins/shared/ConditionalTooltip.js +6 -6
  225. package/es/rce/plugins/shared/ContentSelection.js +29 -78
  226. package/es/rce/plugins/shared/DimensionUtils.js +3 -12
  227. package/es/rce/plugins/shared/DimensionsInput/DimensionInput.js +6 -6
  228. package/es/rce/plugins/shared/DimensionsInput/index.js +37 -15
  229. package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.js +5 -29
  230. package/es/rce/plugins/shared/ErrorBoundary.js +2 -5
  231. package/es/rce/plugins/shared/EventUtils.js +2 -4
  232. package/es/rce/plugins/shared/Filter.js +8 -38
  233. package/es/rce/plugins/shared/FixedContentTray.js +16 -17
  234. package/es/rce/plugins/shared/ImageCropper/DirectionRegion.js +4 -12
  235. package/es/rce/plugins/shared/ImageCropper/Modal.js +16 -20
  236. package/es/rce/plugins/shared/ImageCropper/Preview.js +18 -24
  237. package/es/rce/plugins/shared/ImageCropper/constants.js +1 -0
  238. package/es/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +10 -14
  239. package/es/rce/plugins/shared/ImageCropper/controls/ResetControls.js +4 -4
  240. package/es/rce/plugins/shared/ImageCropper/controls/RotationControls.js +5 -15
  241. package/es/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +8 -11
  242. package/es/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +5 -16
  243. package/es/rce/plugins/shared/ImageCropper/controls/index.js +5 -5
  244. package/es/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +16 -31
  245. package/es/rce/plugins/shared/ImageCropper/controls/utils.js +1 -2
  246. package/es/rce/plugins/shared/ImageCropper/imageCropUtils.js +19 -31
  247. package/es/rce/plugins/shared/ImageCropper/index.js +1 -0
  248. package/es/rce/plugins/shared/ImageCropper/propTypes.js +1 -0
  249. package/es/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +15 -14
  250. package/es/rce/plugins/shared/ImageCropper/shape.js +1 -0
  251. package/es/rce/plugins/shared/ImageCropper/svg/index.js +1 -2
  252. package/es/rce/plugins/shared/ImageCropper/svg/shape.js +5 -22
  253. package/es/rce/plugins/shared/ImageCropper/svg/utils.js +3 -4
  254. package/es/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +20 -50
  255. package/es/rce/plugins/shared/ImageCropper/useMouseWheel.js +8 -10
  256. package/es/rce/plugins/shared/ImageOptionsForm.js +18 -20
  257. package/es/rce/plugins/shared/LinkDisplay.js +9 -11
  258. package/es/rce/plugins/shared/PreviewIcon.js +9 -15
  259. package/es/rce/plugins/shared/Previewable.js +1 -0
  260. package/es/rce/plugins/shared/RceFileBrowser.js +7 -10
  261. package/es/rce/plugins/shared/StoreContext.js +9 -12
  262. package/es/rce/plugins/shared/StudioLtiSupportUtils.js +15 -12
  263. package/es/rce/plugins/shared/UnknownFileTypePanel.js +1 -0
  264. package/es/rce/plugins/shared/Upload/CanvasContentPanel.js +19 -25
  265. package/es/rce/plugins/shared/Upload/CategoryProcessor.js +2 -3
  266. package/es/rce/plugins/shared/Upload/ComputerPanel.js +19 -40
  267. package/es/rce/plugins/shared/Upload/PanelFilter.js +10 -20
  268. package/es/rce/plugins/shared/Upload/SvgCategoryProcessor.js +4 -3
  269. package/es/rce/plugins/shared/Upload/UploadFile.js +32 -38
  270. package/es/rce/plugins/shared/Upload/UploadFileModal.js +37 -59
  271. package/es/rce/plugins/shared/Upload/UrlPanel.js +5 -5
  272. package/es/rce/plugins/shared/Upload/UsageRightsSelectBox.js +25 -36
  273. package/es/rce/plugins/shared/Upload/doFileUpload.js +10 -13
  274. package/es/rce/plugins/shared/Upload/index.js +1 -0
  275. package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +8 -11
  276. package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +19 -40
  277. package/es/rce/plugins/shared/ai_tools/aiicons.js +3 -2
  278. package/es/rce/plugins/shared/ai_tools/index.js +1 -0
  279. package/es/rce/plugins/shared/buildDownloadUrl.js +0 -2
  280. package/es/rce/plugins/shared/canvasContentUtils.js +7 -11
  281. package/es/rce/plugins/shared/compressionUtils.js +18 -28
  282. package/es/rce/plugins/shared/dateUtils.js +1 -1
  283. package/es/rce/plugins/shared/do-fetch-api-effect/defaultFetchOptions.js +4 -2
  284. package/es/rce/plugins/shared/do-fetch-api-effect/doFetchApi.js +18 -24
  285. package/es/rce/plugins/shared/do-fetch-api-effect/get-cookie.js +1 -1
  286. package/es/rce/plugins/shared/do-fetch-api-effect/index.js +1 -0
  287. package/es/rce/plugins/shared/do-fetch-api-effect/parse-link-header.js +6 -20
  288. package/es/rce/plugins/shared/do-fetch-api-effect/query-string-encoding.js +5 -3
  289. package/es/rce/plugins/shared/fileShape.js +4 -9
  290. package/es/rce/plugins/shared/fileTypeUtils.js +34 -47
  291. package/es/rce/plugins/shared/fileUtils.js +1 -2
  292. package/es/rce/plugins/shared/linkUtils.js +1 -16
  293. package/es/rce/plugins/shared/round.js +2 -2
  294. package/es/rce/plugins/shared/trayUtils.js +7 -3
  295. package/es/rce/plugins/shared/useDataUrl.js +13 -14
  296. package/es/rce/plugins/shared/useFilterSettings.js +3 -3
  297. package/es/rce/plugins/tinymce-a11y-checker/components/ColorField.js +4 -8
  298. package/es/rce/plugins/tinymce-a11y-checker/components/checker.js +12 -72
  299. package/es/rce/plugins/tinymce-a11y-checker/components/color-picker.js +1 -2
  300. package/es/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +1 -0
  301. package/es/rce/plugins/tinymce-a11y-checker/components/pointer.js +1 -0
  302. package/es/rce/plugins/tinymce-a11y-checker/node-checker.js +2 -9
  303. package/es/rce/plugins/tinymce-a11y-checker/plugin.js +18 -24
  304. package/es/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +3 -26
  305. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +9 -38
  306. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +2 -7
  307. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +1 -2
  308. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +1 -1
  309. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +1 -2
  310. package/es/rce/plugins/tinymce-a11y-checker/rules/index.js +1 -0
  311. package/es/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +2 -6
  312. package/es/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +5 -24
  313. package/es/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +1 -3
  314. package/es/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +2 -8
  315. package/es/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +1 -3
  316. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +1 -2
  317. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header.js +1 -9
  318. package/es/rce/plugins/tinymce-a11y-checker/utils/colors.js +1 -0
  319. package/es/rce/plugins/tinymce-a11y-checker/utils/describe.js +1 -7
  320. package/es/rce/plugins/tinymce-a11y-checker/utils/dom.js +3 -30
  321. package/es/rce/plugins/tinymce-a11y-checker/utils/indicate.js +18 -18
  322. package/es/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +6 -12
  323. package/es/rce/plugins/tinymce-a11y-checker/utils/strings.js +1 -4
  324. package/es/rce/root.js +17 -16
  325. package/es/rce/sanitizePlugins.js +1 -3
  326. package/es/rce/style.js +1 -4
  327. package/es/rce/tinyRCE.js +14 -9
  328. package/es/rce/tinymce.oxide.content.min.css.js +1 -0
  329. package/es/rce/tinymce.oxide.skin.min.css.js +1 -0
  330. package/es/rce/transformContent.js +9 -11
  331. package/es/rce/types.js +1 -0
  332. package/es/rce/userOS.js +1 -1
  333. package/es/rce/wrapInitCb.js +50 -43
  334. package/es/rcs/api.js +100 -171
  335. package/es/rcs/buildError.js +8 -20
  336. package/es/rcs/fake.js +9 -20
  337. package/es/sidebar/actions/all_files.js +2 -0
  338. package/es/sidebar/actions/data.js +4 -7
  339. package/es/sidebar/actions/documents.js +19 -18
  340. package/es/sidebar/actions/files.js +21 -28
  341. package/es/sidebar/actions/filter.js +5 -5
  342. package/es/sidebar/actions/flickr.js +1 -1
  343. package/es/sidebar/actions/images.js +32 -37
  344. package/es/sidebar/actions/links.js +1 -0
  345. package/es/sidebar/actions/media.js +27 -28
  346. package/es/sidebar/actions/session.js +2 -5
  347. package/es/sidebar/actions/ui.js +1 -0
  348. package/es/sidebar/actions/upload.js +38 -74
  349. package/es/sidebar/containers/Sidebar.js +1 -2
  350. package/es/sidebar/containers/sidebarHandlers.js +9 -13
  351. package/es/sidebar/dragHtml.js +11 -5
  352. package/es/sidebar/reducers/all_files.js +5 -6
  353. package/es/sidebar/reducers/collection.js +12 -15
  354. package/es/sidebar/reducers/collections.js +6 -8
  355. package/es/sidebar/reducers/documents.js +7 -16
  356. package/es/sidebar/reducers/files.js +4 -6
  357. package/es/sidebar/reducers/filter.js +8 -23
  358. package/es/sidebar/reducers/flickr.js +10 -12
  359. package/es/sidebar/reducers/folder.js +16 -18
  360. package/es/sidebar/reducers/folders.js +4 -6
  361. package/es/sidebar/reducers/images.js +4 -16
  362. package/es/sidebar/reducers/index.js +3 -1
  363. package/es/sidebar/reducers/media.js +7 -16
  364. package/es/sidebar/reducers/newPageLinkExpanded.js +2 -5
  365. package/es/sidebar/reducers/noop.js +2 -2
  366. package/es/sidebar/reducers/rootFolderId.js +2 -5
  367. package/es/sidebar/reducers/session.js +4 -6
  368. package/es/sidebar/reducers/ui.js +6 -25
  369. package/es/sidebar/reducers/upload.js +16 -64
  370. package/es/sidebar/store/configureStore.js +1 -0
  371. package/es/sidebar/store/initialState.js +14 -26
  372. package/es/translations/locales/ab.js +1 -0
  373. package/es/translations/locales/ar.js +72 -8
  374. package/es/translations/locales/ca.js +72 -8
  375. package/es/translations/locales/cs.js +1 -0
  376. package/es/translations/locales/cs_CZ.js +1 -0
  377. package/es/translations/locales/cy.js +72 -8
  378. package/es/translations/locales/da-x-k12.js +72 -8
  379. package/es/translations/locales/da.js +72 -8
  380. package/es/translations/locales/da_DK.js +1 -0
  381. package/es/translations/locales/de.js +72 -8
  382. package/es/translations/locales/el.js +4 -0
  383. package/es/translations/locales/en-AU-x-unimelb.js +72 -8
  384. package/es/translations/locales/en-GB-x-ukhe.js +72 -8
  385. package/es/translations/locales/en.js +72 -8
  386. package/es/translations/locales/en_AU.js +72 -8
  387. package/es/translations/locales/en_CA.js +72 -8
  388. package/es/translations/locales/en_CY.js +72 -8
  389. package/es/translations/locales/en_GB.js +72 -8
  390. package/es/translations/locales/en_NZ.js +1 -0
  391. package/es/translations/locales/en_SE.js +1 -0
  392. package/es/translations/locales/en_US.js +1 -0
  393. package/es/translations/locales/es.js +72 -8
  394. package/es/translations/locales/es_ES.js +72 -8
  395. package/es/translations/locales/es_GT.js +1 -0
  396. package/es/translations/locales/fa_IR.js +7 -0
  397. package/es/translations/locales/fi.js +72 -8
  398. package/es/translations/locales/fr.js +72 -8
  399. package/es/translations/locales/fr_CA.js +73 -9
  400. package/es/translations/locales/ga.js +5 -13
  401. package/es/translations/locales/he.js +7 -0
  402. package/es/translations/locales/hi.js +72 -8
  403. package/es/translations/locales/ht.js +72 -8
  404. package/es/translations/locales/hu.js +7 -6
  405. package/es/translations/locales/hu_HU.js +1 -0
  406. package/es/translations/locales/hy.js +1 -0
  407. package/es/translations/locales/id.js +72 -8
  408. package/es/translations/locales/id_ID.js +1 -0
  409. package/es/translations/locales/is.js +72 -8
  410. package/es/translations/locales/it.js +72 -8
  411. package/es/translations/locales/ja.js +72 -8
  412. package/es/translations/locales/ko.js +1 -0
  413. package/es/translations/locales/ko_KR.js +1 -0
  414. package/es/translations/locales/lt.js +1 -0
  415. package/es/translations/locales/lt_LT.js +1 -0
  416. package/es/translations/locales/mi.js +72 -8
  417. package/es/translations/locales/mn_MN.js +1 -0
  418. package/es/translations/locales/ms.js +72 -8
  419. package/es/translations/locales/nb-x-k12.js +72 -8
  420. package/es/translations/locales/nb.js +72 -8
  421. package/es/translations/locales/nl.js +72 -8
  422. package/es/translations/locales/nl_NL.js +1 -0
  423. package/es/translations/locales/nn.js +7 -6
  424. package/es/translations/locales/pl.js +72 -8
  425. package/es/translations/locales/pt.js +72 -8
  426. package/es/translations/locales/pt_BR.js +72 -8
  427. package/es/translations/locales/ro.js +1 -0
  428. package/es/translations/locales/ru.js +72 -8
  429. package/es/translations/locales/se.js +1 -0
  430. package/es/translations/locales/sl.js +72 -8
  431. package/es/translations/locales/sv-x-k12.js +72 -8
  432. package/es/translations/locales/sv.js +72 -8
  433. package/es/translations/locales/sv_SE.js +1 -0
  434. package/es/translations/locales/tg.js +1 -0
  435. package/es/translations/locales/th.js +72 -8
  436. package/es/translations/locales/th_TH.js +1 -0
  437. package/es/translations/locales/tl_PH.js +1 -0
  438. package/es/translations/locales/tr.js +7 -0
  439. package/es/translations/locales/uk_UA.js +7 -0
  440. package/es/translations/locales/vi.js +72 -8
  441. package/es/translations/locales/vi_VN.js +1 -0
  442. package/es/translations/locales/zh-Hans.js +72 -8
  443. package/es/translations/locales/zh-Hant.js +72 -8
  444. package/es/translations/locales/zh.js +72 -8
  445. package/es/translations/locales/zh_HK.js +72 -8
  446. package/es/translations/locales/zh_TW.Big5.js +1 -0
  447. package/es/translations/locales/zh_TW.js +1 -0
  448. package/es/translations/tinymce/ar_SA.js +1 -0
  449. package/es/translations/tinymce/fi.js +1 -0
  450. package/es/translations/tinymce/ga.js +1 -0
  451. package/es/translations/tinymce/id.js +1 -0
  452. package/es/translations/tinymce/ru.js +1 -0
  453. package/es/translations/tinymce/ru_RU.js +1 -0
  454. package/es/translations/tinymce/sl.js +1 -0
  455. package/es/translations/tinymce/sr.js +1 -0
  456. package/es/translations/tinymce/th.js +1 -0
  457. package/es/translations/tinymce/uk_UA.js +1 -0
  458. package/es/translations/tinymce/vi_VN.js +1 -0
  459. package/es/util/TypedDict.js +4 -2
  460. package/es/util/elem-util.js +1 -1
  461. package/es/util/encrypted-storage.js +3 -13
  462. package/es/util/file-url-util.js +2 -7
  463. package/es/util/fullscreenHelpers.js +9 -9
  464. package/es/util/instui-icon-helper.js +4 -3
  465. package/es/util/loadingPlaceholder.js +39 -41
  466. package/es/util/simpleCache.js +1 -5
  467. package/es/util/string-util.js +1 -1
  468. package/es/util/textarea-editing-util.js +3 -7
  469. package/es/util/tinymce-plugin-util.js +0 -5
  470. package/es/util/url-util.js +20 -29
  471. package/eslint.config.js +250 -0
  472. package/jest.config.js +1 -1
  473. package/locales/en.json +190 -10
  474. package/package.json +78 -82
  475. package/scripts/build-canvas +2 -1
  476. package/scripts/build.js +4 -4
  477. package/scripts/installTranslations.js +7 -8
  478. package/testcafe/RCEWrapper.test.js +0 -1
  479. package/testcafe/StatusBar.test.js +0 -1
  480. package/testcafe/axe.test.js +3 -4
  481. package/testcafe/enhanceUserContent.test.js +0 -1
  482. package/tsconfig.json +21 -16
  483. package/{es/rce/__mocks__/styleMock.js → types/format-message-generate-id.d.ts} +6 -2
  484. package/{es/rce/plugins/shared/__mocks__/screenfull.js → types/js-beautify.d.ts} +4 -7
  485. package/.eslintrc +0 -45
  486. package/.prettierignore +0 -6
  487. package/es/rce/__mocks__/_mockCryptoEs.js +0 -124
  488. package/es/rce/__mocks__/tinymceReact.js +0 -55
  489. package/es/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
@@ -15,7 +15,9 @@
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 formatMessage from '../format-message';
20
+
19
21
  /*
20
22
  * builds an a displayable error based on errorContext and error
21
23
  *
@@ -25,74 +27,60 @@ import formatMessage from '../format-message';
25
27
  *
26
28
  * @returns { Object } Displayable error - An object with "text" and "variant" keys
27
29
  */
28
-
29
30
  export default function buildError(errorContext, error) {
30
31
  return getErrorClass(errorContext, error).build(error);
31
32
  }
32
-
33
33
  function getErrorClass(errorContext, error) {
34
- const errors = [QuotaError, CaptionSizeError, CaptionCreationError, DefaultError]; // Find the first error class that matches the given context and error.
35
- // Defaults to DefaultError
34
+ const errors = [QuotaError, CaptionSizeError, CaptionCreationError, DefaultError];
36
35
 
36
+ // Find the first error class that matches the given context and error.
37
+ // Defaults to DefaultError
37
38
  return errors.find(ErrorClass => ErrorClass.isMatch(errorContext, error));
38
39
  }
39
-
40
40
  class QuotaError {
41
41
  static isMatch(errorContext) {
42
- return (errorContext === null || errorContext === void 0 ? void 0 : errorContext.message) === 'file size exceeds quota';
42
+ return errorContext?.message === 'file size exceeds quota';
43
43
  }
44
-
45
44
  static build(_error) {
46
45
  return {
47
46
  text: formatMessage('File storage quota exceeded'),
48
47
  variant: 'error'
49
48
  };
50
49
  }
51
-
52
50
  }
53
-
54
51
  class CaptionSizeError {
55
52
  static isMatch(_errorContext, error) {
56
- return (error === null || error === void 0 ? void 0 : error.name) === 'FileSizeError';
53
+ return error?.name === 'FileSizeError';
57
54
  }
58
-
59
55
  static build(error) {
60
56
  return {
61
57
  text: formatMessage('Closed caption file must be less than {maxKb} kb', {
62
58
  maxKb: error.maxBytes / 1000 // bytes to kb
63
-
64
59
  }),
65
60
  variant: 'error'
66
61
  };
67
62
  }
68
-
69
63
  }
70
-
71
64
  class CaptionCreationError {
72
65
  static isMatch(errorContext) {
73
- return (errorContext === null || errorContext === void 0 ? void 0 : errorContext.message) === 'failed to save captions';
66
+ return errorContext?.message === 'failed to save captions';
74
67
  }
75
-
76
68
  static build(_error) {
77
69
  return {
78
70
  text: formatMessage('loading closed captions/subtitles failed.'),
79
71
  variant: 'error'
80
72
  };
81
73
  }
82
-
83
74
  }
84
-
85
75
  class DefaultError {
86
76
  static isMatch() {
87
77
  // DefaultError comes last in the list an always matches
88
78
  return true;
89
79
  }
90
-
91
80
  static build(_error) {
92
81
  return {
93
82
  text: formatMessage('Something went wrong. Check your connection, reload the page, and try again.'),
94
83
  variant: 'error'
95
84
  };
96
85
  }
97
-
98
86
  }
package/es/rcs/fake.js CHANGED
@@ -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
  const FAKE_TIMEOUT = process.env.NODE_ENV === 'test' ? 0 : 500;
19
20
  const PAGES = {
20
21
  // page of announcements
@@ -283,21 +284,19 @@ export function buildImage(index, name, height, width) {
283
284
  }
284
285
  const imageNames = ['bill_murray', 'bill_is_the_best', 'bill_who?', 'love_this_guy!!11!'];
285
286
  const images = [];
286
-
287
287
  for (let i = 0; i < 30; i++) {
288
288
  const name = imageNames[i % imageNames.length] + i + '.jpeg';
289
+
289
290
  /*
290
291
  * This is just to get some variety to the example images.
291
292
  * We get some Bills, each with unique dimensions following this pattern:
292
293
  * 100x200, 201x101, 302x202, 203x303, 304x404, 405x305,
293
294
  * 100x206, 201x107, 302x208, 203x309, 304x410, 405x311, etc.
294
295
  */
295
-
296
296
  const height = [100, 200, 200, 300, 300, 400][i % 6] + i;
297
297
  const width = [200, 100, 300, 200, 400, 300][i % 6] + Math.round(i / 6);
298
298
  images.push(buildImage(i, name, height, width));
299
299
  }
300
-
301
300
  const brokenImage = {
302
301
  id: 123000000,
303
302
  display_name: 'broken_image.jpeg',
@@ -346,7 +345,6 @@ const FLICKR_RESULTS = {
346
345
  title: 'champion chess'
347
346
  }]
348
347
  };
349
-
350
348
  function makeFiles(bookmark_base, extension, content_type) {
351
349
  return {
352
350
  [`${bookmark_base}1`]: {
@@ -379,7 +377,6 @@ function makeFiles(bookmark_base, extension, content_type) {
379
377
  }
380
378
  };
381
379
  }
382
-
383
380
  const DOCUMENTS = makeFiles('documents', 'txt', 'text/plain');
384
381
  const MEDIA = makeFiles('media', 'mp3', 'audio/mp3');
385
382
  export function getSession() {
@@ -465,8 +462,7 @@ export function fetchFolders() {
465
462
  }, 1000);
466
463
  });
467
464
  }
468
- export function fetchFiles() {
469
- let uri = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'files';
465
+ export function fetchFiles(uri = 'files') {
470
466
  return Promise.resolve(PAGES[uri]);
471
467
  }
472
468
  export function fetchImages(props) {
@@ -474,13 +470,11 @@ export function fetchImages(props) {
474
470
  setTimeout(() => {
475
471
  let response;
476
472
  const bookmark = props.images[props.contextType] && props.images[props.contextType].bookmark;
477
-
478
473
  if (bookmark) {
479
474
  response = IMAGE_RESPONSES.find(response => response.bookmarkForThis === props.bookmark);
480
475
  } else {
481
476
  response = IMAGE_RESPONSES[0];
482
477
  }
483
-
484
478
  if (response) {
485
479
  resolve(response);
486
480
  } else {
@@ -558,7 +552,6 @@ export function fetchDocs(state) {
558
552
  setTimeout(() => {
559
553
  const bookmark = state.documents[state.contextType] && state.documents[state.contextType].bookmark || 'documents1';
560
554
  const response = DOCUMENTS[bookmark];
561
-
562
555
  if (response) {
563
556
  resolve(response);
564
557
  } else {
@@ -572,11 +565,9 @@ export function fetchMedia(state) {
572
565
  setTimeout(() => {
573
566
  let response;
574
567
  const bookmark = state.media[state.contextType] && state.media[state.contextType].bookmark || 'media1';
575
-
576
568
  if (bookmark) {
577
569
  response = MEDIA[bookmark];
578
570
  }
579
-
580
571
  if (response) {
581
572
  resolve(response);
582
573
  } else {
@@ -585,11 +576,10 @@ export function fetchMedia(state) {
585
576
  }, FAKE_TIMEOUT);
586
577
  });
587
578
  }
588
- export function updateMediaObject(state, _ref) {
589
- let {
590
- media_object_id,
591
- title
592
- } = _ref;
579
+ export function updateMediaObject(state, {
580
+ media_object_id,
581
+ title
582
+ }) {
593
583
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
594
584
  return new Promise((resolve, reject) => {
595
585
  setTimeout(() => {
@@ -610,9 +600,8 @@ export function updateMediaObjectFailure() {
610
600
  }, FAKE_TIMEOUT);
611
601
  });
612
602
  }
613
- export function
614
- /* apiProps, {media_object_id, subtitles} */
615
- updateClosedCaptions() {
603
+ export function updateClosedCaptions(/* apiProps, {media_object_id, subtitles} */
604
+ ) {
616
605
  return new Promise(resolve => {
617
606
  setTimeout(() => {
618
607
  resolve([]);
@@ -15,11 +15,13 @@
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
  // This is a temporary patch until the All Files panel
19
20
  // is rewritten to use the files actions that query
20
21
  // data from the RCS, but still the CanvasContentTray
21
22
  // know when the FileBrowser is actively querying
22
23
  // so we can disable the search box in the Filter
24
+
23
25
  export const ALL_FILES_LOADING = 'ALL_FILES_LOADING';
24
26
  export function allFilesLoading(isLoading) {
25
27
  return {
@@ -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
  export const REQUEST_INITIAL_PAGE = 'REQUEST_INITIAL_PAGE';
19
20
  export const REQUEST_PAGE = 'REQUEST_PAGE';
20
21
  export const RECEIVE_PAGE = 'RECEIVE_PAGE';
@@ -52,22 +53,20 @@ export function failPage(key, error) {
52
53
  key,
53
54
  error
54
55
  };
55
- } // dispatches the start of the load, requests a page for the collection from
56
+ }
57
+
58
+ // dispatches the start of the load, requests a page for the collection from
56
59
  // the source, then dispatches the loaded page to the store on success or
57
60
  // clears the load on failure
58
-
59
61
  export function fetchPage(key, isInitial, searchString) {
60
62
  return (dispatch, getState) => {
61
63
  let isCancelled = false;
62
-
63
64
  const cancel = () => isCancelled = true;
64
-
65
65
  if (isInitial) {
66
66
  dispatch(requestInitialPage(key, cancel, searchString));
67
67
  } else {
68
68
  dispatch(requestPage(key, cancel));
69
69
  }
70
-
71
70
  const state = getState();
72
71
  const {
73
72
  source
@@ -85,7 +84,6 @@ export function fetchNextPage(key) {
85
84
  return (dispatch, getState) => {
86
85
  const state = getState();
87
86
  const collection = state.collections[key];
88
-
89
87
  if (collection) {
90
88
  if (collection.cancel) collection.cancel();
91
89
  return dispatch(fetchPage(key, false));
@@ -96,7 +94,6 @@ export function fetchInitialPage(key) {
96
94
  return (dispatch, getState) => {
97
95
  const state = getState();
98
96
  const collection = state.collections[key];
99
-
100
97
  if (collection && (collection.links.length === 0 || collection.searchString !== state.searchString)) {
101
98
  if (collection.cancel) collection.cancel();
102
99
  return dispatch(fetchPage(key, true, state.searchString));
@@ -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
  export const REQUEST_INITIAL_DOCS = 'REQUEST_INITIAL_DOCS';
19
20
  export const REQUEST_DOCS = 'REQUEST_NEXT_DOCS';
20
21
  export const RECEIVE_DOCS = 'RECEIVE_DOCS';
@@ -35,12 +36,11 @@ export function requestDocs(contextType) {
35
36
  }
36
37
  };
37
38
  }
38
- export function receiveDocs(_ref) {
39
- let {
40
- response,
41
- contextType,
42
- contextId
43
- } = _ref;
39
+ export function receiveDocs({
40
+ response,
41
+ contextType,
42
+ contextId
43
+ }) {
44
44
  const {
45
45
  files,
46
46
  bookmark
@@ -55,11 +55,10 @@ export function receiveDocs(_ref) {
55
55
  }
56
56
  };
57
57
  }
58
- export function failDocs(_ref2) {
59
- let {
60
- error,
61
- contextType
62
- } = _ref2;
58
+ export function failDocs({
59
+ error,
60
+ contextType
61
+ }) {
63
62
  return {
64
63
  type: FAIL_DOCS,
65
64
  payload: {
@@ -67,10 +66,11 @@ export function failDocs(_ref2) {
67
66
  contextType
68
67
  }
69
68
  };
70
- } // dispatches the start of the load, requests a page for the collection from
69
+ }
70
+
71
+ // dispatches the start of the load, requests a page for the collection from
71
72
  // the source, then dispatches the loaded page to the store on success or
72
73
  // clears the load on failure
73
-
74
74
  export function fetchDocs() {
75
75
  return (dispatch, getState) => {
76
76
  const state = getState();
@@ -83,21 +83,22 @@ export function fetchDocs() {
83
83
  contextType: state.contextType
84
84
  })));
85
85
  };
86
- } // fetches a page only if a page is not already being loaded and the
87
- // collection is not yet completely loaded
86
+ }
88
87
 
88
+ // fetches a page only if a page is not already being loaded and the
89
+ // collection is not yet completely loaded
89
90
  export function fetchNextDocs() {
90
91
  return (dispatch, getState) => {
91
92
  const state = getState();
92
93
  const documents = state.documents[state.contextType];
93
-
94
- if (!(documents !== null && documents !== void 0 && documents.isLoading) && documents !== null && documents !== void 0 && documents.hasMore) {
94
+ if (!documents?.isLoading && documents?.hasMore) {
95
95
  dispatch(requestDocs(state.contextType));
96
96
  return dispatch(fetchDocs());
97
97
  }
98
98
  };
99
- } // fetches the first page
99
+ }
100
100
 
101
+ // fetches the first page
101
102
  export function fetchInitialDocs() {
102
103
  return (dispatch, getState) => {
103
104
  const state = getState();
@@ -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
  export const ADD_FILE = 'action.files.add_file';
19
20
  export const ADD_FOLDER = 'action.files.add_folder';
20
21
  export const RECEIVE_FILES = 'action.files.receive_files';
@@ -30,14 +31,13 @@ export function createToggle(id) {
30
31
  id
31
32
  };
32
33
  }
33
- export function createAddFile(_ref) {
34
- let {
35
- id,
36
- name,
37
- url,
38
- type,
39
- embed
40
- } = _ref;
34
+ export function createAddFile({
35
+ id,
36
+ name,
37
+ url,
38
+ type,
39
+ embed
40
+ }) {
41
41
  return {
42
42
  type: ADD_FILE,
43
43
  id,
@@ -74,16 +74,14 @@ export function requestFiles(id, bookmark) {
74
74
  folders
75
75
  } = getState();
76
76
  dispatch(createRequestFiles(id));
77
- return source.fetchFiles(bookmark || folders[id].filesUrl).then(_ref2 => {
78
- let {
79
- files,
80
- bookmark
81
- } = _ref2;
77
+ return source.fetchFiles(bookmark || folders[id].filesUrl).then(({
78
+ files,
79
+ bookmark
80
+ }) => {
82
81
  dispatch(files.map(createAddFile).concat(createReceiveFiles(id, files)));
83
-
84
82
  if (bookmark) {
85
- // Page through all in folder, pagination links if a tree may be
86
- // weird, epecially since files and folders are independent.
83
+ // Page through all in folder, pagination links of a tree may be
84
+ // weird, especially since files and folders are independent.
87
85
  dispatch(requestFiles(id, bookmark));
88
86
  }
89
87
  });
@@ -119,13 +117,11 @@ export function requestSubfolders(id, bookmark) {
119
117
  folders
120
118
  } = getState();
121
119
  dispatch(createRequestSubfolders(id));
122
- return source.fetchPage(bookmark || folders[id].foldersUrl).then(_ref3 => {
123
- let {
124
- folders,
125
- bookmark
126
- } = _ref3;
120
+ return source.fetchPage(bookmark || folders[id].foldersUrl).then(({
121
+ folders,
122
+ bookmark
123
+ }) => {
127
124
  dispatch(folders.map(createAddFolder).concat(createReceiveSubfolders(id, folders, bookmark)));
128
-
129
125
  if (bookmark) {
130
126
  // Page through all in folder, pagination links if a tree may be
131
127
  // weird, epecially since files and folders are independent.
@@ -138,7 +134,6 @@ export function toggle(id) {
138
134
  return (dispatch, getState) => {
139
135
  dispatch(createToggle(id));
140
136
  const folder = getState().folders[id];
141
-
142
137
  if (!folder.requested && folder.expanded) {
143
138
  dispatch(requestSubfolders(folder.id));
144
139
  dispatch(requestFiles(folder.id));
@@ -153,12 +148,10 @@ export function createSetRoot(id) {
153
148
  }
154
149
  export function init(dispatch, getState) {
155
150
  const props = getState();
156
- return props.source.fetchRootFolder(props).then(_ref4 => {
157
- let {
158
- folders
159
- } = _ref4;
151
+ return props.source.fetchRootFolder(props).then(({
152
+ folders
153
+ }) => {
160
154
  const root = folders[0];
161
-
162
155
  if (root) {
163
156
  dispatch([createAddFolder(root), createSetRoot(root.id)]);
164
157
  dispatch(toggle(root.id));
@@ -15,16 +15,16 @@
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
  export const CHANGE_CONTEXT = 'CHANGE_CONTEXT';
19
20
  export const CHANGE_CONTEXT_TYPE = 'CHANGE_CONTEXT_TYPE';
20
21
  export const CHANGE_CONTEXT_ID = 'CHANGE_CONTEXT_ID';
21
22
  export const CHANGE_SEARCH_STRING = 'CHANGE_SEARCH_STRING';
22
23
  export const CHANGE_SORT_BY = 'CHANGE_SORT_BY';
23
- export function changeContext(_ref) {
24
- let {
25
- contextType,
26
- contextId
27
- } = _ref;
24
+ export function changeContext({
25
+ contextType,
26
+ contextId
27
+ }) {
28
28
  return dispatch => {
29
29
  dispatch(changeContextType(contextType));
30
30
  dispatch(changeContextId(contextId));
@@ -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
  export const START_FLICKR_SEARCH = 'START_FLICKR_SEARCH';
19
20
  export const RECEIVE_FLICKR_RESULTS = 'RECEIVE_FLICKR_RESULTS';
20
21
  export const FAIL_FLICKR_SEARCH = 'FAIL_FLICKR_SEARCH';
@@ -49,7 +50,6 @@ export function searchFlickr(term) {
49
50
  host,
50
51
  flickr
51
52
  } = getState();
52
-
53
53
  if (flickr && !flickr.searching) {
54
54
  dispatch(startFlickrSearch(term));
55
55
  return source.searchFlickr(term, {
@@ -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 { ICON_MAKER_ICONS, ICON_MAKER_ATTRIBUTE, ICON_MAKER_DOWNLOAD_URL_ATTR } from '../../rce/plugins/instructure_icon_maker/svg/constants';
19
20
  import buildDownloadUrl from '../../rce/plugins/shared/buildDownloadUrl';
20
21
  export const ADD_IMAGE = 'action.images.add_image';
@@ -22,14 +23,13 @@ export const REQUEST_INITIAL_IMAGES = 'action.images.request_initial_images';
22
23
  export const REQUEST_IMAGES = 'action.images.request_images';
23
24
  export const RECEIVE_IMAGES = 'action.images.receive_images';
24
25
  export const FAIL_IMAGES_LOAD = 'action.images.fail_images_load';
25
- export function createAddImage(_ref, contextType) {
26
- let {
27
- id,
28
- filename,
29
- display_name,
30
- url,
31
- thumbnail_url
32
- } = _ref;
26
+ export function createAddImage({
27
+ id,
28
+ filename,
29
+ display_name,
30
+ url,
31
+ thumbnail_url
32
+ }, contextType) {
33
33
  return {
34
34
  type: ADD_IMAGE,
35
35
  payload: {
@@ -60,12 +60,11 @@ export function requestImages(contextType) {
60
60
  }
61
61
  };
62
62
  }
63
- export function receiveImages(_ref2) {
64
- let {
65
- response,
66
- contextType,
67
- opts = {}
68
- } = _ref2;
63
+ export function receiveImages({
64
+ response,
65
+ contextType,
66
+ opts = {}
67
+ }) {
69
68
  const {
70
69
  files,
71
70
  bookmark,
@@ -81,11 +80,10 @@ export function receiveImages(_ref2) {
81
80
  }
82
81
  };
83
82
  }
84
- export function failImagesLoad(_ref3) {
85
- let {
86
- error,
87
- contextType
88
- } = _ref3;
83
+ export function failImagesLoad({
84
+ error,
85
+ contextType
86
+ }) {
89
87
  return {
90
88
  type: FAIL_IMAGES_LOAD,
91
89
  payload: {
@@ -95,27 +93,27 @@ export function failImagesLoad(_ref3) {
95
93
  };
96
94
  }
97
95
  export const applyAttributes = (file, opts) => {
98
- const augmentedFile = { ...file
96
+ const augmentedFile = {
97
+ ...file
99
98
  };
100
-
101
99
  if (opts.category === ICON_MAKER_ICONS) {
102
100
  augmentedFile[ICON_MAKER_ATTRIBUTE] = true;
103
101
  augmentedFile[ICON_MAKER_DOWNLOAD_URL_ATTR] = buildDownloadUrl(file.download_url);
104
102
  }
105
-
106
103
  return augmentedFile;
107
- }; // dispatches the start of the load, requests a page for the collection from
104
+ };
105
+
106
+ // dispatches the start of the load, requests a page for the collection from
108
107
  // the source, then dispatches the loaded page to the store on success or
109
108
  // clears the load on failure
110
-
111
- export function fetchImages() {
112
- let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
109
+ export function fetchImages(opts = {}) {
113
110
  const {
114
111
  category
115
112
  } = opts;
116
113
  return (dispatch, getState) => {
117
114
  const state = getState();
118
- return state.source.fetchImages({ ...state,
115
+ return state.source.fetchImages({
116
+ ...state,
119
117
  category
120
118
  }).then(response => dispatch(receiveImages({
121
119
  response,
@@ -126,25 +124,22 @@ export function fetchImages() {
126
124
  contextType: state.contextType
127
125
  })));
128
126
  };
129
- } // fetches a page only if a page is not already being loaded and the
127
+ }
128
+ // fetches a page only if a page is not already being loaded and the
130
129
  // collection is not yet completely loaded
131
-
132
- export function fetchNextImages() {
133
- let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
130
+ export function fetchNextImages(opts = {}) {
134
131
  return (dispatch, getState) => {
135
132
  const state = getState();
136
133
  const images = state.images[state.contextType];
137
-
138
- if (!(images !== null && images !== void 0 && images.isLoading) && images !== null && images !== void 0 && images.hasMore) {
134
+ if (!images?.isLoading && images?.hasMore) {
139
135
  dispatch(requestImages(state.contextType));
140
136
  return dispatch(fetchImages(opts));
141
137
  }
142
138
  };
143
- } // fetches the next page (subject to conditions on fetchNextImages) only if the
139
+ }
140
+ // fetches the next page (subject to conditions on fetchNextImages) only if the
144
141
  // collection is currently empty
145
-
146
- export function fetchInitialImages() {
147
- let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
142
+ export function fetchInitialImages(opts = {}) {
148
143
  return (dispatch, getState) => {
149
144
  const state = getState();
150
145
  dispatch(requestInitialImages(state.contextType));
@@ -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
  export const TOGGLE_NEWPAGE_FORM = 'TOGGLE_NEWPAGE_FORM';
19
20
  export function openOrCloseNewPageForm() {
20
21
  return {