@instructure/canvas-rce 5.14.1 → 5.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/DEVELOPMENT.md +1 -1
  3. package/README.md +0 -8
  4. package/__tests__/common/indicate.test.js +84 -0
  5. package/__tests__/common/mimeClass.test.js +85 -0
  6. package/__tests__/module/contentInsertionUtils.test.js +52 -0
  7. package/__tests__/module/indicatorRegion.test.js +75 -0
  8. package/__tests__/module/normalizeLocale.test.js +46 -0
  9. package/__tests__/module/normalizeProps.test.js +51 -0
  10. package/__tests__/module/sanitizePlugins.test.js +48 -0
  11. package/__tests__/module/wrapInitCb.test.js +56 -0
  12. package/__tests__/rcs/api.test.js +819 -0
  13. package/{mocha-reporter-config.js → __tests__/sidebar/actions/all_files.test.js} +10 -9
  14. package/__tests__/sidebar/actions/data.test.js +196 -0
  15. package/__tests__/sidebar/actions/utils.js +44 -0
  16. package/{es/rce/plugins/shared/__mocks__/screenfull.js → __tests__/sidebar/reducers/all_files.test.js} +10 -6
  17. package/babel.config.js +3 -1
  18. package/es/bridge/Bridge.js +8 -56
  19. package/es/bridge/index.js +1 -0
  20. package/es/canvasFileBrowser/FileBrowser.js +12 -59
  21. package/es/canvasFileBrowser/en-US.js +3 -6
  22. package/es/common/FlashAlert.js +7 -28
  23. package/es/common/browser.js +4 -2
  24. package/es/common/fileUrl.js +104 -59
  25. package/es/common/incremental-loading/LoadMoreButton.js +1 -0
  26. package/es/common/incremental-loading/LoadingIndicator.js +1 -2
  27. package/es/common/incremental-loading/LoadingStatus.js +1 -2
  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 +15 -8
  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 +17 -28
  36. package/es/enhance-user-content/enhance_user_content.js +28 -60
  37. package/es/enhance-user-content/external_links.js +5 -8
  38. package/es/enhance-user-content/index.js +1 -0
  39. package/es/enhance-user-content/instructure_helper.js +12 -34
  40. package/es/enhance-user-content/jqueryish_funcs.js +8 -11
  41. package/es/enhance-user-content/mathml.js +35 -82
  42. package/es/enhance-user-content/media_comment_thumbnail.js +5 -17
  43. package/es/format-message.js +3 -4
  44. package/es/getThemeVars.js +8 -6
  45. package/es/getTranslations.js +1 -78
  46. package/es/index.js +3 -1
  47. package/es/rce/AlertMessageArea.js +1 -1
  48. package/es/rce/DraggingBlocker.js +4 -2
  49. package/es/rce/KeyboardShortcutModal.js +1 -0
  50. package/es/rce/RCE.js +12 -11
  51. package/es/rce/RCEGlobals.js +12 -10
  52. package/es/rce/RCEVariants.js +27 -10
  53. package/es/rce/RCEWrapper.js +167 -386
  54. package/es/rce/RCEWrapperProps.js +8 -3
  55. package/es/rce/RceHtmlEditor.js +5 -8
  56. package/es/rce/ResizeHandle.js +3 -8
  57. package/es/rce/RestoreAutoSaveModal.js +1 -2
  58. package/es/rce/ShowOnFocusButton/index.js +0 -6
  59. package/es/rce/StatusBar.js +8 -37
  60. package/es/rce/alertHandler.js +1 -4
  61. package/es/rce/contentInsertion.js +35 -57
  62. package/es/rce/contentInsertionUtils.js +6 -8
  63. package/es/rce/contentRendering.js +7 -12
  64. package/es/rce/customEvents.js +1 -0
  65. package/es/rce/editorLanguage.js +22 -10
  66. package/es/rce/indicatorRegion.js +6 -5
  67. package/es/rce/normalizeLocale.js +5 -3
  68. package/es/rce/normalizeProps.js +3 -1
  69. package/es/rce/plugins/instructure-ui-icons/plugin.js +21 -3
  70. package/es/rce/plugins/instructure_color/clickCallback.js +84 -0
  71. package/es/rce/plugins/instructure_color/components/ColorPicker.js +299 -0
  72. package/es/rce/plugins/instructure_color/components/ColorPopup.js +68 -0
  73. package/es/rce/plugins/instructure_color/components/colorUtils.js +60 -0
  74. package/es/rce/plugins/instructure_color/plugin.js +40 -0
  75. package/es/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +10 -3
  76. package/es/rce/plugins/instructure_condensed_buttons/plugin.js +1 -0
  77. package/es/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +1 -2
  78. package/es/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +3 -2
  79. package/es/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +1 -0
  80. package/es/rce/plugins/instructure_condensed_buttons/ui/list-button.js +22 -15
  81. package/es/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +1 -2
  82. package/es/rce/plugins/instructure_documents/clickCallback.js +1 -0
  83. package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +1 -9
  84. package/es/rce/plugins/instructure_documents/components/Link.js +3 -18
  85. package/es/rce/plugins/instructure_documents/plugin.js +7 -14
  86. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +4 -2
  87. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +1 -2
  88. package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +12 -29
  89. package/es/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +11 -12
  90. package/es/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +4 -3
  91. package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +4 -2
  92. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +13 -7
  93. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +4 -7
  94. package/es/rce/plugins/instructure_equation/MathIcon/index.js +1 -1
  95. package/es/rce/plugins/instructure_equation/MathIcon/svgs.js +1 -1
  96. package/es/rce/plugins/instructure_equation/clickCallback.js +2 -5
  97. package/es/rce/plugins/instructure_equation/mathlive/index.js +1 -1
  98. package/es/rce/plugins/instructure_equation/plugin.js +7 -10
  99. package/es/rce/plugins/instructure_fullscreen/plugin.js +3 -6
  100. package/es/rce/plugins/instructure_html_view/clickCallback.js +1 -0
  101. package/es/rce/plugins/instructure_html_view/plugin.js +5 -4
  102. package/es/rce/plugins/instructure_icon_maker/clickCallback.js +2 -4
  103. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +1 -2
  104. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +1 -0
  105. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +1 -0
  106. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +1 -0
  107. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +1 -2
  108. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +25 -22
  109. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +7 -11
  110. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +27 -23
  111. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +5 -4
  112. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +11 -9
  113. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +1 -0
  114. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +5 -4
  115. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +1 -3
  116. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +7 -7
  117. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +1 -0
  118. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +27 -20
  119. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +1 -0
  120. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +1 -0
  121. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +1 -0
  122. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +4 -4
  123. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +1 -2
  124. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +1 -5
  125. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +1 -0
  126. package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +18 -33
  127. package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +4 -4
  128. package/es/rce/plugins/instructure_icon_maker/plugin.js +10 -14
  129. package/es/rce/plugins/instructure_icon_maker/reducers/imageSection.js +37 -38
  130. package/es/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +24 -24
  131. package/es/rce/plugins/instructure_icon_maker/registerEditToolbar.js +1 -3
  132. package/es/rce/plugins/instructure_icon_maker/svg/constants.js +4 -3
  133. package/es/rce/plugins/instructure_icon_maker/svg/font.js +3 -1
  134. package/es/rce/plugins/instructure_icon_maker/svg/image.js +69 -83
  135. package/es/rce/plugins/instructure_icon_maker/svg/index.js +11 -15
  136. package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
  137. package/es/rce/plugins/instructure_icon_maker/svg/settings.js +32 -39
  138. package/es/rce/plugins/instructure_icon_maker/svg/shape.js +1 -49
  139. package/es/rce/plugins/instructure_icon_maker/svg/text.js +7 -92
  140. package/es/rce/plugins/instructure_icon_maker/svg/utils.js +1 -7
  141. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +2 -6
  142. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +1 -15
  143. package/es/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +3 -4
  144. package/es/rce/plugins/instructure_icon_maker/utils/iconValidation.js +1 -1
  145. package/es/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +1 -0
  146. package/es/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +12 -13
  147. package/es/rce/plugins/instructure_image/ImageEmbedOptions.js +6 -24
  148. package/es/rce/plugins/instructure_image/ImageList/Image.js +1 -6
  149. package/es/rce/plugins/instructure_image/ImageList/index.js +1 -2
  150. package/es/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +7 -27
  151. package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +3 -16
  152. package/es/rce/plugins/instructure_image/Images/index.js +1 -3
  153. package/es/rce/plugins/instructure_image/clickCallback.js +1 -0
  154. package/es/rce/plugins/instructure_image/plugin.js +13 -18
  155. package/es/rce/plugins/instructure_links/clickCallback.js +1 -0
  156. package/es/rce/plugins/instructure_links/components/AccordionSection.js +1 -0
  157. package/es/rce/plugins/instructure_links/components/CollectionPanel.js +1 -3
  158. package/es/rce/plugins/instructure_links/components/Link.js +7 -19
  159. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +1 -21
  160. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +1 -4
  161. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +3 -20
  162. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +1 -12
  163. package/es/rce/plugins/instructure_links/components/LinkSet.js +4 -20
  164. package/es/rce/plugins/instructure_links/components/LinksPanel.js +1 -2
  165. package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -9
  166. package/es/rce/plugins/instructure_links/components/NoResults.js +1 -7
  167. package/es/rce/plugins/instructure_links/plugin.js +17 -40
  168. package/es/rce/plugins/instructure_links/validateURL.js +81 -36
  169. package/es/rce/plugins/instructure_media_embed/clickCallback.js +2 -5
  170. package/es/rce/plugins/instructure_media_embed/components/Embed.js +1 -0
  171. package/es/rce/plugins/instructure_media_embed/plugin.js +7 -3
  172. package/es/rce/plugins/instructure_paste/pasteMenuCommand.js +1 -5
  173. package/es/rce/plugins/instructure_paste/plugin.js +27 -29
  174. package/es/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +14 -53
  175. package/es/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +21 -49
  176. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +11 -42
  177. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +1 -2
  178. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +1 -1
  179. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +2 -10
  180. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +1 -2
  181. package/es/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +1 -0
  182. package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +2 -1
  183. package/es/rce/{__mocks__/_mockStudioPlayer.js → plugins/instructure_rce_external_tools/constants.js} +11 -3
  184. package/es/rce/plugins/instructure_rce_external_tools/dialog-helper.js +19 -4
  185. package/es/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -2
  186. package/es/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +130 -136
  187. package/es/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +100 -95
  188. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +1 -0
  189. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +2 -19
  190. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +1 -14
  191. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +1 -6
  192. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +1 -9
  193. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +1 -1
  194. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -5
  195. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +18 -10
  196. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +4 -4
  197. package/es/rce/plugins/instructure_rce_external_tools/plugin.js +7 -16
  198. package/es/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +1 -1
  199. package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +1 -25
  200. package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +1 -4
  201. package/es/rce/plugins/instructure_record/MediaPanel/index.js +1 -9
  202. package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +8 -51
  203. package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +4 -17
  204. package/es/rce/plugins/instructure_record/clickCallback.js +7 -15
  205. package/es/rce/plugins/instructure_record/mediaTranslations.js +1 -0
  206. package/es/rce/plugins/instructure_record/plugin.js +11 -18
  207. package/es/rce/plugins/instructure_search_and_replace/clickCallback.js +2 -5
  208. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTray.js +20 -35
  209. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTrayController.js +3 -18
  210. package/es/rce/plugins/instructure_search_and_replace/getSelectionContext.js +2 -9
  211. package/es/rce/plugins/instructure_search_and_replace/plugin.js +1 -3
  212. package/es/rce/plugins/instructure_studio_media_options/plugin.js +1 -1
  213. package/es/rce/plugins/instructure_wordcount/clickCallback.js +2 -5
  214. package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +1 -4
  215. package/es/rce/plugins/instructure_wordcount/plugin.js +1 -0
  216. package/es/rce/plugins/instructure_wordcount/utils/countContent.js +1 -8
  217. package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +1 -0
  218. package/es/rce/plugins/shared/CanvasContentTray.js +22 -49
  219. package/es/rce/plugins/shared/CheckerboardStyling.js +1 -1
  220. package/es/rce/plugins/shared/ColorInput.js +5 -14
  221. package/es/rce/plugins/shared/ConditionalTooltip.js +1 -0
  222. package/es/rce/plugins/shared/ContentSelection.js +17 -58
  223. package/es/rce/plugins/shared/DimensionUtils.js +1 -8
  224. package/es/rce/plugins/shared/DimensionsInput/DimensionInput.js +6 -6
  225. package/es/rce/plugins/shared/DimensionsInput/index.js +37 -15
  226. package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.js +5 -29
  227. package/es/rce/plugins/shared/ErrorBoundary.js +2 -5
  228. package/es/rce/plugins/shared/EventUtils.js +1 -3
  229. package/es/rce/plugins/shared/Filter.js +8 -38
  230. package/es/rce/plugins/shared/FixedContentTray.js +3 -3
  231. package/es/rce/plugins/shared/ImageCropper/DirectionRegion.js +1 -8
  232. package/es/rce/plugins/shared/ImageCropper/Modal.js +4 -7
  233. package/es/rce/plugins/shared/ImageCropper/Preview.js +7 -11
  234. package/es/rce/plugins/shared/ImageCropper/constants.js +1 -0
  235. package/es/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +2 -5
  236. package/es/rce/plugins/shared/ImageCropper/controls/ResetControls.js +1 -0
  237. package/es/rce/plugins/shared/ImageCropper/controls/RotationControls.js +1 -10
  238. package/es/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +1 -0
  239. package/es/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +1 -11
  240. package/es/rce/plugins/shared/ImageCropper/controls/index.js +1 -0
  241. package/es/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +3 -16
  242. package/es/rce/plugins/shared/ImageCropper/controls/utils.js +1 -2
  243. package/es/rce/plugins/shared/ImageCropper/imageCropUtils.js +1 -10
  244. package/es/rce/plugins/shared/ImageCropper/index.js +1 -0
  245. package/es/rce/plugins/shared/ImageCropper/propTypes.js +1 -0
  246. package/es/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +15 -14
  247. package/es/rce/plugins/shared/ImageCropper/shape.js +1 -0
  248. package/es/rce/plugins/shared/ImageCropper/svg/index.js +1 -2
  249. package/es/rce/plugins/shared/ImageCropper/svg/shape.js +1 -17
  250. package/es/rce/plugins/shared/ImageCropper/svg/utils.js +1 -0
  251. package/es/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +19 -46
  252. package/es/rce/plugins/shared/ImageCropper/useMouseWheel.js +8 -10
  253. package/es/rce/plugins/shared/ImageOptionsForm.js +1 -2
  254. package/es/rce/plugins/shared/LinkDisplay.js +1 -2
  255. package/es/rce/plugins/shared/PreviewIcon.js +1 -6
  256. package/es/rce/plugins/shared/Previewable.js +1 -0
  257. package/es/rce/plugins/shared/RceFileBrowser.js +5 -7
  258. package/es/rce/plugins/shared/StoreContext.js +1 -2
  259. package/es/rce/plugins/shared/StudioLtiSupportUtils.js +10 -6
  260. package/es/rce/plugins/shared/UnknownFileTypePanel.js +1 -0
  261. package/es/rce/plugins/shared/Upload/CanvasContentPanel.js +13 -18
  262. package/es/rce/plugins/shared/Upload/CategoryProcessor.js +1 -1
  263. package/es/rce/plugins/shared/Upload/ComputerPanel.js +8 -26
  264. package/es/rce/plugins/shared/Upload/PanelFilter.js +3 -12
  265. package/es/rce/plugins/shared/Upload/SvgCategoryProcessor.js +4 -3
  266. package/es/rce/plugins/shared/Upload/UploadFile.js +15 -18
  267. package/es/rce/plugins/shared/Upload/UploadFileModal.js +9 -25
  268. package/es/rce/plugins/shared/Upload/UrlPanel.js +1 -0
  269. package/es/rce/plugins/shared/Upload/UsageRightsSelectBox.js +7 -12
  270. package/es/rce/plugins/shared/Upload/doFileUpload.js +4 -6
  271. package/es/rce/plugins/shared/Upload/index.js +1 -0
  272. package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +1 -3
  273. package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +6 -24
  274. package/es/rce/plugins/shared/ai_tools/aiicons.js +1 -0
  275. package/es/rce/plugins/shared/ai_tools/index.js +1 -0
  276. package/es/rce/plugins/shared/buildDownloadUrl.js +0 -2
  277. package/es/rce/plugins/shared/canvasContentUtils.js +6 -9
  278. package/es/rce/plugins/shared/compressionUtils.js +1 -8
  279. package/es/rce/plugins/shared/dateUtils.js +1 -1
  280. package/es/rce/plugins/shared/do-fetch-api-effect/defaultFetchOptions.js +4 -2
  281. package/es/rce/plugins/shared/do-fetch-api-effect/doFetchApi.js +7 -10
  282. package/es/rce/plugins/shared/do-fetch-api-effect/index.js +1 -0
  283. package/es/rce/plugins/shared/do-fetch-api-effect/parse-link-header.js +6 -20
  284. package/es/rce/plugins/shared/do-fetch-api-effect/query-string-encoding.js +5 -3
  285. package/es/rce/plugins/shared/fileShape.js +4 -9
  286. package/es/rce/plugins/shared/fileTypeUtils.js +32 -42
  287. package/es/rce/plugins/shared/fileUtils.js +1 -2
  288. package/es/rce/plugins/shared/linkUtils.js +1 -16
  289. package/es/rce/plugins/shared/round.js +1 -0
  290. package/es/rce/plugins/shared/trayUtils.js +4 -3
  291. package/es/rce/plugins/shared/useDataUrl.js +9 -9
  292. package/es/rce/plugins/shared/useFilterSettings.js +3 -3
  293. package/es/rce/plugins/tinymce-a11y-checker/components/ColorField.js +2 -6
  294. package/es/rce/plugins/tinymce-a11y-checker/components/checker.js +5 -63
  295. package/es/rce/plugins/tinymce-a11y-checker/components/color-picker.js +1 -2
  296. package/es/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +1 -0
  297. package/es/rce/plugins/tinymce-a11y-checker/components/pointer.js +1 -0
  298. package/es/rce/plugins/tinymce-a11y-checker/node-checker.js +1 -6
  299. package/es/rce/plugins/tinymce-a11y-checker/plugin.js +4 -7
  300. package/es/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +3 -26
  301. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +9 -38
  302. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +1 -5
  303. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +1 -2
  304. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +1 -1
  305. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +1 -2
  306. package/es/rce/plugins/tinymce-a11y-checker/rules/index.js +1 -0
  307. package/es/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +1 -4
  308. package/es/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +5 -24
  309. package/es/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +1 -3
  310. package/es/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +1 -6
  311. package/es/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +1 -3
  312. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +1 -2
  313. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header.js +1 -9
  314. package/es/rce/plugins/tinymce-a11y-checker/utils/colors.js +1 -0
  315. package/es/rce/plugins/tinymce-a11y-checker/utils/describe.js +1 -7
  316. package/es/rce/plugins/tinymce-a11y-checker/utils/dom.js +1 -26
  317. package/es/rce/plugins/tinymce-a11y-checker/utils/indicate.js +16 -15
  318. package/es/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +7 -10
  319. package/es/rce/plugins/tinymce-a11y-checker/utils/strings.js +1 -4
  320. package/es/rce/root.js +9 -8
  321. package/es/rce/sanitizePlugins.js +1 -3
  322. package/es/rce/style.js +1 -4
  323. package/es/rce/tinyRCE.js +13 -9
  324. package/es/rce/tinymce.oxide.content.min.css.js +1 -0
  325. package/es/rce/tinymce.oxide.skin.min.css.js +1 -0
  326. package/es/rce/transformContent.js +8 -10
  327. package/es/rce/types.js +1 -0
  328. package/es/rce/userOS.js +1 -1
  329. package/es/rce/wrapInitCb.js +50 -43
  330. package/es/rcs/api.js +61 -116
  331. package/es/rcs/buildError.js +5 -17
  332. package/es/rcs/fake.js +4 -13
  333. package/es/sidebar/actions/all_files.js +2 -0
  334. package/es/sidebar/actions/data.js +4 -7
  335. package/es/sidebar/actions/documents.js +9 -6
  336. package/es/sidebar/actions/files.js +3 -6
  337. package/es/sidebar/actions/filter.js +1 -0
  338. package/es/sidebar/actions/flickr.js +1 -1
  339. package/es/sidebar/actions/images.js +12 -11
  340. package/es/sidebar/actions/links.js +1 -0
  341. package/es/sidebar/actions/media.js +12 -10
  342. package/es/sidebar/actions/session.js +1 -3
  343. package/es/sidebar/actions/ui.js +1 -0
  344. package/es/sidebar/actions/upload.js +14 -39
  345. package/es/sidebar/containers/Sidebar.js +1 -2
  346. package/es/sidebar/containers/sidebarHandlers.js +3 -1
  347. package/es/sidebar/dragHtml.js +5 -3
  348. package/es/sidebar/reducers/all_files.js +4 -3
  349. package/es/sidebar/reducers/collection.js +12 -13
  350. package/es/sidebar/reducers/collections.js +5 -5
  351. package/es/sidebar/reducers/documents.js +6 -13
  352. package/es/sidebar/reducers/files.js +3 -3
  353. package/es/sidebar/reducers/filter.js +1 -8
  354. package/es/sidebar/reducers/flickr.js +9 -9
  355. package/es/sidebar/reducers/folder.js +15 -15
  356. package/es/sidebar/reducers/folders.js +3 -3
  357. package/es/sidebar/reducers/images.js +3 -13
  358. package/es/sidebar/reducers/index.js +3 -1
  359. package/es/sidebar/reducers/media.js +6 -13
  360. package/es/sidebar/reducers/newPageLinkExpanded.js +1 -2
  361. package/es/sidebar/reducers/noop.js +1 -0
  362. package/es/sidebar/reducers/rootFolderId.js +1 -2
  363. package/es/sidebar/reducers/session.js +3 -3
  364. package/es/sidebar/reducers/ui.js +3 -16
  365. package/es/sidebar/reducers/upload.js +8 -40
  366. package/es/sidebar/store/configureStore.js +1 -0
  367. package/es/sidebar/store/initialState.js +13 -24
  368. package/es/translations/locales/ab.js +1 -0
  369. package/es/translations/locales/ar.js +67 -9
  370. package/es/translations/locales/ca.js +67 -9
  371. package/es/translations/locales/cs.js +1 -0
  372. package/es/translations/locales/cs_CZ.js +1 -0
  373. package/es/translations/locales/cy.js +67 -9
  374. package/es/translations/locales/da-x-k12.js +67 -9
  375. package/es/translations/locales/da.js +67 -9
  376. package/es/translations/locales/da_DK.js +1 -0
  377. package/es/translations/locales/de.js +67 -9
  378. package/es/translations/locales/el.js +4 -0
  379. package/es/translations/locales/en-AU-x-unimelb.js +67 -9
  380. package/es/translations/locales/en-GB-x-ukhe.js +67 -9
  381. package/es/translations/locales/en.js +72 -8
  382. package/es/translations/locales/en_AU.js +67 -9
  383. package/es/translations/locales/en_CA.js +67 -9
  384. package/es/translations/locales/en_CY.js +67 -9
  385. package/es/translations/locales/en_GB.js +67 -9
  386. package/es/translations/locales/en_NZ.js +1 -0
  387. package/es/translations/locales/en_SE.js +1 -0
  388. package/es/translations/locales/en_US.js +1 -0
  389. package/es/translations/locales/es.js +67 -9
  390. package/es/translations/locales/es_ES.js +67 -9
  391. package/es/translations/locales/es_GT.js +1 -0
  392. package/es/translations/locales/fa_IR.js +7 -0
  393. package/es/translations/locales/fi.js +67 -9
  394. package/es/translations/locales/fr.js +67 -9
  395. package/es/translations/locales/fr_CA.js +68 -10
  396. package/es/translations/locales/ga.js +5 -13
  397. package/es/translations/locales/he.js +7 -0
  398. package/es/translations/locales/hi.js +67 -9
  399. package/es/translations/locales/ht.js +67 -9
  400. package/es/translations/locales/hu.js +7 -6
  401. package/es/translations/locales/hu_HU.js +1 -0
  402. package/es/translations/locales/hy.js +1 -0
  403. package/es/translations/locales/id.js +67 -9
  404. package/es/translations/locales/id_ID.js +1 -0
  405. package/es/translations/locales/is.js +67 -9
  406. package/es/translations/locales/it.js +67 -9
  407. package/es/translations/locales/ja.js +67 -9
  408. package/es/translations/locales/ko.js +1 -0
  409. package/es/translations/locales/ko_KR.js +1 -0
  410. package/es/translations/locales/lt.js +1 -0
  411. package/es/translations/locales/lt_LT.js +1 -0
  412. package/es/translations/locales/mi.js +67 -9
  413. package/es/translations/locales/mn_MN.js +1 -0
  414. package/es/translations/locales/ms.js +67 -9
  415. package/es/translations/locales/nb-x-k12.js +67 -9
  416. package/es/translations/locales/nb.js +67 -9
  417. package/es/translations/locales/nl.js +67 -9
  418. package/es/translations/locales/nl_NL.js +1 -0
  419. package/es/translations/locales/nn.js +7 -6
  420. package/es/translations/locales/pl.js +67 -9
  421. package/es/translations/locales/pt.js +67 -9
  422. package/es/translations/locales/pt_BR.js +67 -9
  423. package/es/translations/locales/ro.js +1 -0
  424. package/es/translations/locales/ru.js +67 -9
  425. package/es/translations/locales/se.js +1 -0
  426. package/es/translations/locales/sl.js +67 -9
  427. package/es/translations/locales/sv-x-k12.js +67 -9
  428. package/es/translations/locales/sv.js +67 -9
  429. package/es/translations/locales/sv_SE.js +1 -0
  430. package/es/translations/locales/tg.js +1 -0
  431. package/es/translations/locales/th.js +67 -9
  432. package/es/translations/locales/th_TH.js +1 -0
  433. package/es/translations/locales/tl_PH.js +1 -0
  434. package/es/translations/locales/tr.js +7 -0
  435. package/es/translations/locales/uk_UA.js +7 -0
  436. package/es/translations/locales/vi.js +67 -9
  437. package/es/translations/locales/vi_VN.js +1 -0
  438. package/es/translations/locales/zh-Hans.js +67 -9
  439. package/es/translations/locales/zh-Hant.js +67 -9
  440. package/es/translations/locales/zh.js +67 -9
  441. package/es/translations/locales/zh_HK.js +67 -9
  442. package/es/translations/locales/zh_TW.Big5.js +1 -0
  443. package/es/translations/locales/zh_TW.js +1 -0
  444. package/es/translations/tinymce/ar_SA.js +1 -0
  445. package/es/translations/tinymce/fi.js +1 -0
  446. package/es/translations/tinymce/ga.js +1 -0
  447. package/es/translations/tinymce/id.js +1 -0
  448. package/es/translations/tinymce/ru.js +1 -0
  449. package/es/translations/tinymce/ru_RU.js +1 -0
  450. package/es/translations/tinymce/sl.js +1 -0
  451. package/es/translations/tinymce/sr.js +1 -0
  452. package/es/translations/tinymce/th.js +1 -0
  453. package/es/translations/tinymce/uk_UA.js +1 -0
  454. package/es/translations/tinymce/vi_VN.js +1 -0
  455. package/es/util/TypedDict.js +4 -2
  456. package/es/util/encrypted-storage.js +3 -13
  457. package/es/util/file-url-util.js +1 -6
  458. package/es/util/fullscreenHelpers.js +4 -1
  459. package/es/util/instui-icon-helper.js +4 -3
  460. package/es/util/loadingPlaceholder.js +38 -39
  461. package/es/util/simpleCache.js +0 -3
  462. package/es/util/string-util.js +1 -1
  463. package/es/util/textarea-editing-util.js +3 -7
  464. package/es/util/tinymce-plugin-util.js +0 -5
  465. package/es/util/url-util.js +16 -25
  466. package/eslint.config.js +239 -0
  467. package/jest.config.js +1 -1
  468. package/package.json +76 -81
  469. package/scripts/build-canvas +2 -1
  470. package/scripts/build.js +4 -4
  471. package/testcafe/RCEWrapper.test.js +0 -1
  472. package/testcafe/StatusBar.test.js +0 -1
  473. package/testcafe/axe.test.js +3 -4
  474. package/testcafe/enhanceUserContent.test.js +0 -1
  475. package/tsconfig.json +20 -15
  476. package/.eslintrc +0 -45
  477. package/.prettierignore +0 -6
  478. package/es/rce/__mocks__/_mockCryptoEs.js +0 -124
  479. package/es/rce/__mocks__/styleMock.js +0 -18
  480. package/es/rce/__mocks__/tinymceReact.js +0 -55
  481. package/es/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
