@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,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
- import { REQUEST_INITIAL_PAGE, REQUEST_PAGE, RECEIVE_PAGE, FAIL_PAGE } from '../actions/data'; // manages the state for a specific collection. assumes the action is intended
19
- // for this collection (see collections.js)
20
18
 
21
- export default function () {
22
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
23
- let action = arguments.length > 1 ? arguments[1] : undefined;
19
+ import { REQUEST_INITIAL_PAGE, REQUEST_PAGE, RECEIVE_PAGE, FAIL_PAGE } from '../actions/data';
24
20
 
21
+ // manages the state for a specific collection. assumes the action is intended
22
+ // for this collection (see collections.js)
23
+ export default function (state = {}, action) {
25
24
  switch (action.type) {
26
25
  case REQUEST_INITIAL_PAGE:
27
- return { ...state,
26
+ return {
27
+ ...state,
28
28
  links: [],
29
29
  bookmark: null,
30
30
  isLoading: true,
@@ -32,23 +32,22 @@ export default function () {
32
32
  hasMore: true,
33
33
  searchString: action.searchString
34
34
  };
35
-
36
35
  case REQUEST_PAGE:
37
- return { ...state,
36
+ return {
37
+ ...state,
38
38
  isLoading: true,
39
39
  cancel: action.cancel
40
40
  };
41
-
42
41
  case RECEIVE_PAGE:
43
42
  // add links to collection, store bookmark if more, resolve loading
44
- return { ...state,
43
+ return {
44
+ ...state,
45
45
  links: state.links.concat(action.links),
46
46
  bookmark: action.bookmark,
47
47
  isLoading: false,
48
48
  cancel: null,
49
49
  hasMore: !!action.bookmark
50
50
  };
51
-
52
51
  case FAIL_PAGE:
53
52
  {
54
53
  const overrides = {
@@ -56,16 +55,14 @@ export default function () {
56
55
  cancel: null,
57
56
  error: action.error
58
57
  };
59
-
60
58
  if (state.links.length === 0) {
61
59
  overrides.bookmark = null;
62
60
  }
63
-
64
- return { ...state,
61
+ return {
62
+ ...state,
65
63
  ...overrides
66
64
  };
67
65
  }
68
-
69
66
  default:
70
67
  return state;
71
68
  }
@@ -15,15 +15,14 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import { REQUEST_INITIAL_PAGE, REQUEST_PAGE, RECEIVE_PAGE, FAIL_PAGE } from '../actions/data';
19
20
  import collectionReducer from './collection';
20
- import { combineReducers } from 'redux'; // binds a collection reducer to listen only to actions directed at it
21
+ import { combineReducers } from 'redux';
21
22
 
23
+ // binds a collection reducer to listen only to actions directed at it
22
24
  function boundCollectionReducer(key) {
23
- return function () {
24
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25
- let action = arguments.length > 1 ? arguments[1] : undefined;
26
-
25
+ return function (state = {}, action) {
27
26
  switch (action.type) {
28
27
  case REQUEST_INITIAL_PAGE:
29
28
  case REQUEST_PAGE:
@@ -34,14 +33,13 @@ function boundCollectionReducer(key) {
34
33
  } else {
35
34
  return state;
36
35
  }
37
-
38
36
  default:
39
37
  return state;
40
38
  }
41
39
  };
42
- } // combine a collection reducer for each collection we care about
43
-
40
+ }
44
41
 
42
+ // combine a collection reducer for each collection we care about
45
43
  export default combineReducers({
46
44
  announcements: boundCollectionReducer('announcements'),
47
45
  assignments: boundCollectionReducer('assignments'),
@@ -15,17 +15,17 @@
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 { REQUEST_INITIAL_DOCS, REQUEST_DOCS, RECEIVE_DOCS, FAIL_DOCS } from '../actions/documents';
19
- import { CHANGE_CONTEXT, CHANGE_SEARCH_STRING } from '../actions/filter'; // manages the state for a specific collection. assumes the action is intended
20
- // for this collection (see collections.js)
20
+ import { CHANGE_CONTEXT, CHANGE_SEARCH_STRING } from '../actions/filter';
21
21
 
22
- export default function documentsReducer() {
23
- let prevState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
24
- let action = arguments.length > 1 ? arguments[1] : undefined;
22
+ // manages the state for a specific collection. assumes the action is intended
23
+ // for this collection (see collections.js)
24
+ export default function documentsReducer(prevState = {}, action) {
25
25
  const ctxt = action.payload && action.payload.contextType;
26
- const state = { ...prevState
26
+ const state = {
27
+ ...prevState
27
28
  };
28
-
29
29
  if (ctxt && !state[ctxt]) {
30
30
  state[ctxt] = {
31
31
  files: [],
@@ -34,7 +34,6 @@ export default function documentsReducer() {
34
34
  hasMore: true
35
35
  };
36
36
  }
37
-
38
37
  switch (action.type) {
39
38
  case REQUEST_INITIAL_DOCS:
40
39
  state[ctxt] = {
@@ -44,11 +43,9 @@ export default function documentsReducer() {
44
43
  hasMore: true
45
44
  };
46
45
  return state;
47
-
48
46
  case REQUEST_DOCS:
49
47
  state[ctxt].isLoading = true;
50
48
  return state;
51
-
52
49
  case RECEIVE_DOCS:
53
50
  // add to collection, store bookmark if more, resolve loading
54
51
  state[ctxt] = {
@@ -58,31 +55,25 @@ export default function documentsReducer() {
58
55
  hasMore: !!action.payload.bookmark
59
56
  };
60
57
  return state;
61
-
62
58
  case FAIL_DOCS:
63
59
  {
64
60
  state[ctxt] = {
65
61
  isLoading: false,
66
62
  error: action.payload.error
67
63
  };
68
-
69
64
  if (action.payload.files && action.payload.files.length === 0) {
70
65
  state[ctxt].bookmark = null;
71
66
  }
72
-
73
67
  return state;
74
68
  }
75
-
76
69
  case CHANGE_CONTEXT:
77
70
  {
78
71
  return state;
79
72
  }
80
-
81
73
  case CHANGE_SEARCH_STRING:
82
74
  {
83
75
  return state;
84
76
  }
85
-
86
77
  default:
87
78
  return prevState;
88
79
  }
@@ -15,14 +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
- import { ADD_FILE } from '../actions/files';
19
- export default function filesReducer() {
20
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
21
- let action = arguments.length > 1 ? arguments[1] : undefined;
22
18
 
19
+ import { ADD_FILE } from '../actions/files';
20
+ export default function filesReducer(state = {}, action) {
23
21
  switch (action.type) {
24
22
  case ADD_FILE:
25
- return { ...state,
23
+ return {
24
+ ...state,
26
25
  [action.id]: {
27
26
  id: action.id,
28
27
  name: action.name,
@@ -31,7 +30,6 @@ export default function filesReducer() {
31
30
  embed: action.embed
32
31
  }
33
32
  };
34
-
35
33
  default:
36
34
  return state;
37
35
  }
@@ -15,47 +15,32 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import { CHANGE_CONTEXT_TYPE, CHANGE_CONTEXT_ID, CHANGE_SEARCH_STRING, CHANGE_SORT_BY } from '../actions/filter';
19
- export function changeContextType() {
20
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
21
- let action = arguments.length > 1 ? arguments[1] : undefined;
22
18
 
19
+ import { CHANGE_CONTEXT_TYPE, CHANGE_CONTEXT_ID, CHANGE_SEARCH_STRING, CHANGE_SORT_BY } from '../actions/filter';
20
+ export function changeContextType(state = '', action) {
23
21
  if (action.type === CHANGE_CONTEXT_TYPE) {
24
22
  return action.payload;
25
23
  }
26
-
27
24
  return state;
28
25
  }
29
- export function changeContextId() {
30
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
31
- let action = arguments.length > 1 ? arguments[1] : undefined;
32
-
26
+ export function changeContextId(state = '', action) {
33
27
  if (action.type === CHANGE_CONTEXT_ID) {
34
28
  return action.payload;
35
29
  }
36
-
37
30
  return state;
38
31
  }
39
- export function changeSearchString() {
40
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
41
- let action = arguments.length > 1 ? arguments[1] : undefined;
42
-
32
+ export function changeSearchString(state = '', action) {
43
33
  if (action.type === CHANGE_SEARCH_STRING) {
44
34
  return action.payload;
45
35
  }
46
-
47
36
  return state;
48
37
  }
49
- export function changeSortBy() {
50
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
51
- order: 'desc',
52
- sort: 'date_added'
53
- };
54
- let action = arguments.length > 1 ? arguments[1] : undefined;
55
-
38
+ export function changeSortBy(state = {
39
+ order: 'desc',
40
+ sort: 'date_added'
41
+ }, action) {
56
42
  if (action.type === CHANGE_SORT_BY) {
57
43
  return action.payload;
58
44
  }
59
-
60
45
  return state;
61
46
  }
@@ -15,36 +15,34 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import { START_FLICKR_SEARCH, RECEIVE_FLICKR_RESULTS, FAIL_FLICKR_SEARCH, TOGGLE_FLICKR_FORM } from '../actions/flickr';
19
- export default function () {
20
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
21
- let action = arguments.length > 1 ? arguments[1] : undefined;
22
18
 
19
+ import { START_FLICKR_SEARCH, RECEIVE_FLICKR_RESULTS, FAIL_FLICKR_SEARCH, TOGGLE_FLICKR_FORM } from '../actions/flickr';
20
+ export default function (state = {}, action) {
23
21
  switch (action.type) {
24
22
  case START_FLICKR_SEARCH:
25
- return { ...state,
23
+ return {
24
+ ...state,
26
25
  searching: true,
27
26
  searchTerm: action.term
28
27
  };
29
-
30
28
  case RECEIVE_FLICKR_RESULTS:
31
- return { ...state,
29
+ return {
30
+ ...state,
32
31
  searching: false,
33
32
  searchResults: action.results
34
33
  };
35
-
36
34
  case FAIL_FLICKR_SEARCH:
37
- return { ...state,
35
+ return {
36
+ ...state,
38
37
  searching: false,
39
38
  searchTerm: '',
40
39
  searchResults: []
41
40
  };
42
-
43
41
  case TOGGLE_FLICKR_FORM:
44
- return { ...state,
42
+ return {
43
+ ...state,
45
44
  formExpanded: !state.formExpanded
46
45
  };
47
-
48
46
  default:
49
47
  return state;
50
48
  }
@@ -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 * as actions from '../actions/files';
19
20
  const defaultState = {
20
21
  id: null,
@@ -29,63 +30,60 @@ const defaultState = {
29
30
  fileIds: [],
30
31
  folderIds: []
31
32
  };
32
- export default function folderReducer() {
33
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
34
- let action = arguments.length > 1 ? arguments[1] : undefined;
33
+ export default function folderReducer(state = defaultState, action) {
35
34
  let loadingCount;
36
-
37
35
  switch (action.type) {
38
36
  case actions.ADD_FOLDER:
39
- return { ...state,
37
+ return {
38
+ ...state,
40
39
  id: action.id,
41
40
  name: action.name,
42
41
  parentId: action.parentId,
43
42
  filesUrl: action.filesUrl,
44
43
  foldersUrl: action.foldersUrl
45
44
  };
46
-
47
45
  case actions.RECEIVE_FILES:
48
46
  loadingCount = state.loadingCount - 1;
49
- return { ...state,
47
+ return {
48
+ ...state,
50
49
  loadingCount,
51
50
  loading: !!loadingCount,
52
51
  fileIds: state.fileIds.concat(action.fileIds)
53
52
  };
54
-
55
53
  case actions.INSERT_FILE:
56
- return { ...state,
54
+ return {
55
+ ...state,
57
56
  fileIds: state.fileIds.concat(action.fileId)
58
57
  };
59
-
60
58
  case actions.RECEIVE_SUBFOLDERS:
61
59
  loadingCount = state.loadingCount - 1;
62
- return { ...state,
60
+ return {
61
+ ...state,
63
62
  loadingCount,
64
63
  loading: !!loadingCount,
65
64
  folderIds: state.folderIds.concat(action.folderIds)
66
65
  };
67
-
68
66
  case actions.REQUEST_FILES:
69
67
  loadingCount = state.loadingCount + 1;
70
- return { ...state,
68
+ return {
69
+ ...state,
71
70
  requested: true,
72
71
  loadingCount,
73
72
  loading: !!loadingCount
74
73
  };
75
-
76
74
  case actions.REQUEST_SUBFOLDERS:
77
75
  loadingCount = state.loadingCount + 1;
78
- return { ...state,
76
+ return {
77
+ ...state,
79
78
  requested: true,
80
79
  loadingCount,
81
80
  loading: !!loadingCount
82
81
  };
83
-
84
82
  case actions.TOGGLE:
85
- return { ...state,
83
+ return {
84
+ ...state,
86
85
  expanded: !state.expanded
87
86
  };
88
-
89
87
  default:
90
88
  return state;
91
89
  }
@@ -15,12 +15,10 @@
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 folder from './folder';
19
20
  import * as actions from '../actions/files';
20
- export default function foldersReducer() {
21
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
- let action = arguments.length > 1 ? arguments[1] : undefined;
23
-
21
+ export default function foldersReducer(state = {}, action) {
24
22
  switch (action.type) {
25
23
  case actions.ADD_FOLDER:
26
24
  case actions.RECEIVE_FILES:
@@ -29,10 +27,10 @@ export default function foldersReducer() {
29
27
  case actions.REQUEST_FILES:
30
28
  case actions.REQUEST_SUBFOLDERS:
31
29
  case actions.TOGGLE:
32
- return { ...state,
30
+ return {
31
+ ...state,
33
32
  [action.id]: folder(state[action.id], action)
34
33
  };
35
-
36
34
  default:
37
35
  return state;
38
36
  }
@@ -15,15 +15,14 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import { ADD_IMAGE, REQUEST_INITIAL_IMAGES, REQUEST_IMAGES, RECEIVE_IMAGES, FAIL_IMAGES_LOAD } from '../actions/images';
19
20
  import { CHANGE_CONTEXT, CHANGE_SEARCH_STRING } from '../actions/filter';
20
- export default function imagesReducer() {
21
- let prevState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
22
- let action = arguments.length > 1 ? arguments[1] : undefined;
21
+ export default function imagesReducer(prevState = {}, action) {
23
22
  const ctxt = action.payload && action.payload.contextType;
24
- const state = { ...prevState
23
+ const state = {
24
+ ...prevState
25
25
  };
26
-
27
26
  if (ctxt && !state[ctxt]) {
28
27
  state[ctxt] = {
29
28
  files: [],
@@ -32,7 +31,6 @@ export default function imagesReducer() {
32
31
  hasMore: true
33
32
  };
34
33
  }
35
-
36
34
  switch (action.type) {
37
35
  case ADD_IMAGE:
38
36
  {
@@ -56,7 +54,6 @@ export default function imagesReducer() {
56
54
  };
57
55
  return state;
58
56
  }
59
-
60
57
  case REQUEST_INITIAL_IMAGES:
61
58
  state[ctxt] = {
62
59
  files: [],
@@ -65,11 +62,9 @@ export default function imagesReducer() {
65
62
  hasMore: true
66
63
  };
67
64
  return state;
68
-
69
65
  case REQUEST_IMAGES:
70
66
  state[ctxt].isLoading = true;
71
67
  return state;
72
-
73
68
  case RECEIVE_IMAGES:
74
69
  // If a request resolved with files but the searchString has since
75
70
  // changed, then the files should not be concatenated because this
@@ -82,33 +77,26 @@ export default function imagesReducer() {
82
77
  hasMore: !!action.payload.bookmark
83
78
  };
84
79
  }
85
-
86
80
  return state;
87
-
88
81
  case FAIL_IMAGES_LOAD:
89
82
  state[ctxt] = {
90
83
  isLoading: false,
91
84
  error: action.payload.error,
92
85
  files: []
93
86
  };
94
-
95
87
  if (action.payload.files && action.payload.files.length === 0) {
96
88
  state[ctxt].bookmark = null;
97
89
  }
98
-
99
90
  return state;
100
-
101
91
  case CHANGE_CONTEXT:
102
92
  {
103
93
  return state;
104
94
  }
105
-
106
95
  case CHANGE_SEARCH_STRING:
107
96
  {
108
97
  state.searchString = action.payload;
109
98
  return state;
110
99
  }
111
-
112
100
  default:
113
101
  return prevState;
114
102
  }
@@ -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 noop from './noop';
19
20
  import uiReducer from './ui';
20
21
  import collectionsReducer from './collections';
@@ -30,8 +31,9 @@ import session from './session';
30
31
  import newPageLinkReducer from './newPageLinkExpanded';
31
32
  import { changeContextType, changeContextId, changeSearchString, changeSortBy } from './filter';
32
33
  import { allFilesLoading } from './all_files';
33
- import { combineReducers } from 'redux'; // combine for root level state.
34
+ import { combineReducers } from 'redux';
34
35
 
36
+ // combine for root level state.
35
37
  export default combineReducers({
36
38
  ui: uiReducer,
37
39
  source: noop,
@@ -15,17 +15,17 @@
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 { REQUEST_INITIAL_MEDIA, REQUEST_MEDIA, RECEIVE_MEDIA, FAIL_MEDIA } from '../actions/media';
19
- import { CHANGE_CONTEXT, CHANGE_SEARCH_STRING } from '../actions/filter'; // manages the state for a specific collection. assumes the action is intended
20
- // for this collection (see collections.js)
20
+ import { CHANGE_CONTEXT, CHANGE_SEARCH_STRING } from '../actions/filter';
21
21
 
22
- export default function mediaReducer() {
23
- let prevState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
24
- let action = arguments.length > 1 ? arguments[1] : undefined;
22
+ // manages the state for a specific collection. assumes the action is intended
23
+ // for this collection (see collections.js)
24
+ export default function mediaReducer(prevState = {}, action) {
25
25
  const ctxt = action.payload && action.payload.contextType;
26
- const state = { ...prevState
26
+ const state = {
27
+ ...prevState
27
28
  };
28
-
29
29
  if (ctxt && !state[ctxt]) {
30
30
  state[ctxt] = {
31
31
  files: [],
@@ -34,7 +34,6 @@ export default function mediaReducer() {
34
34
  hasMore: true
35
35
  };
36
36
  }
37
-
38
37
  switch (action.type) {
39
38
  case REQUEST_INITIAL_MEDIA:
40
39
  state[ctxt] = {
@@ -44,11 +43,9 @@ export default function mediaReducer() {
44
43
  hasMore: true
45
44
  };
46
45
  return state;
47
-
48
46
  case REQUEST_MEDIA:
49
47
  state[ctxt].isLoading = true;
50
48
  return state;
51
-
52
49
  case RECEIVE_MEDIA:
53
50
  state[ctxt] = {
54
51
  files: state[ctxt].files.concat(action.payload.files),
@@ -57,27 +54,21 @@ export default function mediaReducer() {
57
54
  hasMore: !!action.payload.bookmark
58
55
  };
59
56
  return state;
60
-
61
57
  case FAIL_MEDIA:
62
58
  {
63
59
  state[ctxt] = {
64
60
  isLoading: false,
65
61
  error: action.payload.error
66
62
  };
67
-
68
63
  if (action.payload.files && action.payload.files.length === 0) {
69
64
  state[ctxt].bookmark = null;
70
65
  }
71
-
72
66
  return state;
73
67
  }
74
-
75
68
  case CHANGE_CONTEXT:
76
69
  return state;
77
-
78
70
  case CHANGE_SEARCH_STRING:
79
71
  return state;
80
-
81
72
  default:
82
73
  return prevState;
83
74
  }
@@ -15,15 +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
- import { TOGGLE_NEWPAGE_FORM } from '../actions/links';
19
- export default function () {
20
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
21
- let action = arguments.length > 1 ? arguments[1] : undefined;
22
18
 
19
+ import { TOGGLE_NEWPAGE_FORM } from '../actions/links';
20
+ export default function (state = false, action) {
23
21
  switch (action.type) {
24
22
  case TOGGLE_NEWPAGE_FORM:
25
23
  return !state;
26
-
27
24
  default:
28
25
  return state;
29
26
  }
@@ -15,7 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- export default function () {
19
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
18
+
19
+ export default function (state = '') {
20
20
  return state;
21
21
  }
@@ -15,15 +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
- import { SET_ROOT } from '../actions/files';
19
- export default function rootFolderIdReducer() {
20
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
21
- let action = arguments.length > 1 ? arguments[1] : undefined;
22
18
 
19
+ import { SET_ROOT } from '../actions/files';
20
+ export default function rootFolderIdReducer(state = null, action) {
23
21
  switch (action.type) {
24
22
  case SET_ROOT:
25
23
  return action.id;
26
-
27
24
  default:
28
25
  return state;
29
26
  }
@@ -15,18 +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
  import { RECEIVE_SESSION } from '../actions/session';
19
20
  const defaultState = {};
20
- export default function sessionReducer() {
21
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
22
- let action = arguments.length > 1 ? arguments[1] : undefined;
23
-
21
+ export default function sessionReducer(state = defaultState, action) {
24
22
  switch (action.type) {
25
23
  case RECEIVE_SESSION:
26
- return { ...state,
24
+ return {
25
+ ...state,
27
26
  ...action.data
28
27
  };
29
-
30
28
  default:
31
29
  return state;
32
30
  }