@instructure/canvas-rce 5.14.0 → 5.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/DEVELOPMENT.md +1 -1
  3. package/README.md +0 -8
  4. package/__tests__/common/indicate.test.js +84 -0
  5. package/__tests__/common/mimeClass.test.js +85 -0
  6. package/__tests__/module/contentInsertionUtils.test.js +52 -0
  7. package/__tests__/module/indicatorRegion.test.js +75 -0
  8. package/__tests__/module/normalizeLocale.test.js +46 -0
  9. package/__tests__/module/normalizeProps.test.js +51 -0
  10. package/__tests__/module/sanitizePlugins.test.js +48 -0
  11. package/__tests__/module/wrapInitCb.test.js +56 -0
  12. package/__tests__/rcs/api.test.js +819 -0
  13. package/{mocha-reporter-config.js → __tests__/sidebar/actions/all_files.test.js} +10 -9
  14. package/__tests__/sidebar/actions/data.test.js +196 -0
  15. package/__tests__/sidebar/actions/utils.js +44 -0
  16. package/__tests__/sidebar/reducers/all_files.test.js +28 -0
  17. package/babel.config.js +3 -1
  18. package/build.sh +7 -7
  19. package/es/bridge/Bridge.js +8 -56
  20. package/es/bridge/index.js +1 -0
  21. package/es/canvasFileBrowser/FileBrowser.js +12 -59
  22. package/es/canvasFileBrowser/en-US.js +3 -6
  23. package/es/common/FlashAlert.js +7 -28
  24. package/es/common/browser.js +4 -2
  25. package/es/common/fileUrl.js +104 -59
  26. package/es/common/incremental-loading/LoadMoreButton.js +1 -0
  27. package/es/common/incremental-loading/LoadingIndicator.js +1 -2
  28. package/es/common/incremental-loading/LoadingStatus.js +1 -2
  29. package/es/common/incremental-loading/index.js +1 -0
  30. package/es/common/incremental-loading/useIncrementalLoading.js +1 -3
  31. package/es/common/indicate.js +15 -8
  32. package/es/common/mimeClass.js +3 -4
  33. package/es/common/natcompare.js +1 -4
  34. package/es/defaultTinymceConfig.js +5 -3
  35. package/es/elementDenylist.js +1 -0
  36. package/es/enhance-user-content/doc_previews.js +17 -28
  37. package/es/enhance-user-content/enhance_user_content.js +28 -60
  38. package/es/enhance-user-content/external_links.js +5 -8
  39. package/es/enhance-user-content/index.js +1 -0
  40. package/es/enhance-user-content/instructure_helper.js +25 -38
  41. package/es/enhance-user-content/jqueryish_funcs.js +8 -11
  42. package/es/enhance-user-content/mathml.js +35 -82
  43. package/es/enhance-user-content/media_comment_thumbnail.js +5 -17
  44. package/es/format-message.js +3 -4
  45. package/es/getThemeVars.js +8 -6
  46. package/es/getTranslations.js +1 -78
  47. package/es/index.js +3 -1
  48. package/es/rce/AlertMessageArea.js +1 -1
  49. package/es/rce/DraggingBlocker.js +4 -2
  50. package/es/rce/KeyboardShortcutModal.js +1 -0
  51. package/es/rce/RCE.js +12 -11
  52. package/es/rce/RCEGlobals.js +12 -10
  53. package/es/rce/RCEVariants.js +27 -10
  54. package/es/rce/RCEWrapper.js +167 -386
  55. package/es/rce/RCEWrapperProps.js +8 -3
  56. package/es/rce/RceHtmlEditor.js +5 -8
  57. package/es/rce/ResizeHandle.js +3 -8
  58. package/es/rce/RestoreAutoSaveModal.js +1 -2
  59. package/es/rce/ShowOnFocusButton/index.js +0 -6
  60. package/es/rce/StatusBar.js +8 -37
  61. package/es/rce/alertHandler.js +1 -4
  62. package/es/rce/contentInsertion.js +35 -57
  63. package/es/rce/contentInsertionUtils.js +6 -8
  64. package/es/rce/contentRendering.js +7 -12
  65. package/es/rce/customEvents.js +1 -0
  66. package/es/rce/editorLanguage.js +22 -10
  67. package/es/rce/indicatorRegion.js +6 -5
  68. package/es/rce/normalizeLocale.js +5 -3
  69. package/es/rce/normalizeProps.js +3 -1
  70. package/es/rce/plugins/instructure-ui-icons/plugin.js +21 -3
  71. package/es/rce/plugins/instructure_color/clickCallback.js +84 -0
  72. package/es/rce/plugins/instructure_color/components/ColorPicker.js +299 -0
  73. package/es/rce/plugins/instructure_color/components/ColorPopup.js +68 -0
  74. package/es/rce/plugins/instructure_color/components/colorUtils.js +60 -0
  75. package/es/rce/plugins/instructure_color/plugin.js +40 -0
  76. package/es/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +10 -3
  77. package/es/rce/plugins/instructure_condensed_buttons/plugin.js +1 -0
  78. package/es/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +1 -2
  79. package/es/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +3 -2
  80. package/es/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +1 -0
  81. package/es/rce/plugins/instructure_condensed_buttons/ui/list-button.js +22 -15
  82. package/es/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +1 -2
  83. package/es/rce/plugins/instructure_documents/clickCallback.js +1 -0
  84. package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +1 -9
  85. package/es/rce/plugins/instructure_documents/components/Link.js +3 -18
  86. package/es/rce/plugins/instructure_documents/plugin.js +7 -14
  87. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +4 -2
  88. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +1 -2
  89. package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +12 -29
  90. package/es/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +11 -12
  91. package/es/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +4 -3
  92. package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +4 -2
  93. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +13 -7
  94. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +4 -7
  95. package/es/rce/plugins/instructure_equation/MathIcon/index.js +1 -1
  96. package/es/rce/plugins/instructure_equation/MathIcon/svgs.js +1 -1
  97. package/es/rce/plugins/instructure_equation/clickCallback.js +2 -5
  98. package/es/rce/plugins/instructure_equation/mathlive/index.js +1 -1
  99. package/es/rce/plugins/instructure_equation/plugin.js +7 -10
  100. package/es/rce/plugins/instructure_fullscreen/plugin.js +3 -6
  101. package/es/rce/plugins/instructure_html_view/clickCallback.js +1 -0
  102. package/es/rce/plugins/instructure_html_view/plugin.js +5 -4
  103. package/es/rce/plugins/instructure_icon_maker/clickCallback.js +2 -4
  104. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +1 -2
  105. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +1 -0
  106. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +1 -0
  107. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +1 -0
  108. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +1 -2
  109. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +25 -22
  110. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +7 -11
  111. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +27 -23
  112. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +5 -4
  113. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +11 -9
  114. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +1 -0
  115. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +5 -4
  116. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +1 -3
  117. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +7 -7
  118. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +1 -0
  119. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +27 -20
  120. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +1 -0
  121. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +1 -0
  122. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +1 -0
  123. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +4 -4
  124. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +1 -2
  125. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +1 -5
  126. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +1 -0
  127. package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +18 -33
  128. package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +4 -4
  129. package/es/rce/plugins/instructure_icon_maker/plugin.js +10 -14
  130. package/es/rce/plugins/instructure_icon_maker/reducers/imageSection.js +37 -38
  131. package/es/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +24 -24
  132. package/es/rce/plugins/instructure_icon_maker/registerEditToolbar.js +1 -3
  133. package/es/rce/plugins/instructure_icon_maker/svg/constants.js +4 -3
  134. package/es/rce/plugins/instructure_icon_maker/svg/font.js +3 -1
  135. package/es/rce/plugins/instructure_icon_maker/svg/image.js +69 -83
  136. package/es/rce/plugins/instructure_icon_maker/svg/index.js +11 -15
  137. package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
  138. package/es/rce/plugins/instructure_icon_maker/svg/settings.js +32 -39
  139. package/es/rce/plugins/instructure_icon_maker/svg/shape.js +1 -49
  140. package/es/rce/plugins/instructure_icon_maker/svg/text.js +7 -92
  141. package/es/rce/plugins/instructure_icon_maker/svg/utils.js +1 -7
  142. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +2 -6
  143. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +1 -15
  144. package/es/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +3 -4
  145. package/es/rce/plugins/instructure_icon_maker/utils/iconValidation.js +1 -1
  146. package/es/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +1 -0
  147. package/es/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +12 -13
  148. package/es/rce/plugins/instructure_image/ImageEmbedOptions.js +6 -24
  149. package/es/rce/plugins/instructure_image/ImageList/Image.js +1 -6
  150. package/es/rce/plugins/instructure_image/ImageList/index.js +1 -2
  151. package/es/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +7 -27
  152. package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +3 -16
  153. package/es/rce/plugins/instructure_image/Images/index.js +1 -3
  154. package/es/rce/plugins/instructure_image/clickCallback.js +1 -0
  155. package/es/rce/plugins/instructure_image/plugin.js +13 -18
  156. package/es/rce/plugins/instructure_links/clickCallback.js +1 -0
  157. package/es/rce/plugins/instructure_links/components/AccordionSection.js +1 -0
  158. package/es/rce/plugins/instructure_links/components/CollectionPanel.js +1 -3
  159. package/es/rce/plugins/instructure_links/components/Link.js +7 -19
  160. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +1 -21
  161. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +1 -4
  162. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +3 -20
  163. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +1 -12
  164. package/es/rce/plugins/instructure_links/components/LinkSet.js +4 -20
  165. package/es/rce/plugins/instructure_links/components/LinksPanel.js +1 -2
  166. package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -9
  167. package/es/rce/plugins/instructure_links/components/NoResults.js +1 -7
  168. package/es/rce/plugins/instructure_links/plugin.js +17 -40
  169. package/es/rce/plugins/instructure_links/validateURL.js +81 -36
  170. package/es/rce/plugins/instructure_media_embed/clickCallback.js +2 -5
  171. package/es/rce/plugins/instructure_media_embed/components/Embed.js +1 -0
  172. package/es/rce/plugins/instructure_media_embed/plugin.js +7 -3
  173. package/es/rce/plugins/instructure_paste/pasteMenuCommand.js +1 -5
  174. package/es/rce/plugins/instructure_paste/plugin.js +27 -29
  175. package/es/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +14 -53
  176. package/es/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +21 -49
  177. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +11 -42
  178. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +1 -2
  179. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +1 -1
  180. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +2 -10
  181. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +1 -2
  182. package/es/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +1 -0
  183. package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +2 -1
  184. package/es/rce/plugins/instructure_rce_external_tools/constants.js +28 -0
  185. package/es/rce/plugins/instructure_rce_external_tools/dialog-helper.js +19 -4
  186. package/es/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -2
  187. package/es/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +130 -136
  188. package/es/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +100 -95
  189. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +1 -0
  190. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +2 -19
  191. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +1 -14
  192. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +1 -6
  193. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +1 -9
  194. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +1 -1
  195. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -5
  196. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +18 -10
  197. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +4 -4
  198. package/es/rce/plugins/instructure_rce_external_tools/plugin.js +7 -16
  199. package/es/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +1 -1
  200. package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +1 -25
  201. package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +1 -4
  202. package/es/rce/plugins/instructure_record/MediaPanel/index.js +1 -9
  203. package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +8 -51
  204. package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +4 -17
  205. package/es/rce/plugins/instructure_record/clickCallback.js +7 -15
  206. package/es/rce/plugins/instructure_record/mediaTranslations.js +1 -0
  207. package/es/rce/plugins/instructure_record/plugin.js +11 -18
  208. package/es/rce/plugins/instructure_search_and_replace/clickCallback.js +2 -5
  209. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTray.js +20 -35
  210. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTrayController.js +3 -18
  211. package/es/rce/plugins/instructure_search_and_replace/getSelectionContext.js +2 -9
  212. package/es/rce/plugins/instructure_search_and_replace/plugin.js +1 -3
  213. package/es/rce/plugins/instructure_studio_media_options/plugin.js +1 -1
  214. package/es/rce/plugins/instructure_wordcount/clickCallback.js +2 -5
  215. package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +1 -4
  216. package/es/rce/plugins/instructure_wordcount/plugin.js +1 -0
  217. package/es/rce/plugins/instructure_wordcount/utils/countContent.js +1 -8
  218. package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +1 -0
  219. package/es/rce/plugins/shared/CanvasContentTray.js +43 -63
  220. package/es/rce/plugins/shared/CheckerboardStyling.js +1 -1
  221. package/es/rce/plugins/shared/ColorInput.js +5 -14
  222. package/es/rce/plugins/shared/ConditionalTooltip.js +1 -0
  223. package/es/rce/plugins/shared/ContentSelection.js +17 -58
  224. package/es/rce/plugins/shared/DimensionUtils.js +1 -8
  225. package/es/rce/plugins/shared/DimensionsInput/DimensionInput.js +6 -6
  226. package/es/rce/plugins/shared/DimensionsInput/index.js +37 -15
  227. package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.js +5 -29
  228. package/es/rce/plugins/shared/ErrorBoundary.js +2 -5
  229. package/es/rce/plugins/shared/EventUtils.js +1 -3
  230. package/es/rce/plugins/shared/Filter.js +8 -38
  231. package/es/rce/plugins/shared/FixedContentTray.js +3 -3
  232. package/es/rce/plugins/shared/ImageCropper/DirectionRegion.js +1 -8
  233. package/es/rce/plugins/shared/ImageCropper/Modal.js +4 -7
  234. package/es/rce/plugins/shared/ImageCropper/Preview.js +7 -11
  235. package/es/rce/plugins/shared/ImageCropper/constants.js +1 -0
  236. package/es/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +2 -5
  237. package/es/rce/plugins/shared/ImageCropper/controls/ResetControls.js +1 -0
  238. package/es/rce/plugins/shared/ImageCropper/controls/RotationControls.js +1 -10
  239. package/es/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +1 -0
  240. package/es/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +1 -11
  241. package/es/rce/plugins/shared/ImageCropper/controls/index.js +1 -0
  242. package/es/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +3 -16
  243. package/es/rce/plugins/shared/ImageCropper/controls/utils.js +1 -2
  244. package/es/rce/plugins/shared/ImageCropper/imageCropUtils.js +1 -10
  245. package/es/rce/plugins/shared/ImageCropper/index.js +1 -0
  246. package/es/rce/plugins/shared/ImageCropper/propTypes.js +1 -0
  247. package/es/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +15 -14
  248. package/es/rce/plugins/shared/ImageCropper/shape.js +1 -0
  249. package/es/rce/plugins/shared/ImageCropper/svg/index.js +1 -2
  250. package/es/rce/plugins/shared/ImageCropper/svg/shape.js +1 -17
  251. package/es/rce/plugins/shared/ImageCropper/svg/utils.js +1 -0
  252. package/es/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +19 -46
  253. package/es/rce/plugins/shared/ImageCropper/useMouseWheel.js +8 -10
  254. package/es/rce/plugins/shared/ImageOptionsForm.js +1 -2
  255. package/es/rce/plugins/shared/LinkDisplay.js +1 -2
  256. package/es/rce/plugins/shared/PreviewIcon.js +1 -6
  257. package/es/rce/plugins/shared/Previewable.js +1 -0
  258. package/es/rce/plugins/shared/RceFileBrowser.js +5 -7
  259. package/es/rce/plugins/shared/StoreContext.js +1 -2
  260. package/es/rce/plugins/shared/StudioLtiSupportUtils.js +10 -6
  261. package/es/rce/plugins/shared/UnknownFileTypePanel.js +1 -0
  262. package/es/rce/plugins/shared/Upload/CanvasContentPanel.js +13 -18
  263. package/es/rce/plugins/shared/Upload/CategoryProcessor.js +1 -1
  264. package/es/rce/plugins/shared/Upload/ComputerPanel.js +8 -26
  265. package/es/rce/plugins/shared/Upload/PanelFilter.js +3 -12
  266. package/es/rce/plugins/shared/Upload/SvgCategoryProcessor.js +4 -3
  267. package/es/rce/plugins/shared/Upload/UploadFile.js +15 -18
  268. package/es/rce/plugins/shared/Upload/UploadFileModal.js +9 -25
  269. package/es/rce/plugins/shared/Upload/UrlPanel.js +1 -0
  270. package/es/rce/plugins/shared/Upload/UsageRightsSelectBox.js +7 -12
  271. package/es/rce/plugins/shared/Upload/doFileUpload.js +4 -6
  272. package/es/rce/plugins/shared/Upload/index.js +1 -0
  273. package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +1 -3
  274. package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +6 -24
  275. package/es/rce/plugins/shared/ai_tools/aiicons.js +1 -0
  276. package/es/rce/plugins/shared/ai_tools/index.js +1 -0
  277. package/es/rce/plugins/shared/buildDownloadUrl.js +0 -2
  278. package/es/rce/plugins/shared/canvasContentUtils.js +6 -9
  279. package/es/rce/plugins/shared/compressionUtils.js +1 -8
  280. package/es/rce/plugins/shared/dateUtils.js +1 -1
  281. package/es/rce/plugins/shared/do-fetch-api-effect/defaultFetchOptions.js +4 -2
  282. package/es/rce/plugins/shared/do-fetch-api-effect/doFetchApi.js +7 -10
  283. package/es/rce/plugins/shared/do-fetch-api-effect/index.js +1 -0
  284. package/es/rce/plugins/shared/do-fetch-api-effect/parse-link-header.js +6 -20
  285. package/es/rce/plugins/shared/do-fetch-api-effect/query-string-encoding.js +5 -3
  286. package/es/rce/plugins/shared/fileShape.js +4 -9
  287. package/es/rce/plugins/shared/fileTypeUtils.js +32 -42
  288. package/es/rce/plugins/shared/fileUtils.js +1 -2
  289. package/es/rce/plugins/shared/linkUtils.js +1 -16
  290. package/es/rce/plugins/shared/round.js +1 -0
  291. package/es/rce/plugins/shared/trayUtils.js +4 -3
  292. package/es/rce/plugins/shared/useDataUrl.js +9 -9
  293. package/es/rce/plugins/shared/useFilterSettings.js +3 -3
  294. package/es/rce/plugins/tinymce-a11y-checker/components/ColorField.js +2 -6
  295. package/es/rce/plugins/tinymce-a11y-checker/components/checker.js +5 -63
  296. package/es/rce/plugins/tinymce-a11y-checker/components/color-picker.js +1 -2
  297. package/es/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +1 -0
  298. package/es/rce/plugins/tinymce-a11y-checker/components/pointer.js +1 -0
  299. package/es/rce/plugins/tinymce-a11y-checker/node-checker.js +1 -6
  300. package/es/rce/plugins/tinymce-a11y-checker/plugin.js +4 -7
  301. package/es/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +3 -26
  302. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +9 -38
  303. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +1 -5
  304. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +1 -2
  305. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +1 -1
  306. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +1 -2
  307. package/es/rce/plugins/tinymce-a11y-checker/rules/index.js +1 -0
  308. package/es/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +1 -4
  309. package/es/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +5 -24
  310. package/es/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +1 -3
  311. package/es/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +1 -6
  312. package/es/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +1 -3
  313. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +1 -2
  314. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header.js +1 -9
  315. package/es/rce/plugins/tinymce-a11y-checker/utils/colors.js +1 -0
  316. package/es/rce/plugins/tinymce-a11y-checker/utils/describe.js +1 -7
  317. package/es/rce/plugins/tinymce-a11y-checker/utils/dom.js +1 -26
  318. package/es/rce/plugins/tinymce-a11y-checker/utils/indicate.js +16 -15
  319. package/es/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +7 -10
  320. package/es/rce/plugins/tinymce-a11y-checker/utils/strings.js +1 -4
  321. package/es/rce/root.js +9 -8
  322. package/es/rce/sanitizePlugins.js +1 -3
  323. package/es/rce/style.js +1 -4
  324. package/es/rce/tinyRCE.js +13 -9
  325. package/es/rce/tinymce.oxide.content.min.css.js +1 -0
  326. package/es/rce/tinymce.oxide.skin.min.css.js +1 -0
  327. package/es/rce/transformContent.js +8 -10
  328. package/es/rce/types.js +1 -0
  329. package/es/rce/userOS.js +1 -1
  330. package/es/rce/wrapInitCb.js +50 -43
  331. package/es/rcs/api.js +61 -116
  332. package/es/rcs/buildError.js +5 -17
  333. package/es/rcs/fake.js +4 -13
  334. package/es/sidebar/actions/all_files.js +2 -0
  335. package/es/sidebar/actions/data.js +4 -7
  336. package/es/sidebar/actions/documents.js +9 -6
  337. package/es/sidebar/actions/files.js +3 -6
  338. package/es/sidebar/actions/filter.js +1 -0
  339. package/es/sidebar/actions/flickr.js +1 -1
  340. package/es/sidebar/actions/images.js +12 -11
  341. package/es/sidebar/actions/links.js +1 -0
  342. package/es/sidebar/actions/media.js +12 -10
  343. package/es/sidebar/actions/session.js +1 -3
  344. package/es/sidebar/actions/ui.js +1 -0
  345. package/es/sidebar/actions/upload.js +14 -39
  346. package/es/sidebar/containers/Sidebar.js +1 -2
  347. package/es/sidebar/containers/sidebarHandlers.js +3 -1
  348. package/es/sidebar/dragHtml.js +5 -3
  349. package/es/sidebar/reducers/all_files.js +4 -3
  350. package/es/sidebar/reducers/collection.js +12 -13
  351. package/es/sidebar/reducers/collections.js +5 -5
  352. package/es/sidebar/reducers/documents.js +6 -13
  353. package/es/sidebar/reducers/files.js +3 -3
  354. package/es/sidebar/reducers/filter.js +1 -8
  355. package/es/sidebar/reducers/flickr.js +9 -9
  356. package/es/sidebar/reducers/folder.js +15 -15
  357. package/es/sidebar/reducers/folders.js +3 -3
  358. package/es/sidebar/reducers/images.js +3 -13
  359. package/es/sidebar/reducers/index.js +3 -1
  360. package/es/sidebar/reducers/media.js +6 -13
  361. package/es/sidebar/reducers/newPageLinkExpanded.js +1 -2
  362. package/es/sidebar/reducers/noop.js +1 -0
  363. package/es/sidebar/reducers/rootFolderId.js +1 -2
  364. package/es/sidebar/reducers/session.js +3 -3
  365. package/es/sidebar/reducers/ui.js +3 -16
  366. package/es/sidebar/reducers/upload.js +8 -40
  367. package/es/sidebar/store/configureStore.js +1 -0
  368. package/es/sidebar/store/initialState.js +13 -24
  369. package/es/translations/locales/ab.js +1 -0
  370. package/es/translations/locales/ar.js +67 -9
  371. package/es/translations/locales/ca.js +67 -9
  372. package/es/translations/locales/cs.js +1 -0
  373. package/es/translations/locales/cs_CZ.js +1 -0
  374. package/es/translations/locales/cy.js +67 -9
  375. package/es/translations/locales/da-x-k12.js +67 -9
  376. package/es/translations/locales/da.js +67 -9
  377. package/es/translations/locales/da_DK.js +1 -0
  378. package/es/translations/locales/de.js +67 -9
  379. package/es/translations/locales/el.js +4 -0
  380. package/es/translations/locales/en-AU-x-unimelb.js +67 -9
  381. package/es/translations/locales/en-GB-x-ukhe.js +67 -9
  382. package/es/translations/locales/en.js +72 -8
  383. package/es/translations/locales/en_AU.js +67 -9
  384. package/es/translations/locales/en_CA.js +67 -9
  385. package/es/translations/locales/en_CY.js +67 -9
  386. package/es/translations/locales/en_GB.js +67 -9
  387. package/es/translations/locales/en_NZ.js +1 -0
  388. package/es/translations/locales/en_SE.js +1 -0
  389. package/es/translations/locales/en_US.js +1 -0
  390. package/es/translations/locales/es.js +67 -9
  391. package/es/translations/locales/es_ES.js +67 -9
  392. package/es/translations/locales/es_GT.js +1 -0
  393. package/es/translations/locales/fa_IR.js +7 -0
  394. package/es/translations/locales/fi.js +67 -9
  395. package/es/translations/locales/fr.js +67 -9
  396. package/es/translations/locales/fr_CA.js +68 -10
  397. package/es/translations/locales/ga.js +5 -13
  398. package/es/translations/locales/he.js +7 -0
  399. package/es/translations/locales/hi.js +67 -9
  400. package/es/translations/locales/ht.js +67 -9
  401. package/es/translations/locales/hu.js +7 -6
  402. package/es/translations/locales/hu_HU.js +1 -0
  403. package/es/translations/locales/hy.js +1 -0
  404. package/es/translations/locales/id.js +67 -9
  405. package/es/translations/locales/id_ID.js +1 -0
  406. package/es/translations/locales/is.js +67 -9
  407. package/es/translations/locales/it.js +67 -9
  408. package/es/translations/locales/ja.js +67 -9
  409. package/es/translations/locales/ko.js +1 -0
  410. package/es/translations/locales/ko_KR.js +1 -0
  411. package/es/translations/locales/lt.js +1 -0
  412. package/es/translations/locales/lt_LT.js +1 -0
  413. package/es/translations/locales/mi.js +67 -9
  414. package/es/translations/locales/mn_MN.js +1 -0
  415. package/es/translations/locales/ms.js +67 -9
  416. package/es/translations/locales/nb-x-k12.js +67 -9
  417. package/es/translations/locales/nb.js +67 -9
  418. package/es/translations/locales/nl.js +67 -9
  419. package/es/translations/locales/nl_NL.js +1 -0
  420. package/es/translations/locales/nn.js +7 -6
  421. package/es/translations/locales/pl.js +67 -9
  422. package/es/translations/locales/pt.js +67 -9
  423. package/es/translations/locales/pt_BR.js +67 -9
  424. package/es/translations/locales/ro.js +1 -0
  425. package/es/translations/locales/ru.js +67 -9
  426. package/es/translations/locales/se.js +1 -0
  427. package/es/translations/locales/sl.js +67 -9
  428. package/es/translations/locales/sv-x-k12.js +67 -9
  429. package/es/translations/locales/sv.js +67 -9
  430. package/es/translations/locales/sv_SE.js +1 -0
  431. package/es/translations/locales/tg.js +1 -0
  432. package/es/translations/locales/th.js +67 -9
  433. package/es/translations/locales/th_TH.js +1 -0
  434. package/es/translations/locales/tl_PH.js +1 -0
  435. package/es/translations/locales/tr.js +7 -0
  436. package/es/translations/locales/uk_UA.js +7 -0
  437. package/es/translations/locales/vi.js +67 -9
  438. package/es/translations/locales/vi_VN.js +1 -0
  439. package/es/translations/locales/zh-Hans.js +67 -9
  440. package/es/translations/locales/zh-Hant.js +67 -9
  441. package/es/translations/locales/zh.js +67 -9
  442. package/es/translations/locales/zh_HK.js +67 -9
  443. package/es/translations/locales/zh_TW.Big5.js +1 -0
  444. package/es/translations/locales/zh_TW.js +1 -0
  445. package/es/translations/tinymce/ar_SA.js +1 -0
  446. package/es/translations/tinymce/fi.js +1 -0
  447. package/es/translations/tinymce/ga.js +1 -0
  448. package/es/translations/tinymce/id.js +1 -0
  449. package/es/translations/tinymce/ru.js +1 -0
  450. package/es/translations/tinymce/ru_RU.js +1 -0
  451. package/es/translations/tinymce/sl.js +1 -0
  452. package/es/translations/tinymce/sr.js +1 -0
  453. package/es/translations/tinymce/th.js +1 -0
  454. package/es/translations/tinymce/uk_UA.js +1 -0
  455. package/es/translations/tinymce/vi_VN.js +1 -0
  456. package/es/util/TypedDict.js +4 -2
  457. package/es/util/encrypted-storage.js +3 -13
  458. package/es/util/file-url-util.js +1 -6
  459. package/es/util/fullscreenHelpers.js +4 -1
  460. package/es/util/instui-icon-helper.js +4 -3
  461. package/es/util/loadingPlaceholder.js +38 -39
  462. package/es/util/simpleCache.js +0 -3
  463. package/es/util/string-util.js +1 -1
  464. package/es/util/textarea-editing-util.js +3 -7
  465. package/es/util/tinymce-plugin-util.js +0 -5
  466. package/es/util/url-util.js +16 -25
  467. package/eslint.config.js +239 -0
  468. package/jest.config.js +1 -1
  469. package/package.json +77 -82
  470. package/scripts/build-canvas +2 -1
  471. package/scripts/build.js +4 -4
  472. package/scripts/publish_to_npm.sh +1 -1
  473. package/testcafe/RCEWrapper.test.js +0 -1
  474. package/testcafe/StatusBar.test.js +0 -1
  475. package/testcafe/axe.test.js +3 -4
  476. package/testcafe/enhanceUserContent.test.js +0 -1
  477. package/tsconfig.json +20 -15
  478. package/.eslintrc +0 -45
  479. package/.prettierignore +0 -6
  480. package/es/common/components/FileTree/File.js +0 -64
  481. package/es/common/components/FileTree/Folder.js +0 -110
  482. package/es/common/components/FileTree/index.js +0 -84
  483. package/es/common/components/FileTree/styles.js +0 -72
  484. package/es/common/components/Loading.js +0 -83