@@ -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 round from '../../round';
19
20
  import { SHAPE_CONTAINER_LENGTH } from '../constants';
20
21
  import { createSvgElement } from './utils';
@@ -25,37 +26,27 @@ export function buildShapeMask(_ref) {
25
26
  size
26
27
  } = _ref;
27
28
  const dimensionSize = size || SHAPE_CONTAINER_LENGTH;
28
-
29
29
  switch (shape) {
30
30
  case Shape.Square:
31
31
  return buildSquare(dimensionSize);
32
-
33
32
  case Shape.Circle:
34
33
  return buildCircle(dimensionSize);
35
-
36
34
  case Shape.Triangle:
37
35
  return buildTriangle(dimensionSize);
38
-
39
36
  case Shape.Diamond:
40
37
  return buildDiamond(dimensionSize);
41
-
42
38
  case Shape.Pentagon:
43
39
  return buildPentagon(dimensionSize);
44
-
45
40
  case Shape.Hexagon:
46
41
  return buildHexagon(dimensionSize);
47
-
48
42
  case Shape.Octagon:
49
43
  return buildOctagon(dimensionSize);
50
-
51
44
  case Shape.Star:
52
45
  return buildStar(dimensionSize);
53
-
54
46
  default:
55
47
  throw new Error(`Invalid shape: ${shape}`);
56
48
  }
