@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
package/package.json CHANGED
@@ -1,21 +1,19 @@
1
1
  {
2
2
  "name": "@instructure/canvas-rce",
3
- "version": "5.14.1",
3
+ "version": "5.15.0",
4
4
  "description": "A component wrapping Canvas's usage of Tinymce",
5
5
  "main": "es/index.js",
6
+ "types": "es/index.d.ts",
6
7
  "owner": "LF",
7
8
  "scripts": {
8
- "i18n:extract": "format-message extract \"src/**/*.[jt]s*\" -g underscored_crc32 -o locales/en.json",
9
+ "i18n:extract": "format-message extract \"es/**/*.js\" -g underscored_crc32 -o locales/en.json",
9
10
  "integration-test": "nightwatch --env integration",
10
- "lint": "eslint \"src/**/*.js\" \"test/**/*.js\" \"src/**/*.ts*\" \"test/**/*.ts*\"",
11
- "lint:fix": "eslint --fix \"src/**/*.js\" \"test/**/*.js\" \"src/**/*.ts*\" \"test/**/*.ts*\"",
12
- "test": "if [ \"$CANVAS_RCE_PARALLEL\" = \"1\" ]; then yarn test:parallel; else yarn test:serial; fi",
13
- "test:parallel": "concurrently --names \"mocha,jest\" \"yarn test:mocha\" \"yarn test:jest\"",
14
- "test:serial": "yarn test:mocha && yarn test:jest",
15
- "test:mocha": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\"}' mocha 'test/**/*.test.{js,ts,tsx}' --timeout 5000 --reporter mocha-multi-reporters --reporter-options configFile=mocha-reporter-config.js --exit",
16
- "test:mocha:one": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\"}' mocha --timeout 5000 --reporter mocha-multi-reporters --reporter-options configFile=mocha-reporter-config.js",
17
- "test:mocha:debug": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\"}' mocha --inspect-brk --timeout 5000 --reporter mocha-multi-reporters --reporter-options configFile=mocha-reporter-config.js",
18
- "test:jest": "jest --color --runInBand",
11
+ "lint": "eslint --quiet",
12
+ "lint:fix": "eslint --quiet --fix",
13
+ "test": "yarn jest",
14
+ "test:parallel": "yarn test:jest",
15
+ "test:serial": "yarn test:jest",
16
+ "test:jest": "jest --color",
19
17
  "test:cafe": "yarn build:cafe && yarn test:cafe:only",
20
18
  "test:cafe:ui": "yarn build:cafe && yarn test:cafe:only:ui",
21
19
  "test:cafe:only": "testcafe ${TESTCAFE_PROVIDER:-chrome:headless} testcafe/**/*.test.js",
@@ -24,30 +22,28 @@
24
22
  "test:cafe:one": "testcafe chrome testcafe/**/*.test.js --test ",
25
23
  "test:cafe:all": "yarn build:cafe && testcafe chrome,firefox,safari testcafe/**/*.test.js",
26
24
  "test:cafe:debug": "yarn build:cafe && yarn test:cafe:only:debug",
27
- "test:watch": "mocha 'test/**/*.test.js' --watch",
28
- "test:coverage": "cross-env nyc -r html -r json node_modules/.bin/mocha 'test/**/*.test.js'",
29
25
  "test:jest:debug": "node --inspect-brk node_modules/.bin/jest --runInBand",
30
26
  "test:jest:watch": "node node_modules/.bin/jest --watch",
31
- "debug": "inspect _mocha --no-timeouts --debug-brk 'test/**/*.test.js'",
32
27
  "demo": "scripts/demo.sh",
33
28
  "demo:clean": "rm -f github-pages/dist/*",
34
29
  "demo:build": "wp -c ./webpack.demo.config.js",
35
30
  "demo:dev": "yarn demo:clean && mkdir -p ./github-pages/dist && cp ./github-pages/index.html ./github-pages/dist && wp -c ./webpack.dev.config.js",
36
31
  "installTranslations": "scripts/installTranslations.js",
37
32
  "commitTranslations": "scripts/commitTranslations.sh",
33
+ "build": "scripts/build-canvas",
38
34
  "build:all": "scripts/build.js",
39
35
  "build:es": "babel --out-dir es src --ignore '**/__tests__,**/__mocks__' --extensions '.ts,.tsx,.js,.jsx'",
40
36
  "build:types": "tsc",
41
- "build:canvas": "scripts/build-canvas",
37
+ "build:canvas": "yarn run build",
42
38
  "build:watch": "yarn clean:es && yarn build:es --watch",
43
39
  "build:cafe": "wp --config webpack.testcafe.config.js",
44
40
  "prepublishOnly": "yarn build:all && yarn test",
45
- "fmt:check": "prettier -l '**/*.js*' '**/*.ts*'",
46
- "fmt:fix": "prettier --write '**/*.js*' '**/*.ts*'",
41
+ "fmt:check": "biome check",
42
+ "fmt:fix": "biome format --write",
47
43
  "clean": "rm -rf lib && yarn clean:es && rm -rf coverage && yarn demo:clean",
48
44
  "clean:es": "rm -rf es",
49
45
  "check:ts": "tsc -p tsconfig.json",
50
- "generate-svgs": "yarn build:es && node --experimental-modules scripts/generateSvgs.js && prettier --write src/rce/plugins/instructure_equation/MathIcon/svgs.js",
46
+ "generate-svgs": "yarn build:es && node --experimental-modules scripts/generateSvgs.js",
51
47
  "publishToNpm": "scripts/publish_to_npm.sh"
52
48
  },
53
49
  "keywords": [
@@ -76,61 +72,63 @@
76
72
  "instrument": false
77
73
  },
78
74
  "dependencies": {
79
- "@instructure/canvas-theme": "8.56.4",
75
+ "@instructure/canvas-theme": "9.10.1",
80
76
  "@instructure/canvas-media": "*",
81
- "@instructure/debounce": "8.56.4",
82
- "@instructure/emotion": "8.56.4",
77
+ "@instructure/debounce": "9.10.1",
78
+ "@instructure/emotion": "9.10.1",
83
79
  "@instructure/k5uploader": "*",
84
80
  "@instructure/media-capture": "^9.0.0",
85
- "@instructure/theme-registry": "8.56.4",
86
- "@instructure/ui-a11y-content": "8.56.4",
87
- "@instructure/ui-a11y-utils": "8.56.4",
88
- "@instructure/ui-alerts": "8.56.4",
89
- "@instructure/ui-avatar": "8.56.4",
90
- "@instructure/ui-badge": "8.56.4",
91
- "@instructure/ui-billboard": "8.56.4",
92
- "@instructure/ui-buttons": "8.56.4",
93
- "@instructure/ui-checkbox": "8.56.4",
94
- "@instructure/ui-source-code-editor": "8.56.4",
95
- "@instructure/ui-color-utils": "8.56.4",
96
- "@instructure/ui-file-drop": "8.56.4",
97
- "@instructure/ui-flex": "8.56.4",
98
- "@instructure/ui-focusable": "8.56.4",
99
- "@instructure/ui-form-field": "8.56.4",
100
- "@instructure/ui-grid": "8.56.4",
101
- "@instructure/ui-heading": "8.56.4",
102
- "@instructure/ui-icons": "8.56.4",
103
- "@instructure/ui-img": "8.56.4",
104
- "@instructure/ui-link": "8.56.4",
105
- "@instructure/ui-list": "8.56.4",
81
+ "@instructure/theme-registry": "9.10.1",
82
+ "@instructure/ui-a11y-content": "9.10.1",
83
+ "@instructure/ui-a11y-utils": "9.10.1",
84
+ "@instructure/ui-alerts": "9.10.1",
85
+ "@instructure/ui-avatar": "9.10.1",
86
+ "@instructure/ui-badge": "9.10.1",
87
+ "@instructure/ui-billboard": "9.10.1",
88
+ "@instructure/ui-buttons": "9.10.1",
89
+ "@instructure/ui-checkbox": "9.10.1",
90
+ "@instructure/ui-source-code-editor": "9.10.1",
91
+ "@instructure/ui-color-picker": "8.56.4",
92
+ "@instructure/ui-color-utils": "9.10.1",
93
+ "@instructure/ui-file-drop": "9.10.1",
94
+ "@instructure/ui-flex": "9.10.1",
95
+ "@instructure/ui-focusable": "9.10.1",
96
+ "@instructure/ui-form-field": "9.10.1",
97
+ "@instructure/ui-grid": "9.10.1",
98
+ "@instructure/ui-heading": "9.10.1",
99
+ "@instructure/ui-icons": "9.10.1",
100
+ "@instructure/ui-img": "9.10.1",
101
+ "@instructure/ui-link": "9.10.1",
102
+ "@instructure/ui-list": "9.10.1",
106
103
  "@instructure/ui-media-player": "^9.0.0",
107
- "@instructure/ui-menu": "8.56.4",
108
- "@instructure/ui-modal": "8.56.4",
109
- "@instructure/ui-motion": "8.56.4",
110
- "@instructure/ui-number-input": "8.56.4",
111
- "@instructure/ui-overlays": "8.56.4",
112
- "@instructure/ui-pagination": "8.56.4",
113
- "@instructure/ui-popover": "8.56.4",
114
- "@instructure/ui-radio-input": "8.56.4",
115
- "@instructure/ui-react-utils": "8.56.4",
116
- "@instructure/ui-simple-select": "8.56.4",
117
- "@instructure/ui-spinner": "8.56.4",
118
- "@instructure/ui-svg-images": "8.56.4",
119
- "@instructure/ui-table": "8.56.4",
120
- "@instructure/ui-tabs": "8.56.4",
121
- "@instructure/ui-text-area": "8.56.4",
122
- "@instructure/ui-text-input": "8.56.4",
123
- "@instructure/ui-text": "8.56.4",
124
- "@instructure/ui-themes": "8.56.4",
125
- "@instructure/ui-toggle-details": "8.56.4",
126
- "@instructure/ui-tooltip": "8.56.4",
127
- "@instructure/ui-tray": "8.56.4",
128
- "@instructure/ui-tree-browser": "8.56.4",
129
- "@instructure/ui-truncate-text": "8.56.4",
130
- "@instructure/ui-utils": "8.56.4",
131
- "@instructure/ui-view": "8.56.4",
132
- "@instructure/uid": "8.56.4",
104
+ "@instructure/ui-menu": "9.10.1",
105
+ "@instructure/ui-modal": "9.10.1",
106
+ "@instructure/ui-motion": "9.10.1",
107
+ "@instructure/ui-number-input": "9.10.1",
108
+ "@instructure/ui-overlays": "9.10.1",
109
+ "@instructure/ui-pagination": "9.10.1",
110
+ "@instructure/ui-pill": "9.10.1",
111
+ "@instructure/ui-popover": "9.10.1",
112
+ "@instructure/ui-radio-input": "9.10.1",
113
+ "@instructure/ui-simple-select": "9.10.1",
114
+ "@instructure/ui-spinner": "9.10.1",
115
+ "@instructure/ui-svg-images": "9.10.1",
116
+ "@instructure/ui-table": "9.10.1",
117
+ "@instructure/ui-tabs": "9.10.1",
118
+ "@instructure/ui-text-area": "9.10.1",
119
+ "@instructure/ui-text-input": "9.10.1",
120
+ "@instructure/ui-text": "9.10.1",
121
+ "@instructure/ui-themes": "9.10.1",
122
+ "@instructure/ui-toggle-details": "9.10.1",
123
+ "@instructure/ui-tooltip": "9.10.1",
124
+ "@instructure/ui-tray": "9.10.1",
125
+ "@instructure/ui-tree-browser": "9.10.1",
126
+ "@instructure/ui-truncate-text": "9.10.1",
127
+ "@instructure/ui-utils": "9.10.1",
128
+ "@instructure/ui-view": "9.10.1",
129
+ "@instructure/uid": "9.10.1",
133
130
  "@sheerun/mutationobserver-shim": "^0.3.2",
131
+ "@types/tinycolor2": "^1.4.6",
134
132
  "@tinymce/tinymce-react": "~3.8.4",
135
133
  "aphrodite": "^2",
136
134
  "axios": "^0.21.1",
@@ -160,6 +158,7 @@
160
158
  "redux-batch-middleware": "^0.2.0",
161
159
  "redux-thunk": "^3.1.0",
162
160
  "text-field-edit": "^3.2.0",
161
+ "tinycolor2": "^1.6.0",
163
162
  "tinymce": "^5",
164
163
  "uri-js": "^4.2.2",
165
164
  "wcag-element-contrast": "^1.0.1"
@@ -171,13 +170,16 @@
171
170
  "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
172
171
  "@babel/preset-typescript": "^7",
173
172
  "@babel/register": "7",
173
+ "@biomejs/biome": "*",
174
174
  "@instructure/browserslist-config-canvas-lms": ">=2",
175
175
  "@instructure/translations": ">=1",
176
176
  "@testing-library/dom": "^8",
177
177
  "@testing-library/jest-dom": "^5",
178
- "@testing-library/react": "^12",
179
178
  "@testing-library/react-hooks": "^5",
179
+ "@testing-library/react": "^12",
180
180
  "@testing-library/user-event": "^14",
181
+ "@types/react": "^18",
182
+ "@types/react-dom": "^18",
181
183
  "@types/testing-library__jest-dom": "^5.0.0",
182
184
  "axe-testcafe": "^3",
183
185
  "babel-loader": "^9.1.3",
@@ -190,39 +192,33 @@
190
192
  "babel-plugin-typescript-to-proptypes": "^2.1.0",
191
193
  "cross-env": "^5.0.0",
192
194
  "escape-html": "^1",
193
- "eslint-plugin-mocha": "^6",
194
- "eslint-plugin-testcafe": "^0.2.1",
195
195
  "fetch-mock": "^6",
196
196
  "format-message-cli": "^6",
197
197
  "format-message-parse": "^6",
198
- "jest": "^28",
199
198
  "jest-canvas-mock": "^2",
200
199
  "jest-junit": "^7",
201
200
  "jest-mock-proxy": "3.1.2",
201
+ "jest": "^28",
202
202
  "mathjax": "^3.2.0",
203
- "mocha": "^6",
204
- "mocha-junit-reporter": "^1.18.0",
205
- "mocha-multi-reporters": "^1.1.7",
206
203
  "moxios": "^0.4",
207
204
  "nyc": "^13",
208
- "prettier": "^2.2.1",
209
205
  "proxyquire": "1.7.4",
210
206
  "shelljs": "^0.8.3",
211
207
  "sinon": "^7",
212
208
  "skin-deep": "^1",
213
209
  "source-map-support": "0.5.21",
214
- "testcafe": "1.14.2",
215
210
  "testcafe-browser-provider-selenium": "^1.2.0",
216
211
  "testcafe-react-selectors": "^3.3.0",
217
- "ts-node": "^10.9.1",
218
- "typescript": "^5.3.2",
212
+ "testcafe": "1.14.2",
213
+ "ts-node": "^10.9.2",
214
+ "typescript": "*",
219
215
  "url-loader": "^4.1.1",
220
- "webpack": "^5",
221
216
  "webpack-merge": "^5",
222
217
  "webpack-nano": "^1",
223
- "webpack-plugin-serve": "^1"
218
+ "webpack-plugin-serve": "^1",
219
+ "webpack": "^5"
224
220
  },
225
221
  "resolutions": {
226
222
  "format-message-estree-util": "./packages/format-message-estree-util"
227
223
  }
228
- }
224
+ }
@@ -11,7 +11,8 @@ mkdir -p es
11
11
  # delete everything in them.
