@instructure/canvas-rce 5.14.1 → 5.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/DEVELOPMENT.md +1 -1
  3. package/README.md +0 -8
  4. package/__tests__/common/indicate.test.js +84 -0
  5. package/__tests__/common/mimeClass.test.js +85 -0
  6. package/__tests__/module/contentInsertionUtils.test.js +52 -0
  7. package/__tests__/module/indicatorRegion.test.js +75 -0
  8. package/__tests__/module/normalizeLocale.test.js +46 -0
  9. package/__tests__/module/normalizeProps.test.js +51 -0
  10. package/__tests__/module/sanitizePlugins.test.js +48 -0
  11. package/__tests__/module/wrapInitCb.test.js +56 -0
  12. package/__tests__/rcs/api.test.js +819 -0
  13. package/{mocha-reporter-config.js → __tests__/sidebar/actions/all_files.test.js} +10 -9
  14. package/__tests__/sidebar/actions/data.test.js +196 -0
  15. package/__tests__/sidebar/actions/utils.js +44 -0
  16. package/{es/rce/plugins/shared/__mocks__/screenfull.js → __tests__/sidebar/reducers/all_files.test.js} +10 -6
  17. package/babel.config.js +3 -1
  18. package/es/bridge/Bridge.js +8 -56
  19. package/es/bridge/index.js +1 -0
  20. package/es/canvasFileBrowser/FileBrowser.js +12 -59
  21. package/es/canvasFileBrowser/en-US.js +3 -6
  22. package/es/common/FlashAlert.js +7 -28
  23. package/es/common/browser.js +4 -2
  24. package/es/common/fileUrl.js +104 -59
  25. package/es/common/incremental-loading/LoadMoreButton.js +1 -0
  26. package/es/common/incremental-loading/LoadingIndicator.js +1 -2
  27. package/es/common/incremental-loading/LoadingStatus.js +1 -2
  28. package/es/common/incremental-loading/index.js +1 -0
  29. package/es/common/incremental-loading/useIncrementalLoading.js +1 -3
  30. package/es/common/indicate.js +15 -8
  31. package/es/common/mimeClass.js +3 -4
  32. package/es/common/natcompare.js +1 -4
  33. package/es/defaultTinymceConfig.js +5 -3
  34. package/es/elementDenylist.js +1 -0
  35. package/es/enhance-user-content/doc_previews.js +17 -28
  36. package/es/enhance-user-content/enhance_user_content.js +28 -60
  37. package/es/enhance-user-content/external_links.js +5 -8
  38. package/es/enhance-user-content/index.js +1 -0
  39. package/es/enhance-user-content/instructure_helper.js +12 -34
  40. package/es/enhance-user-content/jqueryish_funcs.js +8 -11
  41. package/es/enhance-user-content/mathml.js +35 -82
  42. package/es/enhance-user-content/media_comment_thumbnail.js +5 -17
  43. package/es/format-message.js +3 -4
  44. package/es/getThemeVars.js +8 -6
  45. package/es/getTranslations.js +1 -78
  46. package/es/index.js +3 -1
  47. package/es/rce/AlertMessageArea.js +1 -1
  48. package/es/rce/DraggingBlocker.js +4 -2
  49. package/es/rce/KeyboardShortcutModal.js +1 -0
  50. package/es/rce/RCE.js +12 -11
  51. package/es/rce/RCEGlobals.js +12 -10
  52. package/es/rce/RCEVariants.js +27 -10
  53. package/es/rce/RCEWrapper.js +167 -386
  54. package/es/rce/RCEWrapperProps.js +8 -3
  55. package/es/rce/RceHtmlEditor.js +5 -8
  56. package/es/rce/ResizeHandle.js +3 -8
  57. package/es/rce/RestoreAutoSaveModal.js +1 -2
  58. package/es/rce/ShowOnFocusButton/index.js +0 -6
  59. package/es/rce/StatusBar.js +8 -37
  60. package/es/rce/alertHandler.js +1 -4
  61. package/es/rce/contentInsertion.js +35 -57
  62. package/es/rce/contentInsertionUtils.js +6 -8
  63. package/es/rce/contentRendering.js +7 -12
  64. package/es/rce/customEvents.js +1 -0
  65. package/es/rce/editorLanguage.js +22 -10
  66. package/es/rce/indicatorRegion.js +6 -5
  67. package/es/rce/normalizeLocale.js +5 -3
  68. package/es/rce/normalizeProps.js +3 -1
  69. package/es/rce/plugins/instructure-ui-icons/plugin.js +21 -3
  70. package/es/rce/plugins/instructure_color/clickCallback.js +84 -0
  71. package/es/rce/plugins/instructure_color/components/ColorPicker.js +299 -0
  72. package/es/rce/plugins/instructure_color/components/ColorPopup.js +68 -0
  73. package/es/rce/plugins/instructure_color/components/colorUtils.js +60 -0
  74. package/es/rce/plugins/instructure_color/plugin.js +40 -0
  75. package/es/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +10 -3
  76. package/es/rce/plugins/instructure_condensed_buttons/plugin.js +1 -0
  77. package/es/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +1 -2
  78. package/es/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +3 -2
  79. package/es/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +1 -0
  80. package/es/rce/plugins/instructure_condensed_buttons/ui/list-button.js +22 -15
  81. package/es/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +1 -2
  82. package/es/rce/plugins/instructure_documents/clickCallback.js +1 -0
  83. package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +1 -9
  84. package/es/rce/plugins/instructure_documents/components/Link.js +3 -18
  85. package/es/rce/plugins/instructure_documents/plugin.js +7 -14
  86. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +4 -2
  87. package/es/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +1 -2
  88. package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +12 -29
  89. package/es/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +11 -12
  90. package/es/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +4 -3
  91. package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +4 -2
  92. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +13 -7
  93. package/es/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +4 -7
  94. package/es/rce/plugins/instructure_equation/MathIcon/index.js +1 -1
  95. package/es/rce/plugins/instructure_equation/MathIcon/svgs.js +1 -1
  96. package/es/rce/plugins/instructure_equation/clickCallback.js +2 -5
  97. package/es/rce/plugins/instructure_equation/mathlive/index.js +1 -1
  98. package/es/rce/plugins/instructure_equation/plugin.js +7 -10
  99. package/es/rce/plugins/instructure_fullscreen/plugin.js +3 -6
  100. package/es/rce/plugins/instructure_html_view/clickCallback.js +1 -0
  101. package/es/rce/plugins/instructure_html_view/plugin.js +5 -4
  102. package/es/rce/plugins/instructure_icon_maker/clickCallback.js +2 -4
  103. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +1 -2
  104. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +1 -0
  105. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +1 -0
  106. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +1 -0
  107. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +1 -2
  108. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +25 -22
  109. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +7 -11
  110. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +27 -23
  111. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +5 -4
  112. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +11 -9
  113. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +1 -0
  114. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +5 -4
  115. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +1 -3
  116. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +7 -7
  117. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +1 -0
  118. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +27 -20
  119. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +1 -0
  120. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +1 -0
  121. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +1 -0
  122. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +4 -4
  123. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +1 -2
  124. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +1 -5
  125. package/es/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +1 -0
  126. package/es/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +18 -33
  127. package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +4 -4
  128. package/es/rce/plugins/instructure_icon_maker/plugin.js +10 -14
  129. package/es/rce/plugins/instructure_icon_maker/reducers/imageSection.js +37 -38
  130. package/es/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +24 -24
  131. package/es/rce/plugins/instructure_icon_maker/registerEditToolbar.js +1 -3
  132. package/es/rce/plugins/instructure_icon_maker/svg/constants.js +4 -3
  133. package/es/rce/plugins/instructure_icon_maker/svg/font.js +3 -1
  134. package/es/rce/plugins/instructure_icon_maker/svg/image.js +69 -83
  135. package/es/rce/plugins/instructure_icon_maker/svg/index.js +11 -15
  136. package/es/rce/plugins/instructure_icon_maker/svg/metadata.js +1 -0
  137. package/es/rce/plugins/instructure_icon_maker/svg/settings.js +32 -39
  138. package/es/rce/plugins/instructure_icon_maker/svg/shape.js +1 -49
  139. package/es/rce/plugins/instructure_icon_maker/svg/text.js +7 -92
  140. package/es/rce/plugins/instructure_icon_maker/svg/utils.js +1 -7
  141. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +2 -6
  142. package/es/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +1 -15
  143. package/es/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +3 -4
  144. package/es/rce/plugins/instructure_icon_maker/utils/iconValidation.js +1 -1
  145. package/es/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +1 -0
  146. package/es/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +12 -13
  147. package/es/rce/plugins/instructure_image/ImageEmbedOptions.js +6 -24
  148. package/es/rce/plugins/instructure_image/ImageList/Image.js +1 -6
  149. package/es/rce/plugins/instructure_image/ImageList/index.js +1 -2
  150. package/es/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +7 -27
  151. package/es/rce/plugins/instructure_image/ImageOptionsTray/index.js +3 -16
  152. package/es/rce/plugins/instructure_image/Images/index.js +1 -3
  153. package/es/rce/plugins/instructure_image/clickCallback.js +1 -0
  154. package/es/rce/plugins/instructure_image/plugin.js +13 -18
  155. package/es/rce/plugins/instructure_links/clickCallback.js +1 -0
  156. package/es/rce/plugins/instructure_links/components/AccordionSection.js +1 -0
  157. package/es/rce/plugins/instructure_links/components/CollectionPanel.js +1 -3
  158. package/es/rce/plugins/instructure_links/components/Link.js +7 -19
  159. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +1 -21
  160. package/es/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +1 -4
  161. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +3 -20
  162. package/es/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +1 -12
  163. package/es/rce/plugins/instructure_links/components/LinkSet.js +4 -20
  164. package/es/rce/plugins/instructure_links/components/LinksPanel.js +1 -2
  165. package/es/rce/plugins/instructure_links/components/NavigationPanel.js +7 -9
  166. package/es/rce/plugins/instructure_links/components/NoResults.js +1 -7
  167. package/es/rce/plugins/instructure_links/plugin.js +17 -40
  168. package/es/rce/plugins/instructure_links/validateURL.js +81 -36
  169. package/es/rce/plugins/instructure_media_embed/clickCallback.js +2 -5
  170. package/es/rce/plugins/instructure_media_embed/components/Embed.js +1 -0
  171. package/es/rce/plugins/instructure_media_embed/plugin.js +7 -3
  172. package/es/rce/plugins/instructure_paste/pasteMenuCommand.js +1 -5
  173. package/es/rce/plugins/instructure_paste/plugin.js +27 -29
  174. package/es/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +14 -53
  175. package/es/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +21 -49
  176. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +11 -42
  177. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +1 -2
  178. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +1 -1
  179. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +2 -10
  180. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +1 -2
  181. package/es/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +1 -0
  182. package/es/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +2 -1
  183. package/es/rce/{__mocks__/_mockStudioPlayer.js → plugins/instructure_rce_external_tools/constants.js} +11 -3
  184. package/es/rce/plugins/instructure_rce_external_tools/dialog-helper.js +19 -4
  185. package/es/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -2
  186. package/es/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +130 -136
  187. package/es/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +100 -95
  188. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +1 -0
  189. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +2 -19
  190. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +1 -14
  191. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +1 -6
  192. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +1 -9
  193. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +1 -1
  194. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -5
  195. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +18 -10
  196. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +4 -4
  197. package/es/rce/plugins/instructure_rce_external_tools/plugin.js +7 -16
  198. package/es/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +1 -1
  199. package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +1 -25
  200. package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +1 -4
  201. package/es/rce/plugins/instructure_record/MediaPanel/index.js +1 -9
  202. package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +8 -51
  203. package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +4 -17
  204. package/es/rce/plugins/instructure_record/clickCallback.js +7 -15
  205. package/es/rce/plugins/instructure_record/mediaTranslations.js +1 -0
  206. package/es/rce/plugins/instructure_record/plugin.js +11 -18
  207. package/es/rce/plugins/instructure_search_and_replace/clickCallback.js +2 -5
  208. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTray.js +20 -35
  209. package/es/rce/plugins/instructure_search_and_replace/components/FindReplaceTrayController.js +3 -18
  210. package/es/rce/plugins/instructure_search_and_replace/getSelectionContext.js +2 -9
  211. package/es/rce/plugins/instructure_search_and_replace/plugin.js +1 -3
  212. package/es/rce/plugins/instructure_studio_media_options/plugin.js +1 -1
  213. package/es/rce/plugins/instructure_wordcount/clickCallback.js +2 -5
  214. package/es/rce/plugins/instructure_wordcount/components/WordCountModal.js +1 -4
  215. package/es/rce/plugins/instructure_wordcount/plugin.js +1 -0
  216. package/es/rce/plugins/instructure_wordcount/utils/countContent.js +1 -8
  217. package/es/rce/plugins/instructure_wordcount/utils/tableContent.js +1 -0
  218. package/es/rce/plugins/shared/CanvasContentTray.js +22 -49
  219. package/es/rce/plugins/shared/CheckerboardStyling.js +1 -1
  220. package/es/rce/plugins/shared/ColorInput.js +5 -14
  221. package/es/rce/plugins/shared/ConditionalTooltip.js +1 -0
  222. package/es/rce/plugins/shared/ContentSelection.js +17 -58
  223. package/es/rce/plugins/shared/DimensionUtils.js +1 -8
  224. package/es/rce/plugins/shared/DimensionsInput/DimensionInput.js +6 -6
  225. package/es/rce/plugins/shared/DimensionsInput/index.js +37 -15
  226. package/es/rce/plugins/shared/DimensionsInput/useDimensionsState.js +5 -29
  227. package/es/rce/plugins/shared/ErrorBoundary.js +2 -5
  228. package/es/rce/plugins/shared/EventUtils.js +1 -3
  229. package/es/rce/plugins/shared/Filter.js +8 -38
  230. package/es/rce/plugins/shared/FixedContentTray.js +3 -3
  231. package/es/rce/plugins/shared/ImageCropper/DirectionRegion.js +1 -8
  232. package/es/rce/plugins/shared/ImageCropper/Modal.js +4 -7
  233. package/es/rce/plugins/shared/ImageCropper/Preview.js +7 -11
  234. package/es/rce/plugins/shared/ImageCropper/constants.js +1 -0
  235. package/es/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +2 -5
  236. package/es/rce/plugins/shared/ImageCropper/controls/ResetControls.js +1 -0
  237. package/es/rce/plugins/shared/ImageCropper/controls/RotationControls.js +1 -10
  238. package/es/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +1 -0
  239. package/es/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +1 -11
  240. package/es/rce/plugins/shared/ImageCropper/controls/index.js +1 -0
  241. package/es/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +3 -16
  242. package/es/rce/plugins/shared/ImageCropper/controls/utils.js +1 -2
  243. package/es/rce/plugins/shared/ImageCropper/imageCropUtils.js +1 -10
  244. package/es/rce/plugins/shared/ImageCropper/index.js +1 -0
  245. package/es/rce/plugins/shared/ImageCropper/propTypes.js +1 -0
  246. package/es/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +15 -14
  247. package/es/rce/plugins/shared/ImageCropper/shape.js +1 -0
  248. package/es/rce/plugins/shared/ImageCropper/svg/index.js +1 -2
  249. package/es/rce/plugins/shared/ImageCropper/svg/shape.js +1 -17
  250. package/es/rce/plugins/shared/ImageCropper/svg/utils.js +1 -0
  251. package/es/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +19 -46
  252. package/es/rce/plugins/shared/ImageCropper/useMouseWheel.js +8 -10
  253. package/es/rce/plugins/shared/ImageOptionsForm.js +1 -2
  254. package/es/rce/plugins/shared/LinkDisplay.js +1 -2
  255. package/es/rce/plugins/shared/PreviewIcon.js +1 -6
  256. package/es/rce/plugins/shared/Previewable.js +1 -0
  257. package/es/rce/plugins/shared/RceFileBrowser.js +5 -7
  258. package/es/rce/plugins/shared/StoreContext.js +1 -2
  259. package/es/rce/plugins/shared/StudioLtiSupportUtils.js +10 -6
  260. package/es/rce/plugins/shared/UnknownFileTypePanel.js +1 -0
  261. package/es/rce/plugins/shared/Upload/CanvasContentPanel.js +13 -18
  262. package/es/rce/plugins/shared/Upload/CategoryProcessor.js +1 -1
  263. package/es/rce/plugins/shared/Upload/ComputerPanel.js +8 -26
  264. package/es/rce/plugins/shared/Upload/PanelFilter.js +3 -12
  265. package/es/rce/plugins/shared/Upload/SvgCategoryProcessor.js +4 -3
  266. package/es/rce/plugins/shared/Upload/UploadFile.js +15 -18
  267. package/es/rce/plugins/shared/Upload/UploadFileModal.js +9 -25
  268. package/es/rce/plugins/shared/Upload/UrlPanel.js +1 -0
  269. package/es/rce/plugins/shared/Upload/UsageRightsSelectBox.js +7 -12
  270. package/es/rce/plugins/shared/Upload/doFileUpload.js +4 -6
  271. package/es/rce/plugins/shared/Upload/index.js +1 -0
  272. package/es/rce/plugins/shared/ai_tools/AIResponseModal.js +1 -3
  273. package/es/rce/plugins/shared/ai_tools/AIToolsTray.js +6 -24
  274. package/es/rce/plugins/shared/ai_tools/aiicons.js +1 -0
  275. package/es/rce/plugins/shared/ai_tools/index.js +1 -0
  276. package/es/rce/plugins/shared/buildDownloadUrl.js +0 -2
  277. package/es/rce/plugins/shared/canvasContentUtils.js +6 -9
  278. package/es/rce/plugins/shared/compressionUtils.js +1 -8
  279. package/es/rce/plugins/shared/dateUtils.js +1 -1
  280. package/es/rce/plugins/shared/do-fetch-api-effect/defaultFetchOptions.js +4 -2
  281. package/es/rce/plugins/shared/do-fetch-api-effect/doFetchApi.js +7 -10
  282. package/es/rce/plugins/shared/do-fetch-api-effect/index.js +1 -0
  283. package/es/rce/plugins/shared/do-fetch-api-effect/parse-link-header.js +6 -20
  284. package/es/rce/plugins/shared/do-fetch-api-effect/query-string-encoding.js +5 -3
  285. package/es/rce/plugins/shared/fileShape.js +4 -9
  286. package/es/rce/plugins/shared/fileTypeUtils.js +32 -42
  287. package/es/rce/plugins/shared/fileUtils.js +1 -2
  288. package/es/rce/plugins/shared/linkUtils.js +1 -16
  289. package/es/rce/plugins/shared/round.js +1 -0
  290. package/es/rce/plugins/shared/trayUtils.js +4 -3
  291. package/es/rce/plugins/shared/useDataUrl.js +9 -9
  292. package/es/rce/plugins/shared/useFilterSettings.js +3 -3
  293. package/es/rce/plugins/tinymce-a11y-checker/components/ColorField.js +2 -6
  294. package/es/rce/plugins/tinymce-a11y-checker/components/checker.js +5 -63
  295. package/es/rce/plugins/tinymce-a11y-checker/components/color-picker.js +1 -2
  296. package/es/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +1 -0
  297. package/es/rce/plugins/tinymce-a11y-checker/components/pointer.js +1 -0
  298. package/es/rce/plugins/tinymce-a11y-checker/node-checker.js +1 -6
  299. package/es/rce/plugins/tinymce-a11y-checker/plugin.js +4 -7
  300. package/es/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +3 -26
  301. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +9 -38
  302. package/es/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +1 -5
  303. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +1 -2
  304. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +1 -1
  305. package/es/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +1 -2
  306. package/es/rce/plugins/tinymce-a11y-checker/rules/index.js +1 -0
  307. package/es/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +1 -4
  308. package/es/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +5 -24
  309. package/es/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +1 -3
  310. package/es/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +1 -6
  311. package/es/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +1 -3
  312. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +1 -2
  313. package/es/rce/plugins/tinymce-a11y-checker/rules/table-header.js +1 -9
  314. package/es/rce/plugins/tinymce-a11y-checker/utils/colors.js +1 -0
  315. package/es/rce/plugins/tinymce-a11y-checker/utils/describe.js +1 -7
  316. package/es/rce/plugins/tinymce-a11y-checker/utils/dom.js +1 -26
  317. package/es/rce/plugins/tinymce-a11y-checker/utils/indicate.js +16 -15
  318. package/es/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +7 -10
  319. package/es/rce/plugins/tinymce-a11y-checker/utils/strings.js +1 -4
  320. package/es/rce/root.js +9 -8
  321. package/es/rce/sanitizePlugins.js +1 -3
  322. package/es/rce/style.js +1 -4
  323. package/es/rce/tinyRCE.js +13 -9
  324. package/es/rce/tinymce.oxide.content.min.css.js +1 -0
  325. package/es/rce/tinymce.oxide.skin.min.css.js +1 -0
  326. package/es/rce/transformContent.js +8 -10
  327. package/es/rce/types.js +1 -0
  328. package/es/rce/userOS.js +1 -1
  329. package/es/rce/wrapInitCb.js +50 -43
  330. package/es/rcs/api.js +61 -116
  331. package/es/rcs/buildError.js +5 -17
  332. package/es/rcs/fake.js +4 -13
  333. package/es/sidebar/actions/all_files.js +2 -0
  334. package/es/sidebar/actions/data.js +4 -7
  335. package/es/sidebar/actions/documents.js +9 -6
  336. package/es/sidebar/actions/files.js +3 -6
  337. package/es/sidebar/actions/filter.js +1 -0
  338. package/es/sidebar/actions/flickr.js +1 -1
  339. package/es/sidebar/actions/images.js +12 -11
  340. package/es/sidebar/actions/links.js +1 -0
  341. package/es/sidebar/actions/media.js +12 -10
  342. package/es/sidebar/actions/session.js +1 -3
  343. package/es/sidebar/actions/ui.js +1 -0
  344. package/es/sidebar/actions/upload.js +14 -39
  345. package/es/sidebar/containers/Sidebar.js +1 -2
  346. package/es/sidebar/containers/sidebarHandlers.js +3 -1
  347. package/es/sidebar/dragHtml.js +5 -3
  348. package/es/sidebar/reducers/all_files.js +4 -3
  349. package/es/sidebar/reducers/collection.js +12 -13
  350. package/es/sidebar/reducers/collections.js +5 -5
  351. package/es/sidebar/reducers/documents.js +6 -13
  352. package/es/sidebar/reducers/files.js +3 -3
  353. package/es/sidebar/reducers/filter.js +1 -8
  354. package/es/sidebar/reducers/flickr.js +9 -9
  355. package/es/sidebar/reducers/folder.js +15 -15
  356. package/es/sidebar/reducers/folders.js +3 -3
  357. package/es/sidebar/reducers/images.js +3 -13
  358. package/es/sidebar/reducers/index.js +3 -1
  359. package/es/sidebar/reducers/media.js +6 -13
  360. package/es/sidebar/reducers/newPageLinkExpanded.js +1 -2
  361. package/es/sidebar/reducers/noop.js +1 -0
  362. package/es/sidebar/reducers/rootFolderId.js +1 -2
  363. package/es/sidebar/reducers/session.js +3 -3
  364. package/es/sidebar/reducers/ui.js +3 -16
  365. package/es/sidebar/reducers/upload.js +8 -40
  366. package/es/sidebar/store/configureStore.js +1 -0
  367. package/es/sidebar/store/initialState.js +13 -24
  368. package/es/translations/locales/ab.js +1 -0
  369. package/es/translations/locales/ar.js +67 -9
  370. package/es/translations/locales/ca.js +67 -9
  371. package/es/translations/locales/cs.js +1 -0
  372. package/es/translations/locales/cs_CZ.js +1 -0
  373. package/es/translations/locales/cy.js +67 -9
  374. package/es/translations/locales/da-x-k12.js +67 -9
  375. package/es/translations/locales/da.js +67 -9
  376. package/es/translations/locales/da_DK.js +1 -0
  377. package/es/translations/locales/de.js +67 -9
  378. package/es/translations/locales/el.js +4 -0
  379. package/es/translations/locales/en-AU-x-unimelb.js +67 -9
  380. package/es/translations/locales/en-GB-x-ukhe.js +67 -9
  381. package/es/translations/locales/en.js +72 -8
  382. package/es/translations/locales/en_AU.js +67 -9
  383. package/es/translations/locales/en_CA.js +67 -9
  384. package/es/translations/locales/en_CY.js +67 -9
  385. package/es/translations/locales/en_GB.js +67 -9
  386. package/es/translations/locales/en_NZ.js +1 -0
  387. package/es/translations/locales/en_SE.js +1 -0
  388. package/es/translations/locales/en_US.js +1 -0
  389. package/es/translations/locales/es.js +67 -9
  390. package/es/translations/locales/es_ES.js +67 -9
  391. package/es/translations/locales/es_GT.js +1 -0
  392. package/es/translations/locales/fa_IR.js +7 -0
  393. package/es/translations/locales/fi.js +67 -9
  394. package/es/translations/locales/fr.js +67 -9
  395. package/es/translations/locales/fr_CA.js +68 -10
  396. package/es/translations/locales/ga.js +5 -13
  397. package/es/translations/locales/he.js +7 -0
  398. package/es/translations/locales/hi.js +67 -9
  399. package/es/translations/locales/ht.js +67 -9
  400. package/es/translations/locales/hu.js +7 -6
  401. package/es/translations/locales/hu_HU.js +1 -0
  402. package/es/translations/locales/hy.js +1 -0
  403. package/es/translations/locales/id.js +67 -9
  404. package/es/translations/locales/id_ID.js +1 -0
  405. package/es/translations/locales/is.js +67 -9
  406. package/es/translations/locales/it.js +67 -9
  407. package/es/translations/locales/ja.js +67 -9
  408. package/es/translations/locales/ko.js +1 -0
  409. package/es/translations/locales/ko_KR.js +1 -0
  410. package/es/translations/locales/lt.js +1 -0
  411. package/es/translations/locales/lt_LT.js +1 -0
  412. package/es/translations/locales/mi.js +67 -9
  413. package/es/translations/locales/mn_MN.js +1 -0
  414. package/es/translations/locales/ms.js +67 -9
  415. package/es/translations/locales/nb-x-k12.js +67 -9
  416. package/es/translations/locales/nb.js +67 -9
  417. package/es/translations/locales/nl.js +67 -9
  418. package/es/translations/locales/nl_NL.js +1 -0
  419. package/es/translations/locales/nn.js +7 -6
  420. package/es/translations/locales/pl.js +67 -9
  421. package/es/translations/locales/pt.js +67 -9
  422. package/es/translations/locales/pt_BR.js +67 -9
  423. package/es/translations/locales/ro.js +1 -0
  424. package/es/translations/locales/ru.js +67 -9
  425. package/es/translations/locales/se.js +1 -0
  426. package/es/translations/locales/sl.js +67 -9
  427. package/es/translations/locales/sv-x-k12.js +67 -9
  428. package/es/translations/locales/sv.js +67 -9
  429. package/es/translations/locales/sv_SE.js +1 -0
  430. package/es/translations/locales/tg.js +1 -0
  431. package/es/translations/locales/th.js +67 -9
  432. package/es/translations/locales/th_TH.js +1 -0
  433. package/es/translations/locales/tl_PH.js +1 -0
  434. package/es/translations/locales/tr.js +7 -0
  435. package/es/translations/locales/uk_UA.js +7 -0
  436. package/es/translations/locales/vi.js +67 -9
  437. package/es/translations/locales/vi_VN.js +1 -0
  438. package/es/translations/locales/zh-Hans.js +67 -9
  439. package/es/translations/locales/zh-Hant.js +67 -9
  440. package/es/translations/locales/zh.js +67 -9
  441. package/es/translations/locales/zh_HK.js +67 -9
  442. package/es/translations/locales/zh_TW.Big5.js +1 -0
  443. package/es/translations/locales/zh_TW.js +1 -0
  444. package/es/translations/tinymce/ar_SA.js +1 -0
  445. package/es/translations/tinymce/fi.js +1 -0
  446. package/es/translations/tinymce/ga.js +1 -0
  447. package/es/translations/tinymce/id.js +1 -0
  448. package/es/translations/tinymce/ru.js +1 -0
  449. package/es/translations/tinymce/ru_RU.js +1 -0
  450. package/es/translations/tinymce/sl.js +1 -0
  451. package/es/translations/tinymce/sr.js +1 -0
  452. package/es/translations/tinymce/th.js +1 -0
  453. package/es/translations/tinymce/uk_UA.js +1 -0
  454. package/es/translations/tinymce/vi_VN.js +1 -0
  455. package/es/util/TypedDict.js +4 -2
  456. package/es/util/encrypted-storage.js +3 -13
  457. package/es/util/file-url-util.js +1 -6
  458. package/es/util/fullscreenHelpers.js +4 -1
  459. package/es/util/instui-icon-helper.js +4 -3
  460. package/es/util/loadingPlaceholder.js +38 -39
  461. package/es/util/simpleCache.js +0 -3
  462. package/es/util/string-util.js +1 -1
  463. package/es/util/textarea-editing-util.js +3 -7
  464. package/es/util/tinymce-plugin-util.js +0 -5
  465. package/es/util/url-util.js +16 -25
  466. package/eslint.config.js +239 -0
  467. package/jest.config.js +1 -1
  468. package/package.json +76 -81
  469. package/scripts/build-canvas +2 -1
  470. package/scripts/build.js +4 -4
  471. package/testcafe/RCEWrapper.test.js +0 -1
  472. package/testcafe/StatusBar.test.js +0 -1
  473. package/testcafe/axe.test.js +3 -4
  474. package/testcafe/enhanceUserContent.test.js +0 -1
  475. package/tsconfig.json +20 -15
  476. package/.eslintrc +0 -45
  477. package/.prettierignore +0 -6
  478. package/es/rce/__mocks__/_mockCryptoEs.js +0 -124
  479. package/es/rce/__mocks__/styleMock.js +0 -18
  480. package/es/rce/__mocks__/tinymceReact.js +0 -55
  481. package/es/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  /*
4
2
  * Copyright (C) 2018 - present Instructure, Inc.
5
3
  *
@@ -17,6 +15,7 @@
17
15
  * You should have received a copy of the GNU Affero General Public License along
18
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
19
17
  */