57
49
  }
58
-
59
50
  function buildSquare(dimensionSize) {
60
51
  return createSvgElement('rect', {
61
52
  x: 0,
@@ -65,7 +56,6 @@ function buildSquare(dimensionSize) {
65
56
  fill: 'black'
66
57
  });
67
58
  }
68
-
69
59
  function buildCircle(dimensionSize) {
70
60
  return createSvgElement('circle', {
71
61
  cx: dimensionSize / 2,
@@ -74,19 +64,16 @@ function buildCircle(dimensionSize) {
74
64
  fill: 'black'
75
65
  });
76
66
  }
77
-
78
67
  function buildTriangle(dimensionSize) {
79
68
  return createSvgElement('path', {
80
69
  d: `M${dimensionSize / 2} 0L${dimensionSize} ${dimensionSize}H0L${dimensionSize / 2} 0Z`
81
70
  });
82
71
  }
83
-
84
72
  function buildDiamond(dimensionSize) {
85
73
  return createSvgElement('path', {
86
74
  d: `M${dimensionSize / 2} 0L${dimensionSize} ${dimensionSize / 2}L${dimensionSize / 2} ${dimensionSize}L0 ${dimensionSize / 2}L${dimensionSize / 2} 0Z`
87
75
  });
88
76
  }
89
-
90
77
  function buildPentagon(dimensionSize) {
91
78
  const half = round(dimensionSize / 2, 2);
92
79
  const alpha = round(0.3906 * dimensionSize, 2);
@@ -95,14 +82,12 @@ function buildPentagon(dimensionSize) {
95
82
  d: `M${half} 0L${dimensionSize} ${alpha}L${half + beta} ${dimensionSize}H${half - beta}L0 ${alpha}L${half} 0L${half} 0Z`
96
83
  });
97
84
  }
98
-
99
85
  function buildHexagon(dimensionSize) {
100
86
  const leg = round(0.2895 * dimensionSize, 2);
101
87
  return createSvgElement('path', {
102
88
  d: `M${dimensionSize - leg} 0L${dimensionSize} ${dimensionSize / 2}L${dimensionSize - leg} ${dimensionSize}H${leg}L0 ${dimensionSize / 2}L${leg} 0H${dimensionSize - leg}Z`
103
89
  });
104
90
  }
105
-
106
91
  function buildOctagon(dimensionSize) {
107
92
  const leg = round(0.2895 * dimensionSize, 2);
108
93
  const side = round(dimensionSize - 2 * leg, 2);
@@ -110,7 +95,6 @@ function buildOctagon(dimensionSize) {
110
95
  d: `M0 ${leg}L${leg} 0H${leg + side}L${dimensionSize} ${leg}V${leg + side}L${leg + side} ${dimensionSize}H${leg}L0 ${leg + side}V${leg}Z`
111
96
  });
112
97
  }