12
12
  rm -rf lib/*
13
13
  rm -rf es/*
14
+ rm -f tsconfig.tsbuildinfo
14
15
 
15
- yarn build:types
16
16
  yarn installTranslations
17
17
  yarn build:es
18
+ yarn build:types
package/scripts/build.js CHANGED
@@ -18,8 +18,6 @@
18
18
  * with this program. If not, see <http://www.gnu.org/licenses/>.
19
19
  */
20
20
 
21
- // Generates all the pre-translated code in lib/translated/{locale}.
22
-
23
21
  const shell = require('shelljs')
24
22
 
25
23
  shell.set('-e')
@@ -34,7 +32,9 @@ shell.exec('mkdir -p es')
34
32
  // delete everything in it.
35
33
  shell.exec('rm -rf lib/*')
36
34
  shell.exec('rm -rf es/*')
37
- shell.exec('scripts/installTranslations.js')
35
+ shell.exec('yarn installTranslations')
38
36
 
39
37
  shell.echo('Building')
40
- shell.exec("npx babel --out-dir es src --ignore '**/__tests__' --extensions '.ts,.tsx,.js,.jsx'")
38
+ shell.exec('yarn build:es')
39
+ shell.echo('Building TypeScript declarations')
40
+ shell.exec('yarn build:types')
@@ -48,12 +48,10 @@
48
48
  * check the mapping in src/rce/editorLanguages.js to be sure it's still complete.
