@instructure/canvas-rce 5.11.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 (505) hide show
  1. package/CHANGELOG.md +32 -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/canvasFileBrowser/FileBrowser.js +6 -1
  6. package/es/common/fileUrl.js +3 -4
  7. package/es/defaultTinymceConfig.js +1 -1
  8. package/{lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/Lti13ContentItemJson.js → es/elementDenylist.js} +2 -6
  9. package/es/enhance-user-content/doc_previews.js +4 -0
  10. package/es/enhance-user-content/enhance_user_content.js +4 -59
  11. package/es/enhance-user-content/external_links.js +75 -0
  12. package/es/enhance-user-content/mathml.js +9 -7
  13. package/es/getThemeVars.js +4 -3
  14. package/es/getTranslations.js +77 -1
  15. package/es/index.js +1 -1
  16. package/es/rce/RCEWrapper.js +5 -2328
  17. package/es/rce/StatusBar.js +8 -2
  18. package/es/rce/contentInsertion.js +5 -2
  19. package/es/rce/plugins/instructure_documents/components/DocumentsPanel.js +3 -9
  20. package/es/rce/plugins/instructure_equation/EquationEditorModal/index.js +1 -1
  21. package/es/rce/plugins/instructure_equation/EquationEditorModal/styles.js +3 -11
  22. package/es/rce/plugins/instructure_equation/mathlive/index.js +5 -13
  23. package/es/rce/plugins/instructure_html_view/plugin.js +2 -2
  24. package/es/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +3 -2
  25. package/es/rce/plugins/instructure_image/ImageList/Image.js +2 -2
  26. package/es/rce/plugins/instructure_image/Images/index.js +3 -10
  27. package/es/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +3 -0
  28. package/es/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +3 -1
  29. package/es/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +26 -1
  30. package/es/rce/plugins/instructure_record/AudioOptionsTray/index.js +9 -3
  31. package/es/rce/plugins/instructure_record/MediaPanel/index.js +3 -9
  32. package/es/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +27 -2
  33. package/es/rce/plugins/instructure_record/VideoOptionsTray/index.js +35 -6
  34. package/es/rce/plugins/shared/fileShape.js +81 -9
  35. package/es/rce/plugins/shared/fileTypeUtils.js +6 -0
  36. package/es/rce/tinymce.oxide.content.min.css.js +732 -0
  37. package/es/rce/tinymce.oxide.skin.min.css.js +7 -0
  38. package/es/rcs/api.js +6 -4
  39. package/es/sidebar/store/configureStore.js +2 -2
  40. package/{lib/translations/locales/tg.js → es/translations/locales/ab.js} +1 -1
  41. package/es/translations/locales/cs.js +27 -0
  42. package/es/translations/locales/cs_CZ.js +27 -0
  43. package/{lib/translations/locales/sv_SE.js → es/translations/locales/da_DK.js} +2 -2
  44. package/{lib/translations/locales/se.js → es/translations/locales/en_NZ.js} +2 -2
  45. package/es/translations/locales/en_SE.js +26 -0
  46. package/es/translations/locales/en_US.js +26 -0
  47. package/es/translations/locales/hu_HU.js +27 -0
  48. package/{lib/translations/locales/ms.js → es/translations/locales/id.js} +632 -632
  49. package/{lib/translations/locales/th.js → es/translations/locales/id_ID.js} +1 -2
  50. package/{lib/translations/locales/vi_VN.js → es/translations/locales/ko_KR.js} +2 -2
  51. package/es/translations/locales/lt.js +26 -0
  52. package/es/translations/locales/lt_LT.js +26 -0
  53. package/es/translations/locales/mn_MN.js +26 -0
  54. package/es/translations/locales/nl_NL.js +27 -0
  55. package/{lib/translations/locales/es_GT.js → es/translations/locales/ro.js} +3 -3
  56. package/es/translations/locales/ru.js +2375 -32
  57. package/es/translations/locales/sv.js +2379 -30
  58. package/es/translations/locales/th.js +2401 -1
  59. package/es/translations/locales/tl_PH.js +26 -0
  60. package/es/translations/locales/tr.js +3 -0
  61. package/es/translations/locales/vi.js +2396 -8
  62. package/es/translations/locales/zh_TW.Big5.js +27 -0
  63. package/{lib/translations/locales/th_TH.js → es/translations/locales/zh_TW.js} +2 -2
  64. package/jest.config.js +0 -7
  65. package/package.json +9 -11
  66. package/scripts/build.js +1 -7
  67. package/scripts/publish_to_npm.sh +26 -0
  68. package/canvas/README.md +0 -84
  69. package/canvas/locales/en.json +0 -934
  70. package/canvas/package.json +0 -189
  71. package/es/common/scroll.js +0 -45
  72. package/es/types/inst-ui.d.js +0 -18
  73. package/es/types/ts-migration.js +0 -1
  74. package/lib/bridge/Bridge.js +0 -287
  75. package/lib/bridge/index.js +0 -21
  76. package/lib/canvasFileBrowser/FileBrowser.js +0 -452
  77. package/lib/canvasFileBrowser/en-US.js +0 -234
  78. package/lib/common/FlashAlert.js +0 -263
  79. package/lib/common/browser.js +0 -40
  80. package/lib/common/components/FileTree/File.js +0 -64
  81. package/lib/common/components/FileTree/Folder.js +0 -110
  82. package/lib/common/components/FileTree/index.js +0 -84
  83. package/lib/common/components/FileTree/styles.js +0 -72
  84. package/lib/common/components/Loading.js +0 -83
  85. package/lib/common/fileUrl.js +0 -153
  86. package/lib/common/getCookie.js +0 -32
  87. package/lib/common/incremental-loading/LoadMoreButton.js +0 -40
  88. package/lib/common/incremental-loading/LoadingIndicator.js +0 -36
  89. package/lib/common/incremental-loading/LoadingStatus.js +0 -47
  90. package/lib/common/incremental-loading/index.js +0 -21
  91. package/lib/common/incremental-loading/useIncrementalLoading.js +0 -58
  92. package/lib/common/indicate.js +0 -75
  93. package/lib/common/mimeClass.js +0 -120
  94. package/lib/common/natcompare.js +0 -47
  95. package/lib/common/scroll.js +0 -45
  96. package/lib/defaultTinymceConfig.js +0 -160
  97. package/lib/enhance-user-content/doc_previews.js +0 -233
  98. package/lib/enhance-user-content/enhance_user_content.js +0 -396
  99. package/lib/enhance-user-content/index.js +0 -21
  100. package/lib/enhance-user-content/instructure_helper.js +0 -207
  101. package/lib/enhance-user-content/jqueryish_funcs.js +0 -88
  102. package/lib/enhance-user-content/mathml.js +0 -397
  103. package/lib/enhance-user-content/media_comment_thumbnail.js +0 -130
  104. package/lib/format-message.js +0 -30
  105. package/lib/getThemeVars.js +0 -45
  106. package/lib/getTranslations.js +0 -264
  107. package/lib/index.js +0 -51
  108. package/lib/rce/AlertMessageArea.js +0 -47
  109. package/lib/rce/DraggingBlocker.js +0 -43
  110. package/lib/rce/KeyboardShortcutModal.js +0 -88
  111. package/lib/rce/RCE.js +0 -150
  112. package/lib/rce/RCEGlobals.js +0 -62
  113. package/lib/rce/RCEWrapper.js +0 -4278
  114. package/lib/rce/RCEWrapperProps.js +0 -130
  115. package/lib/rce/RceHtmlEditor.js +0 -142
  116. package/lib/rce/ResizeHandle.js +0 -102
  117. package/lib/rce/RestoreAutoSaveModal.js +0 -82
  118. package/lib/rce/ShowOnFocusButton/index.js +0 -93
  119. package/lib/rce/StatusBar.js +0 -380
  120. package/lib/rce/__mocks__/_mockCryptoEs.js +0 -124
  121. package/lib/rce/__mocks__/styleMock.js +0 -18
  122. package/lib/rce/__mocks__/tinymceReact.js +0 -55
  123. package/lib/rce/alertHandler.js +0 -46
  124. package/lib/rce/contentInsertion.js +0 -322
  125. package/lib/rce/contentInsertionUtils.js +0 -85
  126. package/lib/rce/contentRendering.js +0 -145
  127. package/lib/rce/customEvents.js +0 -18
  128. package/lib/rce/editorLanguage.js +0 -101
  129. package/lib/rce/indicatorRegion.js +0 -49
  130. package/lib/rce/normalizeLocale.js +0 -50
  131. package/lib/rce/normalizeProps.js +0 -29
  132. package/lib/rce/plugins/instructure-ui-icons/plugin.js +0 -122
  133. package/lib/rce/plugins/instructure_condensed_buttons/core/ListUtils.js +0 -24
  134. package/lib/rce/plugins/instructure_condensed_buttons/plugin.js +0 -27
  135. package/lib/rce/plugins/instructure_condensed_buttons/ui/alignment-button.js +0 -63
  136. package/lib/rce/plugins/instructure_condensed_buttons/ui/directionality-button.js +0 -48
  137. package/lib/rce/plugins/instructure_condensed_buttons/ui/indent-outdent-button.js +0 -41
  138. package/lib/rce/plugins/instructure_condensed_buttons/ui/list-button.js +0 -145
  139. package/lib/rce/plugins/instructure_condensed_buttons/ui/subscript-superscript-button.js +0 -56
  140. package/lib/rce/plugins/instructure_documents/clickCallback.js +0 -23
  141. package/lib/rce/plugins/instructure_documents/components/DocumentsPanel.js +0 -126
  142. package/lib/rce/plugins/instructure_documents/components/Link.js +0 -219
  143. package/lib/rce/plugins/instructure_documents/plugin.js +0 -123
  144. package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedOnlySyntax.js +0 -25
  145. package/lib/rce/plugins/instructure_equation/EquationEditorModal/advancedPreference.js +0 -51
  146. package/lib/rce/plugins/instructure_equation/EquationEditorModal/index.js +0 -321
  147. package/lib/rce/plugins/instructure_equation/EquationEditorModal/latexTextareaUtil.js +0 -116
  148. package/lib/rce/plugins/instructure_equation/EquationEditorModal/parseLatex.js +0 -91
  149. package/lib/rce/plugins/instructure_equation/EquationEditorModal/styles.js +0 -46
  150. package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/buttons.js +0 -728
  151. package/lib/rce/plugins/instructure_equation/EquationEditorToolbar/index.js +0 -84
  152. package/lib/rce/plugins/instructure_equation/MathIcon/index.js +0 -41
  153. package/lib/rce/plugins/instructure_equation/MathIcon/svgs.js +0 -236
  154. package/lib/rce/plugins/instructure_equation/clickCallback.js +0 -53
  155. package/lib/rce/plugins/instructure_equation/mathlive/index.js +0 -36
  156. package/lib/rce/plugins/instructure_equation/plugin.js +0 -69
  157. package/lib/rce/plugins/instructure_fullscreen/plugin.js +0 -50
  158. package/lib/rce/plugins/instructure_html_view/clickCallback.js +0 -21
  159. package/lib/rce/plugins/instructure_html_view/plugin.js +0 -37
  160. package/lib/rce/plugins/instructure_icon_maker/clickCallback.js +0 -57
  161. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ColorSection.js +0 -82
  162. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/CreateIconMakerForm.js +0 -56
  163. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Footer.js +0 -78
  164. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Group.js +0 -36
  165. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Header.js +0 -110
  166. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Course.js +0 -169
  167. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageOptions.js +0 -186
  168. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ImageSection.js +0 -243
  169. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/ModeSelect.js +0 -64
  170. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/index.js +0 -73
  171. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/MultiColor/svg.js +0 -298
  172. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGList.js +0 -86
  173. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SVGThumbnail.js +0 -55
  174. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/index.js +0 -70
  175. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/SingleColor/svg.js +0 -317
  176. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/Upload.js +0 -149
  177. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/index.js +0 -18
  178. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/propTypes.js +0 -32
  179. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ImageSection/utils.js +0 -25
  180. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/Preview.js +0 -60
  181. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/ShapeSection.js +0 -87
  182. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/TextSection.js +0 -139
  183. package/lib/rce/plugins/instructure_icon_maker/components/CreateIconMakerForm/index.js +0 -18
  184. package/lib/rce/plugins/instructure_icon_maker/components/IconMakerTray.js +0 -323
  185. package/lib/rce/plugins/instructure_icon_maker/components/SavedIconMakerList.js +0 -90
  186. package/lib/rce/plugins/instructure_icon_maker/plugin.js +0 -110
  187. package/lib/rce/plugins/instructure_icon_maker/reducers/imageSection.js +0 -194
  188. package/lib/rce/plugins/instructure_icon_maker/reducers/svgSettings.js +0 -98
  189. package/lib/rce/plugins/instructure_icon_maker/registerEditToolbar.js +0 -56
  190. package/lib/rce/plugins/instructure_icon_maker/svg/clipPath.js +0 -25
  191. package/lib/rce/plugins/instructure_icon_maker/svg/constants.js +0 -100
  192. package/lib/rce/plugins/instructure_icon_maker/svg/font.js +0 -25
  193. package/lib/rce/plugins/instructure_icon_maker/svg/image.js +0 -354
  194. package/lib/rce/plugins/instructure_icon_maker/svg/index.js +0 -122
  195. package/lib/rce/plugins/instructure_icon_maker/svg/metadata.js +0 -48
  196. package/lib/rce/plugins/instructure_icon_maker/svg/settings.js +0 -179
  197. package/lib/rce/plugins/instructure_icon_maker/svg/shape.js +0 -316
  198. package/lib/rce/plugins/instructure_icon_maker/svg/text.js +0 -468
  199. package/lib/rce/plugins/instructure_icon_maker/svg/utils.js +0 -70
  200. package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerClose.js +0 -45
  201. package/lib/rce/plugins/instructure_icon_maker/utils/IconMakerFormHasChanges.js +0 -83
  202. package/lib/rce/plugins/instructure_icon_maker/utils/addIconMakerAttributes.js +0 -28
  203. package/lib/rce/plugins/instructure_icon_maker/utils/iconValidation.js +0 -35
  204. package/lib/rce/plugins/instructure_icon_maker/utils/iconsLabels.js +0 -375
  205. package/lib/rce/plugins/instructure_icon_maker/utils/useDebouncedValue.js +0 -59
  206. package/lib/rce/plugins/instructure_image/ImageEmbedOptions.js +0 -202
  207. package/lib/rce/plugins/instructure_image/ImageList/Image.js +0 -106
  208. package/lib/rce/plugins/instructure_image/ImageList/index.js +0 -69
  209. package/lib/rce/plugins/instructure_image/ImageOptionsTray/TrayController.js +0 -166
  210. package/lib/rce/plugins/instructure_image/ImageOptionsTray/index.js +0 -246
  211. package/lib/rce/plugins/instructure_image/Images/index.js +0 -129
  212. package/lib/rce/plugins/instructure_image/clickCallback.js +0 -24
  213. package/lib/rce/plugins/instructure_image/plugin.js +0 -157
  214. package/lib/rce/plugins/instructure_links/clickCallback.js +0 -22
  215. package/lib/rce/plugins/instructure_links/components/AccordionSection.js +0 -60
  216. package/lib/rce/plugins/instructure_links/components/CollectionPanel.js +0 -84
  217. package/lib/rce/plugins/instructure_links/components/Link.js +0 -213
  218. package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/LinkOptionsDialogController.js +0 -127
  219. package/lib/rce/plugins/instructure_links/components/LinkOptionsDialog/index.js +0 -141
  220. package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/LinkOptionsTrayController.js +0 -125
  221. package/lib/rce/plugins/instructure_links/components/LinkOptionsTray/index.js +0 -245
  222. package/lib/rce/plugins/instructure_links/components/LinkSet.js +0 -195
  223. package/lib/rce/plugins/instructure_links/components/LinksPanel.js +0 -100
  224. package/lib/rce/plugins/instructure_links/components/NavigationPanel.js +0 -141
  225. package/lib/rce/plugins/instructure_links/components/NoResults.js +0 -87
  226. package/lib/rce/plugins/instructure_links/components/propTypes.js +0 -41
  227. package/lib/rce/plugins/instructure_links/plugin.js +0 -294
  228. package/lib/rce/plugins/instructure_links/validateURL.js +0 -70
  229. package/lib/rce/plugins/instructure_media_embed/clickCallback.js +0 -48
  230. package/lib/rce/plugins/instructure_media_embed/components/Embed.js +0 -68
  231. package/lib/rce/plugins/instructure_media_embed/plugin.js +0 -36
  232. package/lib/rce/plugins/instructure_paste/pasteMenuCommand.js +0 -117
  233. package/lib/rce/plugins/instructure_paste/plugin.js +0 -174
  234. package/lib/rce/plugins/instructure_rce_external_tools/ExternalToolsEnv.js +0 -169
  235. package/lib/rce/plugins/instructure_rce_external_tools/RceToolWrapper.js +0 -225
  236. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialog.js +0 -294
  237. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogModal.js +0 -46
  238. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolDialog/ExternalToolDialogTray.js +0 -79
  239. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionDialog.js +0 -153
  240. package/lib/rce/plugins/instructure_rce_external_tools/components/ExternalToolSelectionDialog/ExternalToolSelectionItem.js +0 -94
  241. package/lib/rce/plugins/instructure_rce_external_tools/components/util/ExpandoText.js +0 -90
  242. package/lib/rce/plugins/instructure_rce_external_tools/components/util/ToolLaunchIframe.js +0 -35
  243. package/lib/rce/plugins/instructure_rce_external_tools/dialog-helper.js +0 -29
  244. package/lib/rce/plugins/instructure_rce_external_tools/helpers/tags.js +0 -55
  245. package/lib/rce/plugins/instructure_rce_external_tools/jquery/jquery.dropdownList.js +0 -172
  246. package/lib/rce/plugins/instructure_rce_external_tools/lti11-content-items/RceLti11ContentItem.js +0 -203
  247. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/RceLti13ContentItem.js +0 -111
  248. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/BaseLinkContentItem.js +0 -79
  249. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/HtmlFragmentContentItem.js +0 -47
  250. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ImageContentItem.js +0 -57
  251. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/LinkContentItem.js +0 -26
  252. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/models/ResourceLinkContentItem.js +0 -45
  253. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/processEditorContentItems.js +0 -67
  254. package/lib/rce/plugins/instructure_rce_external_tools/lti13-content-items/rceLti13ContentItemFromJson.js +0 -48
  255. package/lib/rce/plugins/instructure_rce_external_tools/plugin.js +0 -112
  256. package/lib/rce/plugins/instructure_rce_external_tools/util/addParentFrameContextToUrl.js +0 -27
  257. package/lib/rce/plugins/instructure_record/AudioOptionsTray/TrayController.js +0 -127
  258. package/lib/rce/plugins/instructure_record/AudioOptionsTray/index.js +0 -148
  259. package/lib/rce/plugins/instructure_record/MediaPanel/index.js +0 -129
  260. package/lib/rce/plugins/instructure_record/VideoOptionsTray/TrayController.js +0 -215
  261. package/lib/rce/plugins/instructure_record/VideoOptionsTray/index.js +0 -321
  262. package/lib/rce/plugins/instructure_record/clickCallback.js +0 -105
  263. package/lib/rce/plugins/instructure_record/mediaTranslations.js +0 -94
  264. package/lib/rce/plugins/instructure_record/plugin.js +0 -173
  265. package/lib/rce/plugins/instructure_studio_media_options/plugin.js +0 -42
  266. package/lib/rce/plugins/instructure_wordcount/clickCallback.js +0 -49
  267. package/lib/rce/plugins/instructure_wordcount/components/WordCountModal.js +0 -88
  268. package/lib/rce/plugins/instructure_wordcount/plugin.js +0 -30
  269. package/lib/rce/plugins/instructure_wordcount/utils/countContent.js +0 -78
  270. package/lib/rce/plugins/instructure_wordcount/utils/tableContent.js +0 -40
  271. package/lib/rce/plugins/shared/CanvasContentTray.js +0 -580
  272. package/lib/rce/plugins/shared/CheckerboardStyling.js +0 -25
  273. package/lib/rce/plugins/shared/ColorInput.js +0 -233
  274. package/lib/rce/plugins/shared/ConditionalTooltip.js +0 -32
  275. package/lib/rce/plugins/shared/ContentSelection.js +0 -269
  276. package/lib/rce/plugins/shared/DimensionUtils.js +0 -66
  277. package/lib/rce/plugins/shared/DimensionsInput/DimensionInput.js +0 -62
  278. package/lib/rce/plugins/shared/DimensionsInput/index.js +0 -161
  279. package/lib/rce/plugins/shared/DimensionsInput/useDimensionsState.js +0 -220
  280. package/lib/rce/plugins/shared/ErrorBoundary.js +0 -54
  281. package/lib/rce/plugins/shared/EventUtils.js +0 -39
  282. package/lib/rce/plugins/shared/Filter.js +0 -353
  283. package/lib/rce/plugins/shared/FixedContentTray.js +0 -115
  284. package/lib/rce/plugins/shared/ImageCropper/DirectionRegion.js +0 -67
  285. package/lib/rce/plugins/shared/ImageCropper/Modal.js +0 -153
  286. package/lib/rce/plugins/shared/ImageCropper/Preview.js +0 -148
  287. package/lib/rce/plugins/shared/ImageCropper/constants.js +0 -39
  288. package/lib/rce/plugins/shared/ImageCropper/controls/CustomNumberInput.js +0 -83
  289. package/lib/rce/plugins/shared/ImageCropper/controls/ResetControls.js +0 -38
  290. package/lib/rce/plugins/shared/ImageCropper/controls/RotationControls.js +0 -89
  291. package/lib/rce/plugins/shared/ImageCropper/controls/ShapeControls.js +0 -82
  292. package/lib/rce/plugins/shared/ImageCropper/controls/ZoomControls.js +0 -111
  293. package/lib/rce/plugins/shared/ImageCropper/controls/index.js +0 -61
  294. package/lib/rce/plugins/shared/ImageCropper/controls/useDebouncedNumericValue.js +0 -94
  295. package/lib/rce/plugins/shared/ImageCropper/controls/utils.js +0 -41
  296. package/lib/rce/plugins/shared/ImageCropper/imageCropUtils.js +0 -149
  297. package/lib/rce/plugins/shared/ImageCropper/index.js +0 -18
  298. package/lib/rce/plugins/shared/ImageCropper/propTypes.js +0 -26
  299. package/lib/rce/plugins/shared/ImageCropper/reducers/imageCropper.js +0 -72
  300. package/lib/rce/plugins/shared/ImageCropper/shape.js +0 -27
  301. package/lib/rce/plugins/shared/ImageCropper/svg/index.js +0 -89
  302. package/lib/rce/plugins/shared/ImageCropper/svg/shape.js +0 -125
  303. package/lib/rce/plugins/shared/ImageCropper/svg/utils.js +0 -26
  304. package/lib/rce/plugins/shared/ImageCropper/useKeyMouseEvents.js +0 -233
  305. package/lib/rce/plugins/shared/ImageCropper/useMouseWheel.js +0 -66
  306. package/lib/rce/plugins/shared/ImageOptionsForm.js +0 -140
  307. package/lib/rce/plugins/shared/LinkDisplay.js +0 -96
  308. package/lib/rce/plugins/shared/PreviewIcon.js +0 -112
  309. package/lib/rce/plugins/shared/Previewable.js +0 -22
  310. package/lib/rce/plugins/shared/RceFileBrowser.js +0 -106
  311. package/lib/rce/plugins/shared/StoreContext.js +0 -57
  312. package/lib/rce/plugins/shared/StudioLtiSupportUtils.js +0 -71
  313. package/lib/rce/plugins/shared/UnknownFileTypePanel.js +0 -29
  314. package/lib/rce/plugins/shared/Upload/CategoryProcessor.js +0 -27
  315. package/lib/rce/plugins/shared/Upload/ComputerPanel.js +0 -334
  316. package/lib/rce/plugins/shared/Upload/SvgCategoryProcessor.js +0 -35
  317. package/lib/rce/plugins/shared/Upload/UploadFile.js +0 -171
  318. package/lib/rce/plugins/shared/Upload/UploadFileModal.js +0 -273
  319. package/lib/rce/plugins/shared/Upload/UrlPanel.js +0 -38
  320. package/lib/rce/plugins/shared/Upload/UsageRightsSelectBox.js +0 -172
  321. package/lib/rce/plugins/shared/Upload/doFileUpload.js +0 -77
  322. package/lib/rce/plugins/shared/__mocks__/screenfull.js +0 -24
  323. package/lib/rce/plugins/shared/buildDownloadUrl.js +0 -31
  324. package/lib/rce/plugins/shared/compressionUtils.js +0 -98
  325. package/lib/rce/plugins/shared/dateUtils.js +0 -28
  326. package/lib/rce/plugins/shared/fileShape.js +0 -57
  327. package/lib/rce/plugins/shared/fileTypeUtils.js +0 -133
  328. package/lib/rce/plugins/shared/fileUtils.js +0 -25
  329. package/lib/rce/plugins/shared/linkUtils.js +0 -89
  330. package/lib/rce/plugins/shared/round.js +0 -25
  331. package/lib/rce/plugins/shared/trayUtils.js +0 -34
  332. package/lib/rce/plugins/shared/useDataUrl.js +0 -76
  333. package/lib/rce/plugins/tinymce-a11y-checker/components/ColorField.js +0 -86
  334. package/lib/rce/plugins/tinymce-a11y-checker/components/checker.js +0 -558
  335. package/lib/rce/plugins/tinymce-a11y-checker/components/color-picker.js +0 -59
  336. package/lib/rce/plugins/tinymce-a11y-checker/components/placeholder-svg.js +0 -90
  337. package/lib/rce/plugins/tinymce-a11y-checker/components/pointer.js +0 -32
  338. package/lib/rce/plugins/tinymce-a11y-checker/node-checker.js +0 -54
  339. package/lib/rce/plugins/tinymce-a11y-checker/plugin.js +0 -90
  340. package/lib/rce/plugins/tinymce-a11y-checker/rules/__mocks__/index.js +0 -53
  341. package/lib/rce/plugins/tinymce-a11y-checker/rules/adjacent-links.js +0 -129
  342. package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-sequence.js +0 -200
  343. package/lib/rce/plugins/tinymce-a11y-checker/rules/headings-start-at-h2.js +0 -67
  344. package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-filename.js +0 -63
  345. package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt-length.js +0 -49
  346. package/lib/rce/plugins/tinymce-a11y-checker/rules/img-alt.js +0 -61
  347. package/lib/rce/plugins/tinymce-a11y-checker/rules/index.js +0 -31
  348. package/lib/rce/plugins/tinymce-a11y-checker/rules/large-text-contrast.js +0 -51
  349. package/lib/rce/plugins/tinymce-a11y-checker/rules/list-structure.js +0 -144
  350. package/lib/rce/plugins/tinymce-a11y-checker/rules/paragraphs-for-headings.js +0 -61
  351. package/lib/rce/plugins/tinymce-a11y-checker/rules/small-text-contrast.js +0 -75
  352. package/lib/rce/plugins/tinymce-a11y-checker/rules/table-caption.js +0 -54
  353. package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header-scope.js +0 -52
  354. package/lib/rce/plugins/tinymce-a11y-checker/rules/table-header.js +0 -81
  355. package/lib/rce/plugins/tinymce-a11y-checker/utils/colors.js +0 -43
  356. package/lib/rce/plugins/tinymce-a11y-checker/utils/describe.js +0 -66
  357. package/lib/rce/plugins/tinymce-a11y-checker/utils/dom.js +0 -160
  358. package/lib/rce/plugins/tinymce-a11y-checker/utils/indicate.js +0 -83
  359. package/lib/rce/plugins/tinymce-a11y-checker/utils/rgb-hex.js +0 -57
  360. package/lib/rce/plugins/tinymce-a11y-checker/utils/strings.js +0 -40
  361. package/lib/rce/root.js +0 -58
  362. package/lib/rce/sanitizePlugins.js +0 -32
  363. package/lib/rce/style.js +0 -843
  364. package/lib/rce/tinyRCE.js +0 -66
  365. package/lib/rce/transformContent.js +0 -73
  366. package/lib/rce/userOS.js +0 -31
  367. package/lib/rce/wrapInitCb.js +0 -78
  368. package/lib/rcs/api.js +0 -670
  369. package/lib/rcs/buildError.js +0 -98
  370. package/lib/rcs/fake.js +0 -621
  371. package/lib/sidebar/actions/all_files.js +0 -29
  372. package/lib/sidebar/actions/data.js +0 -105
  373. package/lib/sidebar/actions/documents.js +0 -107
  374. package/lib/sidebar/actions/files.js +0 -167
  375. package/lib/sidebar/actions/filter.js +0 -63
  376. package/lib/sidebar/actions/flickr.js +0 -60
  377. package/lib/sidebar/actions/images.js +0 -153
  378. package/lib/sidebar/actions/links.js +0 -23
  379. package/lib/sidebar/actions/media.js +0 -142
  380. package/lib/sidebar/actions/session.js +0 -34
  381. package/lib/sidebar/actions/ui.js +0 -49
  382. package/lib/sidebar/actions/upload.js +0 -550
  383. package/lib/sidebar/containers/Sidebar.js +0 -67
  384. package/lib/sidebar/containers/sidebarHandlers.js +0 -73
  385. package/lib/sidebar/dragHtml.js +0 -49
  386. package/lib/sidebar/reducers/all_files.js +0 -35
  387. package/lib/sidebar/reducers/collection.js +0 -72
  388. package/lib/sidebar/reducers/collections.js +0 -52
  389. package/lib/sidebar/reducers/documents.js +0 -89
  390. package/lib/sidebar/reducers/files.js +0 -38
  391. package/lib/sidebar/reducers/filter.js +0 -61
  392. package/lib/sidebar/reducers/flickr.js +0 -51
  393. package/lib/sidebar/reducers/folder.js +0 -92
  394. package/lib/sidebar/reducers/folders.js +0 -39
  395. package/lib/sidebar/reducers/images.js +0 -115
  396. package/lib/sidebar/reducers/index.js +0 -57
  397. package/lib/sidebar/reducers/media.js +0 -84
  398. package/lib/sidebar/reducers/newPageLinkExpanded.js +0 -30
  399. package/lib/sidebar/reducers/noop.js +0 -21
  400. package/lib/sidebar/reducers/rootFolderId.js +0 -30
  401. package/lib/sidebar/reducers/session.js +0 -33
  402. package/lib/sidebar/reducers/ui.js +0 -87
  403. package/lib/sidebar/reducers/upload.js +0 -206
  404. package/lib/sidebar/store/configureStore.js +0 -26
  405. package/lib/sidebar/store/initialState.js +0 -173
  406. package/lib/translations/locales/ar.js +0 -2427
  407. package/lib/translations/locales/ca.js +0 -2427
  408. package/lib/translations/locales/cy.js +0 -2427
  409. package/lib/translations/locales/da-x-k12.js +0 -2427
  410. package/lib/translations/locales/da.js +0 -2427
  411. package/lib/translations/locales/de.js +0 -2427
  412. package/lib/translations/locales/el.js +0 -459
  413. package/lib/translations/locales/en-AU-x-unimelb.js +0 -2427
  414. package/lib/translations/locales/en-GB-x-ukhe.js +0 -2427
  415. package/lib/translations/locales/en.js +0 -2427
  416. package/lib/translations/locales/en_AU.js +0 -2427
  417. package/lib/translations/locales/en_CA.js +0 -2426
  418. package/lib/translations/locales/en_CY.js +0 -2426
  419. package/lib/translations/locales/en_GB.js +0 -2427
  420. package/lib/translations/locales/es.js +0 -2427
  421. package/lib/translations/locales/es_ES.js +0 -2427
  422. package/lib/translations/locales/fa_IR.js +0 -615
  423. package/lib/translations/locales/fi.js +0 -2427
  424. package/lib/translations/locales/fr.js +0 -2427
  425. package/lib/translations/locales/fr_CA.js +0 -2427
  426. package/lib/translations/locales/he.js +0 -486
  427. package/lib/translations/locales/ht.js +0 -2426
  428. package/lib/translations/locales/hu.js +0 -2007
  429. package/lib/translations/locales/hy.js +0 -444
  430. package/lib/translations/locales/is.js +0 -2426
  431. package/lib/translations/locales/it.js +0 -2427
  432. package/lib/translations/locales/ja.js +0 -2427
  433. package/lib/translations/locales/ko.js +0 -342
  434. package/lib/translations/locales/mi.js +0 -2426
  435. package/lib/translations/locales/nb-x-k12.js +0 -2427
  436. package/lib/translations/locales/nb.js +0 -2427
  437. package/lib/translations/locales/nl.js +0 -2427
  438. package/lib/translations/locales/nn.js +0 -2247
  439. package/lib/translations/locales/pl.js +0 -2427
  440. package/lib/translations/locales/pt.js +0 -2427
  441. package/lib/translations/locales/pt_BR.js +0 -2427
  442. package/lib/translations/locales/ru.js +0 -84
  443. package/lib/translations/locales/sl.js +0 -2427
  444. package/lib/translations/locales/sv-x-k12.js +0 -2427
  445. package/lib/translations/locales/sv.js +0 -78
  446. package/lib/translations/locales/tr.js +0 -684
  447. package/lib/translations/locales/uk_UA.js +0 -519
  448. package/lib/translations/locales/vi.js +0 -39
  449. package/lib/translations/locales/zh-Hans.js +0 -2427
  450. package/lib/translations/locales/zh-Hant.js +0 -2427
  451. package/lib/translations/locales/zh.js +0 -2427
  452. package/lib/translations/locales/zh_HK.js +0 -2427
  453. package/lib/translations/tinymce/ar_SA.js +0 -211
  454. package/lib/translations/tinymce/bg_BG.js +0 -419
  455. package/lib/translations/tinymce/ca.js +0 -419
  456. package/lib/translations/tinymce/cs.js +0 -419
  457. package/lib/translations/tinymce/cy.js +0 -418
  458. package/lib/translations/tinymce/da.js +0 -419
  459. package/lib/translations/tinymce/de.js +0 -419
  460. package/lib/translations/tinymce/el.js +0 -261
  461. package/lib/translations/tinymce/en_GB.js +0 -230
  462. package/lib/translations/tinymce/es.js +0 -419
  463. package/lib/translations/tinymce/fa_IR.js +0 -390
  464. package/lib/translations/tinymce/fi.js +0 -19
  465. package/lib/translations/tinymce/fr_FR.js +0 -419
  466. package/lib/translations/tinymce/he_IL.js +0 -420
  467. package/lib/translations/tinymce/hu_HU.js +0 -419
  468. package/lib/translations/tinymce/hy.js +0 -419
  469. package/lib/translations/tinymce/it.js +0 -419
  470. package/lib/translations/tinymce/ja.js +0 -419
  471. package/lib/translations/tinymce/ko_KR.js +0 -419
  472. package/lib/translations/tinymce/nb_NO.js +0 -419
  473. package/lib/translations/tinymce/nl.js +0 -419
  474. package/lib/translations/tinymce/pl.js +0 -419
  475. package/lib/translations/tinymce/pt_BR.js +0 -419
  476. package/lib/translations/tinymce/pt_PT.js +0 -419
  477. package/lib/translations/tinymce/ro.js +0 -418
  478. package/lib/translations/tinymce/ru.js +0 -436
  479. package/lib/translations/tinymce/ru_RU.js +0 -71
  480. package/lib/translations/tinymce/sl.js +0 -462
  481. package/lib/translations/tinymce/sr.js +0 -278
  482. package/lib/translations/tinymce/sv_SE.js +0 -419
  483. package/lib/translations/tinymce/th.js +0 -479
  484. package/lib/translations/tinymce/tr_TR.js +0 -389
  485. package/lib/translations/tinymce/uk_UA.js +0 -278
  486. package/lib/translations/tinymce/vi_VN.js +0 -277
  487. package/lib/translations/tinymce/zh_CN.js +0 -419
  488. package/lib/translations/tinymce/zh_TW.js +0 -419
  489. package/lib/types/inst-ui.d.js +0 -18
  490. package/lib/types/ts-migration.js +0 -1
  491. package/lib/util/DeepPartialNullable.js +0 -1
  492. package/lib/util/ExtractRequired.js +0 -1
  493. package/lib/util/TypedDict.js +0 -131
  494. package/lib/util/assertNever.js +0 -44
  495. package/lib/util/elem-util.js +0 -26
  496. package/lib/util/encrypted-storage.js +0 -84
  497. package/lib/util/file-url-util.js +0 -44
  498. package/lib/util/fullscreenHelpers.js +0 -27
  499. package/lib/util/instui-icon-helper.js +0 -31
  500. package/lib/util/loadingPlaceholder.js +0 -436
  501. package/lib/util/simpleCache.js +0 -41
  502. package/lib/util/string-util.js +0 -48
  503. package/lib/util/textarea-editing-util.js +0 -87
  504. package/lib/util/tinymce-plugin-util.js +0 -52
  505. package/lib/util/url-util.js +0 -138