18
+
20
19
  import formatMessage from '../../../format-message';
21
20
  import bridge from '../../../bridge';
22
21
  import { isImageEmbed } from '../shared/ContentSelection';
@@ -30,15 +29,14 @@ const USER_PLUGIN_KEY = 'user_images';
30
29
  const GROUP_PLUGIN_KEY = 'group_images';
31
30
  const trayController = new TrayController();
32
31
 
32
+ // @ts-expect-error
33
33
  function getMenuItems(ed) {
34
34
  var _ed$settings$canvas_r;
35
-
36
35
  const contextType = (_ed$settings$canvas_r = ed.settings.canvas_rce_user_context) === null || _ed$settings$canvas_r === void 0 ? void 0 : _ed$settings$canvas_r.type;
37
36
  const items = [{
38
37
  text: formatMessage('Upload Image'),
39
38
  value: 'instructure_upload_image'
40
39
  }];
41
-
42
40
  if (contextType === 'course') {
43
41
  items.push({
44
42
  text: formatMessage('Course Images'),
@@ -50,7 +48,6 @@ function getMenuItems(ed) {
50
48
  value: 'instructure_group_image'
51
49
  });
52
50
  }
53
-
54
51
  items.push({
55
52
  text: formatMessage('User Images'),
56
53
  value: 'instructure_user_image'
@@ -58,36 +55,34 @@ function getMenuItems(ed) {
58
55
  return items;
59
56
  }
60
57
 
58
+ // @ts-expect-error
61
59
  function doMenuItem(ed, value) {
62
60
  switch (value) {
63
61
  case 'instructure_upload_image':
64
62
  ed.execCommand('mceInstructureImage');
65
63
  break;
66
-
67
64
  case 'instructure_course_image':
68
65
  ed.focus(true);
69
66
  ed.execCommand('instructureTrayForImages', false, COURSE_PLUGIN_KEY);
70
67
  break;
71
-
72
68
  case 'instructure_group_image':
73
69
  ed.focus(true);
74
70
  ed.execCommand('instructureTrayForImages', false, GROUP_PLUGIN_KEY);
75
71
  break;
76
-
77
72
  case 'instructure_user_image':
78
73
  ed.focus(true);
79
74
  ed.execCommand('instructureTrayForImages', false, USER_PLUGIN_KEY);
80
75
  break;
81
76
  }
82
77
  }
83
-
84
78
  tinymce.PluginManager.add('instructure_image', function (editor) {
85
79
  // Register commands
86
80
  editor.addCommand('mceInstructureImage', () => clickCallback(editor, document));
87
81
  editor.addCommand('instructureTrayForImages', (ui, plugin_key) => {
88
82
  bridge.showTrayForPlugin(plugin_key, editor.id);
89
- }); // Register menu items
83
+ });
90
84
 
85
+ // Register menu items
91
86
  editor.ui.registry.addNestedMenuItem('instructure_image', {
92
87
  text: formatMessage('Image'),
93
88
  icon: 'image',
@@ -102,8 +97,9 @@ tinymce.PluginManager.add('instructure_image', function (editor) {
102
97
  }
103
98
  };
104
99
  })
105
- }); // Register toolbar button
100
+ });
106
101
 
