@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,325 +0,0 @@
1
- /*
2
- * Copyright (C) 2018 - 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 classnames from 'classnames';
19
- import { renderAudio, renderImage, renderLink, renderLinkedImage, renderVideo } from './contentRendering';
20
- import { cleanUrl, getAnchorElement, isImageFigure, isOnlyTextSelected } from './contentInsertionUtils';
21
- import { mediaPlayerURLFromFile } from './plugins/shared/fileTypeUtils';
22
- import { absoluteToRelativeUrl } from '../common/fileUrl';
23
- /** * generic content insertion ** */
24
- // when the editor is hidden, just replace the selected portion of the textarea
25
- // with the content. branching is for cross-browser
26
-
27
- function replaceTextareaSelection(editor, content) {
28
- const element = editor.getElement();
29
-
30
- if ('selectionStart' in element) {
31
- // mozilla / dom 3.0
32
- const before = element.value.substr(0, element.selectionStart);
33
- const after = element.value.substr(element.selectionEnd, element.value.length);
34
- element.value = before + content + after;
35
- } else if (document.selection) {
36
- // exploder
37
- element.focus();
38
- document.selection.createRange().text = content;
39
- } else {
40
- // browser not supported
41
- element.value += content;
42
- }
43
- }
44
-
45
- export function insertContent(editor, content) {
46
- if (editor.isHidden()) {
47
- // replaces the textarea selection with the new image. no element returned
48
- // to indicate because it's raw html.
49
- replaceTextareaSelection(editor, content);
50
- return null;
51
- } else {
52
- // inserts content at the cursor. getEnd() of the selection after the
53
- // insertion should reference the newly created node (or first of the newly
54
- // created nodes if there were multiple, unfortunately), because the cursor
55
- // itself stays just before the new content.
56
- setTimeout(() => {
57
- if (editor.iframeElement) {
58
- editor.iframeElement.scrollIntoView();
59
- }
60
- }, 100); // there's a bug in tinymce where insertContent calls execCommand('mceInsertContent'),
61
- // but doesn't correctly forward the second "args" argument. Let's go right for
62
- // execCommand
63
- // editor.insertContent(content, {skip_focus: true})
64
-
65
- editor.execCommand('mceInsertContent', false, content, {
66
- skip_focus: true
67
- });
68
- return editor.selection.getEnd();
69
- }
70
- }
71
- /** * image insertion ** */
72
-
73
- function isElemImg(elem) {
74
- return elem && elem.nodeName.toLowerCase() === 'img';
75
- }
76
-
77
- function isElemAnchor(elem) {
78
- return elem && elem.nodeName.toLowerCase() === 'a';
79
- }
80
- /*
81
- check if we should preserve the parent anchor tag. the criteria is pretty
82
- strict based on if we have a single image selected with an anchor tag
83
- surrounding
84
- */
85
-
86
-
87
- function shouldPreserveImgAnchor(editor) {
88
- const selection = editor.selection;
89
- const selectedRange = selection.getRng();
90
- return isElemImg(selection.getNode()) && isElemAnchor(selectedRange.startContainer) && selectedRange.startContainer === selectedRange.endContainer;
91
- }
92
-
93
- export function insertImage(editor, image, canvasOrigin) {
94
- let content = '';
95
-
96
- if (shouldPreserveImgAnchor(editor)) {
97
- content = renderLinkedImage(editor.selection.getRng().startContainer, image, canvasOrigin);
98
- } else {
99
- // render the image, constraining its size on insertion
100
- const imgNode = editor.selection.getNode(); // apply selected styles only in course/user images
101
-
102
- if (isElemImg(imgNode) && !image['data-inst-icon-maker-icon']) {
103
- const customStyles = imgNode.style;
104
- const customWidth = imgNode.getAttribute('width');
105
- const parseStyles = {};
106
-
107
- for (let i = 0; i < customStyles.length; ++i) {
108
- const cssAttribute = customStyles.item(i);
109
- parseStyles[cssAttribute] = customStyles[cssAttribute];
110
- }
111
-
112
- image.width = customWidth;
113
- image.style = parseStyles;
114
- }
115
-
116
- content = renderImage({ ...image
117
- }, canvasOrigin);
118
- }
119
-
120
- return insertContent(editor, content);
121
- }
122
- export function insertEquation(editor, latex) {
123
- const docSz = parseFloat(editor.dom.doc.defaultView.getComputedStyle(editor.dom.doc.body).getPropertyValue('font-size')) || 1;
124
- const sel = editor.selection.getNode();
125
- const imgSz = sel ? parseFloat(editor.dom.doc.defaultView.getComputedStyle(sel).getPropertyValue('font-size')) || 1 : docSz;
126
- const scale = imgSz / docSz;
127
- const url = `/equation_images/${encodeURIComponent(encodeURIComponent(latex))}?scale=${scale}`; // if I simply create the html string, xsslint fails jenkins
128
-
129
- const img = document.createElement('img');
130
- img.setAttribute('alt', `LaTeX: ${latex}`);
131
- img.setAttribute('title', latex);
132
- img.setAttribute('class', 'equation_image');
133
- img.setAttribute('data-equation-content', latex);
134
- img.setAttribute('src', url);
135
- img.setAttribute('data-ignore-a11y-check', '');
136
- return insertContent(editor, img.outerHTML);
137
- }
138
- /** * link insertion ** */
139
- // checks if there's an existing anchor containing the cursor
140
-
141
- function currentLink(editor, link) {
142
- const cursor = link.selectionDetails && link.selectionDetails.node ? link.selectionDetails.node : editor.selection.getNode(); // This doesn't work in IE 11, but will stop brokeness in other browsers
143
-
144
- return editor.dom.getParent(cursor, 'a');
145
- } // checks if the editor has a current selection (vs. just a cursor position)
146
-
147
-
148
- function hasSelection(editor) {
149
- let selection = editor.selection.getContent();
150
- selection = editor.dom.decode(selection);
151
- return !!selection && selection !== '';
152
- }
153
-
154
- export function existingContentToLink(editor, link) {
155
- return !editor.isHidden() && (link && (currentLink(editor, link) || !!link.selectedContent) || hasSelection(editor));
156
- } // Parses HTML string with support in old browsers because jQuery's parseHTML was added in 1.8.
157
-
158
- function parseHTML(htmlString) {
159
- const tmp = document.implementation.createHTMLDocument();
160
- tmp.body.innerHTML = htmlString.trim();
161
- return tmp.body.children;
162
- }
163
-
164
- function selectionIsImg(editor) {
165
- const selection = editor.selection.getContent();
166
- return editor.dom.$(parseHTML(selection)).is('img');
167
- }
168
-
169
- export function existingContentToLinkIsImg(editor) {
170
- return !editor.isHidden() && selectionIsImg(editor);
171
- }
172
-
173
- function decorateLinkWithEmbed(link) {
174
- const type = link.embed && link.embed.type;
175
- link.class = classnames(link.class, {
176
- instructure_file_link: true,
177
- instructure_scribd_file: type === 'scribd' || link['data-canvas-previewable'],
178
- instructure_image_thumbnail: type === 'image',
179
- instructure_video_link: type === 'video',
180
- instructure_audio_link: type === 'audio',
181
- auto_open: link.embed && link.embed.autoOpenPreview,
182
- inline_disabled: link.embed && link.embed.disableInlinePreview,
183
- no_preview: link.embed && link.embed.noPreview
184
- });
185
-
186
- if (link.embed.type === 'video' || link.embed.type === 'audio') {
187
- link.id = `media_comment_${link.embed.id || 'maybe'}`;
188
- }
189
- }
190
-
191
- export function insertLink(editor, link, canvasOrigin) {
192
- const linkAttrs = { ...link
193
- };
194
-
195
- if (linkAttrs.embed) {
196
- decorateLinkWithEmbed(linkAttrs);
197
- delete linkAttrs.embed;
198
- }
199
-
200
- return insertUndecoratedLink(editor, linkAttrs, canvasOrigin);
201
- }
202
-
203
- function textForLink(linkProps, editor, anchorElm) {
204
- // Some actions (like editing the link text in the link tray)
205
- // require an explicit update to the link text
206
- if (linkProps.forceRename) return linkProps.text; // Other actions (link highlighting an existing link and changing
207
- // the linked file) should use the anchor text if present
208
-
209
- return getAnchorText(editor.selection, anchorElm) || linkProps.text;
210
- } // link edit/create logic based on tinymce/plugins/link/plugin.ts
211
-
212
-
213
- function insertUndecoratedLink(editor, linkProps, canvasOrigin) {
214
- const selectedElm = editor.selection.getNode();
215
- const anchorElm = getAnchorElement(editor, selectedElm);
216
- const selectedContent = editor.selection.getContent();
217
- const selectedPlainText = editor.selection.getContent({
218
- format: 'text'
219
- });
220
- const onlyText = isOnlyTextSelected(selectedContent);
221
- const linkText = onlyText && textForLink(linkProps, editor, anchorElm); // only keep the props we want as attributes on the <a>
222
-
223
- const linkAttrs = {
224
- id: linkProps.id,
225
- href: absoluteToRelativeUrl(cleanUrl(linkProps.href || linkProps.url), canvasOrigin),
226
- target: linkProps.target,
227
- class: linkProps.class,
228
- title: linkProps.title,
229
- 'data-canvas-previewable': linkProps['data-canvas-previewable'],
230
- 'data-course-type': linkProps['data-course-type'],
231
- 'data-published': linkProps['data-published']
232
- };
233
-
234
- if (linkAttrs.target === '_blank') {
235
- linkAttrs.rel = 'noopener noreferrer';
236
- }
237
-
238
- if (anchorElm && !editor.selection.isCollapsed()) {
239
- updateLink(editor, anchorElm, linkText, linkAttrs);
240
- } else if (selectedContent) {
241
- if (linkProps.userText && selectedPlainText !== linkText) {
242
- createLink(editor, selectedElm, linkText, linkAttrs, canvasOrigin);
243
- } else {
244
- createLink(editor, selectedElm, undefined, linkAttrs, canvasOrigin);
245
- }
246
- } else {
247
- createLink(editor, selectedElm, linkText, linkAttrs, canvasOrigin);
248
- }
249
-
250
- return editor.selection.getEnd(); // this will be the newly created or updated content
251
- }
252
-
253
- function getAnchorText(selection, anchorElm) {
254
- return anchorElm ? anchorElm.innerText : selection.getContent({
255
- format: 'text'
256
- });
257
- }
258
-
259
- function updateLink(editor, anchorElm, text, linkAttrs) {
260
- if (text && anchorElm.innerText !== text) {
261
- anchorElm.innerText = text;
262
- }
263
-
264
- editor.dom.setAttribs(anchorElm, linkAttrs);
265
- editor.selection.select(anchorElm);
266
- editor.undoManager.add();
267
- }
268
-
269
- function createLink(editor, selectedElm, text, linkAttrs, canvasOrigin) {
270
- if (isImageFigure(selectedElm)) {
271
- linkImageFigure(editor, selectedElm, linkAttrs, canvasOrigin);
272
- } else if (text) {
273
- // create the whole wazoo
274
- insertContent(editor, renderLink(linkAttrs, text, canvasOrigin));
275
- } else {
276
- // create a link on the selected content
277
- editor.execCommand('mceInsertLink', false, linkAttrs);
278
- }
279
- }
280
-
281
- function linkImageFigure(editor, fig, attrs, canvasOrigin) {
282
- const img = fig.tagName === 'IMG' ? fig : editor.dom.select('img', fig)[0];
283
-
284
- if (img) {
285
- const a = renderLink(attrs, img, canvasOrigin);
286
- img.parentNode.insertBefore(a, img);
287
- }
288
- }
289
- /* ** video insertion ** */
290
-
291
-
292
- export function insertVideo(editor, video, canvasOrigin) {
293
- return insertMedia(editor, video, renderVideo, canvasOrigin);
294
- }
295
- export function insertAudio(editor, audio, canvasOrigin) {
296
- return insertMedia(editor, audio, renderAudio, canvasOrigin);
297
- }
298
-
299
- function insertMedia(editor, media, renderMedia, canvasOrigin) {
300
- const src = mediaPlayerURLFromFile(media, canvasOrigin);
301
-
302
- if (editor.selection.isCollapsed()) {
303
- var _result;
304
-
305
- let result = insertContent(editor, renderMedia(media, canvasOrigin)); // for some reason, editor.selection.getEnd() returned from
306
- // insertContent is parent paragraph when inserting the
307
- // media iframe. Look for the iframe with the right
308
- // src attribute. (Aside: tinymce strips the id or data-*
309
- // attributes from the iframe, that's why we can't look for those)
310
-
311
- result = result.querySelector(`iframe[src="${src}"]`); // When the iframe is inserted, it doesn't allow the media to play
312
- // because the wrapping span captures the click events. Setting
313
- // contentEditable to false disables this behavior.
314
-
315
- if ((_result = result) !== null && _result !== void 0 && _result.parentElement) {
316
- editor.dom.setAttrib(result.parentElement, 'contenteditable', false);
317
- }
318
-
319
- return result;
320
- } else {
321
- return insertLink(editor, { ...media,
322
- href: src
323
- }, canvasOrigin);
324
- }
325
- }
@@ -1,85 +0,0 @@
1
- /*
2
- * Copyright (C) 2018 - 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
- * functions in this module SHOULD NOT have side effects,
21
- * but should be focused around providing necessary data
22
- * or dom transformations with no state in this file.
23
- */
24
-
25
- /**
26
- * transforms an input url to make a link out of
27
- * into a correctly formed url. If it's clearly a mailing link,
28
- * adds mailto: to the front, and if it has no protocol but isn't an
29
- * absolute path, it prepends "http://".
30
- *
31
- * @param {string} input the raw url representative input by a user
32
- *
33
- * @returns {string} a well formed url
34
- */
35
- export function cleanUrl(input) {
36
- let url = input;
37
-
38
- if (input) {
39
- if (input.match(/@/) && !input.match(/\//) && !input.match(/^mailto:/)) {
40
- url = 'mailto:' + input;
41
- } else if (!input.match(/^\w+:\/\//) && !input.match(/^(?:mailto|skype|tel):/) && !input.match(/^\//)) {
42
- url = 'http://' + input;
43
- }
44
-
45
- if (url.indexOf('@') != -1 && url.indexOf('mailto:') != 0 && !url.match(/^http/)) {
46
- url = 'mailto:' + url;
47
- }
48
- }
49
-
50
- return url;
51
- } // given the current selection, find the containing anchor
52
-
53
- export function getAnchorElement(editor, selectedElm) {
54
- selectedElm = selectedElm || editor.selection.getNode();
55
-
56
- if (isImageFigure(selectedElm)) {
57
- return editor.dom.select('a[href]', selectedElm)[0];
58
- } else {
59
- return editor.dom.getParent(selectedElm, 'a[href]');
60
- }
61
- } // is the selection only text, or are other elements selected
62
-
63
- const d = document.createElement('div');
64
- export function isOnlyTextSelected(html) {
65
- // this regex-based code is lifted from tinymce's link plugin, but I didn't like it.
66
- // if (/</.test(html) && (!/^<a [^>]+>[^<]+<\/a>$/.test(html) || html.indexOf('href=') === -1)) {
67
- // return false
68
- // }
69
- // return true
70
- d.innerHTML = html;
71
- return !d.querySelector('img,iframe,video,audio');
72
- }
73
- export function isOKToLink(html) {
74
- // I know, parsing html with regexp is dangerous, but this is called way too often
75
- // from the instructure_link/plugin.ts to create the nodes for a better check
76
- if (/(?:<(iframe|audio|video)|data-placeholder-for)/.test(html)) {
77
- return false;
78
- }
79
-
80
- return true;
81
- }
82
- export function isImageFigure(elm) {
83
- return elm && elm.nodeName === 'FIGURE' && /\bimage\b/i.test(elm.className) // (elm.nodeName === 'IMG' || (elm.nodeName === 'FIGURE' && /\bimage\b/i.test(elm.className)))
84
- ;
85
- }
@@ -1,145 +0,0 @@
1
- /*
2
- * Copyright (C) 2018 - 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 { renderToStaticMarkup } from 'react-dom/server';
20
- import { cleanUrl } from './contentInsertionUtils';
21
- import formatMessage from '../format-message';
22
- import { VIDEO_SIZE_DEFAULT, AUDIO_PLAYER_SIZE } from './plugins/instructure_record/VideoOptionsTray/TrayController';
23
- import { mediaPlayerURLFromFile } from './plugins/shared/fileTypeUtils';
24
- import { prepEmbedSrc, prepLinkedSrc, absoluteToRelativeUrl } from '../common/fileUrl';
25
- export function renderLink(data, contents, canvasOrigin) {
26
- const linkAttrs = { ...data
27
- };
28
- linkAttrs.href = prepLinkedSrc(linkAttrs.href || linkAttrs.url);
29
- delete linkAttrs.url;
30
-
31
- if (linkAttrs.href) {
32
- linkAttrs.href = absoluteToRelativeUrl(cleanUrl(linkAttrs.href), canvasOrigin);
33
- }
34
-
35
- linkAttrs.title = linkAttrs.title || formatMessage('Link');
36
- const children = contents || linkAttrs.text || linkAttrs.title;
37
- delete linkAttrs.selectionDetails;
38
- delete linkAttrs.text;
39
- linkAttrs.className = linkAttrs.class;
40
- delete linkAttrs.class; // renderToStaticMarkup isn't happy with bool attributes
41
-
42
- Object.keys(linkAttrs).forEach(attr => {
43
- if (typeof linkAttrs[attr] === 'boolean') linkAttrs[attr] = linkAttrs[attr].toString();
44
- });
45
- return renderToStaticMarkup( /*#__PURE__*/React.createElement("a", linkAttrs, children));
46
- }
47
- export function renderLinkedImage(linkElem, image, canvasOrigin) {
48
- const linkHref = linkElem.getAttribute('href');
49
- image.href = prepEmbedSrc(image.href, canvasOrigin);
50
- return renderToStaticMarkup( /*#__PURE__*/React.createElement("a", {
51
- href: absoluteToRelativeUrl(linkHref, canvasOrigin),
52
- "data-mce-href": linkHref
53
- }, constructJSXImageElement(image, canvasOrigin, {
54
- doNotLink: true
55
- })));
56
- }
57
- export function constructJSXImageElement(image, canvasOrigin) {
58
- let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
59
- const {
60
- href,
61
- url,
62
- src,
63
- title,
64
- display_name,
65
- alt_text,
66
- isDecorativeImage,
67
- link,
68
- ...otherAttributes
69
- } = image;
70
- const imageSrc = absoluteToRelativeUrl(href || url || src, canvasOrigin);
71
- let altText = alt_text || title || display_name || '';
72
-
73
- if (isDecorativeImage) {
74
- altText = '';
75
- otherAttributes.role = 'presentation';
76
- }
77
-
78
- delete otherAttributes.contextType; // react doesn't like these
79
-
80
- delete otherAttributes.contextId;
81
- const ret = /*#__PURE__*/React.createElement("img", Object.assign({
82
- alt: altText,
83
- src: imageSrc,
84
- width: image.width,
85
- height: image.height
86
- }, otherAttributes));
87
-
88
- if (link && !opts.doNotLink) {
89
- return /*#__PURE__*/React.createElement("a", {
90
- href: absoluteToRelativeUrl(link, canvasOrigin),
91
- target: "_blank",
92
- rel: "noopener noreferrer"
93
- }, ret);
94
- }
95
-
96
- return ret;
97
- }
98
- export function renderImage(image, canvasOrigin, opts) {
99
- image.href = prepEmbedSrc(image.href, canvasOrigin);
100
- return renderToStaticMarkup(constructJSXImageElement(image, canvasOrigin, opts));
101
- }
102
- export function renderVideo(video, canvasOrigin) {
103
- const src = mediaPlayerURLFromFile(video, canvasOrigin);
104
- return `
105
- <iframe
106
- allow="fullscreen"
107
- allowfullscreen
108
- data-media-id="${getMediaId(video)}"
109
- data-media-type="video"
110
- src="${src}"
111
- style="width:${VIDEO_SIZE_DEFAULT.width};height:${VIDEO_SIZE_DEFAULT.height};display:inline-block;"
112
- title="${formatMessage('Video player for {title}', {
113
- title: video.title || video.name || video.text
114
- })}"></iframe>
115
- `.trim().replace(/\s+/g, ' ');
116
- }
117
- export function renderAudio(audio, canvasOrigin) {
118
- const src = mediaPlayerURLFromFile(audio, canvasOrigin);
119
- return `
120
- <iframe
121
- data-media-id="${getMediaId(audio)}"
122
- data-media-type="audio"
123
- src="${src}"
124
- style="width:${AUDIO_PLAYER_SIZE.width};height:${AUDIO_PLAYER_SIZE.height};display:inline-block;"
125
- title="${formatMessage('Audio player for {title}', {
126
- title: audio.title || audio.name || audio.text
127
- })}"></iframe>
128
- `.trim().replace(/\s+/g, ' ');
129
- }
130
- export function getMediaId(media) {
131
- if (!media) return;
132
- return media.media_id || media.media_entry_id || media.id || media.file_id;
133
- }
134
- export function updateImage(editor, img, attrs) {
135
- var _editor$rceWrapper;
136
-
137
- // Workaround: When passing empty string to editor.dom.setAttribs it removes the attribute
138
- img.setAttribute('alt', attrs.altText);
139
- editor.dom.setAttribs(img, {
140
- src: absoluteToRelativeUrl(attrs.url, (_editor$rceWrapper = editor.rceWrapper) === null || _editor$rceWrapper === void 0 ? void 0 : _editor$rceWrapper.getCanvasUrl()),
141
- role: attrs.isDecorativeImage ? 'presentation' : null,
142
- width: attrs.appliedWidth,
143
- height: attrs.appliedHeight
144
- });
145
- }
@@ -1,18 +0,0 @@
1
- /*
2
- * Copyright (C) 2021 - present Instructure, Inc.
3
- *
4
- * This file is part of Canvas.
5
- *
6
- * Canvas is free software: you can redistribute it and/or modify it under
7
- * the terms of the GNU Affero General Public License as published by the Free
8
- * Software Foundation, version 3 of the License.
9
- *
10
- * Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
11
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
- * A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
13
- * details.
14
- *
15
- * You should have received a copy of the GNU Affero General Public License along
16
- * with this program. If not, see <http://www.gnu.org/licenses/>.
17
- */
18
- export const VIEW_CHANGE = 'ViewChange'; // Emitted when the RCE view changes (example: WYSIWYG -> RAW)
@@ -1,101 +0,0 @@
1
- /*
2
- * Copyright (C) 2018 - 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
- // if a locale is absent, we don't expect to receive it from canvas, but we'll
19
- // treat it the same as how we explicitly use english for Maori.
20
- const mapping = {
21
- ar: 'ar_SA',
22
- bg: 'bg_BG',
23
- ca: 'ca',
24
- cs: 'cs',
25
- cy: 'cy',
26
- da: 'da',
27
- de: 'de',
28
- el: 'el',
29
- // returning undefined tell tinymce to use it's default (en) strings
30
- en: undefined,
31
- // tinymce doesn't have Australian strings, so just pretend it's en-GB
32
- 'en-AU': 'en_GB',
33
- 'en-GB': 'en_GB',
34
- es: 'es',
35
- 'es-ES': 'es',
36
- fa: 'fa_IR',
37
- 'fa-IR': 'fa_IR',
38
- fi: 'fi',
39
- fr: 'fr_FR',
40
- 'fr-CA': 'fr_FR',
41
- he: 'he_IL',
42
- ht: undefined,
43
- // tiny doesn't have Haitian Creole
44
- hu: 'hu_HU',
45
- hy: 'hy',
46
- is: undefined,
47
- // tiny doesn't have Icelandic
48
- it: 'it',
49
- ja: 'ja',
50
- ko: 'ko_KR',
51
- mi: undefined,
52
- ms: undefined,
53
- // tiny has Malayalam but not Malay Standard, haiyaa
54
- nb: 'nb_NO',
55
- nl: 'nl',
56
- nn: 'nb_NO',
57
- // tiny doesn't have Norwegian (Nynorsk) so go to Norwegian (Bokmal)
58
- pl: 'pl',
59
- pt: 'pt_PT',
60
- 'pt-BR': 'pt_BR',
61
- ro: 'ro',
62
- ru: 'ru',
63
- sq: undefined,
64
- // tiny doesn't have Albanian
65
- sr: 'sr',
66
- sl: 'sl',
67
- sv: 'sv_SE',
68
- th: 'th',
69
- tr: 'tr_TR',
70
- 'uk-UA': 'uk_UA',
71
- uk: 'uk_UA',
72
- vi: 'vi_VN',
73
- zh: 'zh_CN',
74
- 'zh-HK': 'zh_TW',
75
- 'zh-Hans': 'zh_CN',
76
- 'zh-Hant': 'zh_TW'
77
- }; // still expose it as a method for consistent usage and in case we ever have to
78
- // add special casing or null interpretation in the future
79
-
80
- function editorLanguage(locale) {
81
- if (!locale) {
82
- return mapping.en;
83
- }
84
-
85
- if (locale.match('_')) {
86
- locale = locale.replace('_', '-');
87
- } // tinymce won't know about custom locales, use the base one for mapping
88
-
89
-
90
- if (locale.match('-x-')) {
91
- locale = locale.split('-x-')[0];
92
- }
93
-
94
- if (mapping[locale]) {
95
- return mapping[locale];
96
- }
97
-
98
- return mapping[locale.split('-')[0]];
99
- }
100
-
101
- module.exports = editorLanguage;