@instructure/canvas-rce 5.12.1 → 5.12.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 (476) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/babel-register.js +0 -7
  3. package/babel.config.cjs.js +0 -7
  4. package/babel.config.js +0 -9
  5. package/es/enhance-user-content/doc_previews.js +4 -0
  6. package/es/enhance-user-content/enhance_user_content.js +4 -59
  7. package/es/enhance-user-content/external_links.js +75 -0
  8. package/es/enhance-user-content/mathml.js +9 -7
  9. package/es/index.js +1 -1
  10. package/es/rce/RCEWrapper.js +3 -2322
  11. package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +1 -1
  12. package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +3 -11
  13. package/es/rce/plugins/instructure_equation/mathlive/index.js +5 -13
  14. package/es/rce/tinymce.oxide.content.min.css.js +732 -0
  15. package/es/rce/tinymce.oxide.skin.min.css.js +7 -0
  16. package/jest.config.js +0 -7
  17. package/package.json +1 -5
  18. package/scripts/build.js +1 -7
  19. package/lib/bridge/Bridge.js +0 -287
  20. package/lib/bridge/index.js +0 -21
  21. package/lib/canvasFileBrowser/FileBrowser.js +0 -457
  22. package/lib/canvasFileBrowser/en-US.js +0 -234
  23. package/lib/common/FlashAlert.js +0 -263
  24. package/lib/common/browser.js +0 -40
  25. package/lib/common/components/FileTree/File.js +0 -64
  26. package/lib/common/components/FileTree/Folder.js +0 -110
  27. package/lib/common/components/FileTree/index.js +0 -84
  28. package/lib/common/components/FileTree/styles.js +0 -72
  29. package/lib/common/components/Loading.js +0 -83
  30. package/lib/common/fileUrl.js +0 -152
  31. package/lib/common/getCookie.js +0 -32
  32. package/lib/common/incremental-loading/LoadMoreButton.js +0 -40
  33. package/lib/common/incremental-loading/LoadingIndicator.js +0 -36
  34. package/lib/common/incremental-loading/LoadingStatus.js +0 -47
  35. package/lib/common/incremental-loading/index.js +0 -21
  36. package/lib/common/incremental-loading/useIncrementalLoading.js +0 -58
  37. package/lib/common/indicate.js +0 -75
  38. package/lib/common/mimeClass.js +0 -120
  39. package/lib/common/natcompare.js +0 -47
  40. package/lib/defaultTinymceConfig.js +0 -160
  41. package/lib/elementDenylist.js +0 -19
  42. package/lib/enhance-user-content/doc_previews.js +0 -233
  43. package/lib/enhance-user-content/enhance_user_content.js +0 -396
  44. package/lib/enhance-user-content/index.js +0 -21
  45. package/lib/enhance-user-content/instructure_helper.js +0 -207
  46. package/lib/enhance-user-content/jqueryish_funcs.js +0 -88
  47. package/lib/enhance-user-content/mathml.js +0 -397
  48. package/lib/enhance-user-content/media_comment_thumbnail.js +0 -130
  49. package/lib/format-message.js +0 -30
  50. package/lib/getThemeVars.js +0 -46
  51. package/lib/getTranslations.js +0 -340
  52. package/lib/index.js +0 -51
  53. package/lib/rce/AlertMessageArea.js +0 -47
  54. package/lib/rce/DraggingBlocker.js +0 -43
  55. package/lib/rce/KeyboardShortcutModal.js +0 -88
  56. package/lib/rce/RCE.js +0 -150
  57. package/lib/rce/RCEGlobals.js +0 -62
  58. package/lib/rce/RCEWrapper.js +0 -4274
  59. package/lib/rce/RCEWrapperProps.js +0 -130
  60. package/lib/rce/RceHtmlEditor.js +0 -142
  61. package/lib/rce/ResizeHandle.js +0 -102
  62. package/lib/rce/RestoreAutoSaveModal.js +0 -82
  63. package/lib/rce/ShowOnFocusButton/index.js +0 -93
  64. package/lib/rce/StatusBar.js +0 -386
  65. package/lib/rce/__mocks__/_mockCryptoEs.js +0 -124
  66. package/lib/rce/__mocks__/styleMock.js +0 -18
  67. package/lib/rce/__mocks__/tinymceReact.js +0 -55
  68. package/lib/rce/alertHandler.js +0 -46
  69. package/lib/rce/contentInsertion.js +0 -325
  70. package/lib/rce/contentInsertionUtils.js +0 -85
  71. package/lib/rce/contentRendering.js +0 -145
  72. package/lib/rce/customEvents.js +0 -18
  73. package/lib/rce/editorLanguage.js +0 -101
  74. package/lib/rce/indicatorRegion.js +0 -49
  75. package/lib/rce/normalizeLocale.js +0 -50
  76. package/lib/rce/normalizeProps.js +0 -29
  77. package/lib/rce/plugins/instructure-ui-icons/plugin.js +0 -122
  78. package/lib/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +0 -24
  79. package/lib/rce/plugins/instructure_condensed_buttons/plugin.js +0 -27
  80. package/lib/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +0 -63
  81. package/lib/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +0 -48
  82. package/lib/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +0 -41
  83. package/lib/rce/plugins/instructure_condensed_buttons/ui/list-button.js +0 -145
  84. package/lib/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +0 -56
  85. package/lib/rce/plugins/instructure_documents/clickCallback.js +0 -23
  86. package/lib/rce/plugins/instructure_documents/components/DocumentsPanel.js +0 -120
  87. package/lib/rce/plugins/instructure_documents/components/Link.js +0 -219
  88. package/lib/rce/plugins/instructure_documents/plugin.js +0 -123
  89. package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +0 -25
  90. package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +0 -51
  91. package/lib/rce/plugins/instructure_equation/EquationEditorModal/index.js +0 -321
  92. package/lib/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +0 -116
  93. package/lib/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +0 -91
  94. package/lib/rce/plugins/instructure_equation/EquationEditorModal/styles.js +0 -46
  95. package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +0 -728
  96. package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -84
  97. package/lib/rce/plugins/instructure_equation/MathIcon/index.js +0 -41
  98. package/lib/rce/plugins/instructure_equation/MathIcon/svgs.js +0 -236
  99. package/lib/rce/plugins/instructure_equation/clickCallback.js +0 -53
  100. package/lib/rce/plugins/instructure_equation/mathlive/index.js +0 -36
  101. package/lib/rce/plugins/instructure_equation/plugin.js +0 -69
  102. package/lib/rce/plugins/instructure_fullscreen/plugin.js +0 -50
  103. package/lib/rce/plugins/instructure_html_view/clickCallback.js +0 -21
  104. package/lib/rce/plugins/instructure_html_view/plugin.js +0 -37
  105. package/lib/rce/plugins/instructure_icon_maker/clickCallback.js +0 -57
  106. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +0 -82
  107. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +0 -56
  108. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +0 -78
  109. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +0 -36
  110. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +0 -110
  111. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +0 -169
  112. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +0 -186
  113. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +0 -243
  114. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +0 -64
  115. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +0 -73
  116. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +0 -298
  117. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +0 -86
  118. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +0 -55
  119. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +0 -70
  120. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +0 -317
  121. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +0 -149
  122. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +0 -18
  123. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +0 -32
  124. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +0 -25
  125. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +0 -60
  126. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +0 -87
  127. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +0 -139
  128. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +0 -18
  129. package/lib/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +0 -323
  130. package/lib/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +0 -91
  131. package/lib/rce/plugins/instructure_icon_maker/plugin.js +0 -110
  132. package/lib/rce/plugins/instructure_icon_maker/reducers/imageSection.js +0 -194
  133. package/lib/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +0 -98
  134. package/lib/rce/plugins/instructure_icon_maker/registerEditToolbar.js +0 -56
  135. package/lib/rce/plugins/instructure_icon_maker/svg/clipPath.js +0 -25
  136. package/lib/rce/plugins/instructure_icon_maker/svg/constants.js +0 -100
  137. package/lib/rce/plugins/instructure_icon_maker/svg/font.js +0 -25
  138. package/lib/rce/plugins/instructure_icon_maker/svg/image.js +0 -354
  139. package/lib/rce/plugins/instructure_icon_maker/svg/index.js +0 -122
  140. package/lib/rce/plugins/instructure_icon_maker/svg/metadata.js +0 -48
  141. package/lib/rce/plugins/instructure_icon_maker/svg/settings.js +0 -179
  142. package/lib/rce/plugins/instructure_icon_maker/svg/shape.js +0 -316
  143. package/lib/rce/plugins/instructure_icon_maker/svg/text.js +0 -468
  144. package/lib/rce/plugins/instructure_icon_maker/svg/utils.js +0 -70
  145. package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +0 -45
  146. package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +0 -83
  147. package/lib/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +0 -28
  148. package/lib/rce/plugins/instructure_icon_maker/utils/iconValidation.js +0 -35
  149. package/lib/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +0 -375
  150. package/lib/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +0 -59
  151. package/lib/rce/plugins/instructure_image/ImageEmbedOptions.js +0 -202
  152. package/lib/rce/plugins/instructure_image/ImageList/Image.js +0 -106
  153. package/lib/rce/plugins/instructure_image/ImageList/index.js +0 -69
  154. package/lib/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +0 -166
  155. package/lib/rce/plugins/instructure_image/ImageOptionsTray/index.js +0 -246
  156. package/lib/rce/plugins/instructure_image/Images/index.js +0 -122
  157. package/lib/rce/plugins/instructure_image/clickCallback.js +0 -24
  158. package/lib/rce/plugins/instructure_image/plugin.js +0 -157
  159. package/lib/rce/plugins/instructure_links/clickCallback.js +0 -22
  160. package/lib/rce/plugins/instructure_links/components/AccordionSection.js +0 -60
  161. package/lib/rce/plugins/instructure_links/components/CollectionPanel.js +0 -84
  162. package/lib/rce/plugins/instructure_links/components/Link.js +0 -213
  163. package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +0 -127
  164. package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +0 -141
  165. package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +0 -125
  166. package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +0 -245
  167. package/lib/rce/plugins/instructure_links/components/LinkSet.js +0 -195
  168. package/lib/rce/plugins/instructure_links/components/LinksPanel.js +0 -100
  169. package/lib/rce/plugins/instructure_links/components/NavigationPanel.js +0 -141
  170. package/lib/rce/plugins/instructure_links/components/NoResults.js +0 -87
  171. package/lib/rce/plugins/instructure_links/components/propTypes.js +0 -41
  172. package/lib/rce/plugins/instructure_links/plugin.js +0 -294
  173. package/lib/rce/plugins/instructure_links/validateURL.js +0 -70
  174. package/lib/rce/plugins/instructure_media_embed/clickCallback.js +0 -48
  175. package/lib/rce/plugins/instructure_media_embed/components/Embed.js +0 -68
  176. package/lib/rce/plugins/instructure_media_embed/plugin.js +0 -36
  177. package/lib/rce/plugins/instructure_paste/pasteMenuCommand.js +0 -117
  178. package/lib/rce/plugins/instructure_paste/plugin.js +0 -174
  179. package/lib/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +0 -169
  180. package/lib/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +0 -225
  181. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +0 -297
  182. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +0 -46
  183. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +0 -79
  184. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +0 -153
  185. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +0 -94
  186. package/lib/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +0 -90
  187. package/lib/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +0 -35
  188. package/lib/rce/plugins/instructure_rce_external_tools/dialog-helper.js +0 -29
  189. package/lib/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -55
  190. package/lib/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +0 -172
  191. package/lib/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +0 -203
  192. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js +0 -23
  193. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +0 -111
  194. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +0 -79
  195. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +0 -47
  196. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +0 -57
  197. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +0 -26
  198. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +0 -47
  199. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +0 -67
  200. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +0 -48
  201. package/lib/rce/plugins/instructure_rce_external_tools/plugin.js +0 -112
  202. package/lib/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +0 -27
  203. package/lib/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +0 -152
  204. package/lib/rce/plugins/instructure_record/AudioOptionsTray/index.js +0 -154
  205. package/lib/rce/plugins/instructure_record/MediaPanel/index.js +0 -123
  206. package/lib/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +0 -240
  207. package/lib/rce/plugins/instructure_record/VideoOptionsTray/index.js +0 -350
  208. package/lib/rce/plugins/instructure_record/clickCallback.js +0 -105
  209. package/lib/rce/plugins/instructure_record/mediaTranslations.js +0 -94
  210. package/lib/rce/plugins/instructure_record/plugin.js +0 -173
  211. package/lib/rce/plugins/instructure_studio_media_options/plugin.js +0 -42
  212. package/lib/rce/plugins/instructure_wordcount/clickCallback.js +0 -49
  213. package/lib/rce/plugins/instructure_wordcount/components/WordCountModal.js +0 -88
  214. package/lib/rce/plugins/instructure_wordcount/plugin.js +0 -30
  215. package/lib/rce/plugins/instructure_wordcount/utils/countContent.js +0 -78
  216. package/lib/rce/plugins/instructure_wordcount/utils/tableContent.js +0 -40
  217. package/lib/rce/plugins/shared/CanvasContentTray.js +0 -580
  218. package/lib/rce/plugins/shared/CheckerboardStyling.js +0 -25
  219. package/lib/rce/plugins/shared/ColorInput.js +0 -233
  220. package/lib/rce/plugins/shared/ConditionalTooltip.js +0 -32
  221. package/lib/rce/plugins/shared/ContentSelection.js +0 -269
  222. package/lib/rce/plugins/shared/DimensionUtils.js +0 -66
  223. package/lib/rce/plugins/shared/DimensionsInput/DimensionInput.js +0 -62
  224. package/lib/rce/plugins/shared/DimensionsInput/index.js +0 -161
  225. package/lib/rce/plugins/shared/DimensionsInput/useDimensionsState.js +0 -220
  226. package/lib/rce/plugins/shared/ErrorBoundary.js +0 -54
  227. package/lib/rce/plugins/shared/EventUtils.js +0 -39
  228. package/lib/rce/plugins/shared/Filter.js +0 -353
  229. package/lib/rce/plugins/shared/FixedContentTray.js +0 -115
  230. package/lib/rce/plugins/shared/ImageCropper/DirectionRegion.js +0 -67
  231. package/lib/rce/plugins/shared/ImageCropper/Modal.js +0 -153
  232. package/lib/rce/plugins/shared/ImageCropper/Preview.js +0 -148
  233. package/lib/rce/plugins/shared/ImageCropper/constants.js +0 -39
  234. package/lib/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +0 -83
  235. package/lib/rce/plugins/shared/ImageCropper/controls/ResetControls.js +0 -38
  236. package/lib/rce/plugins/shared/ImageCropper/controls/RotationControls.js +0 -89
  237. package/lib/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +0 -82
  238. package/lib/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +0 -111
  239. package/lib/rce/plugins/shared/ImageCropper/controls/index.js +0 -61
  240. package/lib/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +0 -94
  241. package/lib/rce/plugins/shared/ImageCropper/controls/utils.js +0 -41
  242. package/lib/rce/plugins/shared/ImageCropper/imageCropUtils.js +0 -149
  243. package/lib/rce/plugins/shared/ImageCropper/index.js +0 -18
  244. package/lib/rce/plugins/shared/ImageCropper/propTypes.js +0 -26
  245. package/lib/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +0 -72
  246. package/lib/rce/plugins/shared/ImageCropper/shape.js +0 -27
  247. package/lib/rce/plugins/shared/ImageCropper/svg/index.js +0 -89
  248. package/lib/rce/plugins/shared/ImageCropper/svg/shape.js +0 -125
  249. package/lib/rce/plugins/shared/ImageCropper/svg/utils.js +0 -26
  250. package/lib/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +0 -233
  251. package/lib/rce/plugins/shared/ImageCropper/useMouseWheel.js +0 -66
  252. package/lib/rce/plugins/shared/ImageOptionsForm.js +0 -140
  253. package/lib/rce/plugins/shared/LinkDisplay.js +0 -96
  254. package/lib/rce/plugins/shared/PreviewIcon.js +0 -112
  255. package/lib/rce/plugins/shared/Previewable.js +0 -22
  256. package/lib/rce/plugins/shared/RceFileBrowser.js +0 -106
  257. package/lib/rce/plugins/shared/StoreContext.js +0 -57
  258. package/lib/rce/plugins/shared/StudioLtiSupportUtils.js +0 -71
  259. package/lib/rce/plugins/shared/UnknownFileTypePanel.js +0 -29
  260. package/lib/rce/plugins/shared/Upload/CategoryProcessor.js +0 -27
  261. package/lib/rce/plugins/shared/Upload/ComputerPanel.js +0 -334
  262. package/lib/rce/plugins/shared/Upload/SvgCategoryProcessor.js +0 -35
  263. package/lib/rce/plugins/shared/Upload/UploadFile.js +0 -171
  264. package/lib/rce/plugins/shared/Upload/UploadFileModal.js +0 -273
  265. package/lib/rce/plugins/shared/Upload/UrlPanel.js +0 -38
  266. package/lib/rce/plugins/shared/Upload/UsageRightsSelectBox.js +0 -172
  267. package/lib/rce/plugins/shared/Upload/doFileUpload.js +0 -77
  268. package/lib/rce/plugins/shared/__mocks__/screenfull.js +0 -24
  269. package/lib/rce/plugins/shared/buildDownloadUrl.js +0 -31
  270. package/lib/rce/plugins/shared/compressionUtils.js +0 -98
  271. package/lib/rce/plugins/shared/dateUtils.js +0 -28
  272. package/lib/rce/plugins/shared/fileShape.js +0 -129
  273. package/lib/rce/plugins/shared/fileTypeUtils.js +0 -139
  274. package/lib/rce/plugins/shared/fileUtils.js +0 -25
  275. package/lib/rce/plugins/shared/linkUtils.js +0 -89
  276. package/lib/rce/plugins/shared/round.js +0 -25
  277. package/lib/rce/plugins/shared/trayUtils.js +0 -34
  278. package/lib/rce/plugins/shared/useDataUrl.js +0 -76
  279. package/lib/rce/plugins/tinymce-a11y-checker/components/ColorField.js +0 -86
  280. package/lib/rce/plugins/tinymce-a11y-checker/components/checker.js +0 -558
  281. package/lib/rce/plugins/tinymce-a11y-checker/components/color-picker.js +0 -59
  282. package/lib/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +0 -90
  283. package/lib/rce/plugins/tinymce-a11y-checker/components/pointer.js +0 -32
  284. package/lib/rce/plugins/tinymce-a11y-checker/node-checker.js +0 -54
  285. package/lib/rce/plugins/tinymce-a11y-checker/plugin.js +0 -90
  286. package/lib/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
  287. package/lib/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +0 -129
  288. package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +0 -200
  289. package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +0 -67
  290. package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +0 -63
  291. package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +0 -49
  292. package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +0 -61
  293. package/lib/rce/plugins/tinymce-a11y-checker/rules/index.js +0 -31
  294. package/lib/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +0 -51
  295. package/lib/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +0 -144
  296. package/lib/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +0 -61
  297. package/lib/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +0 -75
  298. package/lib/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +0 -54
  299. package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +0 -52
  300. package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header.js +0 -81
  301. package/lib/rce/plugins/tinymce-a11y-checker/utils/colors.js +0 -43
  302. package/lib/rce/plugins/tinymce-a11y-checker/utils/describe.js +0 -66
  303. package/lib/rce/plugins/tinymce-a11y-checker/utils/dom.js +0 -160
  304. package/lib/rce/plugins/tinymce-a11y-checker/utils/indicate.js +0 -83
  305. package/lib/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +0 -57
  306. package/lib/rce/plugins/tinymce-a11y-checker/utils/strings.js +0 -40
  307. package/lib/rce/root.js +0 -58
  308. package/lib/rce/sanitizePlugins.js +0 -32
  309. package/lib/rce/style.js +0 -843
  310. package/lib/rce/tinyRCE.js +0 -66
  311. package/lib/rce/transformContent.js +0 -73
  312. package/lib/rce/userOS.js +0 -31
  313. package/lib/rce/wrapInitCb.js +0 -78
  314. package/lib/rcs/api.js +0 -672
  315. package/lib/rcs/buildError.js +0 -98
  316. package/lib/rcs/fake.js +0 -621
  317. package/lib/sidebar/actions/all_files.js +0 -29
  318. package/lib/sidebar/actions/data.js +0 -105
  319. package/lib/sidebar/actions/documents.js +0 -107
  320. package/lib/sidebar/actions/files.js +0 -167
  321. package/lib/sidebar/actions/filter.js +0 -63
  322. package/lib/sidebar/actions/flickr.js +0 -60
  323. package/lib/sidebar/actions/images.js +0 -153
  324. package/lib/sidebar/actions/links.js +0 -23
  325. package/lib/sidebar/actions/media.js +0 -142
  326. package/lib/sidebar/actions/session.js +0 -34
  327. package/lib/sidebar/actions/ui.js +0 -49
  328. package/lib/sidebar/actions/upload.js +0 -550
  329. package/lib/sidebar/containers/Sidebar.js +0 -67
  330. package/lib/sidebar/containers/sidebarHandlers.js +0 -73
  331. package/lib/sidebar/dragHtml.js +0 -49
  332. package/lib/sidebar/reducers/all_files.js +0 -35
  333. package/lib/sidebar/reducers/collection.js +0 -72
  334. package/lib/sidebar/reducers/collections.js +0 -52
  335. package/lib/sidebar/reducers/documents.js +0 -89
  336. package/lib/sidebar/reducers/files.js +0 -38
  337. package/lib/sidebar/reducers/filter.js +0 -61
  338. package/lib/sidebar/reducers/flickr.js +0 -51
  339. package/lib/sidebar/reducers/folder.js +0 -92
  340. package/lib/sidebar/reducers/folders.js +0 -39
  341. package/lib/sidebar/reducers/images.js +0 -115
  342. package/lib/sidebar/reducers/index.js +0 -57
  343. package/lib/sidebar/reducers/media.js +0 -84
  344. package/lib/sidebar/reducers/newPageLinkExpanded.js +0 -30
  345. package/lib/sidebar/reducers/noop.js +0 -21
  346. package/lib/sidebar/reducers/rootFolderId.js +0 -30
  347. package/lib/sidebar/reducers/session.js +0 -33
  348. package/lib/sidebar/reducers/ui.js +0 -87
  349. package/lib/sidebar/reducers/upload.js +0 -206
  350. package/lib/sidebar/store/configureStore.js +0 -26
  351. package/lib/sidebar/store/initialState.js +0 -173
  352. package/lib/translations/locales/ab.js +0 -26
  353. package/lib/translations/locales/ar.js +0 -2427
  354. package/lib/translations/locales/ca.js +0 -2427
  355. package/lib/translations/locales/cs.js +0 -27
  356. package/lib/translations/locales/cs_CZ.js +0 -27
  357. package/lib/translations/locales/cy.js +0 -2427
  358. package/lib/translations/locales/da-x-k12.js +0 -2427
  359. package/lib/translations/locales/da.js +0 -2427
  360. package/lib/translations/locales/da_DK.js +0 -27
  361. package/lib/translations/locales/de.js +0 -2427
  362. package/lib/translations/locales/el.js +0 -459
  363. package/lib/translations/locales/en-AU-x-unimelb.js +0 -2427
  364. package/lib/translations/locales/en-GB-x-ukhe.js +0 -2427
  365. package/lib/translations/locales/en.js +0 -2427
  366. package/lib/translations/locales/en_AU.js +0 -2427
  367. package/lib/translations/locales/en_CA.js +0 -2426
  368. package/lib/translations/locales/en_CY.js +0 -2426
  369. package/lib/translations/locales/en_GB.js +0 -2427
  370. package/lib/translations/locales/en_NZ.js +0 -26
  371. package/lib/translations/locales/en_SE.js +0 -26
  372. package/lib/translations/locales/en_US.js +0 -26
  373. package/lib/translations/locales/es.js +0 -2427
  374. package/lib/translations/locales/es_ES.js +0 -2427
  375. package/lib/translations/locales/es_GT.js +0 -27
  376. package/lib/translations/locales/fa_IR.js +0 -615
  377. package/lib/translations/locales/fi.js +0 -2427
  378. package/lib/translations/locales/fr.js +0 -2427
  379. package/lib/translations/locales/fr_CA.js +0 -2427
  380. package/lib/translations/locales/he.js +0 -486
  381. package/lib/translations/locales/ht.js +0 -2426
  382. package/lib/translations/locales/hu.js +0 -2007
  383. package/lib/translations/locales/hu_HU.js +0 -27
  384. package/lib/translations/locales/hy.js +0 -444
  385. package/lib/translations/locales/id.js +0 -2426
  386. package/lib/translations/locales/id_ID.js +0 -26
  387. package/lib/translations/locales/is.js +0 -2426
  388. package/lib/translations/locales/it.js +0 -2427
  389. package/lib/translations/locales/ja.js +0 -2427
  390. package/lib/translations/locales/ko.js +0 -342
  391. package/lib/translations/locales/ko_KR.js +0 -27
  392. package/lib/translations/locales/lt.js +0 -26
  393. package/lib/translations/locales/lt_LT.js +0 -26
  394. package/lib/translations/locales/mi.js +0 -2426
  395. package/lib/translations/locales/mn_MN.js +0 -26
  396. package/lib/translations/locales/ms.js +0 -2426
  397. package/lib/translations/locales/nb-x-k12.js +0 -2427
  398. package/lib/translations/locales/nb.js +0 -2427
  399. package/lib/translations/locales/nl.js +0 -2427
  400. package/lib/translations/locales/nl_NL.js +0 -27
  401. package/lib/translations/locales/nn.js +0 -2247
  402. package/lib/translations/locales/pl.js +0 -2427
  403. package/lib/translations/locales/pt.js +0 -2427
  404. package/lib/translations/locales/pt_BR.js +0 -2427
  405. package/lib/translations/locales/ro.js +0 -27
  406. package/lib/translations/locales/ru.js +0 -2427
  407. package/lib/translations/locales/se.js +0 -26
  408. package/lib/translations/locales/sl.js +0 -2427
  409. package/lib/translations/locales/sv-x-k12.js +0 -2427
  410. package/lib/translations/locales/sv.js +0 -2427
  411. package/lib/translations/locales/sv_SE.js +0 -27
  412. package/lib/translations/locales/tg.js +0 -26
  413. package/lib/translations/locales/th.js +0 -2427
  414. package/lib/translations/locales/th_TH.js +0 -27
  415. package/lib/translations/locales/tl_PH.js +0 -26
  416. package/lib/translations/locales/tr.js +0 -687
  417. package/lib/translations/locales/uk_UA.js +0 -519
  418. package/lib/translations/locales/vi.js +0 -2427
  419. package/lib/translations/locales/vi_VN.js +0 -27
  420. package/lib/translations/locales/zh-Hans.js +0 -2427
  421. package/lib/translations/locales/zh-Hant.js +0 -2427
  422. package/lib/translations/locales/zh.js +0 -2427
  423. package/lib/translations/locales/zh_HK.js +0 -2427
  424. package/lib/translations/locales/zh_TW.Big5.js +0 -27
  425. package/lib/translations/locales/zh_TW.js +0 -27
  426. package/lib/translations/tinymce/ar_SA.js +0 -211
  427. package/lib/translations/tinymce/bg_BG.js +0 -419
  428. package/lib/translations/tinymce/ca.js +0 -419
  429. package/lib/translations/tinymce/cs.js +0 -419
  430. package/lib/translations/tinymce/cy.js +0 -418
  431. package/lib/translations/tinymce/da.js +0 -419
  432. package/lib/translations/tinymce/de.js +0 -419
  433. package/lib/translations/tinymce/el.js +0 -261
  434. package/lib/translations/tinymce/en_GB.js +0 -230
  435. package/lib/translations/tinymce/es.js +0 -419
  436. package/lib/translations/tinymce/fa_IR.js +0 -390
  437. package/lib/translations/tinymce/fi.js +0 -19
  438. package/lib/translations/tinymce/fr_FR.js +0 -419
  439. package/lib/translations/tinymce/he_IL.js +0 -420
  440. package/lib/translations/tinymce/hu_HU.js +0 -419
  441. package/lib/translations/tinymce/hy.js +0 -419
  442. package/lib/translations/tinymce/it.js +0 -419
  443. package/lib/translations/tinymce/ja.js +0 -419
  444. package/lib/translations/tinymce/ko_KR.js +0 -419
  445. package/lib/translations/tinymce/nb_NO.js +0 -419
  446. package/lib/translations/tinymce/nl.js +0 -419
  447. package/lib/translations/tinymce/pl.js +0 -419
  448. package/lib/translations/tinymce/pt_BR.js +0 -419
  449. package/lib/translations/tinymce/pt_PT.js +0 -419
  450. package/lib/translations/tinymce/ro.js +0 -418
  451. package/lib/translations/tinymce/ru.js +0 -436
  452. package/lib/translations/tinymce/ru_RU.js +0 -71
  453. package/lib/translations/tinymce/sl.js +0 -462
  454. package/lib/translations/tinymce/sr.js +0 -278
  455. package/lib/translations/tinymce/sv_SE.js +0 -419
  456. package/lib/translations/tinymce/th.js +0 -479
  457. package/lib/translations/tinymce/tr_TR.js +0 -389
  458. package/lib/translations/tinymce/uk_UA.js +0 -278
  459. package/lib/translations/tinymce/vi_VN.js +0 -277
  460. package/lib/translations/tinymce/zh_CN.js +0 -419
  461. package/lib/translations/tinymce/zh_TW.js +0 -419
  462. package/lib/util/DeepPartialNullable.js +0 -1
  463. package/lib/util/ExtractRequired.js +0 -1
  464. package/lib/util/TypedDict.js +0 -131
  465. package/lib/util/assertNever.js +0 -44
  466. package/lib/util/elem-util.js +0 -26
  467. package/lib/util/encrypted-storage.js +0 -84
  468. package/lib/util/file-url-util.js +0 -44
  469. package/lib/util/fullscreenHelpers.js +0 -27
  470. package/lib/util/instui-icon-helper.js +0 -31
  471. package/lib/util/loadingPlaceholder.js +0 -436
  472. package/lib/util/simpleCache.js +0 -41
  473. package/lib/util/string-util.js +0 -48
  474. package/lib/util/textarea-editing-util.js +0 -87
  475. package/lib/util/tinymce-plugin-util.js +0 -52
  476. package/lib/util/url-util.js +0 -138