102
+ // Register toolbar button
107
103
  editor.ui.registry.addMenuButton('instructure_image', {
108
104
  tooltip: formatMessage('Images'),
109
105
  icon: 'image',
@@ -113,37 +109,36 @@ tinymce.PluginManager.add('instructure_image', function (editor) {
113
109
  value: item.value,
114
110
  onAction: () => doMenuItem(editor, item.value)
115
111
  }))),
116
-
117
112
  onSetup(api) {
113
+ // @ts-expect-error
118
114
  function handleNodeChange(_e) {
119
115
  api.setDisabled(!isOKToLink(editor.selection.getContent()));
120
116
  }
121
-
122
117
  setTimeout(handleNodeChange);
123
118
  editor.on('NodeChange', handleNodeChange);
124
119
  return () => {
125
120
  editor.off('NodeChange', handleNodeChange);
126
121
  };
127
122
  }
128
-
129
123
  });
124
+
130
125
  /*
131
126
  * Register the Image "Options" button that will open the Image Options
132
127
  * tray.
133
128
  */
134
129
 
135
130
  function canUpdateImageProps(node) {
136
- return !node.classList.contains('equation_image') && isImageEmbed(node) && // don't show for icon maker
131
+ return !node.classList.contains('equation_image') && isImageEmbed(node) &&
132
+ // don't show for icon maker
137
133
  !node.getAttribute(ICON_MAKER_ATTRIBUTE);
138
134
  }