@@ -1,322 +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 scroll from '../common/scroll';
21
- import { cleanUrl, getAnchorElement, isImageFigure, isOnlyTextSelected } from './contentInsertionUtils';
22
- import { mediaPlayerURLFromFile } from './plugins/shared/fileTypeUtils';
23
- import { absoluteToRelativeUrl } from '../common/fileUrl';
24
- /** * generic content insertion ** */
25
- // when the editor is hidden, just replace the selected portion of the textarea
26
- // with the content. branching is for cross-browser
27
-
28
- function replaceTextareaSelection(editor, content) {
29
- const element = editor.getElement();
30
-
31
- if ('selectionStart' in element) {
32
- // mozilla / dom 3.0
33
- const before = element.value.substr(0, element.selectionStart);
34
- const after = element.value.substr(element.selectionEnd, element.value.length);
35
- element.value = before + content + after;
36
- } else if (document.selection) {
37
- // exploder
38
- element.focus();
39
- document.selection.createRange().text = content;
40
- } else {
41
- // browser not supported
42
- element.value += content;
43
- }
44
- }
45
-
46
- export function insertContent(editor, content) {
47
- if (editor.isHidden()) {
48
- // replaces the textarea selection with the new image. no element returned
49
- // to indicate because it's raw html.
50
- replaceTextareaSelection(editor, content);
51
- return null;
52
- } else {
53
- // inserts content at the cursor. getEnd() of the selection after the
54
- // insertion should reference the newly created node (or first of the newly
55
- // created nodes if there were multiple, unfortunately), because the cursor
56
- // itself stays just before the new content.
57
- scroll.scrollIntoViewWDelay(editor.iframeElement, {}); // there's a bug in tinymce where insertContent calls execCommand('mceInsertContent'),
58
- // but doesn't correctly forward the second "args" argument. Let's go right for
59
- // execCommand
60
- // editor.insertContent(content, {skip_focus: true})
61
-
62
- editor.execCommand('mceInsertContent', false, content, {
63
- skip_focus: true
64
- });
65
- return editor.selection.getEnd();
66
- }
67
- }
68
- /** * image insertion ** */
69
-
70
- function isElemImg(elem) {
71
- return elem && elem.nodeName.toLowerCase() === 'img';
72
- }
73
-
74
- function isElemAnchor(elem) {
75
- return elem && elem.nodeName.toLowerCase() === 'a';
76
- }
77
- /*
78
- check if we should preserve the parent anchor tag. the criteria is pretty
79
- strict based on if we have a single image selected with an anchor tag
80
- surrounding
81
- */
82
-
83
-
84
- function shouldPreserveImgAnchor(editor) {
85
- const selection = editor.selection;
86
- const selectedRange = selection.getRng();
87
- return isElemImg(selection.getNode()) && isElemAnchor(selectedRange.startContainer) && selectedRange.startContainer === selectedRange.endContainer;
88
- }
89
-
90
- export function insertImage(editor, image, canvasOrigin) {
91
- let content = '';
92
-
93
- if (shouldPreserveImgAnchor(editor)) {
94
- content = renderLinkedImage(editor.selection.getRng().startContainer, image, canvasOrigin);
95
- } else {
96
- // render the image, constraining its size on insertion
97
- const imgNode = editor.selection.getNode(); // apply selected styles only in course/user images
98
-
99
- if (isElemImg(imgNode) && !image['data-inst-icon-maker-icon']) {
100
- const customStyles = imgNode.style;
101
- const customWidth = imgNode.getAttribute('width');
102
- const parseStyles = {};
103
-
104
- for (let i = 0; i < customStyles.length; ++i) {
105
- const cssAttribute = customStyles.item(i);
106
- parseStyles[cssAttribute] = customStyles[cssAttribute];
107
- }
108
-
109
- image.width = customWidth;
110
- image.style = parseStyles;
111
- }
112
-
113
- content = renderImage({ ...image
114
- }, canvasOrigin);
115
- }
116
-
117
- return insertContent(editor, content);
118
- }
119
- export function insertEquation(editor, latex) {
120
- const docSz = parseFloat(editor.dom.doc.defaultView.getComputedStyle(editor.dom.doc.body).getPropertyValue('font-size')) || 1;
121
- const sel = editor.selection.getNode();
122
- const imgSz = sel ? parseFloat(editor.dom.doc.defaultView.getComputedStyle(sel).getPropertyValue('font-size')) || 1 : docSz;
123
- const scale = imgSz / docSz;
124
- const url = `/equation_images/${encodeURIComponent(encodeURIComponent(latex))}?scale=${scale}`; // if I simply create the html string, xsslint fails jenkins
125
-
126
- const img = document.createElement('img');
127
- img.setAttribute('alt', `LaTeX: ${latex}`);
128
- img.setAttribute('title', latex);
129
- img.setAttribute('class', 'equation_image');
130
- img.setAttribute('data-equation-content', latex);
131
- img.setAttribute('src', url);
132
- img.setAttribute('data-ignore-a11y-check', '');
133
- return insertContent(editor, img.outerHTML);
134
- }
135
- /** * link insertion ** */
136
- // checks if there's an existing anchor containing the cursor
137
-
138
- function currentLink(editor, link) {
139
- 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
140
-
141
- return editor.dom.getParent(cursor, 'a');
142
- } // checks if the editor has a current selection (vs. just a cursor position)
143
-
144
-
145
- function hasSelection(editor) {
146
- let selection = editor.selection.getContent();
147
- selection = editor.dom.decode(selection);
148
- return !!selection && selection !== '';
149
- }
150
-
151
- export function existingContentToLink(editor, link) {
152
- return !editor.isHidden() && (link && (currentLink(editor, link) || !!link.selectedContent) || hasSelection(editor));
153
- } // Parses HTML string with support in old browsers because jQuery's parseHTML was added in 1.8.
154
-
155
- function parseHTML(htmlString) {
156
- const tmp = document.implementation.createHTMLDocument();
157
- tmp.body.innerHTML = htmlString.trim();
158
- return tmp.body.children;
159
- }
160
-
161
- function selectionIsImg(editor) {
162
- const selection = editor.selection.getContent();
163
- return editor.dom.$(parseHTML(selection)).is('img');
164
- }
165
-
166
- export function existingContentToLinkIsImg(editor) {
167
- return !editor.isHidden() && selectionIsImg(editor);
168
- }
169
-
170
- function decorateLinkWithEmbed(link) {
171
- const type = link.embed && link.embed.type;
172
- link.class = classnames(link.class, {
173
- instructure_file_link: true,
174
- instructure_scribd_file: type === 'scribd' || link['data-canvas-previewable'],
175
- instructure_image_thumbnail: type === 'image',
176
- instructure_video_link: type === 'video',
177
- instructure_audio_link: type === 'audio',
178
- auto_open: link.embed && link.embed.autoOpenPreview,
179
- inline_disabled: link.embed && link.embed.disableInlinePreview,
180
- no_preview: link.embed && link.embed.noPreview
181
- });
182
-
183
- if (link.embed.type === 'video' || link.embed.type === 'audio') {
184
- link.id = `media_comment_${link.embed.id || 'maybe'}`;
185
- }
186
- }
187
-
188
- export function insertLink(editor, link, canvasOrigin) {
189
- const linkAttrs = { ...link
190
- };
191
-
192
- if (linkAttrs.embed) {
193
- decorateLinkWithEmbed(linkAttrs);
194
- delete linkAttrs.embed;
195
- }
196
-
197
- return insertUndecoratedLink(editor, linkAttrs, canvasOrigin);
198
- }
199
-
200
- function textForLink(linkProps, editor, anchorElm) {
201
- // Some actions (like editing the link text in the link tray)
202
- // require an explicit update to the link text
203
- if (linkProps.forceRename) return linkProps.text; // Other actions (link highlighting an existing link and changing
204
- // the linked file) should use the anchor text if present
205
-
206
- return getAnchorText(editor.selection, anchorElm) || linkProps.text;
207
- } // link edit/create logic based on tinymce/plugins/link/plugin.ts
208
-
209
-
210
- function insertUndecoratedLink(editor, linkProps, canvasOrigin) {
211
- const selectedElm = editor.selection.getNode();
212
- const anchorElm = getAnchorElement(editor, selectedElm);
213
- const selectedContent = editor.selection.getContent();
214
- const selectedPlainText = editor.selection.getContent({
215
- format: 'text'
216
- });
217
- const onlyText = isOnlyTextSelected(selectedContent);
218
- const linkText = onlyText && textForLink(linkProps, editor, anchorElm); // only keep the props we want as attributes on the <a>
219
-
220
- const linkAttrs = {
221
- id: linkProps.id,
222
- href: absoluteToRelativeUrl(cleanUrl(linkProps.href || linkProps.url), canvasOrigin),
223
- target: linkProps.target,
224
- class: linkProps.class,
225
- title: linkProps.title,
226
- 'data-canvas-previewable': linkProps['data-canvas-previewable'],
227
- 'data-course-type': linkProps['data-course-type'],
228
- 'data-published': linkProps['data-published']
229
- };
230
-
231
- if (linkAttrs.target === '_blank') {
232
- linkAttrs.rel = 'noopener noreferrer';
233
- }
234
-
235
- if (anchorElm && !editor.selection.isCollapsed()) {
236
- updateLink(editor, anchorElm, linkText, linkAttrs);
237
- } else if (selectedContent) {
238
- if (linkProps.userText && selectedPlainText !== linkText) {
239
- createLink(editor, selectedElm, linkText, linkAttrs, canvasOrigin);
240
- } else {
241
- createLink(editor, selectedElm, undefined, linkAttrs, canvasOrigin);
242
- }
243
- } else {
244
- createLink(editor, selectedElm, linkText, linkAttrs, canvasOrigin);
245
- }
246
-
247
- return editor.selection.getEnd(); // this will be the newly created or updated content
248
- }
249
-
250
- function getAnchorText(selection, anchorElm) {
251
- return anchorElm ? anchorElm.innerText : selection.getContent({
252
- format: 'text'
253
- });
254
- }
255
-
256
- function updateLink(editor, anchorElm, text, linkAttrs) {
257
- if (text && anchorElm.innerText !== text) {
258
- anchorElm.innerText = text;
259
- }
260
-
261
- editor.dom.setAttribs(anchorElm, linkAttrs);
262
- editor.selection.select(anchorElm);
263
- editor.undoManager.add();
264
- }
265
-
266
- function createLink(editor, selectedElm, text, linkAttrs, canvasOrigin) {
267
- if (isImageFigure(selectedElm)) {
268
- linkImageFigure(editor, selectedElm, linkAttrs, canvasOrigin);
269
- } else if (text) {
270
- // create the whole wazoo
271
- insertContent(editor, renderLink(linkAttrs, text, canvasOrigin));
272
- } else {
273
- // create a link on the selected content
274
- editor.execCommand('mceInsertLink', false, linkAttrs);
275
- }
276
- }
277
-
278
- function linkImageFigure(editor, fig, attrs, canvasOrigin) {
279
- const img = fig.tagName === 'IMG' ? fig : editor.dom.select('img', fig)[0];
280
-
281
- if (img) {
282
- const a = renderLink(attrs, img, canvasOrigin);
283
- img.parentNode.insertBefore(a, img);
284
- }
285
- }
286
- /* ** video insertion ** */
287
-
288
-
289
- export function insertVideo(editor, video, canvasOrigin) {
290
- return insertMedia(editor, video, renderVideo, canvasOrigin);
291
- }
292
- export function insertAudio(editor, audio, canvasOrigin) {
293
- return insertMedia(editor, audio, renderAudio, canvasOrigin);
294
- }
295
-
296
- function insertMedia(editor, media, renderMedia, canvasOrigin) {
297
- const src = mediaPlayerURLFromFile(media, canvasOrigin);
298
-
299
- if (editor.selection.isCollapsed()) {
300
- var _result;
301
-
302
- let result = insertContent(editor, renderMedia(media, canvasOrigin)); // for some reason, editor.selection.getEnd() returned from
303
- // insertContent is parent paragraph when inserting the
304
- // media iframe. Look for the iframe with the right
305
- // src attribute. (Aside: tinymce strips the id or data-*
306
- // attributes from the iframe, that's why we can't look for those)
307
-
308
- result = result.querySelector(`iframe[src="${src}"]`); // When the iframe is inserted, it doesn't allow the media to play
309
- // because the wrapping span captures the click events. Setting
310
- // contentEditable to false disables this behavior.
311
-
312
- if ((_result = result) !== null && _result !== void 0 && _result.parentElement) {
313
- editor.dom.setAttrib(result.parentElement, 'contenteditable', false);
314
- }
315
-
316
- return result;
317
- } else {
318
- return insertLink(editor, { ...media,
319
- href: src
320
- }, canvasOrigin);
321
- }
322
- }
@@ -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;