113
-
114
98
  function buildStar(dimensionSize) {
115
99
  const half = round(dimensionSize / 2, 2);
116
100
  const alpha = round(0.1143 * dimensionSize, 2);
@@ -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 function createSvgElement(tag) {
19
20
  let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
20
21
  const element = document.createElementNS('http://www.w3.org/2000/svg', tag);
@@ -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 { useEffect, useState, useRef, useCallback } from 'react';
19
20
  import { debounce } from '@instructure/debounce';
20
21
  import { KEY_EVENT_DELAY, KEY_EVENT_ACCELERATION } from './constants';
@@ -22,25 +23,20 @@ import { actions } from './reducers/imageCropper';
22
23
  const EVENT_EXCEPTION_ELEMENT_IDS = ['imageCropperHeader', 'imageCropperFooter', 'imageCropperControls'];
23
24
  const TOUCH_EVENTS = ['ontouchmove', 'ontouchend', 'ontouchcancel'];
24
25
  const MOUSE_EVENTS = ['onmousemove', 'onmouseup', 'onmouseout'];
25
-
26
26
  function useKeysEvents(tempTranslateXRef, tempTranslateYRef, tempTranslateX, tempTranslateY, setTempTranslateX, setTempTranslateY, isMoving, setIsMoving, dispatch) {
27
27
  // Refs that manage the keydown acceleration
28
28
  const direction = useRef(0);
29
29
  const initialTime = useRef(null);
30
-
31
30
  const onKeyDown = event => {
32
31
  // 37 = Left, 38 = Up, 39 = Right, 40 = Down
33
32
  const {
34
33
  keyCode
35
34
  } = event;
36
-
37
35
  if (![37, 38, 39, 40].includes(keyCode)) {
38
36
  return;
39
37
  }
40
-
41
38
  event.preventDefault();
42
39
  let elapsedTime;
43
-
44
40
  if (keyCode !== direction.current) {
45
41
  elapsedTime = 0;
46
42
  initialTime.current = new Date();
@@ -55,22 +51,18 @@ function useKeysEvents(tempTranslateXRef, tempTranslateYRef, tempTranslateX, tem
55
51
  const currentTime = new Date();
56
52
  elapsedTime = (currentTime - initialTime.current) / 1000;
57
53
  }
58
-
59
54
  const translationDiff = Math.floor(KEY_EVENT_ACCELERATION * elapsedTime ** 2) || 1;
60
-
61
55
  if ([37, 39].includes(keyCode)) {
62
56
  const sign = keyCode === 37 ? -1 : 1;
63
57
  const newTranslateX = tempTranslateXRef.current + sign * translationDiff;
64
58
  setTempTranslateX(newTranslateX);
65
59
  }
66
-
67
60
  if ([38, 40].includes(keyCode)) {
68
61
  const sign = keyCode === 38 ? -1 : 1;
69
62
  const newTranslateY = tempTranslateYRef.current + sign * translationDiff;
70
63
  setTempTranslateY(newTranslateY);
71
64
  }
72
65
  };
73
-
74
66
  const stopMovement = useCallback(debounce(() => {
75
67
  direction.current = 0;
76
68
  initialTime.current = null;
@@ -83,41 +75,36 @@ function useKeysEvents(tempTranslateXRef, tempTranslateYRef, tempTranslateX, tem
83
75
  // If the active element is in the modal header, footer or controls.
84
76
  if (EVENT_EXCEPTION_ELEMENT_IDS.some(id => {
85
77
  var _document$getElementB;
86
-
87
78
  return (_document$getElementB = document.getElementById(id)) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.contains(document.activeElement);
88
79
  })) {
89
80
  return;
90
81
  }
91
-
92
82
  onKeyDown(event);
93
- }; // Adds the event listener when component did mount
94
-
95
-
83
+ };
84
+ // Adds the event listener when component did mount
96
85
  document.addEventListener('keydown', onKeyDownWrapper);
97
86
  return () => {
98
87
  // Removes the event listener when component will unmount
99
88
  document.removeEventListener('keydown', onKeyDownWrapper);
100
- }; // eslint-disable-next-line react-hooks/exhaustive-deps
89
+ };
90
+ // eslint-disable-next-line react-hooks/exhaustive-deps
101
91
  }, []);
102
92
  useEffect(() => {
103
93
  if (isMoving && direction.current !== 0) {
104
94
  stopMovement();
105
- } // eslint-disable-next-line react-hooks/exhaustive-deps
106
-
95
+ }
96
+ // eslint-disable-next-line react-hooks/exhaustive-deps
107
97
  }, [tempTranslateX, tempTranslateY]);
108
98
  }
109
-
110
99
  function useMouseAndTouchEvents(tempTranslateX, tempTranslateY, setTempTranslateX, setTempTranslateY, setIsMoving) {
111
100
  const initialPageX = useRef(0);
112
101
  const initialPageY = useRef(0);
113
102
  const isDragging = useRef(false);
114
103
  const imgElement = useRef(null);
115
-
116
104
  const onStopMove = isMouseEvent => () => {
117
105
  isDragging.current = false;
118
106
  initialPageX.current = 0;
119
107
  initialPageY.current = 0;
120
-
121
108
  if (imgElement.current) {
122
109
  const [move, end, cancel] = isMouseEvent ? MOUSE_EVENTS : TOUCH_EVENTS;
123
110
  imgElement.current[move] = null;
@@ -125,15 +112,12 @@ function useMouseAndTouchEvents(tempTranslateX, tempTranslateY, setTempTranslate
125
112
  imgElement.current[cancel] = null;
126
113
  imgElement.current = null;
127
114
  }
128
-
129
115
  setIsMoving(false);
130
116
  };
131
-
132
117
  const onMove = isMouseEvent => e => {
133
118
  if (!isDragging.current) {
134
119
  return onStopMove();
135
120
  }
136
-
137
121
  const {
138
122
  clientX,
139
123
  clientY
@@ -141,7 +125,6 @@ function useMouseAndTouchEvents(tempTranslateX, tempTranslateY, setTempTranslate
141
125
  setTempTranslateX(tempTranslateX + clientX - initialPageX.current);
142
126
  setTempTranslateY(tempTranslateY + clientY - initialPageY.current);
143
127
  };
144
-
145
128
  const onStartMove = (e, isMouseEvent) => {
146
129
  isDragging.current = true;
147
130
  const {
@@ -155,79 +138,69 @@ function useMouseAndTouchEvents(tempTranslateX, tempTranslateY, setTempTranslate
155
138
  initialPageY.current = clientY;
156
139
  const [move, end, cancel] = isMouseEvent ? MOUSE_EVENTS : TOUCH_EVENTS;
157
140
  target[move] = onMove(isMouseEvent);
158
- target[end] = onStopMove(isMouseEvent); // Should stop the movement when touch/mouse leaves the preview
159
-
141
+ target[end] = onStopMove(isMouseEvent);
142
+ // Should stop the movement when touch/mouse leaves the preview
160
143
  target[cancel] = onStopMove(isMouseEvent);
161
144
  imgElement.current = target;
162
145
  setIsMoving(true);
163
146
  };
164
-
165
147
  return [e => onStartMove(e, true), e => onStartMove(e, false)];
166
148
  }
167
-
168
149
  export function useKeyMouseTouchEvents(translateX, translateY, dispatch) {
169
150
  const [tempTranslateX, _setTempTranslateX] = useState(translateX);
170
151
  const [tempTranslateY, _setTempTranslateY] = useState(translateY);
171
- const [isMoving, setIsMoving] = useState(false); // These are used to get the current values when the callback is called from outside.
152
+ const [isMoving, setIsMoving] = useState(false);
172
153
 
154
+ // These are used to get the current values when the callback is called from outside.
173
155
  const tempTranslateXRef = useRef(tempTranslateX);
174
156
  const tempTranslateYRef = useRef(tempTranslateY);
175
-
176
157
  const setTempTranslateX = data => {
177
158
  setIsMoving(true);
178
159
  tempTranslateXRef.current = data;
179
-
180
160
  _setTempTranslateX(data);
181
161
  };
182
-
183
162
  const setTempTranslateY = data => {
184
163
  setIsMoving(true);
185
164
  tempTranslateYRef.current = data;
186
-
187
165
  _setTempTranslateY(data);
188
166
  };
189
-
190
167
  useKeysEvents(tempTranslateXRef, tempTranslateYRef, tempTranslateX, tempTranslateY, setTempTranslateX, setTempTranslateY, isMoving, setIsMoving, dispatch);
191
- const [onMouseDown, onTouchStart] = useMouseAndTouchEvents(tempTranslateX, tempTranslateY, setTempTranslateX, setTempTranslateY, setIsMoving); // Updates the reducer state when user stops moving.
168
+ const [onMouseDown, onTouchStart] = useMouseAndTouchEvents(tempTranslateX, tempTranslateY, setTempTranslateX, setTempTranslateY, setIsMoving);
192
169
 
170
+ // Updates the reducer state when user stops moving.
193
171
  useEffect(() => {
194
172
  if (isMoving) {
195
173
  return;
196
174
  }
197
-
198
175
  if (tempTranslateX !== translateX) {
199
176
  dispatch({
200
177
  type: actions.SET_TRANSLATE_X,
201
178
  payload: tempTranslateX
202
179
  });
203
180
  }
204
-
205
181
  if (tempTranslateY !== translateY) {
206
182
  dispatch({
207
183
  type: actions.SET_TRANSLATE_Y,
208
184
  payload: tempTranslateY
209
185
  });
210
- } // eslint-disable-next-line react-hooks/exhaustive-deps
211
-
212
- }, [isMoving]); // Updates the component state when props changed.
186
+ }
187
+ // eslint-disable-next-line react-hooks/exhaustive-deps
188
+ }, [isMoving]);
213
189
 
190
+ // Updates the component state when props changed.
214
191
  useEffect(() => {
215
192
  if (isMoving) {
216
193
  return;
217
194
  }
218
-
219
195
  if (translateX !== tempTranslateX) {
220
196
  tempTranslateXRef.current = translateX;
221
-
222
197
  _setTempTranslateX(translateX);
223
198
  }
224
-
225
199
  if (translateY !== tempTranslateY) {
226
200
  tempTranslateYRef.current = translateY;
227
-
228
201
  _setTempTranslateY(translateY);
229
- } // eslint-disable-next-line react-hooks/exhaustive-deps
230
-
202
+ }
203
+ // eslint-disable-next-line react-hooks/exhaustive-deps
231
204
  }, [translateX, translateY]);
232
205
  return [tempTranslateX, tempTranslateY, onMouseDown, onTouchStart];
233
206
  }
@@ -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 { useEffect, useState } from 'react';
19
20
  import { debounce } from '@instructure/debounce';
20
21
  import { calculateScaleRatio } from './controls/utils';
@@ -23,35 +24,32 @@ import { actions } from './reducers/imageCropper';
23
24
  export function useMouseWheel(scaleRatio, dispatch) {
24
25
  const [tempScaleRatio, setTempScaleRatio] = useState(scaleRatio);
25
26
  const [isScaling, setIsScaling] = useState(false);
26
-
27
27
  const onWheelCallback = event => {
28
28
  // Couldn't prevent modal body scroll when zoom, when using {passive:false}
29
29
  // the zoom event listener makes zoom look like a bouncing effect.
30
30
  // https://chromestatus.com/feature/6662647093133312
31
31
  // event.preventDefault()
32
- const newScaleRatio = calculateScaleRatio(tempScaleRatio - event.deltaY * WHEEL_SCALE_STEP);
33
32
 
33
+ const newScaleRatio = calculateScaleRatio(tempScaleRatio - event.deltaY * WHEEL_SCALE_STEP);
34
34
  if (newScaleRatio !== tempScaleRatio) {
35
35
  setIsScaling(true);
36
36
  setTempScaleRatio(newScaleRatio);
37
37
  }
38
38
  };
39
-
40
39
  const setScalingRatio = () => {
41
40
  setIsScaling(false);
42
41
  };
43
-
44
42
  useEffect(() => {
45
43
  if (!isScaling) {
46
44
  setTempScaleRatio(scaleRatio);
47
- } // eslint-disable-next-line react-hooks/exhaustive-deps
48
-
45
+ }
46
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49
47
  }, [scaleRatio]);
50
48
  useEffect(() => {
51
49
  if (isScaling) {
52
50
  debounce(setScalingRatio, WHEEL_EVENT_DELAY)();
53
- } // eslint-disable-next-line react-hooks/exhaustive-deps
54
-
51
+ }
52
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55
53
  }, [tempScaleRatio]);
56
54
  useEffect(() => {
57
55
  if (!isScaling) {
@@ -59,8 +57,8 @@ export function useMouseWheel(scaleRatio, dispatch) {
59
57
  type: actions.SET_SCALE_RATIO,
60
58
  payload: tempScaleRatio
61
59
  });
62
- } // eslint-disable-next-line react-hooks/exhaustive-deps
63
-
60
+ }
61
+ // eslint-disable-next-line react-hooks/exhaustive-deps
64
62
  }, [isScaling]);