49
49
  */
50
50
 
51
- const shell = require('shelljs')
52
51
  const fs = require('fs')
53
52
  const path = require('path')
54
- const getTranslationList = require('@instructure/translations/bin/get-translation-list')
55
- const readTranslationFile = require('@instructure/translations/bin/read-translation-file')
56
- const editorLanguage = require('../src/rce/editorLanguage')
53
+ const {getTranslationList, readTranslationFile} = require('@instructure/translations')
54
+ const {editorLanguage} = require('../src/rce/editorLanguage.js')
57
55
 
58
56
  // Here we go.
59
57
  installTranslations()
@@ -97,7 +95,7 @@ function generateCombinedImporters(canvasLocaleFileBasenames, tinyLocales) {
97
95
  for (const basename of canvasLocaleFileBasenames) {
98
96
  const filepath = path.resolve(
99
97
  __dirname,
100
- path.join('../src/translations/locales', `${basename}.js`)
98
+ path.join('../src/translations/locales', `${basename}.js`),
101
99
  )
102
100
  const content = localeFileContent(basename, tinyLocales[basename])
103
101
  fs.writeFileSync(filepath, content, {flag: 'w'})
@@ -108,10 +106,11 @@ function generateCombinedImporters(canvasLocaleFileBasenames, tinyLocales) {
108
106
  // for locales no longer in the new list, remove them
109
107
  function removeStaleTranslationFiles(locales) {
110
108
  const newLocalesFiles = locales.map(l => `${l}.js`)
111
- const curLocalesFiles = fs.readdirSync(path.resolve(__dirname, `../src/translations/locales`))
109
+ const localesDir = path.resolve(__dirname, '../src/translations/locales')
110
+ const curLocalesFiles = fs.readdirSync(localesDir)
112
111
  const staleFiles = curLocalesFiles.filter(f => !newLocalesFiles.includes(f))
113
- for (f of staleFiles) {
114
- fs.rmSync(path.resolve(__dirname, path.join('../src/translations/locales/', f)))
112
+ for (const f of staleFiles) {
113
+ fs.rmSync(path.resolve(localesDir, f))
115
114
  }
116
115
  }
117
116
 
@@ -17,7 +17,6 @@
17
17
  */
18
18
 
19
19
  import {Selector, ClientFunction} from 'testcafe'
20
- // eslint-disable-next-line babel/no-unused-expressions
21
20
  fixture`RCEWrapper`.page`./testcafe.html`
22
21
  const tinyIframe = Selector('#textarea_ifr')
23
22
  const textArea = Selector('.RceHtmlEditor')
@@ -17,7 +17,6 @@
17
17
  */
18
18
 
19
19
  import {Selector} from 'testcafe'
20
- // eslint-disable-next-line babel/no-unused-expressions
21
20
  fixture`StatusBar`.page`./testcafe.html`
22
21
 
23
22
  const tinyIframe = Selector('#textarea_ifr')
@@ -16,7 +16,6 @@
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
  import {axeCheck, createReport} from 'axe-testcafe'
19
- // eslint-disable-next-line babel/no-unused-expressions
20
19
  fixture`aXe a11y checking`.page`./testcafe.html`
21
20
 
22
21
  async function runAxeCheck(t, context, options) {
@@ -28,13 +27,13 @@ async function runAxeCheck(t, context, options) {
28
27
 
29
28
  test('automated a11y testing', async t => {
30
29
  const axeContext = {
31
- include: 'body'
30
+ include: 'body',
32
31
  }
33
32
  const axeOptions = {
34
33
  runOnly: {
35
34
  type: 'tag',
36
- values: ['wcag21a', 'wcag21aa', 'best-practice', 'section508']
37
- }
35
+ values: ['wcag21a', 'wcag21aa', 'best-practice', 'section508'],
36
+ },
38
37
  }
39
38
  await runAxeCheck(t, axeContext, axeOptions)
40
39
  })
@@ -17,7 +17,6 @@
17
17
  */
18
18
 
19
19
  import {Selector} from 'testcafe'
20
- // eslint-disable-next-line babel/no-unused-expressions
21
20
  fixture`EnhanceUserContent`.page`./enhanceUserContent.html`
22
21
 
23
22
  // const externalLink = Selector(
package/tsconfig.json CHANGED
@@ -1,23 +1,28 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "allowJs": true, // allows importing of .js files from .ts files
4
- "esModuleInterop": true, // more accurately transpiles to the ES6 module spec (maybe not needed w/ babel transpilation)
5
- "isolatedModules": true, // required to adhere to babel's single-file transpilation process
6
- "jsx": "react", // transpiles jsx to React.createElement calls (maybe not needed w/ babel transpilation)
7
- "lib": ["dom", "es2020", "esnext"], // include types for DOM APIs and standard JS up to ES2020
8
- "module": "ES2020", // support the most modern ES6-style module syntax
9
- "moduleResolution": "node", // required for non-commonjs imports
3
+ "allowJs": true,
4
+ "esModuleInterop": true,
5
+ "isolatedModules": true,
6
+ "jsx": "react",
7
+ "lib": ["dom", "es2020", "esnext"],
8
+ "module": "ES2020",
9
+ "moduleResolution": "node",
10
10
  "declaration": true,
11
- "emitDeclarationOnly": true, // don't generate transpiled JS .d.ts files for canvas-rce source code
12
- "resolveJsonModule": true, // enables importing json files
13
- "skipLibCheck": true, // don't do type-checking on dependencies' internal types for improved performance
14
- "strict": true, // enables a bunch of strict mode family options. See https://www.typescriptlang.org/tsconfig#strict
15
- "target": "ES2020", // support the most modern JS features (let babel handle transpilation)
11
+ "declarationDir": "es",
12
+ "emitDeclarationOnly": true,
13
+ "resolveJsonModule": true,
14
+ "skipLibCheck": true,
15
+ "strict": true,
16
+ "target": "ES2020",
16
17
  "noImplicitAny": true,
17
18
  "experimentalDecorators": true,
18
- "outDir": "es"
19
+ "composite": true,
20
+ "rootDir": "src",
21
+ "verbatimModuleSyntax": false,
22
+ "paths": {
23
+ "@instructure/*": ["../packages/*"]
24
+ }
19
25
  },
20
- "include": ["src/**/*"],
21
- "exclude": ["**/node_modules", "**/.*/"]
22
-
26
+ "include": ["src/**/*", "types/**/*"],
27
+ "exclude": ["**/node_modules", "**/.*/", "**/__tests__/*", "**/__mocks__/*"]
23
28
  }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2022 - present Instructure, Inc.
2
+ * Copyright (C) 2025 - present Instructure, Inc.
3
3
  *
4
4
  * This file is part of Canvas.
5
5
  *
@@ -15,4 +15,8 @@
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
- module.export = {};
18
+
19
+ declare module 'format-message-generate-id/underscored_crc32' {
20
+ function generateId(message: string): string
21
+ export = generateId
22
+ }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (C) 2019 - present Instructure, Inc.
2
+ * Copyright (C) 2025 - present Instructure, Inc.
3
3
  *
4
4
  * This file is part of Canvas.
5
5
  *
@@ -15,10 +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
- const screenfull = {
19
- on() {},
20
18
 
21
- off() {}
22
-
23
- };
24
- export default screenfull;
19
+ declare module 'js-beautify' {
20
+ function html(input: string, options?: any): string
21
+ }
package/.eslintrc DELETED
@@ -1,45 +0,0 @@
1
- /*
2
- * Copyright (C) 2020 - present Instructure, Inc.
3
- *
4
- * This file is part of Canvas.
5
- *
6
- * Canvas is free software: you can redistribute it and/or modify it under
7
- * the terms of the GNU Affero General Public License as published by the Free
8
- * Software Foundation, version 3 of the License.
9
- *
10
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
11
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
13
- * details.
14
- *
15
- * You should have received a copy of the GNU Affero General Public License along
16
- * with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
- {
20
- "extends": ["plugin:testcafe/recommended"],
21
- "plugins": ["testcafe"],
22
- "rules": {
23
- "import/order": "off",
24
- "promise/catch-or-return": ["error", { "allowThen": true }]
25
- },
26
- "ignorePatterns": ["scripts/installTranslations.js", "**/translations/**/*.js"],
27
- "overrides": [
28
- {
29
- "files": ["*.ts*"],
30
- "rules": {
31
- // no-undef is not useful for typescript.
32
- // See discussion: https://stackoverflow.com/questions/60743389/eslint-defined-global-extensions-still-not-defined-no-undef
33
- "no-undef": "off",
34
-
35
- // Prefer @typescript-eslint/no-useless-constructor over no-useless-constructor
36
- "no-useless-constructor": "off",
37
- "@typescript-eslint/no-useless-constructor": "error",
38
-
39
- // Prefer @typescript-eslint/no-empty-function over no-empty-function
40
- "no-empty-function": "off",
41
- "@typescript-eslint/no-empty-function": "warn"
42
- }
43
- }
44
- ]
45
- }
package/.prettierignore DELETED
@@ -1,6 +0,0 @@
1
- node_modules
2
- lib
3
- public
4
- locales
5
- coverage
6
- src/getTranslations.js
@@ -1,124 +0,0 @@
1
- /*
2
- * Copyright (C) 2023 - present Instructure, Inc.
3
- *
4
- * This file is part of Canvas.
5
- *
6
- * Canvas is free software: you can redistribute it and/or modify it under
7
- * the terms of the GNU Affero General Public License as published by the Free
8
- * Software Foundation, version 3 of the License.
9
- *
10
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
11
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
13
- * details.
14
- *
15
- * You should have received a copy of the GNU Affero General Public License along
16
- * with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
- export default {
19
- lib: {
20
- Base: {},
21
- WordArray: {},
22
- BufferedBlockAlgorithm: {},
23
- Hasher: {},
24
- Cipher: {},
25
- StreamCipher: {},
26
- BlockCipherMode: {},
27
- BlockCipher: {},
28
- CipherParams: {},
29
- SerializableCipher: {},
30
- PasswordBasedCipher: {}
31
- },
32
- x64: {
33
- Word: {},
34
- WordArray: {}
35
- },
36
- enc: {
37
- Hex: {},
38
- Latin1: {},
39
- Utf8: {
40
- parse: () => {}
41
- },
42
- Utf16: {},
43
- Utf16BE: {},
44
- Utf16LE: {},
45
- Base64: {},
46
- Base64url: {}
47
- },
48
- algo: {
49
- HMAC: {},
50
- MD5: {},
51
- SHA1: {},
52
- SHA224: {},
53
- SHA256: {},
54
- SHA384: {},
55
- SHA512: {},
56
- SHA3: {},
57
- RIPEMD160: {},
58
- PBKDF2: {},
59
- EvpKDF: {},
60
- AES: {},
61
- DES: {},
62
- TripleDES: {},
63
- Rabbit: {},
64
- RabbitLegacy: {},
65
- RC4: {},
66
- RC4Drop: {},
67
- Blowfish: {}
68
- },
69
- mode: {
70
- CBC: {},
71
- CFB: {},
72
- CTR: {},
73
- CTRGladman: {},
74
- ECB: {},
75
- OFB: {}
76
- },
77
- pad: {
78
- Pkcs7: {},
79
- AnsiX923: {},
80
- Iso10126: {},
81
- Iso97971: {},
82
- NoPadding: {},
83
- ZeroPadding: {}
84
- },
85
- format: {
86
- OpenSSL: {},
87
- Hex: {}
88
- },
89
- kdf: {
90
- OpenSSL: {}
91
- },
92
- MD5: {},
93
- HmacMD5: {},
94
- SHA1: {},
95
- HmacSHA1: {},
96
- SHA224: {},
97
- HmacSHA224: {},
98
- SHA256: {},
99
- HmacSHA256: {},
100
- SHA384: {},
101
- HmacSHA384: {},
102
- SHA512: {},
103
- HmacSHA512: {},
104
- SHA3: {},
105
- HmacSHA3: {},
106
- RIPEMD160: {},
107
- HmacRIPEMD160: {},
108
- PBKDF2: {},
109
- EvpKDF: {},
110
- AES: {},
111
- DES: {},
112
- TripleDES: {},
113
- Rabbit: {},
114
- RabbitLegacy: {},
115
- RC4: {
116
- encrypt: () => {},
117
- decrypt: () => {}
118
- },
119
- RC4Drop: {
120
- encrypt: () => {},
121
- decrypt: () => {}
122
- },
123
- Blowfish: {}
124
- };