139
-
140
135
  const buttonAriaLabel = formatMessage('Show image options');
141
136
  editor.ui.registry.addButton('instructure-image-options', {
142
- onAction() {
137
+ onAction(/* buttonApi */
138
+ ) {
143
139
  // show the tray
144
140
  trayController.showTrayForEditor(editor);
145
141
  },
146
-
147
142
  text: formatMessage('Image Options'),
148
143
  tooltip: buttonAriaLabel
149
144
  });
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import LinkOptionsDialogController from './components/LinkOptionsDialog/LinkOptionsDialogController';
19
20
  const dialogController = new LinkOptionsDialogController();
20
21
  export default function (ed, op) {
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  import { bool, func, node, string } from 'prop-types';
20
21
  import formatMessage from '../../../../format-message';
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  import { bool, func, string } from 'prop-types';
20
21
  import { collectionsShape, linkShape } from './propTypes';
@@ -27,19 +28,16 @@ export default function CollectionPanel(props) {
27
28
  expanded: props.selectedAccordionIndex === props.collection,
28
29
  label: props.label
29
30
  };
30
-
31
31
  function fetchInitialPage() {
32
32
  if (props.fetchInitialPage) {
33
33
  props.fetchInitialPage(props.collection, props.searchString);
34
34
  }
35
35
  }
36
-
37
36
  function fetchNextPage() {
38
37
  if (props.fetchNextPage) {
39
38
  props.fetchNextPage(props.collection, props.searchString);
40
39
  }
41
40
  }
42
-
43
41
  return /*#__PURE__*/React.createElement("div", {
44
42
  "data-testid": "instructure_links-CollectionPanel"
45
43
  }, /*#__PURE__*/React.createElement(AccordionSection, accordionProps, /*#__PURE__*/React.createElement(LinkSet, {
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React, { useState } from 'react';
19
20
  import { bool, func, oneOf, string } from 'prop-types';
20
21
  import { linkShape } from './propTypes';
@@ -31,7 +32,8 @@ import { IconDragHandleLine, IconPublishSolid, IconUnpublishedSolid } from '@ins
31
32
  import RCEGlobals from '../../../RCEGlobals';
32
33
  import { getIcon } from '../../shared/linkUtils';
33
34
  export default function Link(props) {
34
- const internalLink = { ...props.link
35
+ const internalLink = {
36
+ ...props.link
35
37
  };
36
38
  const [isHovering, setIsHovering] = useState(false);
37
39
  const {
@@ -41,49 +43,42 @@ export default function Link(props) {
41
43
  date_type
42
44
  } = props.link;
43
45
  const type = props.type === 'quizzes' && props.link.quiz_type === 'quizzes.next' ? 'quizzes.next' : props.type;
44
- internalLink['data-course-type'] = type; // Only included published attr if it makes sense for the link type
45
-
46
+ internalLink['data-course-type'] = type;
47
+ // Only included published attr if it makes sense for the link type
46
48
  const publishable = !['navigation', 'announcements'].includes(type);
47
49
  internalLink['data-published'] = publishable ? published : null;
48
50
  const Icon = getIcon(type);
49
51
  const color = published ? 'success' : 'primary';
50
52
  let dateString = null;
51
-
52
53
  if (date) {
53
54
  if (date === 'multiple') {
54
55
  dateString = formatMessage('Due: Multiple Dates');
55
56
  } else {
56
57
  var _RCEGlobals$getConfig;
57
-
58
58
  // Uses user locale and timezone
59
59
  const configuredTimezone = (_RCEGlobals$getConfig = RCEGlobals.getConfig()) === null || _RCEGlobals$getConfig === void 0 ? void 0 : _RCEGlobals$getConfig.timezone;
60
60
  const when = formatMessage.date(applyTimezoneOffsetToDate(date, configuredTimezone), 'long');
61
-
62
61
  switch (date_type) {
63
62
  case 'todo':
64
63
  dateString = formatMessage('To Do: {when}', {
65
64
  when
66
65
  });
67
66
  break;
68
-
69
67
  case 'published':
70
68
  dateString = formatMessage('Published: {when}', {
71
69
  when
72
70
  });
73
71
  break;
74
-
75
72
  case 'posted':
76
73
  dateString = formatMessage('Posted: {when}', {
77
74
  when
78
75
  });
79
76
  break;
80
-
81
77
  case 'delayed_post':
82
78
  dateString = formatMessage('To Be Posted: {when}', {
83
79
  when
84
80
  });
85
81
  break;
86
-
87
82
  case 'due':
88
83
  default:
89
84
  dateString = formatMessage('Due: {when}', {
@@ -93,40 +88,33 @@ export default function Link(props) {
93
88
  }
94
89
  }
95
90
  }
96
-
97
91
  const publishedMsg = props.link.published ? formatMessage('published') : formatMessage('unpublished');
98
-
99
92
  function handleLinkClick(e) {
100
93
  e.preventDefault();
101
-
102
94
  if (props.editing) {
103
- props.onEditClick({ ...internalLink,
95
+ props.onEditClick({
96
+ ...internalLink,
104
97
  type
105
98
  });
106
99
  } else {
107
100
  props.onClick(internalLink);
108
101
  }
109
102
  }
110
-
111
103
  function handleLinkKey(e) {
112
104
  // press the button on enter or space
113
105
  if (e.keyCode === 13 || e.keyCode === 32) {
114
106
  handleLinkClick(e);
115
107
  }
116
108
  }
117
-
118
109
  function handleDragStart(e) {
119
110
  dragHtml(e, renderLinkHtml(internalLink, internalLink.title));
120
111
  }
121
-
122
112
  function handleDragEnd(_e) {
123
113
  document.body.click(); // closes the tray
124
114
  }
125
-
126
115
  function handleHover(e) {
127
116
  setIsHovering(e.type === 'mouseenter');
128
117
  }
129
-
130
118
  return /*#__PURE__*/React.createElement("div", {
131
119
  "data-testid": "instructure_links-Link",
132
120
  draggable: !props.editing,
@@ -27,65 +27,48 @@ export default class LinkOptionsDialogController {
27
27
  constructor() {
28
28
  this._dismissDialog = () => {
29
29
  this._shouldOpen = false;
30
-
31
30
  this._renderDialog();
32
31
  };
33
-
34
32
  this._hasClosed = () => {
35
33
  bridge.focusActiveEditor(false);
36
34
  this._isOpen = false;
37
-
38
35
  this._editor.focus(false);
39
-
40
36
  this._editor = null;
41
37
  };
42
-
43
38
  this._editor = null;
44
39
  this._isOpen = false;
45
40
  this._shouldOpen = false;
46
41
  this._renderId = 0;
47
42
  }
48
-
49
43
  get $container() {
50
44
  let $container = document.getElementById(CONTAINER_ID);
51
-
52
45
  if ($container == null) {
53
46
  $container = document.createElement('div');
54
47
  $container.id = CONTAINER_ID;
55
48
  document.body.appendChild($container);
56
49
  }
57
-
58
50
  return $container;
59
51
  }
60
-
61
52
  get isOpen() {
62
53
  return this._isOpen;
63
54
  }
64
-
65
55
  showDialogForEditor(editor, op) {
66
56
  this._editor = editor;
67
57
  this._shouldOpen = true;
68
58
  this._op = op;
69
-
70
59
  this._renderDialog();
71
60
  }
72
-
73
61
  hideDialog() {
74
62
  this._dismissDialog();
75
63
  }
76
-
77
64
  _applyLinkOptions(linkOptions) {
78
65
  this._dismissDialog();
79
-
80
66
  bridge.insertLink(linkOptions);
81
67
  }
82
-
83
68
  _renderDialog() {
84
69
  let html, onlyText, anchorElm, url, text;
85
-
86
70
  if (this._shouldOpen) {
87
71
  var _anchorElm;
88
-
89
72
  html = this._editor.selection.getContent();
90
73
  onlyText = isOnlyTextSelected(html);
91
74
  text = onlyText && this._editor.selection.getContent({
@@ -93,15 +76,14 @@ export default class LinkOptionsDialogController {
93
76
  });
94
77
  anchorElm = getAnchorElement(this._editor, this._editor.selection.getNode());
95
78
  url = (_anchorElm = anchorElm) === null || _anchorElm === void 0 ? void 0 : _anchorElm.getAttribute('href');
79
+
96
80
  /*
97
81
  * When the dialog is being opened again, it should be rendered fresh
98
82
  * (clearing the internal state) so that the currently-selected content
99
83
  * can be used for initial options.
100
84
  */
101
-
102
85
  this._renderId++;
103
86
  }
104
-
105
87
  const element = /*#__PURE__*/React.createElement(LinkOptionsDialog, {
106
88
  key: this._renderId,
107
89
  size: "medium",
@@ -116,12 +98,10 @@ export default class LinkOptionsDialogController {
116
98
  onRequestClose: this._dismissDialog,
117
99
  onSave: linkOptions => {
118
100
  bridge.focusEditor(this._editor.rceWrapper);
119
-
120
101
  this._applyLinkOptions(linkOptions);
121
102
  },
122
103
  open: this._shouldOpen
123
104
  });
124
105
  ReactDOM.render(element, this.$container);
125
106
  }
126
-
127
107
  }
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React, { useEffect, useState } from 'react';
19
20
  import { bool, func, oneOf, string } from 'prop-types';
20
21
  import { Alert } from '@instructure/ui-alerts';
@@ -43,7 +44,6 @@ export default function LinkOptionsDialog(props) {
43
44
  setErr(ex.message);
44
45
  }
45
46
  }, [url]);
46
-
47
47
  function handleSave(event) {
48
48
  event.preventDefault();
49
49
  if (!url) return;
@@ -57,15 +57,12 @@ export default function LinkOptionsDialog(props) {
57
57
  forceRename: true
58
58
  });
59
59
  }
60
-
61
60
  function handleTextChange(event) {
62
61
  setText(event.target.value);
63
62
  }
64
-
65
63
  function handleLinkChange(event) {
66
64
  setUrl(event.target.value);
67
65
  }
68
-
69
66
  const label = props.operation === CREATE_LINK ? formatMessage('Insert Link') : formatMessage('Edit Link');
70
67
  return /*#__PURE__*/React.createElement(Modal, {
71
68
  "data-testid": "RCELinkOptionsDialog",
@@ -15,6 +15,7 @@
15
15
  * You should have received a copy of the GNU Affero General Public License along
16
16
  * with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
+
18
19
  import React from 'react';
19
20
  import ReactDOM from 'react-dom';
20
21
  import bridge from '../../../../../bridge';
@@ -29,28 +30,22 @@ export default class LinkOptionsTrayController {
29
30
  this._shouldOpen = false;
30
31
  this._renderId = 0;
31
32
  }
32
-
33
33
  get $container() {
34
34
  let $container = document.getElementById(CONTAINER_ID);
35
-
36
35
  if ($container == null) {
37
36
  $container = document.createElement('div');
38
37
  $container.id = CONTAINER_ID;
39
38
  document.body.appendChild($container);
40
39
  }
41
-
42
40
  return $container;
43
41
  }
44
-
45
42
  get isOpen() {
46
43
  return this._isOpen;
47
44
  }
48
-
49
45
  showTrayForEditor(editor) {
50
46
  this._editor = editor;
51
47
  this._shouldOpen = true;
52
48
  const selectedElm = editor.selection.getNode();
53
-
54
49
  if (editor.selection.isCollapsed() && selectedElm.nodeName === 'A') {
55
50
  // expand the selection to include the whole <a>
56
51
  editor.selection.select(editor.selection.getNode());
@@ -58,40 +53,31 @@ export default class LinkOptionsTrayController {
58
53
  const anchorElm = getAnchorElement(editor, selectedElm);
59
54
  editor.selection.select(anchorElm);
60
55
  }
61
-
62
56
  if (bridge.focusedEditor) {
63
57
  // Dismiss any content trays that may already be open
64
58
  bridge.hideTrays();
65
59
  }
66
-
67
60
  this._renderTray();
68
61
  }
69
-
70
62
  hideTrayForEditor(editor) {
71
63
  if (this._editor === editor) {
72
64
  this._dismissTray();
73
65
  }
74
66
  }
75
-
76
67
  _applyLinkOptions(linkOptions) {
77
68
  this._dismissTray();
78
-
79
- bridge.insertLink({ ...linkOptions,
69
+ bridge.insertLink({
70
+ ...linkOptions,
80
71
  userText: true
81
72
  });
82
73
  }
83
-
84
74
  _dismissTray() {
85
75
  this._shouldOpen = false;
86
-
87
76
  this._renderTray();
88
-
89
77
  this._editor = null;
90
78
  }
91
-
92
79
  _renderTray() {
93
80
  let content = {};
94
-
95
81
  if (this._shouldOpen) {
96
82
  content = getLinkContentFromEditor(this._editor);
97
83
  /*
@@ -99,10 +85,8 @@ export default class LinkOptionsTrayController {
99
85
  * (clearing the internal state) so that the currently-selected content
100
86
  * can be used for initial options.
101
87
  */
102
-
103
88
  this._renderId++;
104
89
  }
105
-
106
90
  const element = /*#__PURE__*/React.createElement(LinkOptionsTray, {
107
91
  content: content,
108
92
  key: this._renderId,
@@ -121,5 +105,4 @@ export default class LinkOptionsTrayController {
121
105
  });
122
106
  ReactDOM.render(element, this.$container);
123
107
  }
124
-
125
108
  }
@@ -53,7 +53,6 @@ export default function LinkOptionsTray(props) {
53
53
  setErr(ex.message);
54
54
  }
55
55
  }, [url]);
56
-
57
56
  function handleSave(event) {
58
57
  event.preventDefault();
59
58
  const embedType = content.isPreviewable ? 'scribd' : null;
@@ -68,11 +67,9 @@ export default function LinkOptionsTray(props) {
68
67
  href: url,
69
68
  id: content.id || null,
70
69
  forceRename: true // A change to "text" should always update the link's text
71
-
72
70
  };
73
71
  props.onSave(linkAttrs);
74
72
  }
75
-
76
73
  function initialPreviewSelection(previewContent) {
77
74
  if (previewContent.displayAs === DISPLAY_AS_DOWNLOAD_LINK) {
78
75
  return 'disable';
@@ -82,33 +79,26 @@ export default function LinkOptionsTray(props) {
82
79
  return 'overlay';
83
80
  }
84
81
  }
85
-
86
82
  function handleTextChange(event) {
87
83
  setText(event.target.value);
88
84
  }
89
-
90
85
  function handleLinkChange(event) {
91
86
  setUrl(event.target.value);
92
87
  }
93
-
94
88
  function handlePreviewChange(event) {
95
89
  setAutoOpenPreview(event.target.checked);
96
90
  }
97
-
98
91
  function handlePreviewOptionChange(_event, value) {
99
92
  setDisableInlinePreview(value === 'overlay' || value === 'disable');
100
93
  setDisplayOptionSelection(value);
101
94
  }
102
-
103
95
  function renderDisplayOptions() {
104
96
  return /*#__PURE__*/React.createElement(FormFieldGroup, {
105
97
  description: formatMessage('Display Options'),
106
98
  layout: "stacked",
107
99
  rowSpacing: "small"
108
100
  }, /*#__PURE__*/React.createElement(RadioInputGroup, {
109
- description: " "
110
- /* the FormFieldGroup is providing the label */
111
- ,
101
+ description: " " /* the FormFieldGroup is providing the label */,
112
102
  name: "preview_option",
113
103
  onChange: handlePreviewOptionChange,
114
104
  value: displayOptionSelection
@@ -134,7 +124,6 @@ export default function LinkOptionsTray(props) {
134
124
  checked: autoOpenPreview
135
125
  })));
136
126
  }
137
-
138
127
  return /*#__PURE__*/React.createElement(Tray, {
139
128
  "data-testid": "RCELinkOptionsTray",
140
129
  "data-mce-component": true,