@@ -0,0 +1,239 @@
1
+ const globals = require('globals')
2
+ const pluginJs = require('@eslint/js')
3
+ const tseslint = require('typescript-eslint')
4
+ const pluginReact = require('eslint-plugin-react')
5
+ const jsxA11y = require('eslint-plugin-jsx-a11y')
6
+ const pluginReactHooks = require('eslint-plugin-react-hooks')
7
+ const pluginPromise = require('eslint-plugin-promise')
8
+ const importPlugin = require('eslint-plugin-import')
9
+ const notice = require('eslint-plugin-notice')
10
+ const comments = require('@eslint-community/eslint-plugin-eslint-comments/configs')
11
+ const pluginJest = require('eslint-plugin-jest')
12
+
13
+ /** @type {import('eslint').Linter.Config[]} */
14
+ module.exports = tseslint.config(
15
+ // General
16
+ {
17
+ files: ['src/**/*.ts', 'testcafe/**/*.{js,mjs,ts,jsx,tsx}'],
18
+ },
19
+ {
20
+ ignores: [
21
+ 'es/**/*',
22
+ './src/translations/*/*',
23
+ 'scripts',
24
+ 'packages/canvas-rce/webpack.testcafe.config.js',
25
+ 'testcafe/',
26
+ 'webpack.*.config.js',
27
+ ],
28
+ },
29
+
30
+ // Globals
31
+ {
32
+ languageOptions: {
33
+ ecmaVersion: 'latest',
34
+ sourceType: 'commonjs',
35
+ globals: {
36
+ ...globals.node,
37
+ ...globals.browser,
38
+ ENV: true,
39
+ JSX: true,
40
+ INST: true,
41
+ tinyMCE: true,
42
+ tinymce: true,
43
+ structuredClone: true,
44
+ },
45
+ },
46
+ },
47
+
48
+ {
49
+ rules: {
50
+ 'no-console': 'warn',
51
+ 'no-undef': 'warn',
52
+ 'no-unused-private-class-members': 'warn',
53
+ 'prefer-const': 'warn',
54
+ 'prefer-rest-params': 'off',
55
+ },
56
+ },
57
+
58
+ // TypeScript
59
+ ...tseslint.configs.recommended,
60
+ {
61
+ rules: {
62
+ '@typescript-eslint/ban-ts-comment': 'off',
63
+ '@typescript-eslint/no-empty-object-type': 'warn',
64
+ '@typescript-eslint/no-explicit-any': 'off',
65
+ '@typescript-eslint/no-non-null-asserted-optional-chain': 'warn',
66
+ '@typescript-eslint/no-require-imports': 'off',
67
+ '@typescript-eslint/no-this-alias': 'off',
68
+ '@typescript-eslint/no-unsafe-function-type': 'warn',
69
+ '@typescript-eslint/no-unused-expressions': 'warn',
70
+ '@typescript-eslint/no-unused-vars': 'warn',
71
+ '@typescript-eslint/no-wrapper-object-types': 'warn',
72
+ 'no-undef': 'warn',
73
+ },
74
+ languageOptions: {
75
+ ecmaVersion: 'latest',
76
+ sourceType: 'commonjs',
77
+ globals: {
78
+ ...globals.typescript,
79
+ },
80
+ },
81
+ },
82
+
83
+ // JavaScript
84
+ pluginJs.configs.recommended,
85
+ {
86
+ rules: {
87
+ 'no-constant-binary-expression': 'warn',
88
+ 'no-dupe-class-members': 'warn',
89
+ 'no-dupe-keys': 'warn',
90
+ 'no-import-assign': 'warn',
91
+ 'no-loss-of-precision': 'warn',
92
+ 'no-prototype-builtins': 'off',
93
+ 'no-redeclare': 'warn',
94
+ 'no-unexpected-multiline': 'warn',
95
+ 'no-unsafe-optional-chaining': 'warn',
96
+ 'no-unused-expressions': 'off',
97
+ 'no-unused-vars': 'warn',
98
+ 'no-useless-escape': 'warn',
99
+ 'prefer-const': 'warn',
100
+ 'prefer-rest-params': 'off',
101
+ },
102
+ },
103
+
104
+ // React
105
+ pluginReact.configs.flat.recommended,
106
+ {
107
+ plugins: {react: pluginReact},
108
+ settings: {
109
+ react: {
110
+ version: 'detect',
111
+ },
112
+ },
113
+ rules: {
114
+ 'react/no-deprecated': 'warn',
115
+ 'react/prop-types': 'warn',
116
+ 'react/display-name': 'off',
117
+ 'react/jsx-key': 'warn',
118
+ 'react/no-string-refs': 'warn',
119
+ 'react/no-find-dom-node': 'warn',
120
+ 'react/no-unknown-property': 'warn',
121
+ 'react/jsx-no-target-blank': 'warn',
122
+ },
123
+ },
124
+
125
+ // Copyright / Open Source Header
126
+ {
127
+ files: ['src/**/*.{js,mjs,ts,jsx,tsx}'],
128
+ ignores: ['**/*.config.js', 'es/**/*', 'src/translations/**/*'],
129
+ plugins: {
130
+ notice,
131
+ },
132
+ rules: {
133
+ // Lenient so we don't automatically put our copyright notice on
134
+ // top of something already copyrighted by someone else.
135
+ 'notice/notice': [
136
+ 'error',
137
+ {
138
+ templateFile: '../../config/copyright-template.js',
139
+ mustMatch: 'Copyright ',
140
+ },
141
+ ],
142
+ },
143
+ },
144
+
145
+ // Promises
146
+ pluginPromise.configs['flat/recommended'],
147
+ {
148
+ rules: {
149
+ 'promise/always-return': 'off',
150
+ 'promise/catch-or-return': 'off',
151
+ },
152
+ },
153
+
154
+ // Imports
155
+ importPlugin.flatConfigs.recommended,
156
+ {
157
+ files: [
158
+ '__tests__/**/*.{js,mjs,ts,jsx,tsx}',
159
+ 'src/**/*.{js,mjs,ts,jsx,tsx}',
160
+ 'testcafe/**/*.{js,mjs,ts,jsx,tsx}',
161
+ ],
162
+ ignores: ['src/translations/**'],
163
+ languageOptions: {
164
+ ecmaVersion: 'latest',
165
+ sourceType: 'commonjs',
166
+ },
167
+ rules: {
168
+ 'import/no-dynamic-require': 'warn',
169
+ 'import/no-nodejs-modules': 'warn',
170
+ 'import/no-unresolved': 'warn',
171
+ 'import/named': 'off',
172
+ 'import/namespace': 'off',
173
+ },
174
+ },
175
+
176
+ // React Hooks
177
+ {
178
+ plugins: {'react-hooks': pluginReactHooks},
179
+ rules: {
180
+ 'react-hooks/rules-of-hooks': 'warn',
181
+ 'react-hooks/exhaustive-deps': 'warn',
182
+ },
183
+ },
184
+
185
+ // JSX A11y
186
+ jsxA11y.flatConfigs.recommended,
187
+ {
188
+ rules: {
189
+ 'jsx-a11y/no-interactive-element-to-noninteractive-role': 'warn',
190
+ '@eslint-community/eslint-comments/no-duplicate-disable': 'warn',
191
+ 'jsx-a11y/role-has-required-aria-props': 'warn',
192
+ 'jsx-a11y/no-autofocus': 'warn',
193
+ },
194
+ },
195
+
196
+ // Extra ESLint Comment rules
197
+ comments.recommended,
198
+ {
199
+ rules: {
200
+ '@eslint-community/eslint-comments/disable-enable-pair': ['error', {allowWholeFile: true}],
201
+ },
202
+ },
203
+
204
+ // Testcafe
205
+ {
206
+ files: ['testcafe/**/*.{js,mjs,ts,jsx,tsx}'],
207
+ languageOptions: {
208
+ globals: {
209
+ test: true,
210
+ fixture: true,
211
+ },
212
+ },
213
+ },
214
+
215
+ // Jest
216
+ {
217
+ files: [
218
+ '__tests__/**/*.{js,mjs,ts,jsx,tsx}',
219
+ 'src/**/__tests__/**/*.{js,mjs,ts,jsx,tsx}',
220
+ 'src/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js',
221
+ ],
222
+ ignores: ['es/**'],
223
+ plugins: {jest: pluginJest},
224
+ languageOptions: {
225
+ globals: {
226
+ ...pluginJest.environments.globals.globals,
227
+ global: true,
228
+ },
229
+ },
230
+ rules: {
231
+ 'jest/no-disabled-tests': 'warn',
232
+ 'jest/no-focused-tests': 'error',
233
+ 'jest/no-identical-title': 'warn',
234
+ 'jest/prefer-to-have-length': 'warn',
235
+ 'jest/valid-expect': 'error',
236
+ 'react/no-deprecated': 'warn',
237
+ },
238
+ }
239
+ )
package/jest.config.js CHANGED
@@ -42,7 +42,7 @@ module.exports = {
42
42
  testMatch: ['**/__tests__/**/?(*.)(spec|test).[jt]s?(x)'],
43
43
  modulePathIgnorePatterns: ['<rootDir>/es', '<rootDir>/canvas'],
44
44
  transformIgnorePatterns: [`/node_modules/(?!${esModules})`],
45
- testEnvironment: '<rootDir>../../jest/strictTimeLimitEnvironment.js',
45
+ testEnvironment: 'jsdom',
46
46
  moduleNameMapper: {
47
47
  // jest can't import css
48
48
  '\\.(css|less)$': '<rootDir>/src/rce/__mocks__/styleMock.js',
package/package.json CHANGED
@@ -1,20 +1,18 @@
1
1
  {
2
2
  "name": "@instructure/canvas-rce",
3
- "version": "5.14.0",
3
+ "version": "5.14.2",
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 \"src/**/*.{js,jsx,ts,tsx}\" -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",
11
+ "lint": "eslint --quiet",
12
+ "lint:fix": "eslint --quiet --fix",
13
+ "test": "yarn test:serial",
14
+ "test:parallel": "yarn test:jest",
15
+ "test:serial": "yarn test:jest",
18
16
  "test:jest": "jest --color --runInBand",
19
17
  "test:cafe": "yarn build:cafe && yarn test:cafe:only",
20
18
  "test:cafe:ui": "yarn build:cafe && yarn test:cafe:only:ui",
@@ -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
- "demo:dev": "yarn demo:clean && mkdir -p ./github-pages/dist && cp ./github-pages/index.html ./github-pages/dist && wp -c ./webpack.dev.config.js",
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,64 @@
76
72
  "instrument": false
77
73
  },
78
74
  "dependencies": {
79
- "@instructure/canvas-theme": "8.56.4",
75
+ "@instructure/canvas-theme": "9.10.0",
80
76
  "@instructure/canvas-media": "*",
81
- "@instructure/debounce": "8.56.4",
82
- "@instructure/emotion": "8.56.4",
77
+ "@instructure/debounce": "9.10.0",
78
+ "@instructure/emotion": "9.10.0",
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.0",
82
+ "@instructure/ui-a11y-content": "9.10.0",
83
+ "@instructure/ui-a11y-utils": "9.10.0",
84
+ "@instructure/ui-alerts": "9.10.0",
85
+ "@instructure/ui-avatar": "9.10.0",
86
+ "@instructure/ui-badge": "9.10.0",
87
+ "@instructure/ui-billboard": "9.10.0",
88
+ "@instructure/ui-buttons": "9.10.0",
89
+ "@instructure/ui-checkbox": "9.10.0",
90
+ "@instructure/ui-source-code-editor": "9.10.0",
91
+ "@instructure/ui-color-picker": "8.56.4",
92
+ "@instructure/ui-color-utils": "9.10.0",
93
+ "@instructure/ui-file-drop": "9.10.0",
94
+ "@instructure/ui-flex": "9.10.0",
95
+ "@instructure/ui-focusable": "9.10.0",
96
+ "@instructure/ui-form-field": "9.10.0",
97
+ "@instructure/ui-grid": "9.10.0",
98
+ "@instructure/ui-heading": "9.10.0",
99
+ "@instructure/ui-icons": "9.10.0",
100
+ "@instructure/ui-img": "9.10.0",
101
+ "@instructure/ui-link": "9.10.0",
102
+ "@instructure/ui-list": "9.10.0",
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.0",
105
+ "@instructure/ui-modal": "9.10.0",
106
+ "@instructure/ui-motion": "9.10.0",
107
+ "@instructure/ui-number-input": "9.10.0",
108
+ "@instructure/ui-overlays": "9.10.0",
109
+ "@instructure/ui-pagination": "9.10.0",
110
+ "@instructure/ui-pill": "9.10.0",
111
+ "@instructure/ui-popover": "9.10.0",
112
+ "@instructure/ui-radio-input": "9.10.0",
113
+ "@instructure/ui-react-utils": "9.10.0",
114
+ "@instructure/ui-simple-select": "9.10.0",
115
+ "@instructure/ui-spinner": "9.10.0",
116
+ "@instructure/ui-svg-images": "9.10.0",
117
+ "@instructure/ui-table": "9.10.0",
118
+ "@instructure/ui-tabs": "9.10.0",
119
+ "@instructure/ui-text-area": "9.10.0",
120
+ "@instructure/ui-text-input": "9.10.0",
121
+ "@instructure/ui-text": "9.10.0",
122
+ "@instructure/ui-themes": "9.10.0",
123
+ "@instructure/ui-toggle-details": "9.10.0",
124
+ "@instructure/ui-tooltip": "9.10.0",
125
+ "@instructure/ui-tray": "9.10.0",
126
+ "@instructure/ui-tree-browser": "9.10.0",
127
+ "@instructure/ui-truncate-text": "9.10.0",
128
+ "@instructure/ui-utils": "9.10.0",
129
+ "@instructure/ui-view": "9.10.0",
130
+ "@instructure/uid": "9.10.0",
133
131
  "@sheerun/mutationobserver-shim": "^0.3.2",
132
+ "@types/tinycolor2": "^1.4.6",
134
133
  "@tinymce/tinymce-react": "~3.8.4",
135
134
  "aphrodite": "^2",
136
135
  "axios": "^0.21.1",
@@ -160,6 +159,7 @@
160
159
  "redux-batch-middleware": "^0.2.0",
161
160
  "redux-thunk": "^3.1.0",
162
161
  "text-field-edit": "^3.2.0",
162
+ "tinycolor2": "^1.6.0",
163
163
  "tinymce": "^5",
164
164
  "uri-js": "^4.2.2",
165
165
  "wcag-element-contrast": "^1.0.1"
@@ -171,12 +171,13 @@
171
171
  "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
172
172
  "@babel/preset-typescript": "^7",
173
173
  "@babel/register": "7",
174
+ "@biomejs/biome": "*",
174
175
  "@instructure/browserslist-config-canvas-lms": ">=2",
175
176
  "@instructure/translations": ">=1",
176
177
  "@testing-library/dom": "^8",
177
178
  "@testing-library/jest-dom": "^5",
178
- "@testing-library/react": "^12",
179
179
  "@testing-library/react-hooks": "^5",
180
+ "@testing-library/react": "^12",
180
181
  "@testing-library/user-event": "^14",
181
182
  "@types/testing-library__jest-dom": "^5.0.0",
182
183
  "axe-testcafe": "^3",
@@ -190,39 +191,33 @@
190
191
  "babel-plugin-typescript-to-proptypes": "^2.1.0",
191
192
  "cross-env": "^5.0.0",
192
193
  "escape-html": "^1",
193
- "eslint-plugin-mocha": "^6",
194
- "eslint-plugin-testcafe": "^0.2.1",
195
194
  "fetch-mock": "^6",
196
195
  "format-message-cli": "^6",
197
196
  "format-message-parse": "^6",
198
- "jest": "^28",
199
197
  "jest-canvas-mock": "^2",
200
198
  "jest-junit": "^7",
201
199
  "jest-mock-proxy": "3.1.2",
200
+ "jest": "^28",
202
201
  "mathjax": "^3.2.0",
203
- "mocha": "^6",
204
- "mocha-junit-reporter": "^1.18.0",
205
- "mocha-multi-reporters": "^1.1.7",
206
202
  "moxios": "^0.4",
207
203
  "nyc": "^13",
208
- "prettier": "^2.2.1",
209
204
  "proxyquire": "1.7.4",
210
205
  "shelljs": "^0.8.3",
211
206
  "sinon": "^7",
212
207
  "skin-deep": "^1",
213
208
  "source-map-support": "0.5.21",
214
- "testcafe": "1.14.2",
215
209
  "testcafe-browser-provider-selenium": "^1.2.0",
216
210
  "testcafe-react-selectors": "^3.3.0",
217
- "ts-node": "^10.9.1",
218
- "typescript": "^5.3.2",
211
+ "testcafe": "1.14.2",
212
+ "ts-node": "^10.9.2",
213
+ "typescript": "*",
219
214
  "url-loader": "^4.1.1",
220
- "webpack": "^5",
221
215
  "webpack-merge": "^5",
222
216
  "webpack-nano": "^1",
223
- "webpack-plugin-serve": "^1"
217
+ "webpack-plugin-serve": "^1",
218
+ "webpack": "^5"
224
219
  },
225
220
  "resolutions": {
226
221
  "format-message-estree-util": "./packages/format-message-estree-util"
227
222
  }
228
- }
223
+ }
@@ -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')
@@ -34,7 +34,7 @@ if [ -z "$SKIP_ALERT" ]; then
34
34
  # runs the get-user command and throws away output
35
35
  # checks for nonzero exit code to determine if the
36
36
  # user is logged in or not
37
- aws iam get-user > /dev/null 2>&1
37
+ aws sts get-caller-identity > /dev/null 2>&1
38
38
  if [[ ! $? -eq 0 ]]; then
39
39
  echo -e "\n⚠️ Please log into AWS and try again. ⚠️\n"
40
40
  exit 1
@@ -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
26
  "include": ["src/**/*"],
21
- "exclude": ["**/node_modules", "**/.*/"]
22
-
27
+ "exclude": ["**/node_modules", "**/.*/", "**/__tests__/*", "**/__mocks__/*"]
23
28
  }