65
63
  return [tempScaleRatio, onWheelCallback];
66
64
  }
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  import { IconButton } from '@instructure/ui-buttons';
20
21
  import { SimpleSelect } from '@instructure/ui-simple-select';
@@ -28,7 +29,6 @@ import { Tooltip } from '@instructure/ui-tooltip';
28
29
  import { CUSTOM, MIN_HEIGHT, MIN_WIDTH, MIN_PERCENTAGE, imageSizes, labelForImageSize } from '../instructure_image/ImageEmbedOptions';
29
30
  import formatMessage from '../../../format-message';
30
31
  import DimensionsInput from './DimensionsInput';
31
-
32
32
  const ImageOptionsForm = _ref => {
33
33
  let {
34
34
  imageSize,
@@ -137,5 +137,4 @@ const ImageOptionsForm = _ref => {
137
137
  minPercentage: MIN_PERCENTAGE
138
138
  })))));
139
139
  };
140
-
141
140
  export default ImageOptionsForm;
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React, { useEffect } from 'react';
19
20
  import { View } from '@instructure/ui-view';
20
21
  import { Text } from '@instructure/ui-text';
@@ -24,9 +25,7 @@ import formatMessage from '../../../format-message';
24
25
  import { showFlashAlert } from '../../../common/FlashAlert';