@@ -1,70 +0,0 @@
1
- /*
2
- * Copyright (C) 2020 - present Instructure, Inc.
3
- *
4
- * This file is part of Canvas.
5
- *
6
- * Canvas is free software: you can redistribute it and/or modify it under
7
- * the terms of the GNU Affero General Public License as published by the Free
8
- * Software Foundation, version 3 of the License.
9
- *
10
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
11
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
13
- * details.
14
- *
15
- * You should have received a copy of the GNU Affero General Public License along
16
- * with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
- import { parse } from 'url';
19
- import formatMessage from '../../../format-message'; // keep in sync with the protocols permitted for <a href>
20
- // as listed in gems/canvas_sanitize/lib/canvas_sanitize/canvas_sanitize.rb
21
-
22
- const allowed_protocols = ['ftp:', 'http:', 'https:', 'mailto:', 'tel:', 'skype:']; // weakly validate a url
23
- // return true if valid
24
- // return false if not valid yet, but incomplete
25
- // throw an Error if invalid
26
-
27
- export default function validateURL(url) {
28
- const href = url.trim();
29
- const parsed = parse(href, false, true);
30
- const protocol = parsed.protocol;
31
-
32
- if (!protocol) {
33
- if (parsed.href[0] === ':') {
34
- // ":anything" is invalid
35
- // need this check as an artifact of parse(href)
36
- throw new Error(formatMessage('Protocol must be ftp, http, https, mailto, skype, tel or may be omitted'));
37
- }
38
-
39
- if (/^\/\/$/.test(href)) {
40
- // "//" by itself is not a URL yet
41
- return false;
42
- }
43
- } else if (protocol) {
44
- if (!allowed_protocols.includes(protocol)) {
45
- throw new Error(formatMessage('{p} is not a valid protocol which must be ftp, http, https, mailto, skype, tel or may be omitted', {
46
- p: protocol.replace(/:$/, '')
47
- }));
48
- } // ftp, http, https require ://anything
49
-
50
-
51
- if (/(?:ftp|http|https):\/\/.+/.test(href)) {
52
- return true;
53
- } // allow mailto:address, skype:participant, tel:911 or
54
- // mailto://address, skype://participant, tel://911,
55
-
56
-
57
- if (/(?:mailto|skype|tel):(\/\/)?[^/].*/.test(href)) {
58
- return true;
59
- } // http:/xyzzy is invalid
60
-
61
-
62
- if (/^(?:ftp|http|https):\/{0,1}[^/]/.test(href)) {
63
- throw new Error(formatMessage('Invalid URL'));
64
- }
65
-
66
- return false;
67
- }
68
-
69
- return true;
70
- }
@@ -1,48 +0,0 @@
1
- /*
2
- * Copyright (C) 2020 - present Instructure, Inc.
3
- *
4
- * This file is part of Canvas.
5
- *
6
- * Canvas is free software: you can redistribute it and/or modify it under
7
- * the terms of the GNU Affero General Public License as published by the Free
8
- * Software Foundation, version 3 of the License.
9
- *
10
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
11
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
13
- * details.
14
- *
15
- * You should have received a copy of the GNU Affero General Public License along
16
- * with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
- import React from 'react';
19
- import ReactDOM from 'react-dom';
20
- import Bridge from '../../../bridge';
21
- export default function (ed, document) {
22
- return import('./components/Embed').then(_ref => {
23
- let {
24
- Embed
25
- } = _ref;
26
- let container = document.querySelector('.canvas-rce-embed-container');
27
-
28
- if (!container) {
29
- container = document.createElement('div');
30
- container.className = 'canvas-rce-embed-container';
31
- document.body.appendChild(container);
32
- }
33
-
34
- const handleDismiss = () => {
35
- ReactDOM.unmountComponentAtNode(container);
36
- ed.focus(false);
37
- };
38
-
39
- const handleEmbedCode = embedCode => {
40
- Bridge.insertEmbedCode(embedCode);
41
- };
42
-
43
- ReactDOM.render( /*#__PURE__*/React.createElement(Embed, {
44
- onSubmit: handleEmbedCode,
45
- onDismiss: handleDismiss
46
- }), container);
47
- });
48
- }
@@ -1,68 +0,0 @@
1
- /*
2
- * Copyright (C) 2020 - present Instructure, Inc.
3
- *
4
- * This file is part of Canvas.
5
- *
6
- * Canvas is free software: you can redistribute it and/or modify it under
7
- * the terms of the GNU Affero General Public License as published by the Free
8
- * Software Foundation, version 3 of the License.
9
- *
10
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
11
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
13
- * details.
14
- *
15
- * You should have received a copy of the GNU Affero General Public License along
16
- * with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
- import React, { useState } from 'react';
19
- import { Modal } from '@instructure/ui-modal';
20
- import formatMessage from '../../../../format-message';
21
- import { Button, CloseButton } from '@instructure/ui-buttons';
22
- import { Heading } from '@instructure/ui-heading';
23
- import { func } from 'prop-types';
24
- import { TextArea } from '@instructure/ui-text-area';
25
- import { instuiPopupMountNode } from '../../../../util/fullscreenHelpers';
26
- export function Embed(_ref) {
27
- let {
28
- onSubmit,
29
- onDismiss
30
- } = _ref;
31
- const [embedCode, setEmbedCode] = useState('');
32
- return /*#__PURE__*/React.createElement(Modal, {
33
- "data-mce-component": true,
34
- label: formatMessage('Embed'),
35
- mountNode: instuiPopupMountNode,
36
- size: "medium",
37
- onDismiss: onDismiss,
38
- open: true,
39
- shouldCloseOnDocumentClick: false
40
- }, /*#__PURE__*/React.createElement(Modal.Header, null, /*#__PURE__*/React.createElement(CloseButton, {
41
- onClick: onDismiss,
42
- offset: "medium",
43
- placement: "end",
44
- screenReaderLabel: formatMessage('Close')
45
- }), /*#__PURE__*/React.createElement(Heading, null, formatMessage('Embed'))), /*#__PURE__*/React.createElement(Modal.Body, null, /*#__PURE__*/React.createElement(TextArea, {
46
- maxHeight: "10rem",
47
- label: formatMessage('Embed Code'),
48
- value: embedCode,
49
- onChange: e => {
50
- setEmbedCode(e.target.value);
51
- }
52
- })), /*#__PURE__*/React.createElement(Modal.Footer, null, /*#__PURE__*/React.createElement(Button, {
53
- onClick: onDismiss
54
- }, formatMessage('Close')), "\xA0", /*#__PURE__*/React.createElement(Button, {
55
- onClick: e => {
56
- e.preventDefault();
57
- onSubmit(embedCode);
58
- onDismiss();
59
- },
60
- color: "primary",
61
- type: "submit",
62
- disabled: !embedCode
63
- }, formatMessage('Submit'))));
64
- }
65
- Embed.propTypes = {
66
- onSubmit: func.isRequired,
67
- onDismiss: func.isRequired
68
- };
@@ -1,36 +0,0 @@
1
- /*
2
- * Copyright (C) 2020 - present Instructure, Inc.
3
- *
4
- * This file is part of Canvas.
5
- *
6
- * Canvas is free software: you can redistribute it and/or modify it under
7
- * the terms of the GNU Affero General Public License as published by the Free
8
- * Software Foundation, version 3 of the License.
9
- *
10
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
11
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
13
- * details.
14
- *
15
- * You should have received a copy of the GNU Affero General Public License along
16
- * with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
- import clickCallback from './clickCallback';
19
- import formatMessage from '../../../format-message';
20
- import tinymce from 'tinymce'; // Register plugin
21
-
22
- tinymce.PluginManager.add('instructure_media_embed', function (ed) {
23
- ed.addCommand('instructureMediaEmbed', () => clickCallback(ed, document)); // Register menu item
24
-
25
- ed.ui.registry.addMenuItem('instructure_media_embed', {
26
- text: formatMessage('Embed'),
27
- icon: 'embed',
28
- onAction: () => ed.execCommand('instructureMediaEmbed')
29
- }); // Register toolbar button
30
-
31
- ed.ui.registry.addButton('instructure_media_embed', {
32
- tooltip: formatMessage('Embed'),
33
- icon: 'embed',
34
- onAction: () => ed.execCommand('instructureMediaEmbed')
35
- });
36
- });
@@ -1,117 +0,0 @@
1
- /*
2
- * Copyright (C) 2022 - present Instructure, Inc.
3
- *
4
- * This file is part of Canvas.
5
- *
6
- * Canvas is free software: you can redistribute it and/or modify it under
7
- * the terms of the GNU Affero General Public License as published by the Free
8
- * Software Foundation, version 3 of the License.
9
- *
10
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
11
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
13
- * details.
14
- *
15
- * You should have received a copy of the GNU Affero General Public License along
16
- * with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
-
19
- /** ********************************************************
20
- * This file holds a mostly functional paste menu command
21
- * We decided not to use it since menu-past and kb-paste
22
- * would be subtly different. Keeping the file here
23
- * because figuring this stuff out wasn't trivial and
24
- * I didn't want to lose it.
25
- ********************************************************* */
26
- import formatMessage from '../../../format-message';
27
- import { showFlashAlert } from '../../../common/FlashAlert';
28
- export function initPasteMenuCommand(ed, handlePasteOrDrop) {
29
- // the paste menu command is problematic in that it requires
30
- // we get the copied data using the clipboard api, which is
31
- // more limited than what the browser can do natively via
32
- // meta+v.
33
- // For example, if the user copies a file from the Finder,
34
- // pasting via the menu command just gets you the filename.
35
- ed.addCommand('instructurePaste', () => {
36
- handlePasteMenuCommand();
37
- });
38
- ed.ui.registry.addMenuItem('instructure_paste', {
39
- text: formatMessage('Paste'),
40
- icon: 'paste',
41
- onAction: () => ed.execCommand('instructurePaste'),
42
-
43
- onSetup(_api) {
44
- // If I add the shortcut, then it overwrites the browsers
45
- // built-in keyboard shortcut for paste. we don't want that
46
- ed.addShortcut('meta+v', null, () => {
47
- ed.execCommand('instructurePaste');
48
- });
49
- }
50
-
51
- });
52
-
53
- async function handlePasteMenuCommand() {
54
- try {
55
- const cbitems = await window.navigator.clipboard.read();
56
- const cbitem = cbitems[0];
57
- const imageType = cbitem.types.find(t => /^image\//.test(t));
58
-
59
- if (imageType) {
60
- const blob = await cbitem.getType(imageType);
61
- const file = new File([blob], imageType.replace('/', '.'), {
62
- type: imageType
63
- });
64
- handlePasteOrDrop({
65
- clipboardData: {
66
- files: [file],
67
- types: ['Files']
68
- },
69
- preventDefault: () => {}
70
- });
71
- } else if (cbitem.types.includes('text/html')) {
72
- const blob = await cbitem.getType('text/html');
73
- const text = await blob.text();
74
- handlePasteOrDrop({
75
- clipboardData: {
76
- files: [],
77
- types: ['text/html'],
78
- getData: () => text
79
- },
80
- preventDefault: () => {}
81
- });
82
- } else if (cbitem.types.includes('text/plain')) {
83
- const blob = await cbitem.getType('text/plain');
84
- const text = await blob.text();
85
- handlePasteOrDrop({
86
- clipboardData: {
87
- files: [],
88
- types: ['text/plain'],
89
- getData: () => text
90
- },
91
- preventDefault: () => {}
92
- });
93
- } else {
94
- const textType = cbitem.types.find(t => /^text\//.test(t));
95
-
96
- if (textType) {
97
- const blob = await cbitem.getType(textType);
98
- const text = await blob.text();
99
- handlePasteOrDrop({
100
- clipboardData: {
101
- files: [],
102
- types: [textType],
103
- getData: () => text
104
- },
105
- preventDefault: () => {}
106
- });
107
- }
108
- }
109
- } catch (ex) {
110
- showFlashAlert({
111
- message: 'whoops:',
112
- err: ex,
113
- type: 'error'
114
- });
115
- }
116
- }
117
- }
@@ -1,174 +0,0 @@
1
- // @ts-nocheck
2
-
3
- /*
4
- * Copyright (C) 2022 - present Instructure, Inc.
5
- *
6
- * This file is part of Canvas.
7
- *
8
- * Canvas is free software: you can redistribute it and/or modify it under
9
- * the terms of the GNU Affero General Public License as published by the Free
10
- * Software Foundation, version 3 of the License.
11
- *
12
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
13
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
15
- * details.
16
- *
17
- * You should have received a copy of the GNU Affero General Public License along
18
- * with this program. If not, see <http://www.gnu.org/licenses/>.
19
- */
20
- import tinymce from 'tinymce';
21
- import bridge from '../../../bridge';
22
- import configureStore from '../../../sidebar/store/configureStore';
23
- import { get as getSession } from '../../../sidebar/actions/session';
24
- import { uploadToMediaFolder } from '../../../sidebar/actions/upload';
25
- import doFileUpload from '../shared/Upload/doFileUpload';
26
- import formatMessage from '../../../format-message';
27
- import { isAudioOrVideo, isImage } from '../shared/fileTypeUtils';
28
- import { showFlashAlert } from '../../../common/FlashAlert';
29
- import { isMicrosoftWordContentInEvent } from '../shared/EventUtils';
30
- // assume that if there are multiple RCEs on the page,
31
- // they all talk to the same canvas
32
- const config = {
33
- store: null,
34
- session: null,
35
- // null: we haven't gotten it yet, false: we don't need it
36
- sessionPromise: null
37
- }; // when UploadFile renders
38
- // <StoreProvider {...trayProps}>
39
- // {contentProps => {
40
- // return (
41
- // <UploadFileModal
42
- // The StoreProvider function calls configureStore which creates a new store
43
- // (We don't seem to have a way to grab an existing store)
44
- // So the configureStore and getSession logic gets repeated here for the
45
- // automatic file upload when pasting or dropping a file on the RCE
46
-
47
- function initStore(initProps) {
48
- if (config.store === null) {
49
- config.store = configureStore(initProps);
50
- }
51
-
52
- if (config.session === null) {
53
- if (initProps.host && initProps.jwt) {
54
- config.sessionPromise = getSession(config.store.dispatch, config.store.getState).then(() => {
55
- config.session = config.store.getState().session;
56
- }).catch(_err => {
57
- // eslint-disable-next-line no-console
58
- console.error('The Paste plugin failed to get canvas session data.');
59
- });
60
- } else {
61
- // RCEWrapper will keep us from getting here, but we really should do something anyway.
62
- config.session = false;
63
- config.sessionPromise = Promise.resolve();
64
- }
65
- }
66
-
67
- return config.store;
68
- }
69
-
70
- tinymce.PluginManager.add('instructure_paste', function (editor) {
71
- const store = initStore(bridge.trayProps.get(editor));
72
- /**
73
- * Starts the file upload (and insertion) process for the given file.
74
- *
75
- * If usage rights are required, a dialog will be displayed.
76
- *
77
- * @returns a promise that resolves when the user has made their choice about uploading the file
78
- */
79
-
80
- async function requestFileInsertion(file) {
81
- // it's very doubtful that we won't have retrieved the session data yet,
82
- // since it takes a while for the RCE to initialize, but if we haven't
83
- // wait until we do to carry on and finish pasting.
84
- await config.sessionPromise;
85
-
86
- if (config.session === null) {
87
- // we failed to get the session and don't know if usage rights are required in this course|group
88
- // In all probability, the file upload will fail too, but I feel like we have to do something here.
89
- showFlashAlert({
90
- message: formatMessage('If Usage Rights are required, the file will not publish until enabled in the Files page.'),
91
- type: 'info'
92
- });
93
- } // even though usage rights might be required by the course, canvas has no place
94
- // on the user to store it. Only Group and Course.
95
-
96
-
97
- const requiresUsageRights = config.session.usageRightsRequired && /course|group/.test(bridge.trayProps.get(editor).contextType);
98
-
99
- if (requiresUsageRights) {
100
- return doFileUpload(editor, document, {
101
- accept: file.type,
102
- panels: ['COMPUTER'],
103
- preselectedFile: file
104
- }).closedPromise;
105
- } else {
106
- const fileMetaProps = {
107
- altText: file.name,
108
- contentType: file.type,
109
- displayAs: 'embed',
110
- isDecorativeImage: false,
111
- name: file.name,
112
- parentFolderId: 'media',
113
- size: file.size,
114
- domObject: file
115
- };
116
- let tabContext = 'documents';
117
-
118
- if (isImage(file.type)) {
119
- tabContext = 'images';
120
- } else if (isAudioOrVideo(file.type)) {
121
- tabContext = 'media';
122
- }
123
-
124
- store.dispatch(uploadToMediaFolder(tabContext, fileMetaProps));
125
- return 'submitted';
126
- }
127
- }
128
-
129
- async function handlePasteOrDrop(event) {
130
- var _bridge$activeEditor, _bridge$activeEditor$, _editor$rceWrapper;
131
-
132
- const isPaste = event.type === 'paste';
133
- const dataTransfer = isPaste ? event.clipboardData : event.dataTransfer;
134
- const files = Array.from((dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.files) || []);
135
- const types = (dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.types) || [];
136
- const isAudioVideoDisabled = (_bridge$activeEditor = bridge.activeEditor()) === null || _bridge$activeEditor === void 0 ? void 0 : (_bridge$activeEditor$ = _bridge$activeEditor.props) === null || _bridge$activeEditor$ === void 0 ? void 0 : _bridge$activeEditor$.instRecordDisabled; // delegate to tiny if there aren't any files to handle
137
-
138
- if (!types.includes('Files')) return; // delegate to tiny if there is Microsoft Word content, because it may contain an image
139
- // rendering of the content and we don't want to incorrectly paste the image
140
- // instead of the actual rich content, which TinyMCE has special handing for
141
-
142
- if (isMicrosoftWordContentInEvent(event)) return; // we're pasting file(s), prevent the default tinymce pasting behavior
143
-
144
- event.preventDefault(); // Ensure the editor has focus, because downstream code requires that it does, and drag-n-drop
145
- // events can be started when the editor doesn't have focus.
146
-
147
- if (!editor.hasFocus()) (_editor$rceWrapper = editor.rceWrapper) === null || _editor$rceWrapper === void 0 ? void 0 : _editor$rceWrapper.focus(); // Checking if we've encountered an issue with file processing for paste events in the browser
148
- // Specifically implementing due to this bug in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1699743
149
- // However, there could be other issues that cause this condition so it's a nice safety net regardless
150
-
151
- if (isPaste && files.some(file => file.size === 0)) {
152
- showFlashAlert({
153
- message: formatMessage('One or more files failed to paste. Please try uploading or dragging and dropping files.'),
154
- type: 'error'
155
- });
156
- return;
157
- }
158
-
159
- for (const file of files) {
160
- if (isAudioVideoDisabled && isAudioOrVideo(file.type)) {
161
- // Skip audio and video files when disabled
162
- continue;
163
- } // This will finish once the dialog is closed, if one was created, putting this in a loop allows us
164
- // to show a dialog for each file without them conflicting.
165
- // eslint-disable-next-line no-await-in-loop
166
-
167
-
168
- await requestFileInsertion(file);
169
- }
170
- }
171
-
172
- editor.on('paste', handlePasteOrDrop);
173
- editor.on('drop', handlePasteOrDrop);
174
- });
@@ -1,169 +0,0 @@
1
- // @ts-nocheck
2
-
3
- /*
4
- * Copyright (C) 2023 - present Instructure, Inc.
5
- *
6
- * This file is part of Canvas.
7
- *
8
- * Canvas is free software: you can redistribute it and/or modify it under
9
- * the terms of the GNU Affero General Public License as published by the Free
10
- * Software Foundation, version 3 of the License.
11
- *
12
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
13
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
15
- * details.
16
- *
17
- * You should have received a copy of the GNU Affero General Public License along
18
- * with this program. If not, see <http://www.gnu.org/licenses/>.
19
- */
20
- import RCEWrapper from '../../RCEWrapper';
21
-
22
- /**
23
- * Fallback iframe allowances used when they aren't provided to the editor.
24
- */
25
- export const fallbackIframeAllowances = ['geolocation *', 'microphone *', 'camera *', 'midi *', 'encrypted-media *', 'autoplay *', 'clipboard-write *', 'display-capture *'];
26
- /**
27
- * Type of the "editor buttons" that come from Canvas.
28
- *
29
- * They're actually the available LTI Tool configurations, so we give them a more reasonable name here.
30
- */
31
-
32
- /**
33
- * Gets the environment information for the external tools dialog for a given tinyMCE editor.
34
- */
35
- export function externalToolsEnvFor(editor) {
36
- const props = () => {
37
- var _ref, _RCEWrapper$getByEdit;
38
-
39
- return (_ref = (_RCEWrapper$getByEdit = RCEWrapper.getByEditor(editor)) === null || _RCEWrapper$getByEdit === void 0 ? void 0 : _RCEWrapper$getByEdit.props) !== null && _ref !== void 0 ? _ref : undefined;
40
- };
41
-
42
- let cachedCanvasToolId;
43
-
44
- function nonNullishArray(arr) {
45
- return arr === null || arr === void 0 ? void 0 : arr.filter(it => it != null);
46
- }
47
-
48
- return {
49
- editor: editor !== null && editor !== void 0 ? editor : null,
50
-
51
- get rceWrapper() {
52
- var _RCEWrapper$getByEdit2;
53
-
54
- return (_RCEWrapper$getByEdit2 = RCEWrapper.getByEditor(editor)) !== null && _RCEWrapper$getByEdit2 !== void 0 ? _RCEWrapper$getByEdit2 : null;
55
- },
56
-
57
- get availableRceLtiTools() {
58
- var _nonNullishArray, _props;
59
-
60
- return (_nonNullishArray = nonNullishArray((_props = props()) === null || _props === void 0 ? void 0 : _props.ltiTools)) !== null && _nonNullishArray !== void 0 ? _nonNullishArray : [];
61
- },
62
-
63
- /**
64
- * Gets information about the context in which the editor is launched.
65
- */
66
- get contextAssetInfo() {
67
- var _props2;
68
-
69
- const trayProps = (_props2 = props()) === null || _props2 === void 0 ? void 0 : _props2.trayProps;
70
-
71
- if (trayProps != null) {
72
- var _trayProps$containing;
73
-
74
- const {
75
- contextId,
76
- contextType
77
- } = (_trayProps$containing = trayProps.containingContext) !== null && _trayProps$containing !== void 0 ? _trayProps$containing : trayProps;
78
-
79
- if (contextId != null && contextId.length > 0 && contextType != null && contextType.length > 0) {
80
- return {
81
- contextType,
82
- contextId
83
- };
84
- }
85
- }
86
-
87
- return null;
88
- },
89
-
90
- get resourceSelectionUrlOverride() {
91
- var _props$externalToolsC, _props3, _props3$externalTools;
92
-
93
- return (_props$externalToolsC = (_props3 = props()) === null || _props3 === void 0 ? void 0 : (_props3$externalTools = _props3.externalToolsConfig) === null || _props3$externalTools === void 0 ? void 0 : _props3$externalTools.resourceSelectionUrlOverride) !== null && _props$externalToolsC !== void 0 ? _props$externalToolsC : null;
94
- },
95
-
96
- get ltiIframeAllowPolicy() {
97
- var _nonNullishArray2, _props4, _props4$externalTools;
98
-
99
- return ((_nonNullishArray2 = nonNullishArray((_props4 = props()) === null || _props4 === void 0 ? void 0 : (_props4$externalTools = _props4.externalToolsConfig) === null || _props4$externalTools === void 0 ? void 0 : _props4$externalTools.ltiIframeAllowances)) !== null && _nonNullishArray2 !== void 0 ? _nonNullishArray2 : fallbackIframeAllowances).join('; ');
100
- },
101
-
102
- get isA2StudentView() {
103
- var _props$externalToolsC2, _props5, _props5$externalTools;
104
-
105
- return (_props$externalToolsC2 = (_props5 = props()) === null || _props5 === void 0 ? void 0 : (_props5$externalTools = _props5.externalToolsConfig) === null || _props5$externalTools === void 0 ? void 0 : _props5$externalTools.isA2StudentView) !== null && _props$externalToolsC2 !== void 0 ? _props$externalToolsC2 : false;
106
- },
107
-
108
- get maxMruTools() {
109
- var _props$externalToolsC3, _props6, _props6$externalTools;
110
-
111
- return (_props$externalToolsC3 = (_props6 = props()) === null || _props6 === void 0 ? void 0 : (_props6$externalTools = _props6.externalToolsConfig) === null || _props6$externalTools === void 0 ? void 0 : _props6$externalTools.maxMruTools) !== null && _props$externalToolsC3 !== void 0 ? _props$externalToolsC3 : 5;
112
- },
113
-
114
- get canvasOrigin() {
115
- var _props$canvasOrigin, _props7;
116
-
117
- return (_props$canvasOrigin = (_props7 = props()) === null || _props7 === void 0 ? void 0 : _props7.canvasOrigin) !== null && _props$canvasOrigin !== void 0 ? _props$canvasOrigin : window.location.origin;
118
- },
119
-
120
- /**
121
- * Gets the context id that should be used when launching LTI iframes.
122
- */
123
- get containingCanvasLtiToolId() {
124
- var _props8, _props8$externalTools;
125
-
126
- const propsToolId = (_props8 = props()) === null || _props8 === void 0 ? void 0 : (_props8$externalTools = _props8.externalToolsConfig) === null || _props8$externalTools === void 0 ? void 0 : _props8$externalTools.containingCanvasLtiToolId;
127
-
128
- if (typeof propsToolId === 'string') {
129
- return propsToolId;
130
- }
131
-
132
- try {
133
- if (cachedCanvasToolId === undefined) {
134
- // Fall back on localStorage until NQ implements
135
- cachedCanvasToolId = window.localStorage.getItem('canvas_tool_id');
136
- }
137
-
138
- return cachedCanvasToolId;
139
- } catch {
140
- return null;
141
- }
142
- },
143
-
144
- get editorSelection() {
145
- var _editor$selection$get, _editor$selection;
146
-
147
- return (_editor$selection$get = editor === null || editor === void 0 ? void 0 : (_editor$selection = editor.selection) === null || _editor$selection === void 0 ? void 0 : _editor$selection.getContent()) !== null && _editor$selection$get !== void 0 ? _editor$selection$get : null;
148
- },
149
-
150
- get editorContent() {
151
- var _editor$getContent;
152
-
153
- return (_editor$getContent = editor === null || editor === void 0 ? void 0 : editor.getContent()) !== null && _editor$getContent !== void 0 ? _editor$getContent : null;
154
- },
155
-
156
- insertCode(code) {
157
- var _this$rceWrapper;
158
-
159
- (_this$rceWrapper = this.rceWrapper) === null || _this$rceWrapper === void 0 ? void 0 : _this$rceWrapper.insertCode(code);
160
- }
161
-
162
- };
163
- }
164
- /**
165
- * Name of the parameter used to indicate to Canvas that it is being loaded in an iframe inside of an
166
- * LTI tool. It should be set to the global id of the containing tool.
167
- */
168
-
169
- export const PARENT_FRAME_CONTEXT_PARAM = 'parent_frame_context';