25
26
  import { ScreenReaderContent } from '@instructure/ui-a11y-content';
26
27
  import { getIcon, getFriendlyLinkType } from './linkUtils';
27
-
28
28
  const getEditMessage = () => formatMessage('If left empty, link text will display as course link name');
29
-
30
29
  export const LinkDisplay = _ref => {
31
30
  let {
32
31
  linkText,
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  import PropTypes from 'prop-types';
20
21
  import { Spinner } from '@instructure/ui-spinner';
@@ -22,7 +23,6 @@ import { Flex } from '@instructure/ui-flex';
22
23
  import formatMessage from '../../../format-message';
23
24
  import checkerboardStyle from './CheckerboardStyling';
24
25
  const SQUARE_SIZE = 4;
25
-
26
26
  const PreviewIcon = _ref => {
27
27
  let {
28
28
  color,
@@ -33,10 +33,8 @@ const PreviewIcon = _ref => {
33
33
  checkered
34
34
  } = _ref;
35
35
  const variantSettings = PreviewIcon.variants[variant];
36
-
37
36
  const background = () => {
38
37
  if (loading) return {};
39
-
40
38
  if (image) {
41
39
  return {
42
40
  backgroundImage: `url(${image})`,
@@ -45,7 +43,6 @@ const PreviewIcon = _ref => {
45
43
  backgroundPosition: 'center'
46
44
  };
47
45
  }
48
-
49
46
  return {
50
47
  border: '1px solid #73818C',
51
48
  borderRadius: '3px',
@@ -58,7 +55,6 @@ const PreviewIcon = _ref => {
58
55
  `
59
56
  };
60
57
  };
61
-
62
58
  return /*#__PURE__*/React.createElement("div", {
63
59
  id: "preview-background-wrapper",
64
60
  style: checkered ? checkerboardStyle(SQUARE_SIZE) : {}
@@ -80,7 +76,6 @@ const PreviewIcon = _ref => {
80
76
  size: "small"
81
77
  })))));
82
78
  };
83
-
84
79
  PreviewIcon.variants = {
85
80
  small: {
86
81
  width: '25px',
@@ -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
  // copied from canvas-lms/ui/shared/features/doc-previews/jquery/index.js
19
20
  export const previewableMimeTypes = ['application/vnd.openxmlformats-officedocument.wordprocessingml.template', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.sun.xml.writer', 'application/excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'text/rtf', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', 'application/vnd.sun.xml.impress', 'application/vnd.sun.xml.calc', 'application/vnd.ms-excel', 'application/msword', 'application/mspowerpoint', 'application/rtf', 'application/vnd.oasis.opendocument.presentation', 'application/vnd.oasis.opendocument.text', 'application/vnd.openxmlformats-officedocument.presentationml.template', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'text/plain', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/postscript', 'application/pdf', 'application/vnd.ms-powerpoint'];
20
21
  export function isPreviewable(type) {
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React, { useMemo } from 'react';
19
20
  import { func, object, string } from 'prop-types';
20
21
  import classnames from 'classnames';
@@ -22,8 +23,9 @@ import { View } from '@instructure/ui-view';
22
23
  import { downloadToWrap } from '../../../common/fileUrl';
23
24
  import { mediaPlayerURLFromFile } from './fileTypeUtils';
24
25
  import RceApiSource from '../../../rcs/api';
25
- import addIconMakerAttributes from '../instructure_icon_maker/utils/addIconMakerAttributes'; // TODO: should find a better way to share this code
26
+ import addIconMakerAttributes from '../instructure_icon_maker/utils/addIconMakerAttributes';
26
27
 
28
+ // TODO: should find a better way to share this code
27
29
  import FileBrowser from '../../../canvasFileBrowser/FileBrowser';
28
30
  import { isPreviewable } from './Previewable';
29
31
  RceFileBrowser.propTypes = {
@@ -56,10 +58,8 @@ export default function RceFileBrowser(props) {
56
58
  canvasOrigin
57
59
  });
58
60
  }, [host, jwt, refreshToken, source, canvasOrigin]);
59
-
60
61
  function handleFileSelect(fileInfo) {
61
62
  var _fileInfo$api$embed, _fileInfo$api;
62
-
63
63
  const content_type = fileInfo.api.type;
64
64
  const canPreview = isPreviewable(content_type);
65
65
  const url = downloadToWrap(fileInfo.src);
@@ -73,7 +73,6 @@ export default function RceFileBrowser(props) {
73
73
  target: '_blank',
74
74
  content_type
75
75
  };
76
-
77
76
  if (((_fileInfo$api = fileInfo.api) === null || _fileInfo$api === void 0 ? void 0 : _fileInfo$api.category) === 'icon_maker_icons') {
78
77
  onFileSelectParams.src = fileInfo.api.url;
79
78
  addIconMakerAttributes(onFileSelectParams);
@@ -83,14 +82,13 @@ export default function RceFileBrowser(props) {
83
82
  instructure_scribd_file: canPreview,
84
83
  inline_disabled: true
85
84
  });
86
- onFileSelectParams = { ...onFileSelectParams,
85
+ onFileSelectParams = {
86
+ ...onFileSelectParams,
87
87
  class: clazz
88
88
  };
89
89
  }
90
-
91
90
  onFileSelect(onFileSelectParams);
92
91
  }
93
-
94
92
  return /*#__PURE__*/React.createElement(View, {
95
93
  as: "div",
96
94
  margin: "medium",
@@ -15,13 +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
  import React, { createContext, useContext, useState } from 'react';
19
20
  import { connect, Provider as ReduxProvider } from 'react-redux';
20
21
  import bridge from '../../../bridge';
21
22
  import sidebarHandlers from '../../../sidebar/containers/sidebarHandlers';
22
23
  import { propsFromState } from '../../../sidebar/containers/Sidebar';
23
24
  import configureStore from '../../../sidebar/store/configureStore';
24
-
25
25
  function Consumer(_ref) {
26
26
  let {
27
27
  children,
@@ -35,7 +35,6 @@ function Consumer(_ref) {
35
35
  ...props
36
36
  });
37
37
  }
38
-
39
38
  export const StoreConsumer = connect(propsFromState, sidebarHandlers)(Consumer);
40
39
  const StoreContext = /*#__PURE__*/createContext();
41
40
  export function StoreProvider(_ref2) {
@@ -15,7 +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 PropTypes, { bool, shape } from 'prop-types';
20
+
21
+ /**
22
+ * Interface for content item's 'custom' field, specifically for what is expected to come from Studio
23
+ *
24
+ * Used to determine whether or not Studio embedded media should be resizable, and whether or not we
25
+ * present controls for the user to modify the embedded media.
26
+ */
27
+
19
28
  export const parsedStudioOptionsPropType = shape({
20
29
  resizable: bool.isRequired,
21
30
  convertibleToLink: bool.isRequired
@@ -25,7 +34,6 @@ export function isStudioContentItemCustomJson(input) {
25
34
  }
26
35
  export function studioAttributesFrom(customJson) {
27
36
  var _customJson$resizable, _customJson$enableMed;
28
-
29
37
  return {
30
38
  'data-studio-resizable': (_customJson$resizable = customJson.resizable) !== null && _customJson$resizable !== void 0 ? _customJson$resizable : false,
31
39
  'data-studio-tray-enabled': (_customJson$enableMed = customJson.enableMediaOptions) !== null && _customJson$enableMed !== void 0 ? _customJson$enableMed : false,
@@ -38,14 +46,11 @@ export function displayStyleFrom(studioAttributes) {
38
46
  }
39
47
  export function isStudioEmbeddedMedia(element) {
40
48
  var _tinymceIframeShim$fi;
41
-
42
49
  // Borrowing this structure from isMediaElement in ContentSelection.js
43
50
  const tinymceIframeShim = (element === null || element === void 0 ? void 0 : element.tagName) === 'IFRAME' ? element === null || element === void 0 ? void 0 : element.parentElement : element;
44
-
45
51
  if ((tinymceIframeShim === null || tinymceIframeShim === void 0 ? void 0 : (_tinymceIframeShim$fi = tinymceIframeShim.firstElementChild) === null || _tinymceIframeShim$fi === void 0 ? void 0 : _tinymceIframeShim$fi.tagName) !== 'IFRAME') {
46
52
  return false;
47
53
  }
48
-
49
54
  return tinymceIframeShim.getAttribute('data-mce-p-data-studio-tray-enabled') === 'true';
50
55
  }
51
56
  export function parseStudioOptions(element) {
@@ -55,16 +60,15 @@ export function parseStudioOptions(element) {
55
60
  convertibleToLink: (tinymceIframeShim === null || tinymceIframeShim === void 0 ? void 0 : tinymceIframeShim.getAttribute('data-mce-p-data-studio-convertible-to-link')) === 'true'
56
61
  };
57
62
  }
63
+
58
64
  /**
59
65
  * Tinymce adds an overlay when you click on an iframe inside the editor. It will by default
60
66
  * add resize handles to the corners of the overlay. The code that adds these handles won't
61
67
  * if the overlay has `data-mce-resize='false'` on it. Here, we force that behavior when the
62
68
  * underlying iframe has a `data-studio-resizable='false'`
63
69
  */
64
-
65
70
  export function handleBeforeObjectSelected(e) {
66
71
  const targetElement = e.target;
67
-
68
72
  if (targetElement.getAttribute('data-mce-p-data-studio-resizable') === 'false') {
69
73
  targetElement.setAttribute('data-mce-resize', 'false');
70
74
  }
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  import { View } from '@instructure/ui-view';
20
21
  import { Text } from '@instructure/ui-text';